<?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>217747</bug_id>
          
          <creation_ts>2020-10-14 19:36:11 -0700</creation_ts>
          <short_desc>Introduce new download API</short_desc>
          <delta_ts>2020-12-10 11:28:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=219530</see_also>
          <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>
          <dependson>219554</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kc</cc>
    
    <cc>michaeldo</cc>
    
    <cc>mrskman</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1698002</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-14 19:36:11 -0700</bug_when>
    <thetext>Introduce new download SPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698005</commentid>
    <comment_count>1</comment_count>
      <attachid>411398</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-14 19:52:33 -0700</bug_when>
    <thetext>Created attachment 411398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698006</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-14 19:53:07 -0700</bug_when>
    <thetext>Still needs a bunch of polish, but feel free to give feedback on the general direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698007</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-10-14 19:53:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698368</commentid>
    <comment_count>4</comment_count>
      <attachid>411398</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-10-15 16:48:36 -0700</bug_when>
    <thetext>Comment on attachment 411398
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownload2.h:40
&gt; +- (void)cancelByProducingResumeData:(void (^)(NSData * _Nullable resumeData))completionHandler;

I would just call this cancel. The parameter name already describes what is passed to the completion handler.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownloadDelegate2.h:47
&gt; +// FIXME: Blobs don&apos;t have a response, but can still have a suggested filename.
&gt; +// Separate callback, or nullable response and separate string?
&gt; +- (void)download:(_WKDownload2 *)download decideDestinationWithResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURL *destination))completionHandler;

Seems like the suggested filename should be its own parameter, and response should be nullable. (Seems OK, since most people will only look at the suggested filename.)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKDownloadDelegate2.h:55
&gt; +- (void)downloadProcessDidTerminate:(_WKDownload2 *)download;

Does this have to be separate from the didFail case? A termination seems like a failure to me. And I&apos;m not sure what we&apos;re expecting people to do with the termination.

Side note: Navigation delegate calls it &quot;...WebContentProcessDidTerminate&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700015</commentid>
    <comment_count>5</comment_count>
      <attachid>411940</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-10-20 16:56:39 -0700</bug_when>
    <thetext>Created attachment 411940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700525</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-21 19:37:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/70556859&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705973</commentid>
    <comment_count>7</comment_count>
      <attachid>413659</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-09 20:31:33 -0800</bug_when>
    <thetext>Created attachment 413659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706114</commentid>
    <comment_count>8</comment_count>
      <attachid>413711</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-10 09:55:01 -0800</bug_when>
    <thetext>Created attachment 413711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706778</commentid>
    <comment_count>9</comment_count>
      <attachid>413914</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-11 23:14:13 -0800</bug_when>
    <thetext>Created attachment 413914
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706782</commentid>
    <comment_count>10</comment_count>
      <attachid>413916</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-11 23:35:41 -0800</bug_when>
    <thetext>Created attachment 413916
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707016</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-12 14:30:37 -0800</bug_when>
    <thetext>WKNavigationResponsePolicyBecomeDownload needs @constant header doc.  Will add before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707017</commentid>
    <comment_count>12</comment_count>
      <attachid>413916</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-12 14:31:23 -0800</bug_when>
    <thetext>Comment on attachment 413916
Patch

Same with WKDownloadRedirectPolicy.  More header doc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707026</commentid>
    <comment_count>13</comment_count>
      <attachid>413916</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-11-12 14:37:27 -0800</bug_when>
    <thetext>Comment on attachment 413916
Patch

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

I&apos;m still looking at implementation stuff, but have some header comments

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownload.h:48
&gt; + @discussion The completionHandler is passed data to be used to resume the download if possible.

I&apos;d make it more clear that the data is used to *attempt* to resume the download, and maybe even call out that due to server side considerations, some downloads may not be resumable.

I would also say something like &quot;to attempt to resume the download, call WKWebView resumeDownloadWithData:&quot;

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:2
&gt; + * Copyright (C) 2014 Apple Inc. All rights reserved.

While I know 2014 was a happier time, sadly, I am quite aware that it&apos;s 2020.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:42
&gt; + @param download The web view that received the redirect.

/s/web view/download/. (Same comment applies to all of these)

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:72
&gt; + suggested download filename.  If the destination file URL is non-null, it must be a file
&gt; + that does not exist yet in a directory that does exist.

&quot;yet&quot; is unnecessary.

The directory must exist and be writeable to the application.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:95
&gt; + @param resumeData The data to be used to resume this download if possible.

Call out the API where the resume data can be used (just like the cancel completion handler)

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:458
&gt; +/* @abstract Begins a download.
&gt; + @param request The request specifying the URL to download.
&gt; + @param completionHandler A block called when the download has started.
&gt; + */
&gt; +- (void)downloadRequest:(NSURLRequest *)request completionHandler:(void(^)(WKDownload *))completionHandler WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA));

The purpose of this method is to begin downloading a resource *in the context of the currently displayed webpage as if the policy delegate made a load into a download instead&quot;

I would explicitly call this out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707049</commentid>
    <comment_count>14</comment_count>
      <attachid>413978</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-12 15:48:50 -0800</bug_when>
    <thetext>Created attachment 413978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707088</commentid>
    <comment_count>15</comment_count>
      <attachid>413992</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-12 18:55:31 -0800</bug_when>
    <thetext>Created attachment 413992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707251</commentid>
    <comment_count>16</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-13 08:27:55 -0800</bug_when>
    <thetext>rdar://problem/26818508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707254</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-13 08:29:31 -0800</bug_when>
    <thetext>*** Bug 158801 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708504</commentid>
    <comment_count>18</comment_count>
      <attachid>414415</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-17 22:57:38 -0800</bug_when>
    <thetext>Created attachment 414415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708637</commentid>
    <comment_count>19</comment_count>
      <attachid>414415</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-11-18 09:32:41 -0800</bug_when>
    <thetext>Comment on attachment 414415
Patch

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

Besides fixing EWSs, etc... seems fine.

Except for calling downloads &quot;web views&quot;

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:57
&gt; + @param download The web view that received the authentication challenge.

Download

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:82
&gt; + @param download The web view that has written data.

Download

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:93
&gt; + @param download The web view that finished.

Download

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:98
&gt; + @param download The web view that has failed.

Download</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708802</commentid>
    <comment_count>20</comment_count>
      <attachid>414491</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-18 15:09:03 -0800</bug_when>
    <thetext>Created attachment 414491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708814</commentid>
    <comment_count>21</comment_count>
      <attachid>414497</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-18 15:25:44 -0800</bug_when>
    <thetext>Created attachment 414497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708834</commentid>
    <comment_count>22</comment_count>
      <attachid>414502</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-18 15:47:15 -0800</bug_when>
    <thetext>Created attachment 414502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1708957</commentid>
    <comment_count>23</comment_count>
      <attachid>414532</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-18 20:00:11 -0800</bug_when>
    <thetext>Created attachment 414532
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709160</commentid>
    <comment_count>24</comment_count>
      <attachid>414596</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-19 09:51:48 -0800</bug_when>
    <thetext>Created attachment 414596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709223</commentid>
    <comment_count>25</comment_count>
      <attachid>414596</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-19 12:29:46 -0800</bug_when>
    <thetext>Comment on attachment 414596
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:70
&gt; + @param response The server response, if this download was the result of an HTTP request.

I need to add &quot;or a synthesized response for blob downloads&quot;
Also, response should not be nullable.  I thought it would be with blobs but it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709266</commentid>
    <comment_count>26</comment_count>
      <attachid>414596</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-11-19 13:42:16 -0800</bug_when>
    <thetext>Comment on attachment 414596
Patch

(Relatively) Minor changes from last time, still r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709271</commentid>
    <comment_count>27</comment_count>
      <attachid>414617</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-19 14:08:29 -0800</bug_when>
    <thetext>Created attachment 414617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709300</commentid>
    <comment_count>28</comment_count>
      <attachid>414617</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-19 15:40:21 -0800</bug_when>
    <thetext>Comment on attachment 414617
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKNavigation.mm:48
&gt; +- (BOOL)_wasUserInitiated

This is not actually needed.  Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709612</commentid>
    <comment_count>29</comment_count>
      <attachid>414708</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-11-20 13:01:55 -0800</bug_when>
    <thetext>Created attachment 414708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711892</commentid>
    <comment_count>30</comment_count>
      <attachid>415365</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-03 16:37:02 -0800</bug_when>
    <thetext>Created attachment 415365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711935</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-03 19:31:02 -0800</bug_when>
    <thetext>Committed r270422: &lt;https://trac.webkit.org/changeset/270422&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415365.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712154</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-12-04 13:56:17 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 219554</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712157</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-12-04 14:01:00 -0800</bug_when>
    <thetext>Reverted in r270454, please see radar for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712842</commentid>
    <comment_count>34</comment_count>
      <attachid>415365</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-08 11:18:43 -0800</bug_when>
    <thetext>Comment on attachment 415365
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKDownloadDelegate.h:68
&gt; +/* @abstract Invoked when the download needs to respond to an authentication challenge.

This isn&apos;t correct.  Also, I&apos;m going to make decideDestinationWithResponse mandatory because downloads will always fail if it is not implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713407</commentid>
    <comment_count>35</comment_count>
      <attachid>415823</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-09 19:38:18 -0800</bug_when>
    <thetext>Created attachment 415823
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713408</commentid>
    <comment_count>36</comment_count>
      <attachid>415824</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-12-09 19:43:26 -0800</bug_when>
    <thetext>Created attachment 415824
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713630</commentid>
    <comment_count>37</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-10 11:28:16 -0800</bug_when>
    <thetext>Committed r270638: &lt;https://trac.webkit.org/changeset/270638&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415824.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411398</attachid>
            <date>2020-10-14 19:52:33 -0700</date>
            <delta_ts>2020-10-20 16:56:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201014195232.patch</filename>
            <type>text/plain</type>
            <size>119109</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQ5MzliNzRhOGFlMDA0N2Ix
MjNmYjNhYmU4YjA0YTMxZTAwZWU4ZGUuLjNhNGFlZDlmMTg0MDY0OGZmZTY4NjQ3YTVhNDY5MzM3
NDcwOGY1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBACisyMDIwLTEwLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBfV0tEb3dubG9hZDIgYW5kIF9XS0Rvd25sb2FkRGVsZWdh
dGUyIQorCisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhl
IGRlbGVnYXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhl
IHByb2Nlc3MgcG9vbC4KKyAgICAgICAgMi4gIF9XS0Rvd25sb2FkMiBkb2VzIG5vdCBjb25mb3Jt
IHRvIE5TQ29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGlj
dGlvbmFyeS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0
IHdpbGwgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRo
YXQgdXNlZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIg
dG8gZ2V0IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0
aGVuIGdldHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlk
RmFpbFdpdGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlz
IG5vIHdheSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUg
YWJvdXQgYSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9m
IHRoZSBkb3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIElu
c3RlYWQsIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBu
YXZpZ2F0aW9uIHRvIHRoZSBkb3dubG9hZC4KKyAgICAgICAgICAgIEZJWE1FOiBFeHBvc2UgQVBJ
OjpOYXZpZ2F0aW9uOjp3YXNVc2VySW5pdGlhdGVkKCkgc29tZWhvdy4KKyAgICAgICAgNy4gIHJl
ZGlyZWN0Q2hhaW4gaXMgYWxzbyBnb25lLiAgVGhhdCBjYW4gYWxzbyBiZSBnb3R0ZW4gZnJvbSB0
aGUgbGluayB0byB0aGUgbmF2aWdhdGlvbiBhbmQgdGhlIGRvd25sb2FkIGRlbGVnYXRlJ3MgcmVk
aXJlY3QgY2FsbGJhY2suCisgICAgICAgIDguICBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93
bmxvYWQgaXMgZGVwcmVjYXRlZC4gIElmIHlvdSByZWFsbHkgd2FudCB0byBkb3dubG9hZCwgd2Fp
dCB1bnRpbCB3ZSByZWNlaXZlIGEgcmVzcG9uc2UuCisgICAgICAgIDkuICBfZG93bmxvYWREaWRT
dGFydCBpcyBnb25lLiAgSW5zdGVhZCwgd2UgaGF2ZSBjb21wbGV0aW9uIGhhbmRsZXJzIHRoYXQg
ZXhwb3NlIGEgX1dLRG93bmxvYWQyIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBuZWVk
IHRvCisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUgdGhl
biBhbnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdoaWNo
IGlzIGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0aGVy
ZSB3aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRvd25s
b2FkIG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgMTAuIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9yIGNh
bmNlbGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAgICAg
ICAgICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTEuIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2ZSBi
ZWVuIG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGltZSBh
bmQKKyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQSS4g
IGFsbG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90IHJl
YWxseSBuZWVkZWQuCisgICAgICAgIDEyLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25lLiAg
VGhhdCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5lZWQg
dG8ga25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAgICAg
ICAgIGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5pdGVs
eSBiZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTMuIHNob3VsZERlY29kZVNvdXJjZURh
dGFPZk1JTUVUeXBlIGlzIGdvbmUuICBGSVhNRTogTWF5YmUgSSdsbCBhY3R1YWxseSBuZWVkIHRv
IGFkZCB0aGlzLiAgTm90IHN1cmUuCisKKyAgICAgICAgSSB3cm90ZSBBUEkgdGVzdHMgZm9yIGV2
ZXJ5dGhpbmcgSSBjb3VsZCB0aGluayBvZi4gIEZJWE1FOiBGaW5pc2ggdGhlIEFQSSB0ZXN0cy4K
KworICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9i
amVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6
OmRpZEZhaWwpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
OgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVEb3dubG9hZDpkZXN0aW5hdGlvbjpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQg
Y2FuY2VsXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOl0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZWRpcmVj
dENoYWluXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0ZWRdKToKKyAg
ICAgICAgKC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtfV0tEb3dubG9h
ZCBvcmlnaW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9hcGlPYmplY3Rd
KToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW06IEFkZGVkLgorICAgICAgICAo
LVtfV0tEb3dubG9hZDIgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZDIgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
MiBvcmlnaW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBkZWxlZ2F0ZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZDIgc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW19X
S0Rvd25sb2FkMiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBfYXBpT2JqZWN0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDJJbnRlcm5hbC5o
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxl
Z2F0ZTIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVT
aGVldC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQu
bW06CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAg
IChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xp
ZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0
OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2Fj
eURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXRO
YXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25E
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
UHJveHk6OnNldERpZFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMC0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsbG93IGxlZ2FjeSBjdXN0b20gc2No
ZW1lIHJlZ2lzdHJhdGlvbiBvbiBub24tbWFpbiB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9D
b2NvYS9BUElPYmplY3QubW0KaW5kZXggMTczMGJkNDkzZmQwYjQ2ZGVlY2MyNDdkN2MxODJjZDY4
MjhkYTYzMS4uNzJhZDUzZGFlODBkNTNmMWI1ODdhYTk1ZDNjMmRjMDliZmU2MzRmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzMsNyArNzMsNyBAQAogI2lt
cG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxk
c0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCisjaW1wb3J0ICJf
V0tEb3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQg
YWxsb2NdOworICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkMiBhbGxvY107CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpFeHBlcmltZW50YWxGZWF0dXJlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDE2OWIyOTU3MmM1ZjQ1ZjE5YWY4NDlhYWM1NDRhNjg1ZTU2ZTUxNmQu
LjUzNThkMGE3Yjk3NjBkZmQ4NGIzNjZmMWYwNzA2MjU0M2M1YjgxMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTI1MCw2ICsyNTAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRl
bnRSdWxlTGlzdEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZXh0TWVudUVs
ZW1lbnRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0N1c3RvbUhlYWRlckZpZWxkcy5t
bSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KK1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1l
bnRBY3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRp
bmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCBk
MzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1Li44NmNjNjJlYmFhYTI1YzQx
YzJkMDk5N2NjOWUyNzc5Y2RkZmZiZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNTQsMTMgKzU0LDEzIEBAIGNsYXNzIERvd25s
b2FkQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWdh
Y3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxs
ZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2
NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdl
YktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpEYXRhKiByZXN1bWVEYXRhKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFj
OWU2YWUuLjQyNjE4MzZjY2ZjYTBmNjIzMjcxNGVjNmFiNWMwYmI0MDA0Zjg0N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAt
NTQsNiArNTQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBEb3dubG9h
ZFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC05OSw2ICsxMDAsOCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2Uo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
PikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIFdlYktpdDo6RG93bmxvYWRQcm94eSYp
IHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1
bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dMZWdhY3lUTFMoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5lZ290aWF0ZU1v
ZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggN2NmNTc3MjRm
MmFiOTMzOTAwOGQxYjJlMWRiZDJlN2EzNGRmMTk3OS4uOTgyMDQ2OTJlMTU3ZmMyNTI0NjRhZjc3
ZjY3YmJiNDg5ZmQwNGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENs
aWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGkKICAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KSBmaW5hbAorICAgICAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRTdGFydCkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjMsNyArMjIzLDcg
QEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3du
bG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKKyAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIGZpbmFsCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4IGRjMmUwZDE5MjMx
NWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLmVjNmNiYjQxMmY4YjVkZjU4ZWRkM2Q5ZmU5
YzhkZmNiMzJmYzg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5oCkBAIC0xMzgsNyArMTM4LDcgQEAgV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRD
cmVhdGVXaXRoQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmUKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tD
b250ZXh0Q2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRI
aXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KTsKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERv
d25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2UqIGNsaWVudCk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9h
ZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGll
bnRCYXNlKiBjbGllbnQpIFdLX0NfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVChXS0Rv
d25sb2FkU2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q29u
bmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q29ubmVj
dGlvbkNsaWVudEJhc2UqIGNsaWVudCk7CiAKIFdLX0VYUE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29u
dGV4dERvd25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0
UmVmIHJlcXVlc3QpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTViNS4uMzdh
ZWJkYjg0N2NhMmMyMTNkODU5YjU0NjdkYTk2MmNhNjg2Y2NlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaApAQCAtNTgsOCArNTgsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBf
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCAr
IDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgi
X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwg
V0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3Qg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBp
b3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExp
bmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdyArIDIpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvd0luTmV3UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKIHN0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOwpAQCAtODMsNiArODMsOCBAQCBzdGF0
aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYQogLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogLSAodm9pZClfd2ViVmlld1dlYlByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICop
bmF2aWdhdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAo
TlNEYXRhICopX3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXc7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hv
dWxkQWxsb3dMZWdhY3lUTFM6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4
IGU3OTViMzMyNmM3NmRmOWQ5ZDg0MDM0MmY4ZGQxNGJiYmZhMTA3ZGIuLjM1MzVmNWE0ZjkxYTM4
NmYwM2ZjMTAyZGZjZmJmYTk0ZjBiMWFkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC00NCw2ICs0NCw3IEBACiAjaW1w
b3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvbkRlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tE
b3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKQEAgLTU1MSwxMiArNTUyLDEyIEBAIHN0YXRpYyBOU0RpY3Rp
b25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFyeShjb25zdCBIYXNoTWFwPFN0cmluZywg
SGFzaE1hcDxTCiAKIC0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0
ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0KSk7CisgICAgcmV0dXJuIFtfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25s
b2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVl
c3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5T
RGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICop
ZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1
bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2Vd
LCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRo
KSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBl
cihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0
b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVz
dW1lRGF0YSkuZ2V0KCksIHBhdGgpKV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3Jp
Z2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCmluZGV4IDIxOTQxYjJkNDYwNzBkYTFjYTk1ZmI5MDZmODgzMmY1YWYwNGQ4YWIuLjFi
YmUyZWMyODU5NzdkZmM5NTNiODg2NTExNTA0MTAxNWUwNDc5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNl
dHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93
bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERv
d25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdh
dGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX1dLRG93bmxvYWQyLmRvd25s
b2FkRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19U
QkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25E
ZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRf
T1NfSVBIT05FCkBAIC04Myw4ICs4Myw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1l
QXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rv
d25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7Ci0tIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihO
U0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3Jl
ICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19B
UElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVz
dCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOworLSAo
X1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0
YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6
KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3Ll9yZXN1bWVEb3du
bG9hZDpkZXN0aW5hdGlvbjpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUg
Y2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgog
LSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNCksIGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCAwYTYzMjcwY2NhZWI3NmZjOWUwZWM5ZTIzNGMyOTcyYjA2ZTcx
MzVlLi5jODBjODE3YzIzYjVlZTJlZTdiMjIwNjhlYWU1Y2QxYWNlZDg1MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk2LDYgKzk2
LDcgQEAKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRl
LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRmluZERl
bGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTI4MTYsNiArMjgxNywyNiBAQCBzdGF0aWMg
aW5saW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0Zp
bmRPcHRpb25zIHdrRmluZAogICAgIHJldHVybiBfcGFnZS0+aXNTaG93aW5nTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdCgpOwogfQogCistICh2b2lkKV9kb3dubG9hZFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0Rvd25sb2FkMiAq
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVz
dCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0g
KGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93
bmxvYWQpKTsKKyAgICB9KTsKK30KKworLSAodm9pZClfcmVzdW1lRG93bmxvYWQ6KE5TRGF0YSAq
KXJlc3VtZURhdGEgZGVzdGluYXRpb246KE5TVVJMICopZGVzdGluYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoX1dLRG93bmxvYWQyICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBkZWNpZGUgdGhlIGRlc3RpbmF0aW9uIG9uY2Ugd2UgcmVjZWl2
ZSB0aGUgcmVzcG9uc2UgbGlrZSB3ZSBkbyBldmVyeXRoaW5nIGVsc2U/CisgICAgLy8gQ2FuIHdl
IGdldCByZXN1bWUgZGF0YSBiZWZvcmUgd2Ugd3JvdGUgYW55dGhpbmc/CisgICAgaWYgKCFkZXN0
aW5hdGlvbi5pc0ZpbGVVUkwpIHsKKyAgICAgICAgLy8gRklYTUU6IHRlc3QgdGhpcy4KKyAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
ImRlc3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVSTCJdOworICAgIH0KKyAgICBfcGFnZS0+cmVz
dW1lRG93bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKSwg
ZGVzdGluYXRpb24ucGF0aCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICB9KTsKK30KKwogLSAoX1dLTGF5b3V0TW9kZSlf
bGF5b3V0TW9kZQogewogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDgyYTE3ZGM2Yzg5
ZmExMjViYTZlNDg3ZGRiZWZmZGY2MTI3YjhkNTUuLjQwNDc1NWY3NzQ0M2VlOTE4MjFkOGVmYjUz
MTVlMWUxOGNiMDM4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTEyLDYgKzExMiw3IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNzIFdLRnJhbWVJbmZvOwog
QGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3Q7CitAY2xhc3MgX1dLRG93bmxvYWQyOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNz
IF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKQEAgLTIwNSw2ICsy
MDYsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBnZXR0ZXI9X2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QpIEJPT0wgX3No
b3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90OwogCistICh2b2lkKV9kb3dubG9hZFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9X
S0Rvd25sb2FkMiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzdW1lRG93bmxvYWQ6KE5T
RGF0YSAqKXJlc3VtZURhdGEgZGVzdGluYXRpb246KE5TVVJMICopZGVzdGluYXRpb24gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLRG93bmxvYWQyICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0g
KHZvaWQpX2Nsb3NlOwogLSAoQk9PTClfdHJ5Q2xvc2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKEJPT0wpX2lzQ2xvc2VkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5
YTcyNDc4ZmQwYzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLjYyYTE0MzZlNjhjNjMyMDA1MzA5OWY5
MGU1YWU1MzkwZjc1OTliM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEb3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJ
bmZvOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBfV0tEb3dubG9hZDI7CiAKLVdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJfV0tEb3dubG9hZDIiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSks
IGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tEb3dubG9hZCA6IE5TT2JqZWN0
IDxOU0NvcHlpbmc+CiAKLS0gKHZvaWQpY2FuY2VsOworKyAoaW5zdGFuY2V0eXBlKWRvd25sb2Fk
V2l0aERvd25sb2FkMjooX1dLRG93bmxvYWQyICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZCljYW5jZWw7CiAt
ICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkZmVmZTBmMTY2YTU0OWRkZTY1YmUx
MDIyZWI1YzFmZmRlY2MyZGJjLi4zNTFlYmUyYjE0Y2JmMTZmYjhhYzliODI2Yzk2YzBmNzNhMDYw
MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkLm1tCkBAIC0zMSw2MyArMzEsODQgQEAKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0
ci5oPgogCi1AaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3Rv
cmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCitzdGF0aWMgTlNNYXBUYWJsZTxfV0tEb3dubG9hZDIgKiwgX1dL
RG93bmxvYWQgKj4gKmRvd25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQo
KSkKKyAgICAgICAgdGFibGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01h
cFRhYmxlXTsKKyAgICByZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVk
LWltcGxlbWVudGF0aW9ucyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9X
QVJOSU5HU19FTkQKIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
b3dubG9hZDI6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkCiB7Ci0gICAgX2Rvd25sb2FkLT5+RG93
bmxvYWRQcm94eSgpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOworICAgIHJldHVybiBzZWxmOwor
fQogCi0gICAgW3N1cGVyIGRlYWxsb2NdOworKyAoaW5zdGFuY2V0eXBlKWRvd25sb2FkV2l0aERv
d25sb2FkMjooX1dLRG93bmxvYWQyICopZG93bmxvYWQKK3sKKyAgICBpZiAoX1dLRG93bmxvYWQg
KndyYXBwZXIgPSBbZG93bmxvYWRXcmFwcGVyTWFwKCkgb2JqZWN0Rm9yS2V5OmRvd25sb2FkXSkK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgX1dLRG93bmxvYWQgKndyYXBwZXIgPSBbW1tf
V0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDI6ZG93bmxvYWRdIGF1dG9yZWxlYXNl
XTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkgc2V0T2JqZWN0OndyYXBwZXIgZm9yS2V5OmRv
d25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogLSAodm9pZCljYW5jZWwKIHsKLSAg
ICBfZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxvYWQpXSAoYXV0
byopIHsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VS
ZWYoKl9kb3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1dG8qKSB7CiAgICAgICAgIGRvd25sb2FkLT5j
bGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwogICAgIH0pOwogfQogCiAt
ICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTAogewotICAgIF9kb3dubG9h
ZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CisgICAgX2Rvd25sb2FkLT5fZG93bmxvYWQtPnB1Ymxp
c2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAg
cmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJuIF9kb3dubG9h
ZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBk
YXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoV0tXZWJWaWV3ICopb3Jp
Z2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3du
bG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCisgICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9
IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKICAgICAgICAgcmV0dXJu
IFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSByZXRhaW5dIGF1dG9yZWxlYXNl
XTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKilyZWRpcmVjdENo
YWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5yZWRpcmVjdENoYWlu
KCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICogeworICAgIHJldHVybiBjcmVhdGVOU0FycmF5
KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+
IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9
CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAogewotICAgIHJldHVybiBfZG93bmxvYWQtPndh
c1VzZXJJbml0aWF0ZWQoKTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPndhc1Vz
ZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRhICopcmVzdW1lRGF0YQogewotICAgIHJldHVy
biBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5fZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURh
dGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICopb3JpZ2luYXRpbmdGcmFtZQogewotICAgIHJl
dHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOworICAgIHJldHVy
biBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+X2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CiB9
CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtOTksNyArMTIwLDcgQEAK
IAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKl9kb3dubG9hZDsK
KyAgICByZXR1cm4gKl9kb3dubG9hZC0+X2Rvd25sb2FkOwogfQogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OGRlODhkODAzNTA1NWViMmM3OTMxM2JkNzNjMmQ1NzExODkwMDYyMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIuaApAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS0ZyYW1lSW5m
bzsKK0Bwcm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlMjsKKworTlNfQVNTVU1FX05PTk5VTExf
QkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkMiA6IE5TT2JqZWN0CisKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLRnJhbWVJbmZvICpvcmlnaW5hdGluZ0ZyYW1l
OworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlMj4g
ZGVsZWdhdGU7CistICh2b2lkKWNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YToodm9pZCAoXiko
TlNEYXRhICogX051bGxhYmxlIHJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5k
CisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2U2ZjkxYzg2NGY3ZDJlMmRm
OGQ0YTU4ODFkOTRlYTcxNjBhNzJjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW0KQEAgLTAsMCArMSwyMDkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkMkludGVy
bmFsLmgiCisKKyNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBv
cnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisjaW1wb3J0ICJXS05T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFs
LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlMi5oIgorI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworY2xhc3MgRG93
bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPiBk
ZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1Jl
cXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21w
bGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3du
bG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjopXSkK
KyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVu
OnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlk
RmluaXNoKFttX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWRE
aWRGaW5pc2g6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcihbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRGYWlsV2l0aEVy
cm9yOnJlc3VtZURhdGE6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvUHJvY2Vzc0RpZFRlcm1p
bmF0ZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZFByb2Nl
c3NEaWRUZXJtaW5hdGU6KV0pCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAg
ICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjpzdGF0aWNfY2FzdDxOU0hUVFBVUkxSZXNwb25zZSAqPihyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkpIG5ld1JlcXVlc3Q6bnNSZXF1ZXN0LmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVz
dDpjb21wbGV0aW9uSGFuZGxlcjopKV0oX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSBwb2xpY3kp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgc3dpdGNoIChwb2xp
Y3kpIHsKKyAgICAgICAgICAgIGNhc2UgX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
ICAgIGNhc2UgX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgX1dLRG93bmxvYWRSZWRpcmVjdFBvbGlj
eSAoJWxkKSIsIChsb25nKXBvbGljeV07CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdldCgp
XTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxl
Z2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQor
ICAgICAgICAgICAgcmV0dXJuIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1
bHRIYW5kbGluZyk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdl
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hh
bGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlz
dGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50
aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZv
cm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigp
LmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
ICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9KS5n
ZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBUZXN0IGEgZGVs
ZWdhdGUgdGhhdCBpcyBkZWFsbG9jYXRlZC4KKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFt
X3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsK
KworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgY29tcGxldGlv
bkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwg
KmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAg
ICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVVUkwpIHsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogdGVzdCB0aGlzLgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBV
UkwiXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBj
aGVjayBpZiB0aGUgZmlsZSBleGlzdHM/CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpZZXMsIGRlc3RpbmF0aW9uLnBhdGgpOworICAgICAgICB9
KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRXcml0ZURh
dGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3Jp
dHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVs
ZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkKV07
CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3Vt
ZURhdGEpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21f
ZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjplcnJv
ci5uc0Vycm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3VtZURhdGEpXTsKKyAgICB9CisKKyAg
ICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBm
aW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9Qcm9j
ZXNzRGlkVGVybWluYXRlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVn
YXRlIGRvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZTp3cmFwcGVyKGRvd25sb2FkKV07CisgICAg
fQorCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPiA+IG1fZGVsZWdh
dGU7CisKKyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDog
MTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wg
bV9yZXNwb25kc1RvRGlkRmluaXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxX
aXRoRXJyb3IgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvUHJvY2Vzc0RpZFRlcm1pbmF0ZSA6
IDE7Cit9OworCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQyCisKKy0gKHZvaWQpY2FuY2Vs
QnlQcm9kdWNpbmdSZXN1bWVEYXRhOih2b2lkICheKShOU0RhdGEgKnJlc3VtZURhdGEpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2NvbXBsZXRpb25IYW5kbGVy
ID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRhdGEpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0gKE5T
VVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVxdWVzdAoreworICAgIHJldHVybiBfZG93bmxvYWQtPnJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworfQorCistIChXS0ZyYW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUK
K3sKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsK
K30KKworLSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPilkZWxlZ2F0ZQoreworICAgIHJldHVy
biBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlMj4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICBfZG93bmxvYWQtPnNldENsaWVudChhZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50
KGRlbGVnYXRlKSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfZG93bmxvYWQtPn5E
b3dubG9hZFByb3h5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCisjcHJhZ21hIG1hcmsg
V0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKK3sKKyAgICByZXR1cm4gKl9kb3dubG9hZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMkludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQySW50ZXJuYWwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYzY1MWFjYWZkNWQyZjQ1MzI2ZWE4N2Q1M2EyNWU4ZTQ4ZTFlNGYzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkMkludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
IkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tEb3du
bG9hZDIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBw
ZXJUcmFpdHM8RG93bmxvYWRQcm94eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rv
d25sb2FkMjsKK307CisKK30KKworQGludGVyZmFjZSBfV0tEb3dubG9hZDIgKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJv
eHk+IF9kb3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+
ID4gX2RlbGVnYXRlOworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggYTgzZjkwMjliNWM3M2Vj
NWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0Njhh
ODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBACiAKIEBwcm90b2Nv
bCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2Rl
cHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93
bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICop
cmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcg
KilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwog
CiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxv
d092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4LjAs
IDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlMi5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzI2NDA3MjQ1ZmY4MjAwOWIwY2FlZjRjMDI1MWNkZGVlYTRhYmI0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZERlbGVnYXRlMi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24u
aD4KKworQGNsYXNzIF9XS0Rvd25sb2FkMjsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
X1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkgeworICAgIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3lDYW5jZWwsCisgICAgX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTIgPE5TT2Jq
ZWN0PgorQG9wdGlvbmFsCisKKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25s
b2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3Bv
bnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyOwor
CistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFs
bGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworLy8gRklYTUU6IEJsb2JzIGRvbid0IGhhdmUgYSByZXNwb25zZSwgYnV0IGNhbiBz
dGlsbCBoYXZlIGEgc3VnZ2VzdGVkIGZpbGVuYW1lLgorLy8gU2VwYXJhdGUgY2FsbGJhY2ssIG9y
IG51bGxhYmxlIHJlc3BvbnNlIGFuZCBzZXBhcmF0ZSBzdHJpbmc/CistICh2b2lkKWRvd25sb2Fk
OihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZToo
TlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VS
TCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOworCistICh2b2lkKWRvd25sb2FkOihf
V0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworLSAo
dm9pZClkb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQyICopZG93bmxvYWQ7CisKKy0gKHZv
aWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvciByZXN1bWVEYXRhOihudWxsYWJsZSBOU0RhdGEgKilkYXRhOworCistICh2
b2lkKWRvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZTooX1dLRG93bmxvYWQyICopZG93bmxvYWQ7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBlMTI5
MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi42ZWYxMWVjOTViMWVlMWQxNjBi
MmY3ZmE4ZTUwNWQxMmEzZmE0OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBA
QAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5Lmgi
Ci0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9h
ZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19OworQGNs
YXNzIF9XS0Rvd25sb2FkMjsKIAorQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+
IHsKK0BwYWNrYWdlCisgICAgUmV0YWluUHRyPF9XS0Rvd25sb2FkMj4gX2Rvd25sb2FkOwogfQot
Ci1AaW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5k
ZXggMDZmOGYxZjc2MmU4OTY4NmZjNWRjM2ZjODkwZjEzZTBiMzYzZDMzMy4uZTRjZjVhMmRjMTAy
ZjU5NmQzYWVmZThjNjQ3YjZmNWFhOWI3OWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcg
QEAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxk
OworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLV2ViVmlldzsKIAogdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgX1dLVXNlclN0eWxlTGV2ZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCAw
Njg0NDEyYjEzNTFmMzBhNWQ0ODRmOTA5ZDdhNGI5N2E3MWNhNDI2Li43OTE1ZWEzYjJmNjVkYTQ4
Y2Y0ZWE5ODIwMjVhOTNlNGUxOGE3ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAKICNpbXBvcnQgIkFQSUFy
cmF5LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldLV2ViVmlld0lu
dGVybmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRh
MWZjOGNkYWZlOTIxMTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93
bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsK
QEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3Rp
bmF0aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBp
ZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmlu
ZGV4IDc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0
ODg0ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEy
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xp
ZW50Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBs
ZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWlu
dDY0X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6
RGF0YSopIGZpbmFsOwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94
eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXgg
M2QzMWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjVhOThiNTVjMjc2OWQ5
OWJiNjY0NDkwMDMxYTFjYTA3NTU0NjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTM4LDYgKzM4LDcgQEAK
ICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJ
bnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC00Nyw2ICs0
OCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgorCiBMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5RG93bmxvYWRDbGllbnQo
aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShkZWxl
Z2F0ZSkKIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RhdGljIFN5c3RlbVByZXZpZXdDb250cm9sbGVy
KiBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihEb3dubG9hZFByb3h5JiBkb3dubG9hZFAKIH0KICNl
bmRpZgogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFydChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3Rh
cnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJ
RVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpA
QCAtOTAsNyArOTMsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFydChEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1l
dGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlk
U3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZERpZFN0YXJ0OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihk
b3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNl
aXZlUmVzcG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNw
b25zZSgpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3Bv
bnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2
NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgdWludDY0X3QKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQot
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRX
cml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07Cisg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4g
dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKICAgICBlbHNlIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5d
OworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0
aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dy
aXR0ZW5dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyAr
MTM0LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNl
bGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93
bmxvYWRQcm94eSldIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSks
IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0
ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkg
ewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6
OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3Rp
bmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKIH0KIAog
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpCkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5k
aWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCkK
LSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndyYXBwZXIoZG93
bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jh
c2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtMjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQ
cm94eSYKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxs
b3dPdmVyd3JpdGUgPSBOTzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KLSAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAg
ICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6
JmFsbG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVy
d3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9P
TCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2Vy
ID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCku
Z2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVz
dGluYXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjMzLDEwICsyMzYs
MTAgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3du
bG9hZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOndy
YXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRG
aW5pc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXV07CiB9CiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRh
dGEqKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5p
c1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjoKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkRmFpbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFw
cGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkK
LSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQ
cm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAK
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwp
Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6
cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3Ry
aW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOwogfQpAQCAtMzAxLDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYg
ZG93bmxvCiB9CiAjZW5kaWYKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCA1NzRjMzQyZjMzZGNmMDZjY2FkYTExZjBiZDJkMDk3
ZWM1YTk1N2EzLi43NThlOGU5Y2YyYzI5OWRlM2E3Yjc0Zjk0OWU3ZGJhZTdhYzU4OTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAt
MTI2LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWduZWQg
a2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcs
IGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkRpZEJlY29t
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIERvd25sb2FkUHJveHkm
KSBmaW5hbDsKKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpT
aGFyZWRCdWZmZXImKSBvdmVycmlkZTsKQEAgLTIzOCw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgOiAxOwogICAg
ICAgICBib29sIHdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXcgOiAxOworICAgICAgICBib29s
IG5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0Rp
ZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXaWxsRW5k
TmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRp
b25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDQzMzc2Yjg2OGEwMTQ5MmM5YzYwNTYx
MGZiYTM1YjQ0OTNhYzc3YWMuLjQ0NjQ1ZmI1NTYyZGY0OTc1YTllMDNjZDhhODdmMjRlNTUxZjQw
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW0KQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBvcnQgIldlYlByb3RlY3Rpb25TcGFjZS5oIgog
I2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0
QWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkMkludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5k
bGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5h
bC5oIgpAQCAtMTg3LDYgKzE4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0
aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25z
aXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQ
cm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0
b01hc3RlcktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRCZWNvbWVE
b3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJl
Z2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2
aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0
aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zv
cndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW06KV07CkBAIC02MzgsOSArNjQwLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6Cisg
ICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5r
OgogICAgICAgICAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
biksIHdlYlBhZ2VQcm94eSwgW2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIp
LCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9w
dGltaXplZExvYWQpIHsKICAgICAgICAgICAgICAgICBpZiAob3B0aW1pemVkTG9hZCkgewpAQCAt
MTE2OCw2ICsxMTczLDE4IEBAIFJlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuCiAgICAgcmV0dXJuIEFQ
STo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiB9CiAK
K3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkQmVj
b21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBE
b3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0
aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9u
RGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRp
b24pIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwogI2lmIFVTRShR
VUlDS19MT09LKQogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0
YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggMjljMTdiZWIzM2VkNjc2Yzlj
NDQ0YTRkNzJhNjAxZjRjZDA3N2YzNi4uMjkzNzI4Njk3MTQ5ZDQxOGE3NzFkYjRjODY3ZjliMGU4
NzJjNTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcApAQCAtNTksNyArNTksMTEgQEAgRG93bmxvYWRQcm94eTo6RG93bmxv
YWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0
b3IKIHsKIH0KIAotRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKSA9IGRlZmF1bHQ7CitE
b3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCit7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxs
YmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKG51bGxwdHIpOworfQogCiBzdGF0aWMg
UmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiB7CkBAIC0xMTcsNyArMTIxLDkgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2UKICAgICBp
ZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9
IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVxdWVzdC51
cmwoKSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOworICAgIGlmIChtX2RpZFN0
YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayh0aGlzKTsKKyAgICBtX2Ns
aWVudC0+bGVnYWN5RGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTE0Nyw2
ICsxNTMsOCBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5
dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaQogCiB2b2lkIERvd25sb2FkUHJveHk6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
LCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CisgICAgLy8gRklYTUU6
IFNhbml0aXplIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaW4gdGhlIHJlc3BvbnNlLgorICAgIC8v
IEZJWE1FOiBBZGQgdGVzdHMgZm9yIHRoaW5ncyBpbiBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRp
bmdEb3dubG9hZExvY2F0aW9uIHRoYXQgY2hhbmdlIHN1Z2dlc3Rpb24uCiAgICAgbV9jbGllbnQt
PmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCByZXNwb25zZSwg
UmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVk
RmlsZW5hbWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11
dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKQEAgLTE3MywxMSAr
MTgxLDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdhY3lSZXN1bWVE
YXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0
aGlzLCBlcnJvcik7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xlZ2Fj
eVJlc3VtZURhdGEuZ2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2Fk
UHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25s
b2FkRmluaXNoZWQoKnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNldENsaWVudChS
ZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZN
b3ZlKGNsaWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAwNzE4ZTg5
M2FiMjU1YmIzYTM1ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi5iMjM5YWE1ZWNjZDhlYjgwZmM0MmUz
YjQyZjFkYzJlMDAzYzFkN2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTEwMiw2ICsxMDIsOCBAQCBwdWJsaWM6CiAgICAg
QVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygpIHsgcmV0dXJuIG1fZnJhbWVJbmZvLmdldCgpOyB9
CiAKICAgICBBUEk6OkRvd25sb2FkQ2xpZW50JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5n
ZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xpZW50KFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmKTsK
KyAgICB2b2lkIHNldERpZFN0YXJ0Q2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3du
bG9hZFByb3h5Kik+JiYgY2FsbGJhY2spIHsgbV9kaWRTdGFydENhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayk7IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25s
b2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQ
YWdlUHJveHkqKTsKQEAgLTEzNCw2ICsxMzYsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVUkw+
IG1fcmVkaXJlY3RDaGFpbjsKICAgICBib29sIG1fd2FzVXNlckluaXRpYXRlZCB7IHRydWUgfTsK
ICAgICBSZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOworICAgIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiBtX2RpZFN0YXJ0Q2FsbGJhY2s7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IDk1NTUwNDQ2MmVmZGU1YzkzMzAxMDhhOWVkZGE3MzhiNTAzNGNiNmUuLjA0YTljY2Fm
OTFjODI2NzAyOWZkMjE2MmUzOTEyZWFiYTQ3ZDRlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzIzMyw2ICszMjMzLDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAg
ICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1dG8mIGRvd25sb2Fk
ID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV93ZWJzaXRl
RGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCwgdGhpcywgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0aW5nRnJhbWVJbmZvKCkgOiBGcmFtZUluZm9EYXRh
IHsgfSk7CisgICAgICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZlB0cihuYXZpZ2F0
aW9uKV0gKGF1dG8qIGRvd25sb2FkUHJveHkpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMg
fHwgIWRvd25sb2FkUHJveHkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIG5h
dmlnYXRpb24uZ2V0KCksICpkb3dubG9hZFByb3h5KTsKKyAgICAgICAgfSk7CiAgICAgICAgIGlm
IChuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBkb3dubG9hZC5zZXRXYXNVc2VySW5pdGlhdGVk
KG5hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKSk7CiAgICAgICAgICAgICBkb3dubG9hZC5z
ZXRSZWRpcmVjdENoYWluKG5hdmlnYXRpb24tPnRha2VSZWRpcmVjdENoYWluKCkpOwpAQCAtNTk5
OCw2ICs2MDAzLDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9h
ZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3du
bG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgpOworICAgIC8v
IEZJWE1FOiBSZXN1bWVkIGRvd25sb2FkIHNob3VsZCBjYWxsICJkaWRTdGFydCIgaW5zdGVhZCBv
ZiB1cyBwcmV0ZW5kaW5nIHRvIGtub3cgaXQgd2lsbCBzdWNjZWVkLgorICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZG93bmxvYWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGRvd25sb2FkLnB0cigpKTsKKyAgICB9KTsKK30KKwordm9pZCBX
ZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLmRvd25sb2FkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVxdWVzdCwgeyB9KTsKKyAg
ICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiB7CiAgICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZUNvbnRlbnRTaXplKHNp
emUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyYmZkMjk2NzA1
ZjlhY2U2ODhhOTU3ZDNhMzA1NWM5ZjQwZTdkY2QzLi4zMTFlODFmZjRlNjE4MWQ2YTRjZjM3MmIy
MTZhNDRlZTUxMDk3NTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApA
QCAtMTI3Myw2ICsxMjczLDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkm
LCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQg
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURv
d25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3du
bG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxp
bmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhN2JiMmU3YWU0MGNhZDAzMWExYmM0YjEx
YWZhNTkwMGMyMDcxMGQuLjhkYTU3YmRiZTIyNWUyYzAzN2UyMjYzNjNkZjMyZWQ3N2Q0NDdhNjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTc4NSw2ICsxNzg1LDkgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0
U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0
QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVw
TWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9w
dXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
M0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJ
CURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUyRUNCOEQwMEQ5MjFE
QiAvKiBfV0tEb3dubG9hZDIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWREZWxl
Z2F0ZTIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERG
MEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURGMEM1RjJCMjUyRUQ0
NDAwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIF9X
S0Rvd25sb2FkMkludGVybmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29r
aWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2
MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0
RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZp
ZXcubW0gKi87IH07CkBAIC01MjgxLDYgKzUyODQsMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBv
cHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhE
MDBEOTIxREIgLyogX1dLRG93bmxvYWQyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gX1dLRG93bmxvYWQyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogX1dLRG93bmxvYWQyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkMi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWQySW50ZXJu
YWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDky
MURCIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS0Rvd25sb2FkRGVsZWdhdGUyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmVQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNDYyRTExMjNGMzM4QUQwMEVG
RjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tDb250ZW50V29ybGRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcyNTMsNyArNzI2MCwxMSBAQAogCQkJCTgz
ODkxQjY4MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgg
Ki8sCiAJCQkJQTFBNEZFNTcxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggKi8sCiAJ
CQkJQTFBNEZFNTgxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLm1tICovLAorCQkJCURG
MEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIuaCAqLywKKwkJCQlERjBDNUYy
MzI1MkVDQjhEMDBEOTIxREIgLyogX1dLRG93bmxvYWQyLm1tICovLAorCQkJCURGMEM1RjI1MjUy
RUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oICovLAogCQkJCUExQTRGRTYw
MThERDU0QTQwMEI1RUE4QSAvKiBfV0tEb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREYwQzVG
MjYyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUyLmggKi8sCiAJCQkJQTFB
NEZFNTkxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywKIAkJCQkz
NzlBODczODE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5oICovLAogCQkJCTM3
OUE4NzM3MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLm1tICovLApAQCAtMTA2
MzAsNyArMTA2NDEsMTAgQEAKIAkJCQk1QzVEMjM4QzIyN0EyQ0RBMDAwQjlCREEgLyogX1dLQ3Vz
dG9tSGVhZGVyRmllbGRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk4Mzg5MUI2OTFBNjhCRUJDMDAz
MEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFBNEZFNUExOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2FkLmggaW4gSGVhZGVycyAq
LywKKwkJCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUExQTRGRTYxMThERDU0QTQwMEI1RUE4QSAvKiBf
V0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyQTI1MkVDQjhF
MDBEOTIxREIgLyogX1dLRG93bmxvYWREZWxlZ2F0ZTIuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
QTRGRTVDMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NEVDM0VBOTI0N0Y1QzA5MDA1OTQ4OUMgLyogX1dLRHJhZ0FjdGlvbnNJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5QTg3M0ExOEJCRkUwRjAwNTg4QUYyIC8qIF9X
S0VsZW1lbnRBY3Rpb24uaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc3ZDQ4Zjk3ZDJmNTkzYmM0MDA1YTQwNjRmOGMy
OTUyNTcxZmRmOWUuLjNmYmJkOWZjMzk3OGUyMmQ0YmM2NGU3M2ZhMjMyZDFkMDhhZmU5YjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMyBAQAorMjAyMC0xMC0xNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoZG93bmxvYWRUZXN0U2VydmVyKToKKyAg
ICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAoc2ltcGxlRG93
bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToKKyAgICAgICAg
KHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5tbTogQWRkZWQu
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBkb3dubG9hZDp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlMiBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25s
b2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkRGlkRmluaXNoOl0p
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWQ6ZGlkRmFpbFdpdGhF
cnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93
bmxvYWRQcm9jZXNzRGlkVGVybWluYXRlOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxl
Z2F0ZTIgX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRCZWNvbWVEb3dubG9hZDpdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUyIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF0pOgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZTIgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisKIDIwMjAtMTAtMTMgIExhdXJvIE1v
dXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IExvZyBhbmQgcmVw
b3J0IHdlYmRyaXZlciBoYXJuZXNzIGVycm9ycwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGQ5N2YyNjZlNDA1ZWNmYWE0MTQxOTQ1OTkwODhhZDU0MGJkNGQwOWUuLmQwM2Vm
Y2I2MDE0ZDM5YTVlYjFjZTFjOWRlYmJlOGI0ZmE5MWY5MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Nv
dXJjZXNDb2NvYS50eHQKQEAgLTI3LDYgKzI3LDcgQEAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4
dHJhcy5tbQogY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdENvY29h
Lm1tCiBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUyLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2NvYS9UZXN0UHJv
dG9jb2wubW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQzOTRjOTc2YmZiMWYyZDU4MTU3ODg3YjNkNmY2ZGVlNTk1MjYxNjYuLjRjYzUwODc2ZmYw
YWNiZWNlYTEzNmM2YjE1NTk3NTk5Y2YyZmFmZTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNzgxLDYgKzI3ODEsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJW
aWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25h
cnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93
bmxvYWREZWxlZ2F0ZTIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxl
Z2F0ZTIubW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93
bmxvYWREZWxlZ2F0ZTIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUyLmg7
IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBE
QzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMzEwMSw2ICszMTAzLDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0
MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCTVDNzJFOENEMjQ0RkZDRTMw
MDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJCTVDNzJFOENFMjQ0RkZD
RTQwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3MDI1
MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUyLmggKi8sCisJCQkJREY2QkM0
NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlMi5tbSAqLywKIAkJCQky
RDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAog
CQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1t
ICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLjA4N2Nj
MDkwNzMyNTE4OGZmZDJhZWQ2ZGVhMDA3OTU0MDhjODZlYzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsNiArMzMsNyBA
QAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0
RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUyLmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wu
aCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkMi5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oPgpAQCAtMTE4OSwyNCArMTE5MSwzMCBAQCBTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBj
KQogICAgIHJldHVybiBTdHJpbmcodmVjdG9yLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAotVEVTVChf
V0tEb3dubG9hZCwgUmVzdW1lKQorZW51bSBjbGFzcyBJbmNsdWRlRVRhZyA6IGJvb2wgeyBObywg
WWVzIH07CitlbnVtIGNsYXNzIFRlcm1pbmF0ZUFmdGVyRmlyc3RSZXBseSA6IGJvb2wgeyBObywg
WWVzIH07CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNl
cnZlcihUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgdGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5ID0g
VGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpObywgSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJ
bmNsdWRlRVRhZzo6WWVzKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwot
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNv
bm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFs9LCBjb25uZWN0aW9uQ291bnQgPSAw
XShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAg
ICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hh
cj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAg
ICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNwb25z
ZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxu
IiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcgPT0gSW5jbHVkZUVUYWc6OlllcyA/
ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9u
OiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgogICAgICAgICAgICAg
ICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQotICAgICAgICAgICAgICAgICkp
OworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdU
Rk1vdmUocmVzcG9uc2UpLCBbPV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgPT0gVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpZ
ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
W2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdl
OiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDEyICsxMjI4LDYwIEBAIFRFU1QoX1dL
RG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CiAKLSAgICBOU1VS
TCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5
KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0g
aXNEaXJlY3Rvcnk6WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVu
dHMoTlNVUkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRh
dGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxl
bmd0aCwgMTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOworICAg
IGlmIChmaWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNvbnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUp
IHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCisgICAgICAgICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylb
aV0sICdhJyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykK
KyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRl
bnRzLmJ5dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHsgW10o
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rp
b24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAg
ICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAg
IkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRc
IlxyXG4iCisgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAg
ICAgICAgICAgICkpOworICAgICAgICB9KTsKKyAgICB9fTsKK30KKworc3RhdGljIHZvaWQgY2hl
Y2tGaWxlQ29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDb250ZW50
cykKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBleHBlY3Rl
ZENvbnRlbnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVDb250
ZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsKK30KKwor
c3RhdGljIE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5TVVJMICp0
ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9y
eTpZRVNdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0
b3J5QXRVUkw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3Rl
bXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERv
d25sb2FkRmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07CisgICAg
cmV0dXJuIGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeSkpIHsKQEAgLTEyNDMsNyArMTI5OSw4IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3Vt
ZSkKICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddKTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2Vz
dGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikp
IHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24p
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAg
ICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRv
d25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNr
cy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcgKzEzMTUsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgp
LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGlu
YXRpb24pIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGlu
YXRpb24pOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7
CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0g
XihfV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxs
YmFjazo6Q2FuY2VsKTsKQEAgLTEyOTYsMTUgKzEzNTMsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCiAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAK
LSAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlXTsKLSAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0
aCwgMTAwMDB1KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlm
IChmaWxlQ29udGVudHMuYnl0ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1
MDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1
MDAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hl
Y2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBp
bnRlcmZhY2UgRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CkBAIC0xMzczLDQgKzE0MjIsNTMxIEBAIFRFU1QoX1dLRG93bmxvYWQsIFN1
YmZyYW1lU2VjdXJpdHlPcmlnaW4pCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keT48aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAu
MTolZC9wYWdlJz48L2lmcmFtZT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpuaWxd
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBjaGVja0NhbGxiYWNrUmVjb3JkKFRlc3RE
b3dubG9hZERlbGVnYXRlMiAqZGVsZWdhdGUsIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBleHBl
Y3RlZENhbGxiYWNrcykKK3sKKyAgICBhdXRvIGFjdHVhbENhbGxiYWNrcyA9IGRlbGVnYXRlLnRh
a2VDYWxsYmFja1JlY29yZDsKKyAgICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwg
ZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0
ZDo6bWluKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7
IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrc1tpXSwgZXhwZWN0ZWRDYWxs
YmFja3NbaV0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmluaXNoU3VjY2Vzc2Z1bGx5KQor
eworICAgIGF1dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNV
UkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0
ZS5uYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b24gKiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9h
ZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIC8vIEZJWE1FOiBBZGQgdGhpcyBmb3Ig
YWxsIHRoZXNlIHRlc3RzLgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0p
OworfQorCitzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3Vt
ZURhdGEsIE5TVVJMICpkZXN0aW5hdGlvbikKK3sKKyAgICBjaGVja0ZpbGVDb250ZW50cyhkZXN0
aW5hdGlvbiwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGF1dG8gKmRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byAqd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPF9XS0Rvd25sb2FkMj4gcmV0YWluZWREb3dubG9hZDsKKworICAgIFt3ZWJWaWV3IF9yZXN1
bWVEb3dubG9hZDpyZXN1bWVEYXRhIGRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uIGNvbXBsZXRpb25I
YW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25s
b2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsK
KyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNw
aW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9
IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUp
OworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICos
IE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8gV2UgYWxyZWFkeSBnYXZlIHRoZSByZXN1
bWUgcmVxdWVzdCB0aGUgZGVzdGluYXRpb24uIEZJWE1FOiBUaGluayB0aGlzIEFQSSBkZXNpZ24g
dGhyb3VnaC4KKyAgICB9OworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxv
YWQyICpkb3dubG9hZCwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dy
aXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICBFWFBF
Q1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOworICAgICAgICBFWFBFQ1Rf
RVEoYnl0ZXNXcml0dGVuICsgNTAwMCwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBF
Q1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0
ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVkU2Vjb25kNWsgPSB0cnVl
OworICAgIH07CisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIGRlbGVn
YXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAg
ICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAg
IHJldGFpbmVkRG93bmxvYWQgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9h
ZGVkU2Vjb25kNWspOworICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBV
dGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRz
KGRlc3RpbmF0aW9uKTsKK30KKworc3RhdGljIHZvaWQgd2FpdEZvckZpcnN0NWsoVGVzdERvd25s
b2FkRGVsZWdhdGUyICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZp
cnN0NWsgPSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAg
ZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZDIgKiwgaW50NjRfdCBieXRlc1dy
aXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
V3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAx
MDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRv
d25sb2FkZWRGaXJzdDVrID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRl
ZEZpcnN0NWspOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQ2FuY2VsQW5kUmVzdW1lKQorewor
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxfV0tEb3dubG9hZDI+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlv
bkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIF9XS0Rv
d25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2Fk
OworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJM
UmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9
OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxO
U0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWxC
eVByb2R1Y2luZ1Jlc3VtZURhdGE6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0
YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdoaWxlICghcmV0
YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3Vt
ZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmFpbEFuZFJlc3VtZSkKK3sKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihUZXJtaW5hdGVBZnRlckZpcnN0UmVw
bHk6Olllcyk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZDI+IHJldGFpbmVkRG93bmxv
YWQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
X1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNV
UkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICByZXRhaW5lZFJlc3VtZURh
dGEgPSByZXN1bWVEYXRhOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRl
KTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1
bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEu
Z2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIENh
bmNlbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cihUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHk6Ok5vLCBJbmNsdWRlRVRhZzo6Tm8pOworICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRl
Lm5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
biAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQg
PSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2Fk
MiAqLCBOU1VSTFJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
KyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsQnlQcm9kdWNpbmdS
ZXN1bWVEYXRhOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJl
c3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmFpbE5vUmVzdW1l
RGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihUZXJtaW5hdGVB
ZnRlckZpcnN0UmVwbHk6OlllcywgSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3Bv
bnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQyICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNU
X0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAg
ICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3Ry
aW5nPDUwMDA+KCdhJykpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVzdW1lV2l0aG91dElu
aXRpYWxEYXRhT25EaXNrKQoreworICAgIAorfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVzdW1l
V2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgCit9CisKK1RFU1QoX1dLRG93bmxv
YWQyLCBSZXN1bWVXaXRoSW52YWxpZFJlc3VtZURhdGEpCit7CisgICAgCit9CisKK1RFU1QoX1dL
RG93bmxvYWQyLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93
bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZDI+IHJldGFp
bmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsK
KyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVs
ZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxv
bmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJl
dGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWxCeVByb2R1Y2lu
Z1Jlc3VtZURhdGE6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1
bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1l
RGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5jZWwo
KTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IF9yZXN1
bWVEb3dubG9hZDpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgZGVzdGluYXRpb246ZXhwZWN0ZWRE
b3dubG9hZEZpbGUgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7
CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgRVhQRUNUX05V
TEwoZG93bmxvYWQuZGVsZWdhdGUpOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWREb3du
bG9hZCkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBO
U0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICBFWFBF
Q1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07Cisg
ICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFVua25vd25Db250
ZW50TGVuZ3RoKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtdKENvbm5lY3Rpb24gY29ubmVj
dGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9y
PGNoYXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKCJIVFRQ
LzEuMSAyMDAgT0tcclxuXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSkpOworICAgICAgICB9
KTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2
aWdhdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICos
IF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRh
ID0gXihfV0tEb3dubG9hZDIgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxC
eXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFRoZSBmaXJzdCB0d28gc2hvdWxkIHByb2JhYmx5IGJlIHVuc2lnbmVk
LgorICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSA1MDAwKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgNTAwMCk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgLTEpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgSW52YWxpZEFyZ3VtZW50cykKK3sK
KyAgICAKK30KKworc3RhdGljIEhUVFBTZXJ2ZXIgcmVkaXJlY3RTZXJ2ZXIoKQoreworICAgIHJl
dHVybiB7eworICAgICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvcmVkaXJlY3RU
YXJnZXQiIH0sIHsgIkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1WYWx1ZSIgfX0gfSB9LAorICAgICAg
ICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH19OworfQorCitURVNUKF9X
S0Rvd25sb2FkMiwgUmVkaXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0
U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVl
c3QoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgX2Rvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
X1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4o
X1dLRG93bmxvYWQyICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKF9XS0Rvd25sb2FkUmVkaXJlY3RQ
b2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29s
dXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShbcmVzcG9uc2UgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJDdXN0b20tTmFt
ZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyk7Cisg
ICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihfV0tEb3dubG9hZDIgKikgeworICAgICAgICAgICAgZmluaXNoZWREb3dubG9h
ZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZERv
d25sb2FkKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAi
aGkiKTsKKyAgICAKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOwor
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURl
c3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKF9XS0Rv
d25sb2FkMiwgUmVkaXJlY3RDYW5jZWwpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNl
cnZlcigpOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBf
X2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oX1dLRG93bmxvYWQyICos
IE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2
ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVz
cG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShbcmVz
cG9uc2UgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZh
bHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVT
dHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJy
ZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICAgICAgY2Fu
Y2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNhbmNl
bGxlZCk7CisvKgorICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBuaWNlbHkuCisgICAgdXNs
ZWVwKDEwMDAwKTsKKyAgICBVdGlsOjpzcGluUnVuTG9vcCgxMDApOworCisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVk
aXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IgLy8gRklY
TUU6IEkgZG9uJ3QgdGhpbmsgdGhpcyBzaG91bGQgYmUgaGVyZS4gSWYgd2UgY2FuY2VsLCB3ZSBz
aG91bGQgZ2V0IG5vIG1vcmUgY2FsbGJhY2tzLgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2
ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7CisgKi8KK30KKworVEVTVChfV0tEb3dubG9hZDIsIERv
d25sb2FkUmVxdWVzdEZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAg
ICBOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNl
cnZlci5jYW5jZWwoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG93
bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9h
ZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxv
YWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAg
ICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsK
KyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZmYWlsZWQpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQor
CitURVNUKF9XS0Rvd25sb2FkMiwgRG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQor
ICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
MiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9k
b3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rv
d25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9X
S0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICAgICAgZGlkRmlu
aXNoID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlz
aCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImh0dHAg
Ym9keSIpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gs
CisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDaGFsbGVuZ2VTdWNjZXNzKQorewor
ICAgIAorfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICAK
K30KKworVEVTVChfV0tEb3dubG9hZDIsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCit7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25EaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqLCBfV0tEb3dubG9h
ZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3du
bG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19i
bG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZFByb2Nl
c3NEaWRUZXJtaW5hdGUgPSBeKF9XS0Rvd25sb2FkMiAqKSB7CisgICAgICAgIHRlcm1pbmF0ZWQg
PSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVk
KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFN1Z2dlc3RlZEZpbGVuYW1lKQoreworICAgIAor
fQorCitURVNUKF9XS0Rvd25sb2FkMiwgQmxvYlJlc3BvbnNlKQoreworICAgIAorfQorCitURVNU
KF9XS0Rvd25sb2FkMiwgSW5pdGlhdGVkRnJvbVVJUHJvY2VzcykKK3sKKyAgICAKK30KKworVEVT
VChfV0tEb3dubG9hZDIsIE5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZCkKK3sKKyAgICAKK30K
KworVEVTVChfV0tEb3dubG9hZDIsIERlbGVnYXRlRGVhbGxvY2F0ZWRCZXR3ZWVuQ2FsbGJhY2tz
KQoreworICAgIAorfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVxdWVzdEhUVFBCb2R5KQorewor
ICAgIAorfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQ3JlYXRlUGF0aCkKK3sKKyAgICAKK30KKwor
VEVTVChfV0tEb3dubG9hZDIsIE92ZXJ3cml0ZUV4aXN0aW5nRmlsZSkKK3sKKyAgICAKK30KKwor
fQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5oIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lOWY0YjY0NTQ3NzRiNWQzNzgyMTEyNmNlYjY2MGY1NTcwNDk5ZmMyCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaApA
QCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgor
I2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUyLmg+CisKK2VudW0gY2xhc3MgRG93
bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAgICBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0ZURh
dGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAgUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSwKKyAgICBOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgTmF2aWdhdGlv
blJlc3BvbnNlCit9OworCitAaW50ZXJmYWNlIFRlc3REb3dubG9hZERlbGVnYXRlMiA6IE5TT2Jq
ZWN0PF9XS0Rvd25sb2FkRGVsZWdhdGUyLCBXS05hdmlnYXRpb25EZWxlZ2F0ZT4KKworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiko
X1dLRG93bmxvYWQyICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lk
ICheKShfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxv
YWQyICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
KShfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCB2b2lkICheKShOU1VSTCAqKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxv
YWQyICosIGludDY0X3QsIGludDY0X3QsIGludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQyICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9h
ZDIgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZSkoX1dLRG93bmxvYWQyICopOworCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25EaWRCZWNvbWVEb3du
bG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqLCBfV0tEb3dubG9hZDIgKik7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpKTsKKworLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2g7CistIChW
ZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkOworCitAZW5kCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA5Yzk0ZDIxMzA4NWQyZjRlYTY2MzEzMTllMTUwMGQwMzlkODMyYzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlMi5tbQpAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5o
IgorI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUyLmgiCisKKyNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKworQGltcGxlbWVudGF0aW9uIFRlc3REb3du
bG9hZERlbGVnYXRlMiB7CisgICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1Jl
Y29yZDsKK30KKworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgd2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3
UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBf
Y2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisK
KyAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9u
SGFuZGxlcik7Cit9CisKKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2Fk
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ug
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShkb3dubG9hZCwg
cmVzcG9uc2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLSAodm9pZClkb3dubG9hZDooX1dL
RG93bmxvYWQyICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0
b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKK3sKKyAgICAv
LyBkaWRXcml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5pc3RpYyBudW1iZXIgb2YgdGlt
ZXMsIHNvIG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCisgICAgaWYgKF9jYWxsYmFja1Jl
Y29yZC5pc0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3QoKSAhPSBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEpCisgICAgICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKTsKKworICAgIGlmIChfZGlkV3JpdGVEYXRhKQorICAg
ICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0
dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAodm9pZClkb3dubG9hZDoo
X1dLRG93bmxvYWQyICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJM
Q3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFw
cGVuZChEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CisKKyAgICBp
ZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKK30KKworLSAodm9p
ZClkb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQyICopZG93bmxvYWQKK3sKKyAgICBfY2Fs
bGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKKyAgICBp
ZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxv
YWQpOworfQorCistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRG
YWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1l
RGF0YQoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlk
RmFpbFdpdGhFcnJvcik7CisKKyAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgIF9k
aWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7Cit9CisKKy0gKHZv
aWQpZG93bmxvYWRQcm9jZXNzRGlkVGVybWluYXRlOihfV0tEb3dubG9hZDIgKilkb3dubG9hZAor
eworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6UHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSk7CisKKyAgICBpZiAoX2Rvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZSkKKyAg
ICAgICAgX2Rvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZShkb3dubG9hZCk7Cit9CisKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9u
ICopbmF2aWdhdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQK
K3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9h
ZCkKKyAgICAgICAgX25hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0
aW9uLCBkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNl
ICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlm
IChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5k
bGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2Fk
RGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNT
RVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlzaCA9IF4oX1dL
RG93bmxvYWQyICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKKy0gKFZlY3RvcjxEb3dubG9h
ZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQKK3sKKyAgICByZXR1cm4gc3RkOjpleGNoYW5n
ZShfY2FsbGJhY2tSZWNvcmQsIHsgfSk7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411940</attachid>
            <date>2020-10-20 16:56:39 -0700</date>
            <delta_ts>2020-11-09 20:31:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201020175637.patch</filename>
            <type>text/plain</type>
            <size>165857</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMzOGUwZGE0ZTU0MzVhYmVk
NDZlNTM1ZTJlZmY3ODdkN2Q1NTU4OTYuLjJkNzllNmY3YmNlOGM5MzBlZGVkOTkzZThkNzQ2ODM4
ZGEzMjkyM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDIwLTEwLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBfV0tEb3dubG9hZDIgYW5kIF9XS0Rvd25sb2FkRGVsZWdh
dGUyIQorCisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhl
IGRlbGVnYXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhl
IHByb2Nlc3MgcG9vbC4KKyAgICAgICAgMi4gIF9XS0Rvd25sb2FkMiBkb2VzIG5vdCBjb25mb3Jt
IHRvIE5TQ29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGlj
dGlvbmFyeS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0
IHdpbGwgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRo
YXQgdXNlZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIg
dG8gZ2V0IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0
aGVuIGdldHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlk
RmFpbFdpdGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlz
IG5vIHdheSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUg
YWJvdXQgYSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9m
IHRoZSBkb3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIElu
c3RlYWQsIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBu
YXZpZ2F0aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93
bmxvYWQuCisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2Fu
IGFsc28gYmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBk
b3dubG9hZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5
IHdhbnQgdG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAg
ICAgICA5LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29t
cGxldGlvbiBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIF9XS0Rvd25sb2FkMiBvbmNlIGl0J3Mgc3Rh
cnRlZC4gIFRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICAgICAgcmVmZXJlbmNlIHRoZSBkb3du
bG9hZCBvYmplY3QgYmVmb3JlIHRoZW4gYW55d2F5cy4gIE5vdGU6IHRoYXQncyB3aGVuIHRoZSBk
b3dubG9hZCAic3RhcnRzIiB3aGljaCBpcyBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhlIHJlc3BvbnNl
LAorICAgICAgICAgICAgc28gdGhlcmUgd2lsbCBiZSBubyBzZXJ2ZXIgZGVsYXkgaW4gdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiBkb3dubG9hZCBvYmplY3QgYXZhaWxhYmlsaXRpZXMuCisgICAgICAg
IDEwLiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCBub3cgZ2l2ZXMgeW91IHRoZSBvcHRp
b24gb2YgY29udGludWluZyBvciBjYW5jZWxsaW5nLiAgVGhpcyByZWZsZWN0cyB0aGUgYW1vdW50
IG9mIGNvbnRyb2wgdGhlCisgICAgICAgICAgICBXS05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMuCisg
ICAgICAgIDExLiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSBhbmQgZGlk
UmVjZWl2ZVJlc3BvbnNlIGhhdmUgYmVlbiBtZXJnZWQsIHNpbmNlIHRoZXkgYWN0dWFsbHkgaGFw
cGVuIGF0IHRoZSBzYW1lIHRpbWUgYW5kCisgICAgICAgICAgICBOU1VSTFJlc3BvbnNlIGhhcyBz
dWdnZXN0ZWRGaWxlbmFtZSBBUEkuICBhbGxvd092ZXJ3cml0ZSBpcyBhbHNvIGdvbmUuICBJdCB3
YXNuJ3QgdXNlZCwgYW5kIG5vdCByZWFsbHkgbmVlZGVkLgorICAgICAgICAxMi4gZGlkQ3JlYXRl
RGVzdGluYXRpb24gaXMgZ29uZS4gIFRoYXQgY2FsbGJhY2sgdGltZSB3YXNuJ3QgcmVhbGx5IG5l
Y2Vzc2FyeS4gIElmIHlvdSBuZWVkIHRvIGtub3cgd2hlbiBpdCdzIGNyZWF0ZWQsIHdhaXQgdW50
aWwgdGhlIGZpcnN0CisgICAgICAgICAgICBkaWRXcml0ZURhdGEgY2FsbGJhY2suICBUaGUgZGVz
dGluYXRpb24gaGFzIGRlZmluaXRlbHkgYmVlbiBjcmVhdGVkIGJ5IHRoZW4uCisgICAgICAgIDEz
LiBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSBpcyBnb25lLiAgSXQncyBhY3R1YWxs
eSBub3QgY2FsbGVkIHNpbmNlIHdlIGFkb3B0ZWQgTlNVUkxTZXNzaW9uLCBhbmQgd2Ugc2hvdWxk
IHJlbW92ZSB0aGUgcmVsYXRlZCBkZWFkIGNvZGUuCisgICAgICAgIDE0LiBvcmlnaW5hdGluZ0Zy
YW1lIGlzIGdvbmUuICBPbiBfV0tEb3dubG9hZCBpdCB3YXMgYWN0dWFsbHkgYSBub24tbnVsbCBX
S0ZyYW1lSW5mbyB0aGF0IG9mdGVuIGNvbnRhaW5lZCBubyBpbmZvcm1hdGlvbi4gIFdoZW4gaW5m
b3JtYXRpb24gd2FzIHRoZXJlLAorICAgICAgICAgICAgdGhlIGluZm9ybWF0aW9uIGFjY2VzcyBo
YXMgYmVlbiByZXBsYWNlZCBieSBkaWRCZWNvbWVEb3dubG9hZCB3aGljaCBsaW5rcyB0aGUgV0tO
YXZpZ2F0aW9uUmVzcG9uc2Ugd2hpY2ggaGFzIGZyYW1lIGluZm8gb24gaXQuCisKKyAgICAgICAg
SSB3cm90ZSBBUEkgdGVzdHMgZm9yIGV2ZXJ5dGhpbmcgSSBjb3VsZCB0aGluayBvZi4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6
bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OmxlZ2FjeURpZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZh
aWwpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToK
KyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRh
U3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dl
YlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVEb3dubG9hZDpkZXN0aW5hdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1b
X1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgY2FuY2Vs
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOl0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9y
aWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZWRpcmVjdENoYWlu
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0ZWRdKToKKyAgICAgICAg
KC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBkZWxlZ2F0ZV0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZDIgc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkMiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBfYXBpT2JqZWN0XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDJJbnRlcm5hbC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRl
cm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZTIu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVy
bmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OnBy
b2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3du
bG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0
aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25EaWRCZWNv
bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OnNldERpZFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAyMC0xMC0xOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5G
dWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIHNsdWdnaXNoIHBhZ2Ugc2Nyb2xs
aW5nIGZvciB3aGVlbCBldmVudHMgc2luY2UgcjI2ODQ5OQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5k
ZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uMmMxMzdmNjdmMmI0
MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERlc3RpbmF0aW9uRGVj
aWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9kb3dubG9hZHNBZnRl
ckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShuZXR3b3JrRGF0YVRh
c2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2Vy
OjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewogI2lmICFQ
TEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA1LDYgKzEwNSwxMSBA
QCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVl
PERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdvcmtTZXNzaW9uKTsK
IAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBs
ZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2UncmUgdXNpbmcgdGhl
IG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENhbGxEb3dubG9hZERp
ZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFBy
b3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250
YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1v
dmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3
ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZkNDI5Y2IwOWJiYzUyNTk2ZmY1
OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3Mg
UGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9v
bCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1
bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsICBW
ZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2FkSUQsIFJlZjxO
ZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Np
b25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lk
IHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgY2FuY2Vs
RG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDBiYjg1NzMwNTM4NGNi
MzVkNzhhNjRkYWM5NDM0ZDdmYzgyNGQ5ZjUuLmY4ZmFmYjFjNzY0MTg1MDU3OTY2ZTk0MWU1NjI5
NjZiNWQ3YTU3NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkgKzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpk
b3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25s
bwogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9h
ZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxl
bmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0
YXJ0KQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwg
ZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpLCBjYWxsRG93bmxvYWREaWRTdGFydCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNh
bmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYTc3ZmFi
OTYxZGYyZTVlMzA2MTI2OWY1OTJhMmM0Yzg2OTQ2ZjlkLi42N2Q3NTNmZDA3NmI4YzAxYmM5OGIz
MjcwOGIwNmY0MDE5MDUyYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNl
TG9hZGVyOwogY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5l
Y3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNz
IENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRo
ZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVp
bnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAt
NDIxLDcgKzQyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShXYWxsVGlt
ZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9p
ZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKICAg
ICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJMJiwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGViZTkwNTMzNmUz
NGQxMzk0MDI1M2IyZmU3NDEwYjBlOGZiOTRjNy4uYWFmMDY2NDBjYjU0OGJiNzA2NGVlNDMwOGEw
NDdmY2E4ZjAzZjUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC01MCw3ICs1MCw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmlnaW5Jbldl
YnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5l
d0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5
cGVzKSAtPiAoKSBBc3luYwogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lKQotICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1
bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVu
Y2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxEb3dubG9h
ZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2FkKFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURh
dGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jl
c3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCAyNTMyODczMThjZjRjYjc5NzhhYzFmMzkw
NmMxMWMxYjg2ZGE0NjU0Li5jNGZjODZmZDc1MDE0ZjAwMDQ5MWQxZDQ2MjhmZWI5ZTA2OGE1OTg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTY2Niw2ICs2
NjYsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAgICAgJ1dlYktpdDo6QWN0
aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKKyAg
ICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJEb3dubG9hZE1hbmFnZXIu
aCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRl
bnRXb3JsZFNoYXJlZC5oIiddLAogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldl
YkZpbmRPcHRpb25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3Rh
dGUnOiBbJyJHZXN0dXJlVHlwZXMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQppbmRleCAxNzMwYmQ0OTNmZDBiNDZkZWVjYzI0N2Q3YzE4MmNkNjgyOGRhNjMxLi43
MmFkNTNkYWU4MGQ1M2YxYjU4N2FhOTVkM2MyZGMwOWJmZTYzNGYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03Myw3ICs3Myw3IEBACiAjaW1wb3J0ICJfV0tB
dXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RB
Y3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwu
aCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2Fk
MkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJl
ZU5vZGVJbnRlcm5hbC5oIgpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQqIE9iamVjdDo6bmV3T2Jq
ZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBU
eXBlOjpEb3dubG9hZDoKLSAgICAgICAgd3JhcHBlciA9IFtfV0tEb3dubG9hZCBhbGxvY107Cisg
ICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQyIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggZjY5YTJkZDM5YjBlMWUyMGMxYmJmYzEzYTVkNDQxNTkzNzkyMGJmZC4uOWU5MDM2MDEz
MzFiYTIwZGJmNWM3NzVkYTczMWZmYjFiOTg1N2YzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtMjUwLDYgKzI1MCw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFJ1bGVMaXN0
QWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRleHRNZW51RWxlbWVudEluZm8u
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIEBuby11bmlm
eQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZDIubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFeHBlcmltZW50YWxGZWF0dXJlLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IGQzN2Y2Mjg2OGI2
MTI5N2ExMWFmZmYzODAyYTgwYmE2MTJhNGRjZTUuLmRmZjczZmE2NWJmNmZiMGFkMTdhZmE5OWY1
ODJmOTQyZmFmN2EwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElE
b3dubG9hZENsaWVudC5oCkBAIC00OSwxOCArNDksMjAgQEAgZW51bSBjbGFzcyBBbGxvd092ZXJ3
cml0ZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBBUEkgewogCitjbGFzcyBEYXRhOworCiBjbGFzcyBE
b3dubG9hZENsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERvd25sb2FkQ2xpZW50PiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG93bmxvYWRD
bGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0OjpEb3du
bG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0
ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNh
bmNlbCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXVEY6OlN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RG
OjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0
ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQ
STo6RGF0YSogcmVzdW1lRGF0YSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxlZ2FjeURpZENhbmNl
bChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAppbmRleCAw
NjFlMTg2ZGJlODg2YTA3NDIyYmY4M2I3YWZjZmNiYzZhYzllNmFlLi45Mjk0MDhlYTA1Mzg2NWZi
ZDk1ZTNkYjQ2NGVlYzhlN2M5NmE5MzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDcgQEAgc3RydWN0IFNl
Y3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7CiBjbGFz
cyBXZWJGcmFtZVByb3h5OwpAQCAtOTksNiArMTAwLDggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIHsgfQogCisgICAgdmlydHVhbCB2
b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBj
aGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRs
aW5nKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExT
KGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCA3Y2Y1NzcyNGYyYWI5MzM5
MDA4ZDFiMmUxZGJkMmU3YTM0ZGYxOTc5Li45ODIwNDY5MmUxNTdmYzI1MjQ2NGFmNzdmNjdiYmI0
ODlmZDA0ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaQogICAgICAgICAg
ICAgaW5pdGlhbGl6ZShjbGllbnQpOwogICAgICAgICB9CiAgICAgcHJpdmF0ZToKLSAgICAgICAg
dm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFs
CisgICAgICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZFN0YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lk
IFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHREb3dubG9hZENsaQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJv
eHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQg
ZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAgICAgICB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgZmluYWwKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXggZGMyZTBkMTkyMzE1ZWU1NzJk
MWQxZjY3OGFiYTYxZDZjMjRkMTM5MS4uZWM2Y2JiNDEyZjhiNWRmNThlZGQzZDlmZTljOGRmY2Iz
MmZjODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAg
LTEzOCw3ICsxMzgsNyBAQCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdp
dGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRD
bGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhp
c3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlD
bGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRD
bGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
QmFzZSogY2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2Uq
IGNsaWVudCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKFdLRG93bmxvYWRT
ZXREb3dubG9hZENsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9u
Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93
bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVx
dWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFiOTE1N2Q4MDNh
NGZiYWViMTM4YjczYmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhiNmFkMzRmYzYx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvbi5tbQpAQCAtNDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRpb24tPm9yaWdp
bmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0aWF0ZWQKK3sK
KyAgICByZXR1cm4gX25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZlQ29udGVudE1v
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmMDljMmE4ZTZhNWI3ODU1YmZm
OWVhNWZjMzIxMzJhMTUzZWIxNWI1Li5hMDg5MWMwZjU3YWUzMDNmNjc3NGJhNmRhMWU5Yjc3MjEw
MDk0ZjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC01OCw4ICs1OCw4IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kp
IHsKICAgICBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlLAogfSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEp
Owotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dp
dGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeURvd25sb2FkICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RC
QSkpID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygx
Mi4yKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91
dFRyeWluZ0FwcExpbmsgKyAxKTsKIAogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsg
MSk7CkBAIC04Myw2ICs4MywxNCBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogLSAodm9pZClf
d2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOihXS1dlYlZpZXcgKil3ZWJWaWV3
OwogLSAodm9pZClfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KFdLV2Vi
VmlldyAqKXdlYlZpZXc7CiAKKy8qCisgQGFic3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBU
aGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlv
blJlc3BvbnNlIFRoZSByZXNwb25zZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxv
YWQuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyovCistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KF9XS0Rvd25sb2Fk
MiAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIC0gKE5TRGF0YSAqKV93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25Qcml2YXRlLmgKaW5kZXggOTE1ODlkMTJhNDIzN2NkNzNiYjczZWQ1Yzk3YjYx
YzE3YTFmMTM5Yy4uYTdhN2Q5MjlkZmY4NzA0M2U3ZjNhNjAzZjY4ZGU0MDdkMGQzMGFjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oCkBAIC0yNyw0ICsyNyw1IEBACiAKIEBpbnRlcmZhY2UgV0tOYXZpZ2F0aW9u
IChXS1ByaXZhdGUpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJM
UmVxdWVzdCAqX3JlcXVlc3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3dhc1VzZXJJbml0aWF0ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggZTc5NWIzMzI2Yzc2ZGY5ZDlkODQwMzQyZjhk
ZDE0YmJiZmExMDdkYi4uNGU3Zjg2ZjVmZTMxMTlkZDIxMTg2YzFjMTk0YzhkMzQ3Zjc0NzgxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiQXV0b21hdGlvbkNsaWVudC5oIgog
I2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgorI2ltcG9ydCAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW1w
b3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKQEAgLTQ0LDYgKzQ1LDcgQEAKICNpbXBvcnQgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uRGVsZWdhdGUuaCIKICNpbXBv
cnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2Fk
MkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJf
V0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIgpAQCAtNTUxLDEyICs1NTMsMTIgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAq
cG9saWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFw
PFMKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9y
ZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4g
d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0
b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKKyAgICByZXR1cm4gW19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRh
dGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpXTsK
IH0KIAogLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3Rv
cmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25s
b2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKKyAg
ICByZXR1cm4gW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKF9wcm9j
ZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3
ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRh
KS5nZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAK
IC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBp
ZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDIxOTQxYjJkNDYwNzBkYTFj
YTk1ZmI5MDZmODgzMmY1YWYwNGQ4YWIuLmZjODJkMjMzMzlmMDJjYWJiYTkxYzg0OWQwYjhmMDI0
YTUwMGU5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGll
bnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHBy
b3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxv
YWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiX1dLRG93bmxvYWQyLmRvd25sb2FkRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVs
ZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiks
IGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBAIC04Myw4ICs4Myw5IEBACiAK
IC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDoo
TlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4w
KSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0
ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3Rv
cmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChfV0tEb3dubG9hZCAq
KV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRh
U3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilw
YXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCistIChfV0tEb3dubG9h
ZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5U
KCJXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwg
aW9zKDguMCwgV0tfSU9TX1RCQSkpOworLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRG
cm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVE
YXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tXZWJWaWV3Ll9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOmRlc3RpbmF0aW9uOmNvbXBs
ZXRpb25IYW5kbGVyOiIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9T
X1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3
ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTZXJ2
aWNlV29ya2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDY4
YjAwNWU0NmRmNmQyMWU2NmUyZTBhNmJhZjU3YzNjNjI4MmZjZTIuLmUyOWE5MTAzNjkyZGM5ZTZl
YWYwODc2MDQ4NDc5M2Y2MjllZjA1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTYsNiArOTYsNyBAQAogI2ltcG9ydCAiV2ViVmll
d0ltcGwuaCIKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0Rvd25s
b2FkMkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9X
S0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5h
bC5oIgpAQCAtMjgyMSw2ICsyODIyLDM2IEBAIHN0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kCiAgICAg
cmV0dXJuIF9wYWdlLT5pc1Nob3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCk7CiB9CiAK
Ky0gKHZvaWQpX2Rvd25sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCheKShfV0tEb3dubG9hZDIgKikpY29tcGxldGlvbkhhbmRsZXIKK3sK
KyAgICBfcGFnZS0+ZG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAg
ICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVy
KGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0pOworfQorCistICh2b2lkKV9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0Rh
dGEgKilyZXN1bWVEYXRhIGRlc3RpbmF0aW9uOihOU1VSTCAqKWRlc3RpbmF0aW9uIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkKF4pKF9XS0Rvd25sb2FkMiAqKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIGlmICghZGVzdGluYXRpb24uaXNGaWxlVVJMKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBi
ZSBhIGZpbGUgVVJMIl07CisgICAgCisjaWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApIC8vIHJkYXI6Ly9wcm9ibGVtLzM0NzQ1MTcx
CisgICAgLy8gRG8gYSBiYXNpYyBjaGVjayB0aGF0IHRoaXMgaXMgbGlrZWx5IGRhdGEgdGhhdCBD
Rk5ldHdvcmsgd2lsbCBhY2NlcHQgYXMgcmVzdW1lIGRhdGEuCisgICAgLy8gRklYTUU6IFdlIG1h
eSB3YW50IHRvIGRvIG1vcmUgZXhoYXVzdGl2ZSBjaGVja3MuCisgICAgaWYgKCFbTlNQcm9wZXJ0
eUxpc3RTZXJpYWxpemF0aW9uIHByb3BlcnR5TGlzdFdpdGhEYXRhOnJlc3VtZURhdGEgb3B0aW9u
czpOU1Byb3BlcnR5TGlzdEltbXV0YWJsZSBmb3JtYXQ6MCBlcnJvcjpudWxscHRyXSkKKyAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
IlZpZXcgc2NhbGUgc2hvdWxkIGJlIGEgcG9zaXRpdmUgbnVtYmVyIl07CisjZW5kaWYKKyAgICAK
KyAgICBfcGFnZS0+cmVzdW1lRG93bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhyZXN1bWVEYXRhKSwgZGVzdGluYXRpb24ucGF0aCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAg
IGlmIChkb3dubG9hZCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93
bmxvYWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfSk7Cit9CisKIC0gKF9XS0xheW91dE1vZGUpX2xheW91dE1vZGUKIHsKICNpZiBQTEFU
Rk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaAppbmRleCA4NTRiMjMzMTAxMzJlN2RhZGVlNjQ5M2VmNzYzYTE2MTgw
NzVkMGRjLi4xNTdhZDFmOTYxNTRmMTdmNjA5MTQ1NDcxNmViM2FhNTFjZDVlNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmgKQEAgLTExMiw2ICsxMTIsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dL
UmVjdEVkZ2UpIHsKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJl
bmNlczsKIEBjbGFzcyBfV0tBcHBsaWNhdGlvbk1hbmlmZXN0OworQGNsYXNzIF9XS0Rvd25sb2Fk
MjsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKIEBjbGFzcyBfV0tGcmFtZVRyZWVOb2RlOwogQGNs
YXNzIF9XS0hpdFRlc3RSZXN1bHQ7CkBAIC0yMDYsNiArMjA3LDkgQEAgZm9yIHRoaXMgcHJvcGVy
dHkuCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc1Nob3dpbmdO
YXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KSBCT09MIF9zaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVT
bmFwc2hvdDsKIAorLSAodm9pZClfZG93bmxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0Rvd25sb2FkMiAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSAodm9pZClfcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNEYXRhICopcmVzdW1lRGF0
YSBkZXN0aW5hdGlvbjooTlNVUkwgKilkZXN0aW5hdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShfV0tEb3dubG9hZDIgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfY2xvc2U7CiAt
IChCT09MKV90cnlDbG9zZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogLSAoQk9PTClfaXNDbG9zZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggYjRkODI2YjlhNzI0NzhmZDBjMDNlNmI0
YjAxODlmMDcyOTljZWM3My4uNjJhMTQzNmU2OGM2MzIwMDUzMDk5ZjkwZTVhZTUzOTBmNzU5OWIz
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
LmgKQEAgLTI4LDEyICsyOCwxNCBAQAogCiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tX
ZWJWaWV3OworQGNsYXNzIF9XS0Rvd25sb2FkMjsKIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KDEwLjEwKSwgaW9zKDguMCkpCitXS19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
Il9XS0Rvd25sb2FkMiIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9T
X1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3QgPE5TQ29weWluZz4KIAot
LSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQyOihf
V0tEb3dubG9hZDIgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZvaWQpcHVibGlzaFBy
b2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCks
IGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJk
YmMuLjM1MWViZTJiMTRjYmYxNmZiOGFjOWI4MjZjOTZjMGY3M2EwNjAxZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTMxLDYz
ICszMSw4NCBAQAogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tO
U0RhdGEuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJfV0tEb3du
bG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLUBpbXBsZW1l
bnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93
bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KK3N0YXRpYyBOU01hcFRhYmxlPF9XS0Rvd25sb2FkMiAqLCBfV0tEb3dubG9hZCAqPiAqZG93
bmxvYWRXcmFwcGVyTWFwKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PE5TTWFwVGFibGU+PiB0YWJsZTsKKyAgICBpZiAoIXRhYmxlLmdldCgpKQorICAgICAgICB0YWJs
ZS5nZXQoKSA9IFtOU01hcFRhYmxlIHdlYWtUb1dlYWtPYmplY3RzTWFwVGFibGVdOworICAgIHJl
dHVybiB0YWJsZS5nZXQoKS5nZXQoKTsKIH0KK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAorCitJR05PUkVfV0FSTklOR1NfQkVHSU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25z
IikKK0BpbXBsZW1lbnRhdGlvbiBfV0tEb3dubG9hZAorSUdOT1JFX1dBUk5JTkdTX0VORAogCi0t
ICh2b2lkKWRlYWxsb2MKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvd25sb2FkMjooX1dLRG93
bmxvYWQyICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7Cisg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
X2Rvd25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAgICBbc3VwZXIg
ZGVhbGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQyOihfV0tEb3du
bG9hZDIgKilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3du
bG9hZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9j
XSBpbml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtkb3dubG9h
ZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJl
dHVybiB3cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+Y2Fu
Y2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAgIF9kb3du
bG9hZC0+X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5f
ZG93bmxvYWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURp
ZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVibGlzaFBy
b2dyZXNzQXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jl
c3MoVVJMKTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7
CiB9CiAKIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rvd25sb2Fk
LT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpE
b05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcK
IHsKLSAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGlu
Z1BhZ2UoKSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93
bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVBy
b3h5KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBu
aWw7CiB9CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAgICByZXR1
cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVy
bCkgLT4gTlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93
bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CiAgICAg
ICAgIHJldHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTCl3YXNV
c2VySW5pdGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgp
OworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOwog
fQogCiAtIChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBl
cihfZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcihfZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0KIAogLSAo
V0tGcmFtZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3Jh
cHBlcigmX2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBl
cigmX2Rvd25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQpY29weVdp
dGhab25lOihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVybiAqX2Rv
d25sb2FkLT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTIwYWVmMTIxZmMyNmIx
ZmU2ZTY5NDg4MTEwZDZmMTZlMGNmZWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOworQHByb3RvY29sIF9X
S0Rvd25sb2FkRGVsZWdhdGUyOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZh
Y2UgX1dLRG93bmxvYWQyIDogTlNPYmplY3QKKworLyogQGFic3RyYWN0IFRoZSByZXF1ZXN0IHVz
ZWQgdG8gaW5pdGlhdGUgdGhpcyBkb3dubG9hZC4KKyAgQGRpc2N1c3Npb24gSWYgdGhpcyBkb3du
bG9hZCB3YXMgZnJvbSBhIGJsb2IgVVJMLCBvcmlnaW5hbFJlcXVlc3Qgd2lsbCBiZSBudWxsLgor
ICBJZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwg
b3JpZ2luYWxSZXF1ZXN0IHdpbGwgYmUKKyAgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBm
b2xsb3dzIHRoZSByZWRpcmVjdC4KKyAgLy8gRklYTUU6IEFkZCBhIHRlc3Qgd2hlcmUgdGhpcyBp
cyBudWxsLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5T
VVJMUmVxdWVzdCAqb3JpZ2luYWxSZXF1ZXN0OworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRl
IHRoYXQgcmVjZWl2ZXMgcHJvZ3Jlc3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+IGRlbGVn
YXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxl
dGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMgZmluaXNo
ZWQuCisgQGRpc2N1c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCBkYXRhIHRv
IGJlIHVzZWQgdG8gcmVzdW1lIHRoZSBkb3dubG9hZCBpZiBwb3NzaWJsZS4KKyovCistICh2b2lk
KWNhbmNlbDoodm9pZCAoXiBfTnVsbGFibGUpKE5TRGF0YSAqIF9OdWxsYWJsZSByZXN1bWVEYXRh
KSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliYTQzNzhmM2FkZGE5NzFlYjFhNDZlNjRmYmJjYWFjOTVlMDdkOGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQyLm1tCkBAIC0wLDAgKzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0
ICJXS05TRGF0YS5oIgorI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgi
CisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWREZWxl
Z2F0ZTIuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQ
STo6RG93bmxvYWRDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50
KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlMj4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0
ZShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOildKQor
ICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwg
bV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwg
bV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9k
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVE
YXRhOildKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8
ICFtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxO
U1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246c3RhdGljX2Nhc3Q8TlNIVFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpKSBuZXdSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlv
bkhhbmRsZXI6KSldKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAg
ICAgICAgICBjYXNlIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIF9X
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJJbnZhbGlkIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCkiLCAo
bG9uZylwb2xpY3ldOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQor
CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBjaGFsbGVuZ2UpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1f
cmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAg
IHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFu
ZENvbnRpbnVlKTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVuZ2Up
IGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihjaGFs
bGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
ICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0
aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAg
IHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRp
YWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9y
bURlZmF1bHRIYW5kbGluZzoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCku
Y29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21w
bGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246
OkNhbmNlbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6CisgICAgICAgICAgICAg
ICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29u
dGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24g
KCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdl
dCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RG
OjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYg
KCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkKSBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJl
c3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9hZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0
OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwgKmRlc3RpbmF0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhh
c0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
ICghZGVzdGluYXRpb24uaXNGaWxlVVJMKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAg
W05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAImRl
c3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVSTCJdOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIg
PSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgICAgICAgICBpZiAoIVtmaWxl
TWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltkZXN0aW5hdGlvbiBVUkxCeURlbGV0aW5nTGFzdFBh
dGhDb21wb25lbnRdLnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtkb3dubG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFp
bChbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJy
b3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRlc3RpbmF0aW9u
LnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3du
bG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBl
cnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVh
dGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsg
fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRp
b24ucGF0aCk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2Vp
dmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGUpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1f
cmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBb
bV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0ZXNX
cml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgfQorCisgICAgdm9p
ZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNo
OndyYXBwZXIoZG93bmxvYWQpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9k
ZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBk
aWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVzdW1l
RGF0YSldOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUg
fHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdp
dGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5T
VVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRhOm5p
bF07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPiA+
IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOwor
ICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmluaXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNU
b0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsKKworQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2Fk
MgorCistICh2b2lkKWNhbmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkYXRhKSB7CisgICAgICAg
IGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdy
YXBwZXIoZGF0YSkpOworICAgIH0pOworfQorCistIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJl
cXVlc3QKK3sKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdl
YkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKwor
LSAoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPilkZWxlZ2F0ZQoreworICAgIHJldHVybiBfZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tEb3du
bG9hZERlbGVnYXRlMj4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICBfZG93bmxvYWQtPnNldENsaWVudChhZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50KGRlbGVn
YXRlKSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfZG93bmxvYWQtPn5Eb3dubG9h
ZFByb3h5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmpl
Y3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
K3sKKyAgICByZXR1cm4gKl9kb3dubG9hZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMkludGVybmFsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQySW50ZXJuYWwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYzY1MWFjYWZkNWQyZjQ1MzI2ZWE4N2Q1M2EyNWU4ZTQ4ZTFlNGYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
MkludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIkRvd25s
b2FkUHJveHkuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDIu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFp
dHM8RG93bmxvYWRQcm94eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rvd25sb2Fk
MjsKK307CisKK30KKworQGludGVyZmFjZSBfV0tEb3dubG9hZDIgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9k
b3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+ID4gX2Rl
bGVnYXRlOworfQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggYTgzZjkwMjliNWM3M2VjNWY5ZGI3
NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0NjhhODNhN2Ji
N2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBACiAKIEBwcm90b2NvbCBfV0tE
b3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9u
c2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1F
VHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogCiAtIChO
U1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3
cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpj
b21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4LjAsIDExLjMp
KTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlMi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDY3NGU4MDhjMWJmZTZkNDM4MmI0ZDRlYjFlYzk2ZTIzYTQ1OGRkZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZERlbGVnYXRlMi5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91
bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
K0BjbGFzcyBfV0tEb3dubG9hZDI7CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kpIHsKKyAgICBfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2Fu
Y2VsLAorICAgIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdywKK30gV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKworQHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGUyIDxOU09iamVjdD4K
K0BvcHRpb25hbAorCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMg
cmVjZWl2ZWQgYW4gSFRUUCByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQg
VGhlIHdlYiB2aWV3IHRoYXQgcmVjZWl2ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25z
ZSBUaGUgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyBy
ZXF1ZXN0IHRoYXQgd2lsbCBiZSBzZW50LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUg
Y29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9y
IG5vdAorIHRvIHByb2NlZWQgd2l0aCB0aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYg
eW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJl
ZGlyZWN0cyB3aWxsIGJlIHRha2VuLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
MiAqKWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWNvbXBsZXRpb25I
YW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0
byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxv
YWQgVGhlIHdlYiB2aWV3IHRoYXQgcmVjZWl2ZWQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5n
ZS4KKyBAcGFyYW0gY2hhbGxlbmdlIFRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52
b2tlIHRvIHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5nZS4gVGhlCisgZGlzcG9zaXRpb24gYXJndW1l
bnQgaXMgb25lIG9mIHRoZSBjb25zdGFudHMgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZQorIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbi4gV2hlbiBkaXNwb3NpdGlvbiBpcyBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwKKyB0aGUgY3JlZGVudGlhbCBhcmd1
bWVudCBpcyB0aGUgY3JlZGVudGlhbCB0byB1c2UsIG9yIG5pbCB0byBpbmRpY2F0ZSBjb250aW51
aW5nIHdpdGhvdXQgYQorIGNyZWRlbnRpYWwuCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBp
bXBsZW1lbnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIgdmlldyB3aWxsIHJlc3BvbmQgdG8gdGhlIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB3aXRoIHRoZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
UmVqZWN0UHJvdGVjdGlvblNwYWNlIGRpc3Bvc2l0aW9uLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6
KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJh
Y3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhl
bnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3
aGljaCB3ZSBuZWVkIGEgZmlsZSB0byB3aGljaCB0byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2Ug
VGhlIHNlcnZlciByZXNwb25zZSwgaWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBh
biBIVFRQIHJlcXVlc3QuCisgQHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1lIFRoZSBzdWdnZXN0ZWQg
ZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRs
ZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVSTCB0byBiZWdpbiB0aGUg
ZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUgZG93bmxvYWQuCisgQGRpc2N1c3Npb24gSWYg
dGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNlIHdpbGwgYmUgbnVsbC4g
IHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRlbiBiZSB0aGUgc2FtZSBhcyByZXNwb25zZS5z
dWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250ZW50IGNhbiBzcGVjaWZ5IHRoZQorIHN1Z2dl
c3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIFVSTCBpcyBu
b24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90IGV4aXN0IHlldCBpbiBh
IGRpcmVjdG9yeSB0aGF0IGRvZXMgZXhpc3QuCisqLworLSAodm9pZClkb3dubG9hZDooX1dLRG93
bmxvYWQyICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51bGxhYmxl
IE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilz
dWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBfTnVs
bGFibGUgZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52
b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0
aGUgZGVzdGluYXRpb24uCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IGhhcyB3
cml0dGVuIGRhdGEuCisgQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdy
aXR0ZW4uCisgQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0
ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwg
bnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gSWYg
dGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25s
b2FkLCB0aGVuCisgdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0
aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgorIElm
IHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSB3aWxsIGJlIC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAq
KWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dy
aXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOworCisvKiBAYWJzdHJhY3QgSW52
b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorIEBwYXJh
bSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCBmaW5pc2hlZC4KKyovCistICh2b2lkKWRvd25s
b2FkRGlkRmluaXNoOihfV0tEb3dubG9hZDIgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IElu
dm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhl
IHdlYiB2aWV3IHRoYXQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGlj
YXRpbmcgdGhlIGZhaWx1cmUgcmVhc29uLgorIEBwYXJhbSByZXN1bWVEYXRhIFRoZSBkYXRhIHRv
IGJlIHVzZWQgdG8gcmVzdW1lIHRoaXMgZG93bmxvYWQgaWYgcG9zc2libGUuCisqLworLSAodm9p
ZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNF
cnJvciAqKWVycm9yIHJlc3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJlc3VtZURhdGE7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBlMTI5MGIz
ZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi42ZWYxMWVjOTViMWVlMWQxNjBiMmY3
ZmE4ZTUwNWQxMmEzZmE0OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBAQAog
CiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0j
aW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFBy
b3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19OworQGNsYXNz
IF9XS0Rvd25sb2FkMjsKIAorQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsK
K0BwYWNrYWdlCisgICAgUmV0YWluUHRyPF9XS0Rvd25sb2FkMj4gX2Rvd25sb2FkOwogfQotCi1A
aW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXgg
MDZmOGYxZjc2MmU4OTY4NmZjNWRjM2ZjODkwZjEzZTBiMzYzZDMzMy4uZTRjZjVhMmRjMTAyZjU5
NmQzYWVmZThjNjQ3YjZmNWFhOWI3OWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcgQEAK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwor
QGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLV2ViVmlldzsKIAogdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgX1dLVXNlclN0eWxlTGV2ZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCAwNjg0
NDEyYjEzNTFmMzBhNWQ0ODRmOTA5ZDdhNGI5N2E3MWNhNDI2Li43OTE1ZWEzYjJmNjVkYTQ4Y2Y0
ZWE5ODIwMjVhOTNlNGUxOGE3ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAKICNpbXBvcnQgIkFQSUFycmF5
LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJy
YXkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRhMWZj
OGNkYWZlOTIxMTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dERvd25sb2FkQ2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
b3ZlcnJpZGUKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBk
b3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3RpbmF0
aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRG
YWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAo
d2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmluZGV4
IDc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0ODg0
ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEyIEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50
Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBsZWdh
Y3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0
X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFp
bChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0
YSopIGZpbmFsOwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggM2Qz
MWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjVhOThiNTVjMjc2OWQ5OWJi
NjY0NDkwMDMxYTFjYTA3NTU0NjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNp
bXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRl
cm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CkBAIC00Nyw2ICs0OCw4
IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgorCiBMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5RG93bmxvYWRDbGllbnQoaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0
ZSkKIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RhdGljIFN5c3RlbVByZXZpZXdDb250cm9sbGVyKiBz
eXN0ZW1QcmV2aWV3Q29udHJvbGxlcihEb3dubG9hZFByb3h5JiBkb3dubG9hZFAKIH0KICNlbmRp
ZgogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcp
CiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAt
OTAsNyArOTMsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFydChEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhv
ZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3Rh
cnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZERpZFN0YXJ0OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3du
bG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNl
OnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
dWludDY0X3QKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
V3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0
ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90
YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKICAgICBlbHNlIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwor
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERv
d25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0
ZW5dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyArMTM0
LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxv
YWRQcm94eSldIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNo
ZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5n
ZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewog
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFu
ZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5k
aWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93
bmxvYWRQcm94eSldIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKIH0KIAogdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYK
IAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NEaWRDcmFzaCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndyYXBwZXIoZG93bmxv
YWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94
eSYKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dP
dmVyd3JpdGUgPSBOTzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVH
SU4KLSAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9h
ZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFs
bG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5E
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3Jp
dGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7
Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNr
ZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBh
bGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0g
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0
KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGlu
YXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjMzLDEwICsyMzYsMTAg
QEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOndyYXBw
ZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5p
c2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXV07CiB9CiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Ip
Cit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEq
KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5
c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBXZWJDb3JlOjoKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkRmFpbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94
eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0g
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVx
dWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5n
OnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOwogfQpAQCAtMzAxLDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93
bmxvCiB9CiAjZW5kaWYKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaAppbmRleCA1NzRjMzQyZjMzZGNmMDZjY2FkYTExZjBiZDJkMDk3ZWM1
YTk1N2EzLi44NjliYzY5ZTI2ZGZlNWQ1ZmEzODBjMTZhZGJkOWQzZDFmN2RlZTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2
LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5
U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNv
bnN0IFVSTCYpIG92ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBE
b3dubG9hZFByb3h5JikgZmluYWw7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9p
ZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CiAgICAg
ICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzgsNiArMjQwLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3IDogMTsK
KyAgICAgICAgYm9vbCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAxOwogICAgICAg
ICBib29sIHdlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFj
a0ZvcndhcmRMaXN0SXRlbSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVuZE5hdmlnYXRp
b25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IDQz
Mzc2Yjg2OGEwMTQ5MmM5YzYwNTYxMGZiYTM1YjQ0OTNhYzc3YWMuLmZjMmQ0MzE4ZDNjMWM1YzBk
MzhkMTQ4YTU4Yzg3N2E0ZjhjOGZmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTY1LDYgKzY1LDcgQEAKICNpbXBvcnQgIldl
YlByb3RlY3Rpb25TcGFjZS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2ltcG9y
dCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25s
b2FkMkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oIgog
I2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUmVuZGVyaW5n
UHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgpAQCAtMTg3LDYgKzE4OCw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
PiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBt
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
d1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzop
XTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpuYXZpZ2F0aW9uUmVzcG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6KV07CiAgICAgbV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJl
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRCZWdp
bk5hdmlnYXRpb25HZXN0dXJlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
d1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0
SXRlbTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEVuZE5h
dmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEVuZE5hdmlnYXRp
b25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwpAQCAtNjM4
LDkgKzY0MCwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
ICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2Ug
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3du
bG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRyeVNP
QXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFts
b2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0g
V1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTEwMDAsNiArMTAwNSw4IEBAIGJv
b2wgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaG91bGRCeXBhc3NDb250ZW50
TW9kZVNhZmVndWFyZHMoKSBjb25zCiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUGFnZVByb3h5Jiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7
CisgICAgLy8gRklYTUU6IGRvY3VtZW50YXRpb24gc2F5cyB0aGUgYmVoYXZpb3Igd2lsbCBiZSBS
ZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSBpZiB0aGUgZGVsZWdhdGUgZG9lcyBub3Qg
aW1wbGVtZW50IHRoZSBzZWxlY3Rvci4KKyAgICAvLyBUaGUgYmVoYXZpb3IgaXMgdmVyeSBzaW1p
bGFyLCBidXQgd2Ugc2hvdWxkIHN3aXRjaC4KICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CiAKQEAg
LTExNjgsNiArMTE3NSwxOCBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBB
UEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQog
Cit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAg
aWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dl
YlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRC
ZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9P
SykKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgdXRpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcy
YTYwMWY0Y2QwNzdmMzYuLmQ5OWI4Yjg2ZGM3MDc2OTE1MThkNGEyOWI3NjQwY2RlNThmZjMzYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHko
RG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9
CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxvYWRQ
cm94eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisg
ICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0cjxB
UEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpA
QCAtMTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVk
aXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0
LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwog
Ci0gICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENhbGxi
YWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQtPmxl
Z2FjeURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNzMsMTEgKzE3OSwx
NiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9
IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywg
ZXJyb3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1
bWVEYXRhLmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5
IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZp
bmlzaGVkKCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQ
STo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShj
bGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1
NWJiM2EzNWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uNGQyMGIxNmRjMTc4YTQ2NjBiYmZlNzRjODUw
MzYwYTM4M2NjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw4IEBAIHB1YmxpYzoKICAgICBBUEk6
OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAog
ICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgp
OyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5
TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5
Kik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlk
U3RhcnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBj
YWxsYmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAt
MTIwLDYgKzExNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsK
IAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAm
LCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsK
KworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKwogICAgIERvd25s
b2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFT
dG9yZT4gbV9kYXRhU3RvcmU7CiAgICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fY2xpZW50
OwpAQCAtMTM0LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVj
dENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxB
UEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChE
b3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMDRkOWU3NTUxOGMzN2ExNzEzZWY5M2JhNjJkYTQ5
NzM2YTZiYTc2OS4uYzEwZTkzNWNkNjE3MDEzODFlNGQ1MzU2NGYzYWIzYjYwZTNkNWI2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFC
TEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3Rv
bVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9j
b2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKaW5kZXggYmFmN2YwNWRiMmIwMTY4NzIwNzhhOTA0NmMxYzNlMTBiYWQ3MmE4OC4u
YjljNzI5ZjllN2U2NmE0MTcxYzBhNGY2Nzk4YTk1NTY0Y2Y0YWRjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIu
aCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTY4LDcgKzMxNjks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xp
Y3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rp
b246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikgewotICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92
ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0
ciwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4NSw3
ICszMTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWNpZXMgPSBX
VEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdh
dGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0
IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24g
aGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYg
KGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1v
dmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIG51bGxwdHIsIFdURk1v
dmUoc2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMSwx
MSArMzIyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5h
dmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9s
aWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQ
cm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVs
bHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlciksIFdURk1v
dmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRl
bnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0
MiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5Lgog
ICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVE
b3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1l
SW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFy
dENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlv
blJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpXSAoYXV0byogZG93bmxvYWRQ
cm94eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWRQcm94eSkKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBGSVhNRTogT25jZSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8gbG9uZ2VyIHVzZWQsIHdlIHNob3VsZCBh
c3NlcnQgbmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVyIG51bGwgaGVyZS4KKyAgICAgICAgICAg
IGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgKm5hdmlnYXRp
b25SZXNwb25zZSwgKmRvd25sb2FkUHJveHkpOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5h
dmlnYXRpb24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2
aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJl
ZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDg4LDcg
KzUwOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShDT05URU5UX0ZJ
TFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVj
YXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4g
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9u
U3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIp
KTsKKyAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxw
dHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUzMTks
NyArNTMyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVu
ZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2Vu
ZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4
cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVz
dWx0OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpAQCAtNTM1Nyw4ICs1MzY1LDEw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2Vz
cywgcmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9u
c2UudXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZp
Z2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDog
bnVsbHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyks
IHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9
IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAg
ICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYg
c2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhN
RTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2Ug
Y2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4K
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM2NywxNCAr
NTM3NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQs
IGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2
aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIs
IFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBT
aG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERv
bWFpblJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9s
aWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25z
ZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAg
IGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
byksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3du
bG9hZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9u
UmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpA
QCAtNjAwNiw2ICs2MDE0LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJl
cXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURv
d25sb2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVE
b3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1
bWVEb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENh
bGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJh
Y2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxvYWQo
d2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2FkLnNl
dERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
IHsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDc2NmRiMDQyMDQ2N2ZjZjc1YTExNTUy
NmQ2Njk2NmY0ZGMyNDAyMmYuLjJkNGMzZDM4ZGM2NDdlMzkxOWNlMTQxMjc0MDAxNDgxZjM0MDMy
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTU5LDcgKzEx
NTksNyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBl
bnVtIGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9
OwotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24s
IEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiwgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0s
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzOjpObyk7CiAgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVt
b3ZlZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwpAQCAt
MTI3NCw2ICsxMjc0LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBS
ZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFu
ZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURvd25s
b2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3dubG9h
ZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdU
b1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAppbmRleCBlMDQ1MWZiNDhiMmQyNzc4MGExYWRlOWNmM2QxMmY2NmI0ZTQ0
ZTRiLi5lYjU5Yjc1NGI0M2M4OWZkNTVlZDY5ODVmMThjMjc3ZGRiYzdmYWJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTMxLDcgKzExMzEsNyBA
QCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQog
Ci1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBB
UEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rvd25sb2FkUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxv
YWREaWRTdGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQ
cm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsK
IApAQCAtMTEzOSw3ICsxMTM5LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJl
c3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAo
IXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUo
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRv
d25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0
aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRh
U3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRh
LmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2FsbERvd25s
b2FkRGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggNGUyZTlhNTIzZTQ2ZWU0NDc0
N2NlMzUwMmFlOTUwZTU4Zjk5NTAyZS4uMjc0ODk4NDlkNWE4ZGI5M2I5NmFiOTZjYmE2OTBmZWFj
NzUwNmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0x
MTcsNiArMTE3LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vz
c1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0
YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJv
b2w7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
V2ViUHJvY2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwNSw3
ICsyMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
ID0geyB9KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0
b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1
bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURv
d25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBj
b25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25s
b2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5k
bGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmJkOWFj
NDVmMzFhYzQzYzJmYzA5NjRhZjVmZGRlNGE3OGU2ODQ4Ny4uZTUwM2I5NmRmNTAwNGViYmE5ODM1
ZWI4OTY4ZWM1YWRhNTI5YzBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODAzLDYgKzE4MDMsOSBAQAogCQlDRUU0QUUyQjFBNURD
RjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICov
OyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1
MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQ
b3B1cE1lbnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25s
b2FkMi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYw
QzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFE
QiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2Fk
RGVsZWdhdGUyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMkludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1
MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50ZXJuYWwuaCAqLzsgfTsKIAkJREY0NjJF
MEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJFMEUyM0YyMkY1MzAw
RUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAv
KiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERGNDYyRTExMjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3Js
ZFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlERjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY4NENFRTIyNDlBQTIxRjAw
OTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSAqLzsgfTsKQEAgLTUzMjYsNiArNTMyOSwxMCBAQAog
CQlEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVw
TWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tEb3dubG9hZDIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBfV0tEb3du
bG9hZDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWQyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAv
KiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBfV0tEb3dubG9hZDJJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
RjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWREZWxlZ2F0ZTIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxvYWREZWxlZ2F0ZTIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRU
UENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcxQUM1ODAwRjlBMzdDIC8qIE5h
dGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0
aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzMwNSw3
ICs3MzEyLDExIEBACiAJCQkJODM4OTFCNjgxQTY4QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1NzE4RENFOUZBMDBCNUVBOEEgLyog
X1dLRG93bmxvYWQuaCAqLywKIAkJCQlBMUE0RkU1ODE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93
bmxvYWQubW0gKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2Fk
Mi5oICovLAorCQkJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIubW0g
Ki8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMkludGVybmFs
LmggKi8sCiAJCQkJQTFBNEZFNjAxOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdh
dGUuaCAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWREZWxl
Z2F0ZTIuaCAqLywKIAkJCQlBMUE0RkU1OTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJ
bnRlcm5hbC5oICovLAogCQkJCTM3OUE4NzM4MThCQkZFMEYwMDU4OEFGMiAvKiBfV0tFbGVtZW50
QWN0aW9uLmggKi8sCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRB
Y3Rpb24ubW0gKi8sCkBAIC0xMDczNiw3ICsxMDc0NywxMCBAQAogCQkJCTVDNUQyMzhDMjI3QTJD
REEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzODkxQjY5MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU1QTE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93
bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBf
V0tEb3dubG9hZDIuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJCMjUyRUQ0NDAwMEQ5MjFE
QiAvKiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNjEx
OERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlGQTAwQjVFQThBIC8qIF9XS0Rvd25sb2Fk
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RUMzRUE5MjQ3RjVDMDkwMDU5NDg5QyAv
KiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzlBODczQTE4
QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzhlOTcyY2Q3
N2FmNGE5Y2RkYWEwNzlmYTYxZTRhMGEwNWMwMWE2Yy4uYTRhMzQxNDZlYTYwZDMxYjVlZTlmNGRj
ZWJjMWUwNWM5NzE4ZjQ1NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTE5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3du
bG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgIChkb3du
bG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyk6
CisgICAgICAgIChzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tGaWxl
Q29udGVudHMpOgorICAgICAgICAodGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRv
d25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBkb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVz
V3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0RG93
bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIg
ZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBk
b3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6XSk6CisgICAgICAgICgtW1Rlc3RE
b3dubG9hZERlbGVnYXRlMiBkb3dubG9hZFByb2Nlc3NEaWRUZXJtaW5hdGU6XSk6CisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBfd2ViVmlldzpuYXZpZ2F0aW9uOmRpZEJlY29tZURv
d25sb2FkOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiB0YWtlQ2FsbGJhY2tSZWNvcmRdKToKKwog
MjAyMC0xMC0xOCAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICB3
ZWJraXRjb3JlcHk6IEFsbG93IG9uZSBwYWNrYWdlIHRvIHJlcXVpcmUgYW5vdGhlciBwYWNrYWdl
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDk3ZjI2NmU0MDVlY2ZhYTQx
NDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZDAzZWZjYjYwMTRkMzlhNWViMWNlMWM5ZGViYmU4YjRm
YTkxZjkxZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcs
NyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxp
dGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLm1tCitjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIubW0KIGNvY29hL1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUubW0KIGNvY29hL1Rlc3RQcm90b2NvbC5tbQogY29jb2EvVGVzdFVJRGVsZWdh
dGUubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM5NGM5NzZiZmIxZjJkNTgxNTc4ODdi
M2Q2ZjZkZWU1OTUyNjE2Ni4uNGNjNTA4NzZmZjBhY2JlY2VhMTM2YzZiMTU1OTc1OTljZjJmYWZl
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI3ODEsNiArMjc4MSw4IEBACiAJCUQzQkU1
RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0dldENvbnRlbnRzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzY5QUE2MjFDRjc3QzY1MDBDNjI3MkYgLyog
U2NvcGVkTGFtYmRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
b3BlZExhbWJkYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNEIyNzM4MjFB
NDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU0RpY3Rpb25hcnlFbXB0
eURpY3Rpb25hcnlDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0
NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlMi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlMi5tbTsgcGF0aCA9IGNvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlMi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0
NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlMi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZTIuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERl
bGVnYXRlMi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERkI4RkYzMTI0OTJGNTFB
MDBGMDBCMEQgLyogUHJlY29ubmVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByZWNvbm5lY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
MjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTAxLDYgKzMxMDMsOCBA
QAogCQkJCTVDRTc1OTQ3MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIu
bW0gKi8sCiAJCQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVn
YXRlLmggKi8sCiAJCQkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERl
bGVnYXRlLm1tICovLAorCQkJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZTIuaCAqLywKKwkJCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERv
d25sb2FkRGVsZWdhdGUyLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2
IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkJNTE2MjgxMjMyMzI1QzE3QTAw
QkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggM2FlZmViOGVjMzM1ZTEwMjMy
ZmY4ZTVjODBjNmY3OWJkMzVlZmMwOC4uMzAxOGJlNzBhZDRjMGQzMjBhZTIwYzExYmQ4M2RhYjI2
OTdkZmUzOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkLm1tCkBAIC0zMyw5ICszMywxMSBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiVGVzdERvd25sb2FkRGVsZWdhdGUyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KQEAgLTQ1
LDYgKzQ3LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkMi5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktp
dC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgpAQCAtMTE4OSwyNCArMTE5MiwzMCBAQCBTdHJp
bmcgbG9uZ1N0cmluZyhMQ2hhciBjKQogICAgIHJldHVybiBTdHJpbmcodmVjdG9yLmRhdGEoKSwg
bGVuZ3RoKTsKIH0KIAotVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQorZW51bSBjbGFzcyBJbmNs
dWRlRVRhZyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFRlcm1pbmF0ZUFmdGVyRmly
c3RSZXBseSA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIGRvd25sb2FkVGVzdFNlcnZlcihUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgdGVybWlu
YXRlQWZ0ZXJGaXJzdFJlcGx5ID0gVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpObywgSW5jbHVk
ZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRlRVRhZzo6WWVzKQogewotICAgIHVzaW5nIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJOwotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291
bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFs9
LCBjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtj
b25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJc
biIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29u
bmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAg
ICAgICAgICAgYXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAg
ICJIVFRQLzEuMSAyMDAgT0tcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcg
PT0gSW5jbHVkZUVUYWc6OlllcyA/ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAg
ICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0
XCJcclxuIgogICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KQotICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbPV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgPT0gVGVybWlu
YXRlQWZ0ZXJGaXJzdFJlcGx5OjpZZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnRlcm1pbmF0ZSgpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qp
IHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8
Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihy
ZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkp
OwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAg
ICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDEy
ICsxMjI5LDYwIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7Cisg
ICAgfX07Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNV
UkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwg
MTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChm
aWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNvbnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdh
Jyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5
dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CiAKLSAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKK3N0
YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigp
Cit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9u
KSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShW
ZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxy
XG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp
bGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAgICB9KTsKKyAgICB9fTsK
K30KKworc3RhdGljIHZvaWQgY2hlY2tGaWxlQ29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29u
dGVudHMubGVuZ3RoLCBleHBlY3RlZENvbnRlbnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpbGVDb250ZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3Rl
ZENvbnRlbnRzW2ldKTsKK30KKworc3RhdGljIE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3du
bG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
ZXhhbXBsZS50eHQiXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92
ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpm
aWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQi
XTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpm
aWxlIGVycm9yOm5pbF07CisgICAgcmV0dXJuIGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQs
IFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAg
ICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKQEAgLTEyNDMsNyArMTMwMCw4IEBAIFRF
U1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdl
dCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gXihfV0tEb3dubG9h
ZCAqLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoQk9PTCwgTlNTdHJpbmcgKikpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24pOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0
ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0
aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxl
bmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZp
bGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0
YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2
NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
KSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0YSk7CkBAIC0x
MjU4LDcgKzEzMTYsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgfTsKICAgICBk
b3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9h
ZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChD
YWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVz
dGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUu
dHh0Il0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0
ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgp
LmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAg
Y2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsKQEAgLTEyOTYsMTUgKzEzNTQsNyBA
QCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwog
ICAgIHVzbGVlcCgxMDAwMCk7CiAKLSAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEg
ZGF0YVdpdGhDb250ZW50c09mVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlXTsKLSAgICBFWFBFQ1Rf
RVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlQ29u
dGVudHMuYnl0ZXMpOwotICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMpIHsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAgICAgICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwg
J2InKTsKLSAgICB9CisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhleHBlY3RlZERv
d25sb2FkRmlsZSk7CiB9CiAKIEBpbnRlcmZhY2UgRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUg
OiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkBAIC0xMzczLDQgKzE0MjMsOTMwIEBA
IFRFU1QoX1dLRG93bmxvYWQsIFN1YmZyYW1lU2VjdXJpdHlPcmlnaW4pCiAgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keT48aWZyYW1l
IHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC9wYWdlJz48L2lmcmFtZT48L2JvZHk+Iiwgc2VydmVy
LnBvcnQoKV0gYmFzZVVSTDpuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKIH0KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBjaGVj
a0NhbGxiYWNrUmVjb3JkKFRlc3REb3dubG9hZERlbGVnYXRlMiAqZGVsZWdhdGUsIFZlY3RvcjxE
b3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykKK3sKKyAgICBhdXRvIGFjdHVhbENh
bGxiYWNrcyA9IGRlbGVnYXRlLnRha2VDYWxsYmFja1JlY29yZDsKKyAgICBFWFBFQ1RfRVEoYWN0
dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVj
dGVkQ2FsbGJhY2tzLnNpemUoKSk7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxi
YWNrc1tpXSwgZXhwZWN0ZWRDYWxsYmFja3NbaV0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwg
RmluaXNoU3VjY2Vzc2Z1bGx5KQoreworICAgIGF1dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2Fk
MiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5p
c2hdOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdT
dHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICAvLyBGSVhNRTogQWRkIHRoaXMgZm9yIGFsbCB0aGVz
ZSB0ZXN0cy4KKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKwor
c3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBO
U1VSTCAqZGVzdGluYXRpb24pCit7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24s
IGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERv
d25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gKndlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tE
b3dubG9hZDI+IHJldGFpbmVkRG93bmxvYWQ7CisKKyAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTpyZXN1bWVEYXRhIGRlc3RpbmF0aW9uOmRlc3RpbmF0aW9uIGNvbXBsZXRpb25I
YW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25s
b2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsK
KyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNw
aW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9
IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUp
OworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICos
IE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShO
U1VSTCAqKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9OworICAgIGRl
bGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQyICpkb3dubG9hZCwgaW50NjRfdCBi
eXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVk
RG93bmxvYWQuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuICsgNTAwMCwg
dG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAg
ICAgICAgICBkb3dubG9hZGVkU2Vjb25kNWsgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBi
b29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0g
XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERv
d25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBudWxs
cHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICBk
aWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisK
KyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKK30KKworc3Rh
dGljIHZvaWQgd2FpdEZvckZpcnN0NWsoVGVzdERvd25sb2FkRGVsZWdhdGUyICpkZWxlZ2F0ZSkK
K3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsgPSBmYWxzZTsKKyAgICBBU1NF
UlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0g
XihfV0tEb3dubG9hZDIgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRl
c1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICBF
WFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIEVYUEVD
VF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlmIChieXRl
c1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRGaXJzdDVrID0gdHJ1ZTsK
KyAgICB9OworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRlZEZpcnN0NWspOworfQorCitURVNUKF9X
S0Rvd25sb2FkMiwgQ2FuY2VsQW5kUmVzdW1lKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxv
YWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZDI+IHJldGFpbmVk
RG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIg
KmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19ibG9jayBSZXRhaW5Q
dHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2Fu
Y2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9
IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkK
KyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9h
ZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKK30KKwor
VEVTVChfV0tEb3dubG9hZDIsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBk
b3dubG9hZFRlc3RTZXJ2ZXIoVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpZZXMpOworICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5l
ZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihf
V0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBO
U0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0
YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
ZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFp
bmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2FpdEZvckZpcnN0
NWsoZGVsZWdhdGUpOworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVk
UmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOworfQorCitURVNUKF9XS0Rv
d25sb2FkMiwgQ2FuY2VsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxv
YWRUZXN0U2VydmVyKFRlcm1pbmF0ZUFmdGVyRmlyc3RSZXBseTo6Tm8sIEluY2x1ZGVFVGFnOjpO
byk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05v
dEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZDI+IHJldGFpbmVkRG93bmxvYWQ7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7
CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRG
b3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAg
ICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworfQorCitURVNUKF9XS0Rvd25s
b2FkMiwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcihUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHk6OlllcywgSW5jbHVkZUVUYWc6Ok5vKTsK
KyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
ZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIEVYUEVD
VF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07
CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPign
YScpKTsKK30KKworI2lmIDAgLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGluIENGTmV0d29yay4K
KworVEVTVChfV0tEb3dubG9hZDIsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQpCit7Cisg
ICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbjsK
KyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNlcnZlckNvbm5l
Y3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7Cisg
ICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAg
ICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgICAgICBjb25u
ZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAy
MDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1c
ImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIKKyAgICAgICAg
ICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZl
Y3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJu
c3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6
ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDog
MTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDEwMD4oJ3gn
KQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0
ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93
bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBb
Jl0oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnRlcm1pbmF0
ZSgpOworICAgIH07CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3Vt
ZURhdGE7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQyICos
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAg
cmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9v
bCBkb3dubG9hZEZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5p
c2ggPSBeKF9XS0Rvd25sb2FkMiAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVl
OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoKTsKKyAgICAKKyAgICAvLyBGSVhNRTogQ2hlY2sgd2hldGhlciB0aGUgZmlsZSBleGlzdHMg
YW5kIHdoYXQgaXRzIHNpemUgaXMgKHNob3VsZCBub3QgZXhpc3Qgb3IgYmUgMCkuCisgICAgRVhQ
RUNUX0ZBTFNFKGRvd25sb2FkRmluaXNoZWQpOworICAgIFt3ZWJWaWV3IF9yZXN1bWVEb3dubG9h
ZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBkZXN0aW5hdGlvbjpleHBlY3RlZERv
d25sb2FkRmlsZSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGls
OjpydW4oJmRvd25sb2FkRmluaXNoZWQpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7Cit9CisKKyNlbmRpZgorCit2b2lk
IHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3Qs
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0YXRlRmlsZSkodm9pZCkpCit7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxfV0tEb3dubG9hZDI+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAg
IHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWso
ZGVsZWdhdGUpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERv
d25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJl
c3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVD
b250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKwor
ICAgIG11dGF0ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsK
KyAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEu
Z2V0KCkgZGVzdGluYXRpb246ZXhwZWN0ZWREb3dubG9hZEZpbGUgY29tcGxldGlvbkhhbmRsZXI6
XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3du
bG9hZDIgKikgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAg
ICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQy
LCBSZXN1bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAg
ICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
Wz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1h
a2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAg
ICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJD
b250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5n
PDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZSIsIHJlcXVl
c3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAg
ICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykKKyAgICAgICAgICAgICAgICApKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAor
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOworICAgIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBl
eHBlY3RlZERvd25sb2FkRmlsZSwgXnsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4
cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICB9KTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRG
aWxlLCBsb25nU3RyaW5nPDEwMDAwPigneCcpKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFJl
c3VtZVdpdGhFeHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtl
U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlz
cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1
MDAwPignYScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAw
MC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNl
bmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFs
IENvbnRlbnRcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxu
IgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAw
MDA+KCdkJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRl
ck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsK
KyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9y
OiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW1soTlNTdHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0
cmluZzwzMDAwPignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10g
d3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIH0p
OworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIG1ha2VTdHJp
bmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJyksIGxvbmdTdHJp
bmc8NTAwMD4oJ2QnKSkpOworfQorCisjaWYgIShQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDE1MDApIC8vIHJkYXI6Ly9wcm9ibGVtLzM0NzQ1MTcx
CitURVNUKF9XS0Rvd25sb2FkMiwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRhKQoreworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZp
bGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIEB0
cnkgeworICAgICAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpbQCJpbnZhbGlk
IHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZGVz
dGluYXRpb246ZXhwZWN0ZWREb3dubG9hZEZpbGUgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3du
bG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIH1dOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlv
biAqZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1lLCBOU0ludmFsaWRBcmd1bWVu
dEV4Y2VwdGlvbik7CisgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgfQorICAg
IEVYUEVDVF9UUlVFKGNhdWdodEV4Y2VwdGlvbik7Cit9CisjZW5kaWYKKworVEVTVChfV0tEb3du
bG9hZDIsIFJlc3VtZUNhbnRSZWNvbm5lY3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9h
ZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rvd25sb2FkMj4gcmV0YWluZWRE
b3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAq
ZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2Ug
KiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAg
ICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMo
ZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWRE
b3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRS
ZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVz
dW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5j
ZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IF9y
ZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBkZXN0aW5hdGlv
bjpleHBlY3RlZERvd25sb2FkRmlsZSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAq
ZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAg
ICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFy
ZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgcmV0
YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93
bmxvYWQyICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwg
VW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVj
dGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7
CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBk
ZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZDIg
KiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICAgICAgaWYgKGJ5dGVzV3Jp
dHRlbiAhPSA1MDAwKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEVYUEVD
VF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgNTAwMCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgLTEpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworfQorCitURVNUKF9XS0Rv
d25sb2FkMiwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IF9yZXN1bWVEb3dubG9hZFdp
dGhEYXRhOltOU0RhdGEgZGF0YV0gZGVzdGluYXRpb246W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmcvIl0gY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKikg
eyB9XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOworICAgICAgICBjYXVn
aHRFeGNlcHRpb24gPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShjYXVnaHRFeGNlcHRp
b24pOworICAgIAorICAgIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIGF1dG8gc2VydmVy
ID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IF9kb3dubG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2Fk
MiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEB0cnkgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJd
KTsKKyAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsK
KyAgICAgICAgICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2F1Z2h0RXhjZXB0aW9uKTsKK30K
Kworc3RhdGljIEhUVFBTZXJ2ZXIgcmVkaXJlY3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7ewor
ICAgICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvcmVkaXJlY3RUYXJnZXQiIH0s
IHsgIkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1WYWx1ZSIgfX0gfSB9LAorICAgICAgICB7ICIvcmVk
aXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH19OworfQorCitURVNUKF9XS0Rvd25sb2Fk
MiwgUmVkaXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAg
ICBOU011dGFibGVVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgp
IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgc2VydmVyUmVxdWVzdC5IVFRQQm9keSA9
IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAK
KyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWREb3dubG9hZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rv
d25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKF9XS0Rv
d25sb2FkMiAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5
KSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1F
OiBXZSBtaWdodCB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXND
b2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKFtyZXNwb25zZSB2YWx1ZUZv
ckhUVFBIZWFkZXJGaWVsZDpAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZl
clJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0
Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLRG93
bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQs
IE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
c3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5n
LCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRl
bGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3dubG9hZDIgKikgeworICAgICAgICAg
ICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZmaW5pc2hlZERvd25sb2FkKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCAiaGkiKTsKKyAgICAKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFs
UmVxdWVzdHMoKSwgMnUpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0p
OworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVkaXJlY3RDYW5jZWwpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVz
dCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9
IF4oX1dLRG93bmxvYWQyICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKF9XS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFi
c29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShbcmVzcG9uc2UgdmFsdWVGb3JIVFRQSGVhZGVyRmllbGQ6QCJDdXN0b20t
TmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVx
dWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwp
OworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tE
b3dubG9hZDIgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGNhbmNlbGxl
ZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYW5jZWxsZWQp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yCisgICAgfSk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCks
IDF1KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIERvd25sb2FkUmVxdWVzdEZhaWx1cmUpCit7
CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKnNlcnZlclJl
cXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBm
YWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxX
aXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21h
aW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworCisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRG93
bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAi
LyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRp
ZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKF9XS0Rvd25s
b2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJodHRwIGJvZHkiKTsKKworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoLAorICAgIH0pOworfQorCitURVNU
KF9XS0Rvd25sb2FkMiwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKK3sKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tE
b3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihf
V0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0
ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJvciAqZXJyb3Is
IE5TRGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJM
RXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5l
dHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAgIH07
CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVO
ZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKK30KKworVEVTVChf
V0tEb3dubG9hZDIsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CisgICAg
fSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05v
dEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNo
ZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIp
OworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVxdWVzdEhUVFBCb2R5KQoreworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11
dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHki
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBbd2ViVmlldyBf
ZG93bmxvYWRSZXF1ZXN0OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIg
KmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5IVFRQQm9keSk7IC8vIEZJWE1FOiBXZSBtaWdodCB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVs
bC4KKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
K30KKworVEVTVChfV0tEb3dubG9hZDIsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRl
bXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5
OllFU107CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRV
Ukw6dGVtcERpciBlcnJvcjpuaWxdOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisK
KyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9
IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQy
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmls
ZSk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZm
YWlsZWQpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmlsZU11c3ROb3RFeGlzdCkKK3sKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIF9fYmxvY2sg
YXV0byByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5l
d10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsK
KworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZp
bGUgYXRvbWljYWxseTpZRVNdKTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsK
KyAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxv
YWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVs
ZWdhdGUuZ2V0KCk7CisgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
CisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVs
ZWdhdGUyIG5ld10pOworICAgICAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSByZXRhaW5lZERl
bGVnYXRlLmdldCgpOworCisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICop
IHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVy
cm9yRG9tYWluKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgICAgICAgICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7Cit9CisKK1RFU1Qo
X1dLRG93bmxvYWQyLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIg
PSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIH07CisgICAgICAgIGRl
bGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIENoYWxsZW5n
ZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBj
b250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIF9f
YmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmlu
aXNoID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1
ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oX1dLRG93
bmxvYWQyICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdl
LnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlv
bk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlh
bEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAg
ICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07Cisg
ICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAg
IEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKK30KKworVEVTVChfV0tE
b3dubG9hZDIsIENoYWxsZW5nZUZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9
LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVk
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQy
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICBm
YWlsZWQgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdl
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxl
bmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IG5pbCk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgRVhQRUNU
X1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworfQorCisjaWYgMAorLy8gRklYTUU6IE1ha2UgdGhp
cyB3b3JrCisKK1RFU1QoX1dLRG93bmxvYWQyLCBCbG9iUmVzcG9uc2UpCit7CisgICAgTlNTdHJp
bmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7Igor
ICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIgICAg
dmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRl
T2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuZG93bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFtZSc7
IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25s
b2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxv
YWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6aHRtbCBiYXNlVVJMOm5pbF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2Us
IF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5n
ICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICBFWFBFQ1RfTlVMTChyZXNwb25zZSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShzdWdnZXN0ZWRGaWxlbmFtZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oX1dL
RG93bmxvYWQyICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQmxvYlJlc3BvbnNlTm9GaWxlbmFt
ZSkKK3sKKyAgICAvLyBGSVhNRTogQ2hlY2sgdGhhdCBzdWdnZXN0ZWRGaWxlbmFtZSBpcyBub24t
bnVsbCwgb3IgbWFrZSBzdWdnZXN0ZWRGaWxlbmFtZSBudWxsYWJsZS4KK30KKworI2VuZGlmCisK
K1RFU1QoX1dLRG93bmxvYWQyLCBTdWJmcmFtZU9yaWdpbmF0b3IpCit7CisgICAgLy8gRklYTUU6
IENoZWNrIHRoYXQgV0tOYXZpZ2F0aW9uUmVzcG9uc2UuX2ZyYW1lIGlzIHdoYXQgd2UgZXhwZWN0
LgorfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQppbmRleCAxMDc0NGE1YzQ0M2Y1YjM5
ZmVmMzZjODM4ZTgwNTg2NGZhZmViMTYyLi4yMDZhYmYxZmZjNTg3Y2M3N2RjYjE2Y2VjYmJjZDJk
NWRiYzg5YmZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0x
NzYsNiArMTc2LDggQEAgc3RhdGljIFN0cmluZyBzdGF0dXNUZXh0KHVuc2lnbmVkIHN0YXR1c0Nv
ZGUpCiAgICAgICAgIHJldHVybiAiT0siX3M7CiAgICAgY2FzZSAzMDE6CiAgICAgICAgIHJldHVy
biAiTW92ZWQgUGVybWFuZW50bHkiX3M7CisgICAgY2FzZSAzMDc6CisgICAgICAgIHJldHVybiAi
VGVtcG9yYXJ5IFJlZGlyZWN0Il9zOwogICAgIGNhc2UgNDA0OgogICAgICAgICByZXR1cm4gIk5v
dCBGb3VuZCJfczsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlMi5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTgyZGI2MDEwNzdlNjY1YjllYmEwZTI1
YzRiOTU2MmJhNTExNDFjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2Fk
RGVsZWdhdGUyLmg+CisKK2VudW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3Qgewor
ICAgIFdpbGxSZWRpcmVjdCwKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERp
ZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmln
YXRpb25SZXNwb25zZQorfTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZTIgOiBO
U09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlMiwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24pKF9XS0Rvd25sb2FkMiAqLCBOU0hUVFBVUkxSZXNwb25zZSAqLCBOU1VSTFJlcXVlc3QgKiwg
dm9pZCAoXikoX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rv
d25sb2FkMiAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSkoX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XikoTlNVUkwgKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0
ZURhdGEpKF9XS0Rvd25sb2FkMiAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25s
b2FkMiAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhF
cnJvcikoX1dLRG93bmxvYWQyICosIE5TRXJyb3IgKiwgTlNEYXRhICopOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICop
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF4pKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNo
OworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZDsKKworQGVu
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxl
Z2F0ZTIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRl
Mi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zOWRjYTZjODFhMWJmNGMxY2IzYzJlOWU5NzhiZTdkZWFjYzQxNTNl
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxv
YWREZWxlZ2F0ZTIubW0KQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlMi5oIgorCisjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBU
ZXN0RG93bmxvYWREZWxlZ2F0ZTIgeworICAgIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBfY2Fs
bGJhY2tSZWNvcmQ7Cit9CisKKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25s
b2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3Bv
bnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJl
Y3QpOworCisgICAgQVNTRVJUKF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik7CisgICAgX3dp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGRvd25sb2FkLCByZXNwb25zZSwgcmVxdWVzdCwgY29t
cGxldGlvbkhhbmRsZXIpOworfQorCistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilk
b3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJl
c3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpE
ZWNpZGVEZXN0aW5hdGlvbik7CisKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoZG93bmxvYWQsIHJl
c3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCistICh2
b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0
X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0
dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZQoreworICAgIC8vIGRpZFdyaXRlRGF0YSBpcyBjYWxsZWQgYSBub25kZXRlcm1pbmlz
dGljIG51bWJlciBvZiB0aW1lcywgc28gb25seSByZWNvcmQgb25jZSBpbiBhIHNlcmllcy4KKyAg
ICBpZiAoX2NhbGxiYWNrUmVjb3JkLmlzRW1wdHkoKSB8fCBfY2FsbGJhY2tSZWNvcmQubGFzdCgp
ICE9IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSkKKyAgICAgICAgX2NhbGxiYWNrUmVj
b3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpOworCisgICAgaWYgKF9k
aWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCist
ICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVu
Z2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBf
Y2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKKworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQor
ICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFs
bGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBu
aWwpOworfQorCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZDIgKilkb3du
bG9hZAoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlk
RmluaXNoKTsKKworICAgIGlmIChfZG93bmxvYWREaWRGaW5pc2gpCisgICAgICAgIF9kb3dubG9h
ZERpZEZpbmlzaChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
MiAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yKTsKKworICAgIGlmIChfZGlkRmFpbFdpdGhF
cnJvcikKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yLCByZXN1bWVE
YXRhKTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRp
ZEJlY29tZURvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZAoreworICAgIF9jYWxsYmFj
a1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2Fk
KTsKKworICAgIGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAg
ICAgIF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0
aW9uUmVzcG9uc2UsIGRvd25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2NhbGxi
YWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UpOwor
CisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgIF9k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UobmF2aWdhdGlvblJlc3BvbnNlLCBkZWNp
c2lvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKK30KKworLSAodm9pZCl3YWl0Rm9y
RG93bmxvYWREaWRGaW5pc2gKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsK
KyAgICBBU1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7CisgICAgX2Rvd25sb2FkRGlkRmluaXNo
ID0gXihfV0tEb3dubG9hZDIgKikgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKworLSAoVmVjdG9y
PERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZAoreworICAgIHJldHVybiBzdGQ6
OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKK30KKworQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413659</attachid>
            <date>2020-11-09 20:31:33 -0800</date>
            <delta_ts>2020-11-10 09:54:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201109203132.patch</filename>
            <type>text/plain</type>
            <size>174465</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc0ZTRhNzNlMTQxNjVmYTk1
MmI3YzAzNDZkYTYyNjdmYmYwNzZhYmIuLjQ5MzA1YTdlNzRmNGUwNWE0ODdhYmJiYjI2OWQxYmFm
NzAwODgwZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDIwLTExLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBfV0tEb3dubG9hZDIgYW5kIF9XS0Rvd25sb2FkRGVsZWdh
dGUyIQorCisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhl
IGRlbGVnYXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhl
IHByb2Nlc3MgcG9vbC4KKyAgICAgICAgMi4gIF9XS0Rvd25sb2FkMiBkb2VzIG5vdCBjb25mb3Jt
IHRvIE5TQ29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGlj
dGlvbmFyeS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0
IHdpbGwgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRo
YXQgdXNlZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIg
dG8gZ2V0IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0
aGVuIGdldHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlk
RmFpbFdpdGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlz
IG5vIHdheSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUg
YWJvdXQgYSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9m
IHRoZSBkb3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIElu
c3RlYWQsIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBu
YXZpZ2F0aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93
bmxvYWQuCisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2Fu
IGFsc28gYmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBk
b3dubG9hZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5
IHdhbnQgdG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAg
ICAgICA5LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29t
cGxldGlvbiBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIF9XS0Rvd25sb2FkMiBvbmNlIGl0J3Mgc3Rh
cnRlZC4gIFRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICAgICAgcmVmZXJlbmNlIHRoZSBkb3du
bG9hZCBvYmplY3QgYmVmb3JlIHRoZW4gYW55d2F5cy4gIE5vdGU6IHRoYXQncyB3aGVuIHRoZSBk
b3dubG9hZCAic3RhcnRzIiB3aGljaCBpcyBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhlIHJlc3BvbnNl
LAorICAgICAgICAgICAgc28gdGhlcmUgd2lsbCBiZSBubyBzZXJ2ZXIgZGVsYXkgaW4gdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiBkb3dubG9hZCBvYmplY3QgYXZhaWxhYmlsaXRpZXMuCisgICAgICAg
IDEwLiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCBub3cgZ2l2ZXMgeW91IHRoZSBvcHRp
b24gb2YgY29udGludWluZyBvciBjYW5jZWxsaW5nLiAgVGhpcyByZWZsZWN0cyB0aGUgYW1vdW50
IG9mIGNvbnRyb2wgdGhlCisgICAgICAgICAgICBXS05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMuCisg
ICAgICAgIDExLiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSBhbmQgZGlk
UmVjZWl2ZVJlc3BvbnNlIGhhdmUgYmVlbiBtZXJnZWQsIHNpbmNlIHRoZXkgYWN0dWFsbHkgaGFw
cGVuIGF0IHRoZSBzYW1lIHRpbWUgYW5kCisgICAgICAgICAgICBOU1VSTFJlc3BvbnNlIGhhcyBz
dWdnZXN0ZWRGaWxlbmFtZSBBUEkuICBhbGxvd092ZXJ3cml0ZSBpcyBhbHNvIGdvbmUuICBJdCB3
YXNuJ3QgdXNlZCwgYW5kIG5vdCByZWFsbHkgbmVlZGVkLgorICAgICAgICAxMi4gZGlkQ3JlYXRl
RGVzdGluYXRpb24gaXMgZ29uZS4gIFRoYXQgY2FsbGJhY2sgdGltZSB3YXNuJ3QgcmVhbGx5IG5l
Y2Vzc2FyeS4gIElmIHlvdSBuZWVkIHRvIGtub3cgd2hlbiBpdCdzIGNyZWF0ZWQsIHdhaXQgdW50
aWwgdGhlIGZpcnN0CisgICAgICAgICAgICBkaWRXcml0ZURhdGEgY2FsbGJhY2suICBUaGUgZGVz
dGluYXRpb24gaGFzIGRlZmluaXRlbHkgYmVlbiBjcmVhdGVkIGJ5IHRoZW4uCisgICAgICAgIDEz
LiBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSBpcyBnb25lLiAgSXQncyBhY3R1YWxs
eSBub3QgY2FsbGVkIHNpbmNlIHdlIGFkb3B0ZWQgTlNVUkxTZXNzaW9uLCBhbmQgd2Ugc2hvdWxk
IHJlbW92ZSB0aGUgcmVsYXRlZCBkZWFkIGNvZGUuCisgICAgICAgIDE0LiBvcmlnaW5hdGluZ0Zy
YW1lIGlzIGdvbmUuICBPbiBfV0tEb3dubG9hZCBpdCB3YXMgYWN0dWFsbHkgYSBub24tbnVsbCBX
S0ZyYW1lSW5mbyB0aGF0IG9mdGVuIGNvbnRhaW5lZCBubyBpbmZvcm1hdGlvbi4gIFdoZW4gaW5m
b3JtYXRpb24gd2FzIHRoZXJlLAorICAgICAgICAgICAgdGhlIGluZm9ybWF0aW9uIGFjY2VzcyBo
YXMgYmVlbiByZXBsYWNlZCBieSBkaWRCZWNvbWVEb3dubG9hZCB3aGljaCBsaW5rcyB0aGUgV0tO
YXZpZ2F0aW9uUmVzcG9uc2Ugd2hpY2ggaGFzIGZyYW1lIGluZm8gb24gaXQuCisKKyAgICAgICAg
SSB3cm90ZSBBUEkgdGVzdHMgZm9yIGV2ZXJ5dGhpbmcgSSBjb3VsZCB0aGluayBvZi4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6
bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OmxlZ2FjeURpZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZh
aWwpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToK
KyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRh
U3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dl
YlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVEb3dubG9hZDpkZXN0aW5hdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1b
X1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgY2FuY2Vs
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOl0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9y
aWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZWRpcmVjdENoYWlu
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0ZWRdKToKKyAgICAgICAg
KC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBkZWxlZ2F0ZV0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZDIgc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkMiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBfYXBpT2JqZWN0XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDJJbnRlcm5hbC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRl
cm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZTIu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVy
bmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OnBy
b2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3du
bG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0
aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25EaWRCZWNv
bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OnNldERpZFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAyMC0xMS0wOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBTZXQgcHJlZmVyZW5jZSBmb3Igb3ZlcnJpZGRl
biBsYW5ndWFnZXMgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBhZnRlciBlbnRlcmluZyB0aGUg
c2FuZGJveC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRi
YzY5MDdiN2Q5MWI0N2I3NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQy
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6ZG93bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElE
LCBSZWY8TmV0dwogICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRv
d25sb2FkSUQsIFdURk1vdmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBj
YWxsRG93bmxvYWREaWRTdGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJl
c3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8K
ICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIG51bGxwdHIsICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJl
c3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAg
Ly8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBz
ZW5kIERpZFN0YXJ0IGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93
bmxvYWREaWRTdGFydCA9PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3du
bG9hZC0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsK
KwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1f
ZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1
MC4uYzQ4MWViNWY2ZDQyOWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTYwLDYgKzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBj
bGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERv
d25sb2FkTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2Vy
KTsKIApAQCAtODYsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xv
YWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3Rp
bmF0aW9uRGVjaWRlZChEb3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAg
IHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Np
b25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxv
YWREaWRTdGFydCk7CiAKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggMDhiNTVmMGIyZmRk
OWJmNTJlNDFiZjAxN2FiYzRkYzk0MzAyZjA3Yi4uNzY1MTA0YzFjYzcxNDlkZTQ4NDdiYzM1YjQ5
MTYxZjVhYWJiYzUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4
IEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05T
UHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5
IGZvcm1hdDpOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxs
cHRyXTsKICNlbmRpZgogCisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRh
dGVkRGF0YSBvbmNlIHdlJ3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gX1dLRG93bmxv
YWQyCisgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBh
dGggd2UgZ290IGZyb20gdGhlIGRhdGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxv
YWRUYXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Np
b24gZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFz
a0lkZW50aWZpZXIgPSBbbV9kb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VS
VCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAu
Y29udGFpbnModGFza0lkZW50aWZpZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDhkODk3YTQyMzBhZmUyZTk4
ZGRkYTljNGE5ZDIxMDE3NDc0YjM3OTIuLmI5MjA2ODJjOWU0NzNiZjM1ZTAzZmYzYTYyZjcwNWQz
ZTFhYzIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDQ2LDEwICs0NDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIFNhbgogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdAogewotICAgIGlmICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotCi0gICAgcmV0dXJuICJ1bmtub3duIl9z
OworICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQogCiB2b2lkIE5ldHdvcmtEYXRh
VGFza0Jsb2I6OmRvd25sb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggMGJiODU3MzA1Mzg0Y2IzNWQ3OGE2NGRhYzk0MzRkN2Zj
ODI0ZDlmNS4uZjhmYWZiMWM3NjQxODUwNTc5NjZlOTQxZTU2Mjk2NmI1ZDdhNTc1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIw
NTMsOSArMjA1Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25sb2FkUmVxdWVzdChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvCiAgICAgZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QsIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdl
YktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiB7Ci0gICAgZG93bmxv
YWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVE
YXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKKyAgICBkb3dubG9h
ZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURh
dGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIGNhbGxEb3dubG9hZERp
ZFN0YXJ0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2VsRG93bmxvYWQoRG93bmxv
YWRJRCBkb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDFhNzdmYWI5NjFkZjJlNWUzMDYxMjY5ZjU5
MmEyYzRjODY5NDZmOWQuLjY3ZDc1M2ZkMDc2YjhjMDFiYzk4YjMyNzA4YjA2ZjQwMTkwNTJiZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAg
LTEwNiw2ICsxMDYsNyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdG9y
YWdlTWFuYWdlclNldDsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjsKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3Rh
cnQgOiBib29sOwogZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29s
OwogZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3Mg
V2Vic2l0ZURhdGFGZXRjaE9wdGlvbiA6IHVpbnQ4X3Q7CkBAIC00MjEsNyArNDIyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQ
QUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklE
LCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxv
YWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwdWJsaXNoRG93bmxv
YWRQcm9ncmVzcyhEb3dubG9hZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAyMGZmYmNjM2ZjZGZhZGVhM2MwYTM0OTZjNTI4MjI0
ODRmZmRhYTE1Li4yZTQ1MTU5YjA5ZTk0NDliYzAyMDllNDJiNWNjNjE2YWE5Y2Q1YjY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTQ4LDcgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3Mg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBVUkwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpIEFzeW5jCiAK
ICAgICBEb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVu
dW06Ym9vbCBPcHRpb25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCi0gICAg
UmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRo
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KQorICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJp
bmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgZW51bTpib29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25s
b2FkRGlkU3RhcnQpCiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQpIC0+IChJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgVVJMIHVybCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDI4NWVkNWMzN2VmNzY4MTE0NDU4MDM1NWM5YWE0MjNhYjE4NWMxM2EuLjNl
ZDhlMTZhNmEzNWY0ODYwOGQ0ODcxNDYwYTI1MTYyNmVmNDQ5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3IEBAIGRlZiBoZWFkZXJz
X2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQn
OiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3Jp
dGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0OjpDYWxs
RG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdvcmxkU2hhcmVkLmgiJ10s
CiAgICAgICAgICdXZWJLaXQ6OkZpbmRPcHRpb25zJzogWyciV2ViRmluZE9wdGlvbnMuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSc6IFsnIkdlc3R1cmVUeXBl
cy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGM5NDIw
Y2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQuLjQxZTFhNGU4OWMxMzYwNWNiODFi
ODU0YTE2YTZkOGYzOWM5MTA4Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KQEAgLTczLDcgKzczLDcgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dLRG93
bmxvYWRJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVI
YW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBA
IC0yMjQsNyArMjI0LDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5
cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAg
ICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFsbG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tEb3dubG9hZDIgYWxsb2NdOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RXhw
ZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAwODRkNTEzNTJkNDRh
NDUwOTQ5YjNmYmQxZDFkNzYxMzVmYjJiZWIyLi5hNTkwNDkxN2QxNDQxZjk3OWY5NTZjYzlhMzFm
YjEyYTZiOGY5NzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTAsNiArMjUwLDcgQEAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50UnVsZUxpc3RBY3Rpb24ubW0KIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gQG5vLXVuaWZ5CiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Vycm9yUmVjb3ZlcnlBdHRlbXB0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0V4cGVyaW1lbnRhbEZlYXR1cmUubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggZDM3ZjYyODY4YjYxMjk3YTExYWZmZjM4MDJhODBi
YTYxMmE0ZGNlNS4uZGZmNzNmYTY1YmY2ZmIwYWQxN2FmYTk5ZjU4MmY5NDJmYWY3YTBhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAg
LTQ5LDE4ICs0OSwyMCBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIDogYm9vbDsKIAogbmFt
ZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERhdGE7CisKIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVi
bGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6
RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hh
bGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1aW50NjRfdCwg
dWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0
OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpEYXRhKiByZXN1bWVEYXRh
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3du
bG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJi
ZjgzYjdhZmNmY2JjNmFjOWU2YWUuLjkyOTQwOGVhMDUzODY1ZmJkOTVlM2RiNDY0ZWVjOGU3Yzk2
YTkzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRp
b25DbGllbnQuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7
CitjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNs
YXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBA
IC05OSw2ICsxMDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJv
Z3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uUmVz
cG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOyB9CiAgICAgdmlydHVh
bCB2b2lkIHNob3VsZEFsbG93TGVnYWN5VExTKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCmluZGV4IDdjZjU3NzI0ZjJhYjkzMzkwMDhkMWIyZTFkYmQyZTdhMzRk
ZjE5NzkuLjk4MjA0NjkyZTE1N2ZjMjUyNDY0YWY3N2Y2N2JiYjQ4OWZkMDRmZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtMTc4LDcgKzE3OCw3
IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQs
IGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpCiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVu
dCk7CiAgICAgICAgIH0KICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKKyAgICAgICAgdm9pZCBsZWdh
Y3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkU3RhcnQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxv
YWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNo
KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IpIGZpbmFsCisgICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBmaW5hbAogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZh
aWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaAppbmRleCBkYzJlMGQxOTIzMTVlZTU3MmQxZDFmNjc4YWJhNjFkNmMyNGQx
MzkxLi5lYzZjYmI0MTJmOGI1ZGY1OGVkZDNkOWZlOWM4ZGZjYjMyZmM4NzdhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIFdL
X0VYUE9SVCBXS0NvbnRleHRSZWYgV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDbGllbnQo
V0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCk7
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiBj
bGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIGNsaWVudCk7
Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KSBXS19DX0FQSV9E
RVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoV0tEb3dubG9hZFNldERvd25sb2FkQ2xpZW50KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiBjbGllbnQpOwog
CiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBS
RUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb24ubW0KaW5kZXggNzcwNzViZDY2NGJiMWI5MTU3ZDgwM2E0ZmJhZWIxMzhiNzNiZjM0My4u
Y2YzNTdkZjBhYTI3MzA1ZDMwNmU0N2Q5NmQ0OGI2YWQzNGZjNjE1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCkBAIC00NSw2ICs0
NSwxMSBAQAogICAgIHJldHVybiBfbmF2aWdhdGlvbi0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxS
ZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5
KTsKIH0KIAorLSAoQk9PTClfd2FzVXNlckluaXRpYXRlZAoreworICAgIHJldHVybiBfbmF2aWdh
dGlvbi0+d2FzVXNlckluaXRpYXRlZCgpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
IAogLSAoV0tDb250ZW50TW9kZSllZmZlY3RpdmVDb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZS5oCmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1
YjUuLmEwODkxYzBmNTdhZTMwM2Y2Nzc0YmE2ZGExZTliNzcyMTAwOTRmNWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgKQEAgLTU4LDggKzU4LDggQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLU09BdXRob3JpemF0aW9uTG9hZFBvbGljeSkgewogICAgIF9XS1NPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3lJZ25vcmUsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUp
LCBpb3MoMTMuMCkpOwogCi1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9X
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3Mo
OS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsg
PSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93
bmxvYWQgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoIl9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIiwgbWFjb3Mo
MTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkgPSAoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOworc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlp
bmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QWxsb3cgKyAyKTsKIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3dJbk5ld1Byb2Nlc3MgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayArIDEp
OwogCiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cgKyAxKTsKQEAgLTgzLDYgKzgzLDE0
IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3V2ViUHJvY2Vzc0Rp
ZEJlY29tZVJlc3BvbnNpdmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAtICh2b2lkKV93ZWJWaWV3
V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTooV0tXZWJWaWV3ICopd2ViVmlldzsKIAor
LyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIF9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNy
ZWF0ZWQgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uUmVzcG9uc2UgVGhlIHJlc3Bv
bnNlIHRoYXQgaXMgYmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxv
YWQgVGhlIGRvd25sb2FkLgorKi8KKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25S
ZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAoTlNE
YXRhICopX3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXc7
CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxk
QWxsb3dMZWdhY3lUTFM6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUu
aAppbmRleCA5MTU4OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdiNjFjMTdhMWYxMzljLi5hN2E3ZDky
OWRmZjg3MDQzZTdmM2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKQEAgLTI3
LDQgKzI3LDUgQEAKIAogQGludGVyZmFjZSBXS05hdmlnYXRpb24gKFdLUHJpdmF0ZSkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpfcmVxdWVzdDsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2FzVXNlckluaXRpYXRlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbQppbmRleCBlNzk1YjMzMjZjNzZkZjlkOWQ4NDAzNDJmOGRkMTRiYmJmYTEwN2RiLi40ZTdm
ODZmNWZlMzExOWRkMjExODZjMWMxOTRjOGQzNDdmNzQ3ODEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVs
LmgiCisjaW1wb3J0ICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbXBvcnQgIkxlZ2FjeURvd25sb2Fk
Q2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFu
YWdlci5oIgpAQCAtNDQsNiArNDUsNyBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bXBvcnQgIl9XS0F1dG9tYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNl
c3Npb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbkludGVybmFsLmgiCkBAIC01
NTEsMTIgKzU1MywxMiBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0Rp
Y3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8UwogCiAtIChfV0tEb3dubG9h
ZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9v
bC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdl
XSwgcmVxdWVzdCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQyOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURh
dGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0KSldOwogfQogCiAtIChfV0tEb3dubG9h
ZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcg
KilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJl
dHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dl
YnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0
Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCkpOworICAgIHJldHVybiBbX1dLRG93bmxv
YWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3du
bG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6
OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoLCBXZWJL
aXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0OjpObykpXTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmgKaW5kZXggMjE5NDFiMmQ0NjA3MGRhMWNhOTVmYjkwNmY4ODMyZjVhZjA0
ZDhhYi4uMmYzMWU1MDc0ODA1MjA5MDBiNTNjNzFmNThlZTAwMmZhMGQwY2MyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKQEAgLTYyLDcgKzYyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNlbmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IF9kb3dubG9hZERlbGVnYXRlOworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxv
YWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tEb3dubG9h
ZDIuZG93bmxvYWREZWxlZ2F0ZSIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXV0
b21hdGlvbkRlbGVnYXRlOikgaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25E
ZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lm
IFRBUkdFVF9PU19JUEhPTkUKQEAgLTgzLDggKzgzLDkgQEAKIAogLSAodm9pZClfcmVnaXN0ZXJV
UkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OihOU1N0cmluZyAqKXNjaGVtZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAotLSAoX1dLRG93bmxv
YWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJv
bURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0
YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVE
YXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyBfZG93bmxv
YWRSZXF1ZXN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJB
KSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKily
ZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9y
ZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcuX3Jl
c3VtZURvd25sb2FkV2l0aERhdGE6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIFdL
X01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxk
IGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmlu
Zy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQpLCBpb3MoMTIuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmRkN2VhNWVhOWMxMTM5N2I3Mjc0ODE4Mjc2YTc0OGUz
MGQ5YzY3NC4uMWNhN2QxM2ZlYzFiNjM0YTBjYzg2M2Y1OTUyYjU3MTM4OTM3YzU5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC05Niw2
ICs5Niw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW1wbC5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVk
RWxlbWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxl
Z2F0ZS5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Zp
bmREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yODIxLDYgKzI4MjIsMzUgQEAgc3Rh
dGljIGlubGluZSBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gdG9GaW5kT3B0aW9ucyhf
V0tGaW5kT3B0aW9ucyB3a0ZpbmQKICAgICByZXR1cm4gX3BhZ2UtPmlzU2hvd2luZ05hdmlnYXRp
b25HZXN0dXJlU25hcHNob3QoKTsKIH0KIAorLSAodm9pZClfZG93bmxvYWRSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9XS0Rvd25sb2Fk
MiAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5kb3dubG9hZFJlcXVlc3QocmVx
dWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3dubG9hZCkKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cit9CisKKy0gKHZvaWQpX3Jl
c3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQoXikoX1dLRG93bmxvYWQyICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgW3VuYXJjaGl2ZXIg
c2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNl
cHRpb25dOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFt1bmFyY2hpdmVyIGRlY29k
ZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFz
c10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwg
W05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxd
IGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgIFt1bmFyY2hpdmVy
IGZpbmlzaERlY29kaW5nXTsKKyAgICBOU1N0cmluZyAqcGF0aCA9IFtkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKworICAgIGlmICgh
cGF0aCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIkludmFsaWQgcmVzdW1lIGRhdGEiXTsKKworICAgIF9wYWdlLT5yZXN1bWVE
b3dubG9hZChBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLCBwYXRo
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKwogLSAoX1dLTGF5b3V0TW9k
ZSlfbGF5b3V0TW9kZQogewogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMx
MDEzMmU3ZGFkZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMuLjEzODk2YTcyZTlmMDdjMTY0NjlhOWZk
MjllMTBkMzk3ZmUwZDcwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTEyLDYgKzExMiw3IEBAIHR5cGVkZWYg
TlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNzIFdLRnJhbWVJbmZv
OwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFu
aWZlc3Q7CitAY2xhc3MgX1dLRG93bmxvYWQyOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNs
YXNzIF9XS0ZyYW1lVHJlZU5vZGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsKQEAgLTIwNiw2
ICsyMDcsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIAogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5LCBnZXR0ZXI9X2lzU2hvd2luZ05hdmlnYXRpb25HZXN0dXJlU25hcHNob3QpIEJPT0wg
X3Nob3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90OwogCistICh2b2lkKV9kb3dubG9hZFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXiko
X1dLRG93bmxvYWQyICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN1bWVEb3dubG9hZFdp
dGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKF9X
S0Rvd25sb2FkMiAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV9jbG9zZTsKIC0gKEJPT0wp
X3RyeUNsb3NlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CiAtIChCT09MKV9pc0Nsb3NlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQuaAppbmRleCBiNGQ4MjZiOWE3MjQ3OGZkMGMwM2U2YjRiMDE4OWYw
NzI5OWNlYzczLi42MmExNDM2ZTY4YzYzMjAwNTMwOTlmOTBlNWFlNTM5MGY3NTk5YjNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAt
MjgsMTIgKzI4LDE0IEBACiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7
CitAY2xhc3MgX1dLRG93bmxvYWQyOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTAp
LCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX1dLRG93
bmxvYWQyIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkK
IEBpbnRlcmZhY2UgX1dLRG93bmxvYWQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgogCi0tICh2b2lk
KWNhbmNlbDsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDI6KF9XS0Rvd25s
b2FkMiAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpY2FuY2VsOwogLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3NB
dFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEy
LjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VSTFJlcXVlc3QgKnJl
cXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWQubW0KaW5kZXggZGZlZmUwZjE2NmE1NDlkZGU2NWJlMTAyMmViNWMxZmZkZWNjMmRiYy4uMzUx
ZWJlMmIxNGNiZjE2ZmI4YWM5YjgyNmM5NmMwZjczYTA2MDFlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtMzEsNjMgKzMxLDg0
IEBACiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkMklu
dGVybmFsLmgiCiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIAotQGltcGxlbWVudGF0aW9u
IF9XS0Rvd25sb2FkIHsKLSAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFBy
b3h5PiBfZG93bmxvYWQ7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorc3Rh
dGljIE5TTWFwVGFibGU8X1dLRG93bmxvYWQyICosIF9XS0Rvd25sb2FkICo+ICpkb3dubG9hZFdy
YXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNYXBU
YWJsZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisgICAgICAgIHRhYmxlLmdldCgp
ID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJsZV07CisgICAgcmV0dXJuIHRh
YmxlLmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQorQGlt
cGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklOR1NfRU5ECiAKLS0gKHZvaWQp
ZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxvYWQyOihfV0tEb3dubG9hZDIg
Kilkb3dubG9hZAogewotICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4gc2VsZjsKK30KIAotICAgIFtzdXBlciBkZWFsbG9j
XTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDI6KF9XS0Rvd25sb2FkMiAq
KWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW2Rvd25sb2FkV3Jh
cHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9hZF0pCisgICAgICAgIHJldHVybiB3cmFwcGVy
OworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxvYWQgYWxsb2NdIGluaXRX
aXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07CisgICAgW2Rvd25sb2FkV3JhcHBl
ck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07CisgICAgcmV0dXJuIHdy
YXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7Ci0gICAgX2Rvd25sb2FkLT5jYW5jZWwoW2Rv
d25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7CisgICAgX2Rvd25sb2FkLT5f
ZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxvYWQtPl9kb3dubG9h
ZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlkQ2FuY2Vs
KGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0KIAogLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3NB
dFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwp
OworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKIH0KIAog
LSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBk
YXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+cmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVI
VFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2ViVmlldwogewotICAg
IGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgp
KQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9hZC0+
b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9y
aWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIG5pbDsKIH0K
IAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgogewotICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBO
U1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPl9kb3dubG9hZC0+
cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAqIHsKICAgICAgICAgcmV0
dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKXdhc1VzZXJJbml0
aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7CisgICAg
cmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7CiB9CiAKIC0g
KE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9kb3du
bG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9k
b3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwogfQogCiAtIChXS0ZyYW1l
SW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZf
ZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZfZG93
bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwogfQogCiAtIChpZCljb3B5V2l0aFpvbmU6
KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3IEBACiAKIC0gKEFQSTo6T2JqZWN0JilfYXBp
T2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQ7CisgICAgcmV0dXJuICpfZG93bmxvYWQt
Pl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU5NWNlZTU2NDYzMjAwZTUwZWJmOGMx
OGU4NGMyOGMzMzE0NzAwYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tGcmFtZUluZm87CitAcHJvdG9jb2wgX1dLRG93bmxv
YWREZWxlZ2F0ZTI7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tE
b3dubG9hZDIgOiBOU09iamVjdAorCisvKiBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdXNlZCB0byBp
bml0aWF0ZSB0aGlzIGRvd25sb2FkLgorICBAZGlzY3Vzc2lvbiBJZiB0aGUgb3JpZ2luYWwgcmVx
dWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3JpZ2luYWxSZXF1ZXN0CisgIHdp
bGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xsb3dzIHRoZSByZWRpcmVjdC4K
KyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU1VSTFJlcXVl
c3QgKm9yaWdpbmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSBkZWxlZ2F0ZSB0aGF0IHJl
Y2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMgZm9yIHRoaXMgZG93bmxvYWQuICovCitAcHJvcGVydHkg
KG5vbmF0b21pYywgd2VhaykgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPiBkZWxlZ2F0ZTsKKwor
LyogQGFic3RyYWN0IENhbmNlbCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5k
bGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgorIEBk
aXNjdXNzaW9uIFRoZSBjb21wbGV0aW9uSGFuZGxlciBpcyBwYXNzZWQgZGF0YSB0byBiZSB1c2Vk
IHRvIHJlc3VtZSB0aGUgZG93bmxvYWQgaWYgcG9zc2libGUuCisqLworLSAodm9pZCljYW5jZWw6
KHZvaWQgKF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMjM0MTYwMjQ2NzY2YTFjODdiZTA1NGFhM2ZkODUyMGY1ZmM5MTJkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMi5tbQpA
QCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJD
YWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tOU0Rh
dGEuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkRGVsZWdhdGUyLmgi
CisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgorCitjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25s
b2FkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8X1dL
RG93bmxvYWREZWxlZ2F0ZTI+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAg
LCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9u
ZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9u
ZHNUb0RpZFdyaXRlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihk
b3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKKyAgICAg
ICAgLCBtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkK
KyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNw
b25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1
ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVw
ZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRv
d25sb2FkOndyYXBwZXIoZG93bmxvYWQpIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnN0YXRp
Y19jYXN0PE5TSFRUUFVSTFJlc3BvbnNlICo+KHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkgbmV3
UmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFty
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9h
ZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVy
OikpXShfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAgICAgICAg
Y2FzZSBfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsOgorICAgICAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgY2FzZSBfV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5QWxsb3c6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiSW52YWxpZCBfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9s
aWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxl
bmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRz
VG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4g
Y2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwg
Y2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVu
dGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2gg
KGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRl
bnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0
SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRl
Q2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVy
Zm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFs
bGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwg
KGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07Cisg
ICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxl
Z2F0ZSB8fCAhbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
Tm8sIHsgfSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZCkgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
IHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSA/IG5pbCA6IHN0
YXRpY19jYXN0PE5TU3RyaW5nICo+KHN1Z2dlc3RlZEZpbGVuYW1lKSBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2Rvd25sb2FkID0gbWFrZVJlZihkb3dubG9hZCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgp
LCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2Vz
dGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24pIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0
aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFs
bG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbi5pc0ZpbGVVUkwpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGlu
YXRpb24gbXVzdCBiZSBhIGZpbGUgVVJMIl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICAgICAgICAgIGlmICghW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6W2Rlc3RpbmF0aW9uIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENv
bXBvbmVudF0ucGF0aF0pIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0
Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtO
U0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNh
bm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
OjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6ZGVzdGluYXRpb24ucGF0
aF0pIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2Fk
XSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9y
V2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZp
bGUgdXNlckluZm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi5w
YXRoKTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNw
b25kc1RvRGlkV3JpdGVEYXRhKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2Rl
bGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0
ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICB9CisKKyAgICB2b2lkIGRp
ZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGaW5pc2gpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6d3Jh
cHBlcihkb3dubG9hZCldOworICAgIH0KKworICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwg
QVBJOjpEYXRhKiByZXN1bWVEYXRhKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVn
YXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZh
aWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIHJlc3VtZURhdGE6d3JhcHBlcihyZXN1bWVEYXRh
KV07CisgICAgfQorCisgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAh
bV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVy
cm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxF
cnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCB1c2VySW5mbzpuaWxdIHJlc3VtZURhdGE6bmlsXTsK
KyAgICB9CisKKyAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+ID4gbV9k
ZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24gOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CisgICAg
Ym9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlk
RmFpbFdpdGhFcnJvciA6IDE7Cit9OworCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQyCisK
Ky0gKHZvaWQpY2FuY2VsOih2b2lkICheKShOU0RhdGEgKnJlc3VtZURhdGEpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRhdGEpIHsKKyAgICAgICAgaWYg
KGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBl
cihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVxdWVz
dAoreworICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29y
ZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworfQorCistIChp
ZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+KWRlbGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0
ZS5nZXQoKS5nZXQoKTsKK30KKworLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPF9XS0Rvd25sb2Fk
RGVsZWdhdGUyPilkZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9k
b3dubG9hZC0+c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUp
KSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJv
eHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBw
cm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAorewor
ICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQySW50ZXJuYWwuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDJJbnRlcm5hbC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjNjUxYWNhZmQ1ZDJmNDUzMjZlYTg3ZDUzYTI1ZThlNDhlMWU0ZjMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQySW50
ZXJuYWwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiRG93bmxvYWRQ
cm94eS5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKyNpbXBvcnQgIl9XS0Rvd25sb2FkMi5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxE
b3dubG9hZFByb3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQyOwor
fTsKKworfQorCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkMiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNr
YWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25s
b2FkOworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tEb3dubG9hZERlbGVnYXRlMj4gPiBfZGVsZWdh
dGU7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAppbmRleCBhODNmOTAyOWI1YzczZWM1ZjlkYjc0ZjE0
MDdjMjg2NGUyNTExMzU4Li42NWVhY2NhY2I1ZjcwZTE0YWUzYjk3Mzg3ZjQ2OGE4M2E3YmI3Yzgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWREZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZERlbGVnYXRlLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogQHByb3RvY29sIF9XS0Rvd25s
b2FkRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1k
ZWNsYXJhdGlvbnMiCiAtICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRv
d25sb2FkOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsK
QEAgLTQ2LDQgKzQ4LDUgQEAKIC0gKEJPT0wpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKE5TU3Ry
aW5nICopX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRl
OihCT09MICopYWxsb3dPdmVyd3JpdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOiIsIG1hY29zKDEwLjEwLCAxMC4xMy40KSwgaW9zKDguMCwgMTEuMykpOwor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZTIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42MmFmYTFiNzQ3NDQ1ODI5OWIzOWU2OGNkNzg0NzFhZDA2NzlmZDg5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVs
ZWdhdGUyLmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNs
YXNzIF9XS0Rvd25sb2FkMjsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkgeworICAgIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWws
CisgICAgX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgorCitAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZTIgPE5TT2JqZWN0PgorQG9w
dGlvbmFsCisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNl
aXZlZCBhbiBIVFRQIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUg
d2ViIHZpZXcgdGhhdCByZWNlaXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRo
ZSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVl
c3QgdGhhdCB3aWxsIGJlIHNlbnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90
CisgdG8gcHJvY2VlZCB3aXRoIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3Ug
ZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJl
Y3RzIHdpbGwgYmUgdGFrZW4uCisqLworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICop
ZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICop
cmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJl
c3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBU
aGUgd2ViIHZpZXcgdGhhdCByZWNlaXZlZCB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgor
IEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2Ug
dG8gcmVzcG9uZCB0byB0aGUgY2hhbGxlbmdlLiBUaGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBp
cyBvbmUgb2YgdGhlIGNvbnN0YW50cyBvZiB0aGUgZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLiBXaGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50
IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVzZSwgb3IgbmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcg
d2l0aG91dCBhCisgY3JlZGVudGlhbC4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxl
bWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2aWV3IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVu
dGljYXRpb24gY2hhbGxlbmdlIHdpdGggdGhlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWpl
Y3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9zaXRpb24uCisqLworLSAodm9pZClkb3dubG9hZDooX1dL
RG93bmxvYWQyICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJ
bnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGlj
YXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNo
IHdlIG5lZWQgYSBmaWxlIHRvIHdoaWNoIHRvIHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUg
c2VydmVyIHJlc3BvbnNlLCBpZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhU
VFAgcmVxdWVzdC4KKyBAcGFyYW0gc3VnZ2VzdGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxl
bmFtZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5
b3UgbXVzdCBpbnZva2Ugd2l0aAorIGVpdGhlciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3du
bG9hZCBvciBuaWwgdG8gY2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlz
IGlzIGEgZG93bmxvYWQgb2YgYSBibG9iIFVSTCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3Vn
Z2VzdGVkRmlsZW5hbWUKKyB3aWxsIG9mdGVuIGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lLCBidXQgd2ViIGNvbnRlbnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVk
IGRvd25sb2FkIGZpbGVuYW1lLiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1u
dWxsLCBpdCBtdXN0IGJlIGEgZmlsZQorIHRoYXQgZG9lcyBub3QgZXhpc3QgeWV0IGluIGEgZGly
ZWN0b3J5IHRoYXQgZG9lcyBleGlzdC4KKyovCistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9h
ZDIgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZToobnVsbGFibGUgTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihudWxsYWJsZSBOU1N0cmlu
ZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAq
IF9OdWxsYWJsZSBkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFj
dCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbmQgd3JpdHRlbiBkYXRh
IHRvIHRoZSBkZXN0aW5hdGlvbi4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRoYXQg
aGFzIHdyaXR0ZW4gZGF0YS4KKyBAcGFyYW0gYnl0ZXNXcml0dGVuIFRoZSBudW1iZXIgb2YgYnl0
ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc1dyaXR0ZW4gVGhlIHRvdGFsIG51bWJlciBv
ZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIFRoZSB0
b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgd3JpdHRlbi4KKyBAZGlzY3Vzc2lv
biBJZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIHJlc3VtaW5nIGEgcHJldmlvdXMg
ZG93bmxvYWQsIHRoZW4KKyB0b3RhbEJ5dGVzV3JpdHRlbiB3aWxsIGJlIGJ5dGVzV3JpdHRlbiBw
bHVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGRvd25sb2FkZWQu
CisgSWYgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpcyB1bmtub3duLCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlIHdpbGwgYmUgLTEuCisqLworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxv
YWQyICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFj
dCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisg
QHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IGZpbmlzaGVkLgorKi8KKy0gKHZvaWQp
ZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkOworCisvKiBAYWJzdHJh
Y3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgZmFpbGVkLgorIEBwYXJhbSBkb3dubG9h
ZCBUaGUgd2ViIHZpZXcgdGhhdCBoYXMgZmFpbGVkLgorIEBwYXJhbSBlcnJvciBUaGUgZXJyb3Ig
aW5kaWNhdGluZyB0aGUgZmFpbHVyZSByZWFzb24uCisgQHBhcmFtIHJlc3VtZURhdGEgVGhlIGRh
dGEgdG8gYmUgdXNlZCB0byByZXN1bWUgdGhpcyBkb3dubG9hZCBpZiBwb3NzaWJsZS4KKyovCist
ICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9y
OihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YToobnVsbGFibGUgTlNEYXRhICopcmVzdW1lRGF0
YTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCmluZGV4IGUx
MjkwYjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDkyZDQwMTIuLjZlZjExZWM5NWIxZWUxZDE2
MGIyZjdmYThlNTA1ZDEyYTNmYTQ5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaApAQCAtMjUsMTYgKzI1LDEy
IEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAKLSNpbXBvcnQgIkRvd25sb2FkUHJveHku
aCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLW5h
bWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25s
b2FkUHJveHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tEb3dubG9hZDsKLX07CitA
Y2xhc3MgX1dLRG93bmxvYWQyOwogCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVj
dD4geworQHBhY2thZ2UKKyAgICBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiBfZG93bmxvYWQ7CiB9
Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PgogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGll
bnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEzZmUuLmVh
ZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9p
ZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRX
ZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdl
YmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxv
YWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKKyAg
ICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0
ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXND
YW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRleCA3NWQ1MTIyMWQyYzM1MTgy
Zjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBjYmY3NTY1
MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdh
Y3lEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xl
Z2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgCiBw
cml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3Rh
cnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxv
YWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmlu
YWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3du
bG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJveHkm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsKICAgICB2
b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZlZWJjZDIz
Njk4NWZhNjhiNDlkMTYxZTRkYjQuLjY1YTk4YjU1YzI3NjlkOTliYjY2NDQ5MDAzMWExY2EwNzU1
NDYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2Fj
eURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJXZWJDcmVkZW50
aWFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94
eS5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Rvd25s
b2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNDcsNiArNDgsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKwogTGVnYWN5
RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9hZERlbGVn
YXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CkBAIC03Niw3ICs3
OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lzdGVtUHJldmlld0NvbnRy
b2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5kaWYKIAotdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKK3Zv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9h
ZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTkwLDcgKzkzLDcgQEAgdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3Rh
cnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxv
YWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0K
IAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zCiAjZW5k
aWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25z
ZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkg
ZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndy
YXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJl
c3BvbnNlKCldOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0
YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKQpAQCAtMTE4LDkgKzEyMSw5IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90CiAjZW5kaWYK
IAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0
ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKLSAgICAgICAgW21fZGVsZWdhdGUg
X2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRv
dGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRS
ZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihk
b3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9h
ZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxl
Y3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRp
b25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3
ICsxNzAsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlv
bihEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjbwogI2VuZGlmCiAKICAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGlu
YXRpb246ZGVzdGluYXRpb25dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRD
cmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAt
MTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFz
aChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTIwNCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWVBbGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRlID0gTk87CiAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIE5TU3Ry
aW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFs
bG93T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5nICpkZXN0aW5h
dGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CiAg
ICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFsbG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092
ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKICAgICB9IGVsc2UgewotICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxl
Z2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5T
U3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQ
cm94eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rv
d25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25I
YW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2LDEwIEBAIHZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2Vu
ZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOltfV0tEb3dubG9hZCBk
b3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCi12b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBVU0UoU1lT
VEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxv
YWQoKSkgewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6CiAjZW5k
aWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRo
RXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltf
V0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0g
ZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOwogfQogCiB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
QEAgLTI2MywxMyArMjY2LDEzIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAo
bV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5k
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5n
KCldXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0
cmluZygpXV07CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0K
QEAgLTMwMSw0ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0
aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlmCiAK
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgK
aW5kZXggNTc0YzM0MmYzM2RjZjA2Y2NhZGExMWYwYmQyZDA5N2VjNWE5NTdhMy4uODY5YmM2OWUy
NmRmZTVkNWZhMzgwYzE2YWRiZDlkM2QxZjdkZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2
YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3Qg
UmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlk
ZTsKIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdl
YlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYpIGZp
bmFsOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlciYpIG92ZXJyaWRlOwpAQCAtMjM4LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAgICAg
IGJvb2wgd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wgbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ls
bEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0g
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZp
Z2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBjNDEwMmZmNTJiOTVlMzIzNDU5
MGNlOWUwMzE3NjUyOTVlOTZiZGE3Li4yOTIwNWI0MmY1NjA1ZWNjY2ExNTEyYjU2NDk1ZDAyYjQy
ZDc4MDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCkBAIC02NSw2ICs2NSw3IEBACiAjaW1wb3J0ICJXZWJQcm90ZWN0aW9uU3BhY2Uu
aCIKICNpbXBvcnQgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxl
TGlzdEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcuaCIKICNpbXBvcnQgIl9XS0ZyYW1l
SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzSW50
ZXJuYWwuaCIKQEAgLTE4Nyw2ICsxODgsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2
aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAg
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3
V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVj
b21lVW5yZXNwb25zaXZlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJD
cnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KV07CisgICAgbV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlv
blJlc3BvbnNlOmRpZEJlY29tZURvd25sb2FkOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVy
ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dpbGxFbmROYXZp
Z2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlv
bkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CiAgICAgbV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdp
dGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2
aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTopXTsKQEAgLTU1NSwxMSArNTU3LDEwIEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE5TVVJM
UmVxdWVzdCAqbnNVUkxSZXF1ZXN0ID0gd3JhcHBlcihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShu
YXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpKTsKLSAgICAgICAgICAgIGlmIChbTlNVUkxDb25u
ZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0XSB8fCB3ZWJQYWdlLT51cmxTY2hl
bWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpKQot
ICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+ZG93bmxvYWQoKTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQ
b2xpY2llcy5nZXQoKSk7CisgICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5k
bGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0KKyAgICAgICAgICAgICAgICB8fCB3ZWJQYWdlLT51cmxT
Y2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpCisgICAgICAg
ICAgICAgICAgfHwgW25zVVJMUmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImJs
b2IiXSkgeworICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBA
IC02MzgsOSArNjM5LDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
ICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAor
ICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAg
Y2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6CisgICAgICAgICAgICBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXIt
PmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIF9XS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgogICAgICAgICAgICAg
dHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94
eSwgW2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNp
ZXMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9wdGltaXplZExvYWQpIHsK
ICAgICAgICAgICAgICAgICBpZiAob3B0aW1pemVkTG9hZCkgewpAQCAtMTE2OCw2ICsxMTcyLDE4
IEBAIFJlZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVh
dGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRl
eCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlvblJl
c3BvbnNlLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRp
Y19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9u
UmVzcG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29tZURvd25sb2FkOndy
YXBwZXIoZG93bmxvYWQpXTsKK30KKwogI2lmIFVTRShRVUlDS19MT09LKQogdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkp
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQ
cm94eS5jcHAKaW5kZXggMjljMTdiZWIzM2VkNjc2YzljNDQ0YTRkNzJhNjAxZjRjZDA3N2YzNi4u
ZDk5YjhiODZkYzcwNzY5MTUxOGQ0YTI5Yjc2NDBjZGU1OGZmMzNjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNTks
NyArNTksMTEgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFw
JiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQcm94
eTo6fkRvd25sb2FkUHJveHkoKSA9IGRlZmF1bHQ7CitEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQ
cm94eSgpCit7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRTdGFy
dENhbGxiYWNrKG51bGxwdHIpOworfQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRl
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CkBAIC0xMTcsNyArMTIxLDkg
QEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2UKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1w
dHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHJlcXVlc3QudXJsKCkpCiAgICAgICAg
IG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVxdWVzdC51cmwoKSk7CiAKLSAgICBtX2NsaWVudC0+
ZGlkU3RhcnQoKnRoaXMpOworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAgIG1f
ZGlkU3RhcnRDYWxsYmFjayh0aGlzKTsKKyAgICBtX2NsaWVudC0+bGVnYWN5RGlkU3RhcnQoKnRo
aXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTE3MywxMSArMTc5LDE2IEBAIHZvaWQgRG93bmxv
YWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdhY3lSZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1
bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvcik7CisgICAgbV9j
bGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xlZ2FjeVJlc3VtZURhdGEuZ2V0KCkpOwog
CiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRl
bGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwog
fQogCit2b2lkIERvd25sb2FkUHJveHk6OnNldENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVu
dD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAwNzE4ZTg5M2FiMjU1YmIzYTM1ZGY3ZWRhOWMz
MjkyYzFmNzE4YTRjLi40ZDIwYjE2ZGMxNzhhNDY2MGJiZmU3NGM4NTAzNjBhMzgzY2NmMGFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKQEAgLTEwMiwxMiArMTAyLDggQEAgcHVibGljOgogICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFt
ZUluZm8oKSB7IHJldHVybiBtX2ZyYW1lSW5mby5nZXQoKTsgfQogCiAgICAgQVBJOjpEb3dubG9h
ZENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KLQotcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0
YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKLQotICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENsaWVudChSZWY8
QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAgdm9pZCBzZXREaWRTdGFydENhbGxiYWNrKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNhbGxiYWNrKSB7IG1fZGlk
U3RhcnRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0xMjAsNiArMTE2LDEyIEBA
IHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYpOwogCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3Rv
cmUmLCBBUEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9k
b3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9y
ZTsKICAgICBSZWY8QVBJOjpEb3dubG9hZENsaWVudD4gbV9jbGllbnQ7CkBAIC0xMzQsNiArMTM2
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBt
X2ZyYW1lSW5mbzsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4g
bV9kaWRTdGFydENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCA2ZWUyNmQwNDZiMGIyMTg4NzA3M2U2ZWU3MzQ5ODQzZGFkMzM1YWZhLi5jMWZl
MjQxYTJlYTM3MWIxN2QzYjM4NTU3MDQ5NGMzZDI1MTkyMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBj
NjYwZTU2NmIwOGRkMzY3OTEzZDIyNDUwNmJkZjFlZGYwMGQ1ZDg3Li4wMWM1NTk1MzQ1ODY3NDlk
ZjdjZWJiYjIwOTE4NGIxNGVkYWFkNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTMxNjgsNyArMzE2OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBCiAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFjdGlvbjo6RG93bmxv
YWQ7CiAKICAgICBpZiAocG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlvbjo6VXNlIHx8ICFmcmFt
ZS5pc01haW5GcmFtZSgpIHx8ICFuYXZpZ2F0aW9uKSB7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5
RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RG
TW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb24sIFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRl
cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTg1LDcgKzMxODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRd
IChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQ
YWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
IG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95
ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAh
bmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSkpIHsKLSAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjIxLDExICszMjIyLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwg
c2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
c2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2FwID8gV2ls
bENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShw
b2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRs
ZSksIHNob3VsZFByb2Nlc3NTd2FwID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVz
IDogV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwogICAgIH0pOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIs
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uUmVz
cG9uc2U+JiYgbmF2aWdhdGlvblJlc3BvbnNlLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAgICAg
c2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIFdURjo6
bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwpAQCAtMzI0MSw2ICszMjQyLDEzIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09IFBvbGljeUFjdGlvbjo6RG93bmxvYWQp
IHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJveHkuCiAgICAgICAgIGF1dG8mIGRv
d25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV93
ZWJzaXRlRGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCwgdGhpcywg
bmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0aW5nRnJhbWVJbmZvKCkgOiBGcmFtZUlu
Zm9EYXRhIHsgfSk7CisgICAgICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZN
b3ZlKG5hdmlnYXRpb25SZXNwb25zZSldIChhdXRvKiBkb3dubG9hZFByb3h5KSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZFByb3h5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBPbmNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lEb3dubG9hZCBpcyBubyBsb25nZXIgdXNlZCwgd2Ugc2hvdWxkIGFzc2VydCBuYXZpZ2F0aW9u
UmVzcG9uc2UgaXMgbmV2ZXIgbnVsbCBoZXJlLgorICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25S
ZXNwb25zZSkKKyAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkKCp0aGlzLCAqbmF2aWdhdGlvblJlc3BvbnNlLCAqZG93
bmxvYWRQcm94eSk7CisgICAgICAgIH0pOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAg
ICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53YXNVc2Vy
SW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVkaXJlY3RDaGFpbihuYXZp
Z2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTUwOTQsNyArNTEwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3Jp
bmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5k
bGVkIGJ5IGNvbnRlbnQgZmlsdGVyIik7Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZXR1
cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0
aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTMyNSw3ICs1MzMzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNp
c2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vKSk7CiAKICAg
ICBpZiAobV9wb2xpY3lDbGllbnQpCkBAIC01MzYzLDggKzUzNzEsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgp
KTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2
aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOworICAgIGF1
dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJl
cXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKwog
ICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJv
eHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFt
ZUlELCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0
aW9uKSwKLSAgICAgICAgcHJvY2Vzc10gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJv
d3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIHByb2Nlc3MsIG5hdmln
YXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNF
X0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJu
aW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01MzczLDE0ICs1MzgzLDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9s
aWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBu
dWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0
aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVC
cm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykp
OwogICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5T
aG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0
ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCks
IHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsK
KyAgICBlbHNlCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1v
dmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC02MDE5LDYgKzYwMjcs
MTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCkKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRv
d25sb2FkKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQ
STo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlc3VtZURvd25sb2FkKHdlYnNp
dGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzdW1lRGF0YSwgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3Rh
cnQ6Olllcyk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93
bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3Jl
KCksIHRoaXMsIHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGll
bnQoKS5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggN2NlZmJmYzY5NDVlZGZlNDNhZTU2YzJkNTY0YzBlODFlOTViYjRh
Ni4uZTllNTExNDEyZTViOTc5YzVmNjQ3YmJkMTI3NzZiMTdhODBmNGRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNjMsNyArMTE2Myw3IEBAIHB1YmxpYzoK
IAogICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVyOwogICAgIGVudW0gY2xhc3MgV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCByZWNl
aXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7
CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
QVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB2
b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlv
biwgQVBJOjpOYXZpZ2F0aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJh
bWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC0xMjc4LDYgKzEyNzgsOCBA
QCBwdWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRl
cnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVl
c3QoRG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpE
YXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5
Kik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJp
bmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGUwNDUxZmI0OGIyZDI3NzgwYTFhZGU5Y2YzZDEyZjY2YjRlNDRlNGIuLmViNTliNzU0YjQz
Yzg5ZmQ1NWVkNjk4NWYxOGMyNzdkZGJjN2ZhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExMzEsNyArMTEzMSw3IEBAIERvd25sb2FkUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdl
YlBhZ2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKLURvd25sb2FkUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5
KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewog
ICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwg
UmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwogCkBAIC0xMTM5LDcgKzEx
MzksNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQogICAgIGlmICghcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCi0gICAg
ZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3du
bG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgp
LCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxvYWREaWRTdGFydCksIDAp
OwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0ZTJlOWE1MjNlNDZlZTQ0NzQ3Y2UzNTAyYWU5NTBlNThm
OTk1MDJlLi4yNzQ4OTg0OWQ1YThkYjkzYjk2YWI5NmNiYTY5MGZlYWM3NTA2YjU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBp
bnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygp
OwogI2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51
bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIAogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMjA1LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotICAgIERv
d25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURh
dGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAK
ICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8
QVBJOjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ZTBkM2NmODdlNzlmNDEwOTZmMWQ3
OGVmMmI0Y2M2MTNjMjYxNzQ5Li44OTgyYjM2NWI5MTk1OWVmNWQ0NDdlNmFkMTdjYzVmZmE4YWZk
MTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE4MTIsNiArMTgxMiw5IEBACiAJCUNFRTRBRTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBV
SUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0VFNEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07CiAJCUQzQjk0ODQ3
MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQ
b3B1cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJj
aFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovOyB9
OworCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNDI1MkVDQjhEMDBE
OTIxREIgLyogX1dLRG93bmxvYWQyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJREYwQzVGMkEyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2Fk
RGVsZWdhdGUyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWREZWxlZ2F0ZTIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlERjBDNUYyQjI1
MkVENDQwMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAv
KiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oICovOyB9OwogCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYz
NUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQ
Q29va2llU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxk
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGODRDRUU0MjQ5
QUEyNEQwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFBMjFGMDA5MDk2RjYgLyogV0tQREZI
VURWaWV3Lm1tICovOyB9OwpAQCAtNTM1NCw2ICs1MzU3LDEwIEBACiAJCUQzQjk0ODQzMTFGRjRC
NjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0
ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNl
YXJjaFBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWFy
Y2hQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjMyNTJF
Q0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IF9XS0Rvd25sb2FkMi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZDIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMklu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0Rvd25sb2FkMklu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI2MjUyRUNCOEUw
MEQ5MjFEQiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tEb3dubG9hZERlbGVnYXRlMi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3Jl
UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFE
MDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzQ0LDcgKzczNTEsMTEgQEAKIAkJ
CQk4Mzg5MUI2ODFBNjhCRUJDMDAzMEYzODYgLyogX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZS5oICovLAogCQkJCUExQTRGRTU3MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oICov
LAogCQkJCUExQTRGRTU4MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5tbSAqLywKKwkJ
CQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogX1dLRG93bmxvYWQyLmggKi8sCisJCQkJREYw
QzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5tbSAqLywKKwkJCQlERjBDNUYy
NTI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50ZXJuYWwuaCAqLywKIAkJCQlBMUE0
RkU2MDE4REQ1NEE0MDBCNUVBOEEgLyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCURG
MEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oICovLAogCQkJ
CUExQTRGRTU5MThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZEludGVybmFsLmggKi8sCiAJ
CQkJMzc5QTg3MzgxOEJCRkUwRjAwNTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24uaCAqLywKIAkJ
CQkzNzlBODczNzE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5tbSAqLywKQEAg
LTEwNzg5LDcgKzEwODAwLDEwIEBACiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5QkRBIC8qIF9X
S0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNjkxQTY4QkVC
QzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUExQTRGRTVBMThEQ0U5RkEwMEI1RUE4QSAvKiBfV0tEb3dubG9hZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIF9XS0Rvd25sb2Fk
MkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU2MTE4REQ1NEE0MDBCNUVBOEEg
LyogX1dLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkEyNTJF
Q0I4RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMUE0RkU1QzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDRFQzNFQTkyNDdGNUMwOTAwNTk0ODlDIC8qIF9XS0RyYWdBY3Rpb25z
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3OUE4NzNBMThCQkZFMEYwMDU4OEFGMiAv
KiBfV0tFbGVtZW50QWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0ZTJhYzUwZTA1ZWU2NmJlMmY5ZmU5NzEx
ODkxNmRmZWNmOTY4OTUwLi5jNmQyNDMxNTIyN2Y5ZjQ4ZDlhM2E2NjEyNjJhMzczNjI1MjE4NzUx
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMjAtMTEtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IGRvd25sb2FkIFNQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKGRvd25sb2FkVGVzdFNlcnZlcik6
CisgICAgICAgIChjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKToKKyAgICAgICAgKHNpbXBs
ZURvd25sb2FkVGVzdFNlcnZlcik6CisgICAgICAgIChjaGVja0ZpbGVDb250ZW50cyk6CisgICAg
ICAgICh0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QpOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaDogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIubW06IEFk
ZGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWQ6d2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZTIgZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBk
b3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBkb3dubG9hZERpZEZpbmlz
aDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkOmRpZEZhaWxX
aXRoRXJyb3I6cmVzdW1lRGF0YTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUy
IGRvd25sb2FkUHJvY2Vzc0RpZFRlcm1pbmF0ZTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUyIF93ZWJWaWV3Om5hdmlnYXRpb246ZGlkQmVjb21lRG93bmxvYWQ6XSk6CisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9h
ZERlbGVnYXRlMiB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAgICAgICAgKC1bVGVzdERv
d25sb2FkRGVsZWdhdGUyIHRha2VDYWxsYmFja1JlY29yZF0pOgorCiAyMDIwLTExLTA5ICBQZXIg
QXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFNldCBw
cmVmZXJlbmNlIGZvciBvdmVycmlkZGVuIGxhbmd1YWdlcyBpbiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzIGFmdGVyIGVudGVyaW5nIHRoZSBzYW5kYm94LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IGQ5N2YyNjZlNDA1ZWNmYWE0MTQxOTQ1OTkwODhhZDU0MGJkNGQwOWUuLmQw
M2VmY2I2MDE0ZDM5YTVlYjFjZTFjOWRlYmJlOGI0ZmE5MWY5MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3LDYgKzI3LDcgQEAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
bkV4dHJhcy5tbQogY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdENv
Y29hLm1tCiBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUyLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2NvYS9UZXN0
UHJvdG9jb2wubW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDUxMTc5N2FmZDhhOWU1ZGY4NDQyMzlmMjJlNGM5NDMyYzRkYzAwNTYuLmRmMDNhYWU0
ZmY3NzM2OTFhN2VhZTAzNzM4OTlhOGI5MzFlZmM3ODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yNzg1LDYgKzI3ODUsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tX
ZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rp
b25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0
RG93bmxvYWREZWxlZ2F0ZTIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZTIubW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0
RG93bmxvYWREZWxlZ2F0ZTIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUy
Lmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyog
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEy
MjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNo
ZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMzEwNiw2ICszMTA4LDggQEAKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBD
MTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAogCQkJCTVDNzJFOENEMjQ0RkZD
RTMwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAogCQkJCTVDNzJFOENFMjQ0
RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3
MDI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUyLmggKi8sCisJCQkJREY2
QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlMi5tbSAqLywKIAkJ
CQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICov
LAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
Lm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQu
aCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLjc1
MmNjYTVjN2JlZWQ5Yzg3N2U2Njk3MDE2MDkwNmRmNDMyNGI0ODAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsMTEgKzMz
LDE0IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQg
IlRlc3REb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZTIu
aCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RQcm90
b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9O
U1VSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktp
dC9XS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTQ1LDYgKzQ4LDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkMi5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oPgpAQCAtMTE4OSwyNCArMTE5MywzMCBAQCBTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBj
KQogICAgIHJldHVybiBTdHJpbmcodmVjdG9yLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAotVEVTVChf
V0tEb3dubG9hZCwgUmVzdW1lKQorZW51bSBjbGFzcyBJbmNsdWRlRVRhZyA6IGJvb2wgeyBObywg
WWVzIH07CitlbnVtIGNsYXNzIFRlcm1pbmF0ZUFmdGVyRmlyc3RSZXBseSA6IGJvb2wgeyBObywg
WWVzIH07CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNl
cnZlcihUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgdGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5ID0g
VGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpObywgSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJ
bmNsdWRlRVRhZzo6WWVzKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwot
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNv
bm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFs9LCBjb25uZWN0aW9uQ291bnQgPSAw
XShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAg
ICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAg
ICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hh
cj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAg
ICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNwb25z
ZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxu
IiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcgPT0gSW5jbHVkZUVUYWc6OlllcyA/
ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9u
OiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgogICAgICAgICAgICAg
ICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQotICAgICAgICAgICAgICAgICkp
OworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdU
Rk1vdmUocmVzcG9uc2UpLCBbPV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICh0ZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgPT0gVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpZ
ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
W2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdl
OiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDEyICsxMjMwLDYwIEBAIFRFU1QoX1dL
RG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CisKK3N0YXRpYyB2
b2lkIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNVUkwgKmZpbGUpCit7CisgICAgTlNE
YXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsK
KyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKKyAgICBFWFBFQ1Rf
VFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMgJiYg
ZmlsZUNvbnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKKyAgICB9
Cit9CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVz
dFNlcnZlcigpCit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBj
b25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25u
ZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1h
a2VTdHJpbmcoCisgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAg
ICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFj
aG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgIlxy
XG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAgICB9KTsK
KyAgICB9fTsKK30KIAotICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJEb3dubG9hZFJlc3VtZVRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworc3RhdGljIHZvaWQgY2hl
Y2tGaWxlQ29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDb250ZW50
cykKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBleHBlY3Rl
ZENvbnRlbnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVDb250
ZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsKK30KKwor
c3RhdGljIE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5TVVJMICp0
ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9y
eTpZRVNdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0
b3J5QXRVUkw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0
ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3Rl
bXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERv
d25sb2FkRmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07CisgICAg
cmV0dXJuIGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeSkpIHsKQEAgLTEyNDMsNyArMTMwMSw4IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3Vt
ZSkKICAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddKTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2Vz
dGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikp
IHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24p
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAg
ICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRv
d25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNr
cy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcgKzEzMTcsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgp
LmRpZENyZWF0ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGlu
YXRpb24pIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGlu
YXRpb24pOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7
CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0g
XihfV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxs
YmFjazo6Q2FuY2VsKTsKQEAgLTEyOTYsMTUgKzEzNTUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCiAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAK
LSAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlXTsKLSAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0
aCwgMTAwMDB1KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlm
IChmaWxlQ29udGVudHMuYnl0ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1
MDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1
MDAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hl
Y2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBp
bnRlcmZhY2UgRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CkBAIC0xMzczLDQgKzE0MjQsMTExNSBAQCBURVNUKF9XS0Rvd25sb2FkLCBT
dWJmcmFtZVNlY3VyaXR5T3JpZ2luKQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHk+PGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4w
LjE6JWQvcGFnZSc+PC9pZnJhbWU+PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VVUkw6bmls
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgY2hlY2tDYWxsYmFja1JlY29yZChUZXN0
RG93bmxvYWREZWxlZ2F0ZTIgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gZXhw
ZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxlZ2F0ZS50
YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5zaXplKCks
IGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXplKCkp
OyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVjdGVkQ2Fs
bGJhY2tzW2ldKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIEZpbmlzaFN1Y2Nlc3NmdWxseSkK
K3sKKyAgICBhdXRvIHNlcnZlciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAg
IH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmls
ZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwor
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2
b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRl
c3RpbmF0aW9uKQoreworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGRlc3RpbmF0aW9uLCBsb25nU3Ry
aW5nPDUwMDA+KCdhJykpOworCisgICAgYXV0byAqZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvICp3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQy
PiByZXRhaW5lZERvd25sb2FkOworCisgICAgW3dlYlZpZXcgX3Jlc3VtZURvd25sb2FkV2l0aERh
dGE6cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQp
IHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1Rf
TlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERv
d25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIF9fYmxvY2sg
Ym9vbCBkb3dubG9hZGVkU2Vjb25kNWsgPSBmYWxzZTsKKyAgICBFWFBFQ1RfTlVMTChyZXRhaW5l
ZERvd25sb2FkLmdldCgpLmRlbGVnYXRlKTsKKyAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25s
b2FkMiAqZG93bmxvYWQsIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNX
cml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKGJ5dGVzV3JpdHRlbiArIDUwMDAsIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5
dGVzV3JpdHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1
ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAg
ICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKSwgZG93bmxvYWQpOworICAgICAg
ICByZXRhaW5lZERvd25sb2FkID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX1RSVUUoZG93bmxv
YWRlZFNlY29uZDVrKTsKKyAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICB9OworCisgICAg
VXRpbDo6cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50
cyhkZXN0aW5hdGlvbik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitzdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1
ayhUZXN0RG93bmxvYWREZWxlZ2F0ZTIgKmRlbGVnYXRlKQoreworICAgIF9fYmxvY2sgYm9vbCBk
b3dubG9hZGVkRmlyc3Q1ayA9IGZhbHNlOworICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVE
YXRhKTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkMiAqLCBpbnQ2
NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorICAg
ICAgICAgICAgZG93bmxvYWRlZEZpcnN0NWsgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVu
KCZkb3dubG9hZGVkRmlyc3Q1ayk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDYW5jZWxBbmRS
ZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPF9XS0Rvd25sb2FkMj4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0
ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdL
TmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1
ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVz
dW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURh
dGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsK
KworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVu
TG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5n
ZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIs
IEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
VGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5OjpZZXMpOworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93
bmxvYWQyPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4g
cmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dL
RG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxv
YWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9X
S0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQo
KSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9y
RG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0
d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJl
c3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAg
IHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgp
OworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwg
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRo
RXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDYW5jZWxOb1Jlc3VtZURh
dGEpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoVGVybWluYXRlQWZ0
ZXJGaXJzdFJlcGx5OjpObywgSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9X
S0Rvd25sb2FkMj4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3Bv
bnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxv
YWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5j
ZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0
YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdy
aXRlRGF0YQorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmFpbE5vUmVzdW1lRGF0
YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihUZXJtaW5hdGVBZnRl
ckZpcnN0UmVwbHk6OlllcywgSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0g
ZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9t
YWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29y
a0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxl
Z2F0ZSk7CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIEZJWE1FOiBNYWtlIHRo
aXMgd29yayBpbiBDRk5ldHdvcmsuCisjaWYgSEFWRShDRk5FVF9SRVNQT05TRV9DQUxMQkFDS19X
SVRIX05PX0NPTlRFTlRfTEVOR1RIX09SX0NPTlRFTlQpCisKK1RFU1QoX1dLRG93bmxvYWQyLCBS
ZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQoreworICAgIE9wdGlvbmFsPFRlc3RXZWJLaXRB
UEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rpb247CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
W2Nvbm5lY3Rpb25Db3VudCA9IDAsICZzZXJ2ZXJDb25uZWN0aW9uXShUZXN0V2ViS2l0QVBJOjpD
b25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVj
dGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHNlcnZlckNvbm5lY3Rp
b24gPSBjb25uZWN0aW9uOworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVl
c3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7
CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJh
bmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8x
LjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAg
ICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMFxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzwxMDA+KCd4JykKKyAgICAgICAgICAgICAgICApKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBk
ZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gWyZdKF9XS0Rvd25sb2FkMiAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRp
ZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJl
c3VtZURhdGE7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRGaW5pc2hlZCA9IGZh
bHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3dubG9hZDIgKikg
eworICAgICAgICBkb3dubG9hZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgLy8gRklY
TUU6IENoZWNrIHdoZXRoZXIgdGhlIGZpbGUgZXhpc3RzIGFuZCB3aGF0IGl0cyBzaXplIGlzIChz
aG91bGQgbm90IGV4aXN0IG9yIGJlIDApLgorICAgIEVYUEVDVF9GQUxTRShkb3dubG9hZEZpbmlz
aGVkKTsKKyAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3Vt
ZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOworCisgICAgLy8gRklYTUU6IFRo
aXMgcHJvYmFibHkgaXNuJ3QgcmlnaHQuIE1ha2UgaXQgcmlnaHQgb25jZSB0aGlzIHRlc3QgcnVu
cyBzdWNjZXNzZnVsbHkuCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworI2VuZGlmCisKK3ZvaWQgdGVzdFJl
c3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlLCB2b2lkKF5tdXRhdGVGaWxlKSh2b2lkKSkKK3sKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0
YWluUHRyPF9XS0Rvd25sb2FkMj4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
X1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0
ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gbmlsOworCisgICAgX19ibG9jayBSZXRh
aW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQg
Y2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0
YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0
YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgbXV0
YXRlRmlsZSgpOworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IF9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRG
aW5pc2ggPSBeKF9XS0Rvd25sb2FkMiAqKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9h
ZDIsIFJlc3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNl
cnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25u
ZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewor
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVz
dChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVx
dWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQt
TGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAg
ICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAg
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCks
IGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
KyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6
ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwg
UmVzdW1lV2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAg
ICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
Wz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1h
a2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAg
ICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJD
b250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5n
PDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01
MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRp
YWwgQ29udGVudFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxy
XG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwx
MDAwMD4oJ2QnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFm
dGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBe
eworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJy
b3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbWyhOU1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25n
U3RyaW5nPDMwMDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAg
fSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0
cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0
cmluZzw1MDAwPignZCcpKSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBSZXN1bWVXaXRoSW52
YWxpZFJlc3VtZURhdGEpCit7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0
YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVU
b1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGJvb2wgY2F1Z2h0RXhj
ZXB0aW9uID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAgICAgIFt3ZWJWaWV3IF9yZXN1bWVEb3du
bG9hZFdpdGhEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93
bmxvYWQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9XTsK
KyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOworICAgICAgICBjYXVnaHRFeGNl
cHRpb24gPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJVRShjYXVnaHRFeGNlcHRpb24pOwor
fQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVzdW1lQ2FudFJlY29ubmVjdCkKK3sKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93
bmxvYWQyPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0g
ZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPign
YScpKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRh
OworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewor
ICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworICAgIHdo
aWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIAorICAgIHJldGFpbmVkRG93bmxvYWQgPSBuaWw7
CisgICAgW3dlYlZpZXcgX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRh
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAg
ICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRv
d25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQp
CisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICByZXRhaW5lZERvd25sb2FkLmdl
dCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJv
ciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX05P
VF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0
aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgor
ICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7
CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAg
ICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgewor
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xy
XG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7CisgICAgICAgIH0pOworICAgIH0pOwor
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdh
dGUuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZDIgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4s
IGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZSkgeworICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSA1MDAwKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwg
NTAwMCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwg
LTEpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmRv
bmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3Ry
aW5nPDUwMDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgSW52YWxpZEFy
Z3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgX2Rv
d25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93
bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dL
RG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAg
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRp
b24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRpYyBIVFRQ
U2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAgeyAiLyIs
IHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFt
ZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0Iiwg
eyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFJlZGlyZWN0QWxs
b3cpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxlVVJM
UmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0g
YXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9jayBi
b29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG93bmxvYWRSZXF1
ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihfV0tEb3dubG9hZDIgKiwgTlNI
VFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoX1dLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkg
d2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJD
dXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lB
bGxvdyk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmls
ZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFi
c29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3dubG9hZDIgKikg
eworICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7CisgICAgICAgIH07CisgICAg
fV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZERvd25sb2FkKTsKKworICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaGkiKTsKKyAgICAKKyAgICBFWFBFQ1RfRVEo
c2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZp
bmlzaAorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVkaXJlY3RDYW5jZWwpCit7
CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5TVVJMUmVxdWVzdCAq
c2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbiA9IF4oX1dLRG93bmxvYWQyICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKF9XS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0
b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5j
ZWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihf
V0tEb3dubG9hZDIgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAg
ICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGNhbmNl
bGxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYW5jZWxs
ZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRG
YWlsV2l0aEVycm9yCisgICAgfSk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3Rz
KCksIDF1KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIERvd25sb2FkUmVxdWVzdEZhaWx1cmUp
Cit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKnNlcnZl
clJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9v
bCBmYWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJl
cXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBO
U0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworCisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwg
RG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAg
eyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29s
IGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
KyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKF9XS0Rv
d25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAg
ICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJodHRwIGJvZHkiKTsKKworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoLAorICAgIH0pOworfQorCitU
RVNUKF9XS0Rvd25sb2FkMiwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKK3sKKyAgICBhdXRvIHNlcnZl
ciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBf
V0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0g
XihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxl
Z2F0ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAg
IH07CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5h
dGVOZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93
bmxvYWQyLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQoreworICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH0gfQorICAgIH0pOwor
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAg
ZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNw
b25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1
Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAg
ICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0Zp
bGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3du
bG9hZDIsIFJlcXVlc3RIVFRQQm9keSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqcmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVh
c2VdOworICAgIHJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAg
ICBFWFBFQ1RfTlVMTChkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhN
RTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoX1dLRG93
bmxvYWQyLCBQYXRoTXVzdEV4aXN0KQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6
bmlsXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOworCisgICAgYXV0byBzZXJ2ZXIg
PSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQy
ICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOwor
fQorCitURVNUKF9XS0Rvd25sb2FkMiwgRmlsZU11c3ROb3RFeGlzdCkKK3sKKyAgICBhdXRvIHNl
cnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2Fk
RmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIF9fYmxvY2sgYXV0byByZXRh
aW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10pOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIEVY
UEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWlj
YWxseTpZRVNdKTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICByZXRh
aW5lZERlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3du
bG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0
KCk7CisgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAg
ICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5l
d10pOworICAgICAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdl
dCgpOworCisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5v
dENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIERl
c3RpbmF0aW9uTnVsbFN0cmluZykKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNl
cnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisg
ICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdp
dGhFcnJvciA9IF4oX1dLRG93bmxvYWQyICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgewor
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFp
bik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxl
ZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZm
YWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0
aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDaGFsbGVuZ2VTdWNjZXNz
KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHt7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIg
fX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGJv
b2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
X1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAg
fTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKF9XS0Rvd25sb2FkMiAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RT
ZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVz
dDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgICAgIHJlY2Vp
dmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIFt3ZWJW
aWV3IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBFWFBFQ1Rf
VFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDaGFs
bGVuZ2VGYWlsdXJlKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNlcnZlcjo6
UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
KyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oX1dLRG93bmxv
YWQyICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOworICAgICAg
ICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBbd2ViVmlldyBfZG93bmxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9h
ZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVk
Q2hhbGxlbmdlKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93
bmxvYWQyLCBCbG9iUmVzcG9uc2UpCit7CisgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+
IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwy
LDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAi
ICAgIGEuZG93bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFtZSc7IgorICAgICIgICAgYS5jbGljaygp
OyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+
PC9ib2R5PiI7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOm5pbF07
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIF9XS0Rvd25sb2FkMiAqZG93bmxv
YWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hl
bWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJl
cXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5n
ICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsK
KyAgICAgICAgRVhQRUNUX05VTEwoc3VnZ2VzdGVkRmlsZW5hbWUpOyAvLyBGSVhNRTogVGhpcyBz
aG91bGQgYmUgImRvd25sb2FkRmlsZW5hbWUiIGJ1dCB0aGF0J3MgY3VycmVudGx5IG9ubHkgcGlw
ZWQgdG8gdGhlIG5hdmlnYXRpb24gYWN0aW9uLCBub3QgdGhlIHJlc3BvbnNlLgorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0g
XihfV0tEb3dubG9hZDIgKikgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0
aWw6OnJ1bigmZG9uZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgIjEyMyIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOwor
fQorCitURVNUKF9XS0Rvd25sb2FkMiwgQmxvYlJlc3BvbnNlTm9GaWxlbmFtZSkKK3sKKyAgICBO
U1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigp
IHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAg
IiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5j
cmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAi
PC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6
Ly93ZWJraXQub3JnLyJdXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgX1dL
RG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
c3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAid2Via2l0Lm9yZyIpOworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAq
c3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBT
dWJmcmFtZU9yaWdpbmF0b3IpCit7CisgICAgY29uc3QgY2hhciogZ3JhbmRjaGlsZEZyYW1lSFRN
TCA9ICI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAg
IHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0g
bmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVS
TChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9k
eSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBIVFRQU2VydmVyIGdyYW5k
Y2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IGdyYW5kY2hpbGRGcmFtZUhUTUwg
fSB9CisgICAgfSk7CisgICAgSFRUUFNlcnZlciBjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAg
eyAiLyIsIHsgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDov
LzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCld
IH0gfQorICAgIH0pOworICAgIE5TVVJMUmVxdWVzdCAqZ3JhbmRjaGlsZEZyYW1lU2VydmVyUmVx
dWVzdCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0
ICpjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOwor
ICAgIHVpbnQxNl90IGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQgPSBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXIucG9ydCgpOworCisgICAgTlNTdHJpbmcgKm1haW5IVE1MID0gW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1l
PiIsIGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1h
aW5IVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8i
XV07CisKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2
aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25z
ZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcv
Il0KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Z10KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nXSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgfTsK
KyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgX1dLRG93bmxvYWQyICpk
b3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJM
LnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFt
ZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShy
ZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVy
UG9ydCk7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVt
ZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX05VTEwoc3VnZ2VzdGVkRmlsZW5hbWUpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1B
QykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZTIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE4MmRiNjAxMDc3ZTY2NWI5ZWJhMGUy
NWM0Yjk1NjJiYTUxMTQxYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZERlbGVnYXRlMi5oPgorCitlbnVtIGNsYXNzIERvd25sb2FkQ2FsbGJhY2sgOiB1aW50OF90IHsK
KyAgICBXaWxsUmVkaXJlY3QsCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgRGVj
aWRlRGVzdGluYXRpb24sCisgICAgRGlkV3JpdGVEYXRhLAorICAgIERpZEZpbmlzaCwKKyAgICBE
aWRGYWlsV2l0aEVycm9yLAorICAgIE5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICBOYXZp
Z2F0aW9uUmVzcG9uc2UKK307CisKK0BpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUyIDog
TlNPYmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZTIsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorCitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uKShfV0tEb3dubG9hZDIgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICos
IHZvaWQgKF4pKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tE
b3dubG9hZDIgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UpKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF4pKE5TVVJMICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3Jp
dGVEYXRhKShfV0tEb3dubG9hZDIgKiwgaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCk7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3du
bG9hZDIgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRo
RXJyb3IpKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICosIE5TRGF0YSAqKTsKKworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAq
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKShXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpOworCistICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlz
aDsKKy0gKFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQ7CisKK0Bl
bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0
ZTIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzlkY2E2YzgxYTFiZjRjMWNiM2MyZTllOTc4YmU3ZGVhY2M0MTUz
ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25s
b2FkRGVsZWdhdGUyLm1tCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZTIuaCIKKworI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorCitAaW1wbGVtZW50YXRpb24g
VGVzdERvd25sb2FkRGVsZWdhdGUyIHsKKyAgICBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gX2Nh
bGxiYWNrUmVjb3JkOworfQorCistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3du
bG9hZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNw
b25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGly
ZWN0KTsKKworICAgIEFTU0VSVChfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOworICAgIF93
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkb3dubG9hZCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNv
bXBsZXRpb25IYW5kbGVyKTsKK30KKworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICop
ZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKily
ZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24pOworCisgICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSk7CisgICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKGRvd25sb2FkLCBy
ZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLSAo
dm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2
NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUKK3sKKyAgICAvLyBkaWRXcml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5p
c3RpYyBudW1iZXIgb2YgdGltZXMsIHNvIG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCisg
ICAgaWYgKF9jYWxsYmFja1JlY29yZC5pc0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3Qo
KSAhPSBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpCisgICAgICAgIF9jYWxsYmFja1Jl
Y29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKTsKKworICAgIGlmIChf
ZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0
ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKwor
LSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSk7CisKKyAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
KyAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hh
bGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywg
bmlsKTsKK30KKworLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQyICopZG93
bmxvYWQKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZpbmlzaCk7CisKKyAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93bmxv
YWREaWRGaW5pc2goZG93bmxvYWQpOworfQorCistICh2b2lkKWRvd25sb2FkOihfV0tEb3dubG9h
ZDIgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0
YTooTlNEYXRhICopcmVzdW1lRGF0YQoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93
bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcik7CisKKyAgICBpZiAoX2RpZEZhaWxXaXRo
RXJyb3IpCisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1l
RGF0YSk7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdh
dGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBk
aWRCZWNvbWVEb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQKK3sKKyAgICBfY2FsbGJh
Y2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9h
ZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAg
ICAgICBfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdh
dGlvblJlc3BvbnNlLCBkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlv
blJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxs
YmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsK
KworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBf
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVj
aXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlz
aCA9IF4oX1dLRG93bmxvYWQyICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9CisKKy0gKFZlY3Rv
cjxEb3dubG9hZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQKK3sKKyAgICByZXR1cm4gc3Rk
OjpleGNoYW5nZShfY2FsbGJhY2tSZWNvcmQsIHsgfSk7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413711</attachid>
            <date>2020-11-10 09:55:01 -0800</date>
            <delta_ts>2020-11-11 23:14:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201110095501.patch</filename>
            <type>text/plain</type>
            <size>173710</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIyMzg5MTNmNDkwZWMwZTc5
YjVlY2M2NDZiYzRhZjg3MGFkY2MwODYuLmViZjM3NmMxZTFhM2MzZWM5NTY4ZTJhNzFjNDM5OWEw
MmQwMmY1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTI0IEBACisyMDIwLTExLTEwICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBfV0tEb3dubG9hZDIgYW5kIF9XS0Rvd25sb2FkRGVsZWdh
dGUyIQorCisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhl
IGRlbGVnYXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhl
IHByb2Nlc3MgcG9vbC4KKyAgICAgICAgMi4gIF9XS0Rvd25sb2FkMiBkb2VzIG5vdCBjb25mb3Jt
IHRvIE5TQ29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGlj
dGlvbmFyeS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0
IHdpbGwgYmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRo
YXQgdXNlZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIg
dG8gZ2V0IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0
aGVuIGdldHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlk
RmFpbFdpdGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlz
IG5vIHdheSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUg
YWJvdXQgYSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9m
IHRoZSBkb3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIElu
c3RlYWQsIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBu
YXZpZ2F0aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93
bmxvYWQuCisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2Fu
IGFsc28gYmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBk
b3dubG9hZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5
IHdhbnQgdG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAg
ICAgICA5LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29t
cGxldGlvbiBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIF9XS0Rvd25sb2FkMiBvbmNlIGl0J3Mgc3Rh
cnRlZC4gIFRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICAgICAgcmVmZXJlbmNlIHRoZSBkb3du
bG9hZCBvYmplY3QgYmVmb3JlIHRoZW4gYW55d2F5cy4gIE5vdGU6IHRoYXQncyB3aGVuIHRoZSBk
b3dubG9hZCAic3RhcnRzIiB3aGljaCBpcyBiZWZvcmUgaXQgcmVjZWl2ZXMgdGhlIHJlc3BvbnNl
LAorICAgICAgICAgICAgc28gdGhlcmUgd2lsbCBiZSBubyBzZXJ2ZXIgZGVsYXkgaW4gdGhlIGRp
ZmZlcmVuY2UgYmV0d2VlbiBkb3dubG9hZCBvYmplY3QgYXZhaWxhYmlsaXRpZXMuCisgICAgICAg
IDEwLiBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCBub3cgZ2l2ZXMgeW91IHRoZSBvcHRp
b24gb2YgY29udGludWluZyBvciBjYW5jZWxsaW5nLiAgVGhpcyByZWZsZWN0cyB0aGUgYW1vdW50
IG9mIGNvbnRyb2wgdGhlCisgICAgICAgICAgICBXS05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMuCisg
ICAgICAgIDExLiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSBhbmQgZGlk
UmVjZWl2ZVJlc3BvbnNlIGhhdmUgYmVlbiBtZXJnZWQsIHNpbmNlIHRoZXkgYWN0dWFsbHkgaGFw
cGVuIGF0IHRoZSBzYW1lIHRpbWUgYW5kCisgICAgICAgICAgICBOU1VSTFJlc3BvbnNlIGhhcyBz
dWdnZXN0ZWRGaWxlbmFtZSBBUEkuICBhbGxvd092ZXJ3cml0ZSBpcyBhbHNvIGdvbmUuICBJdCB3
YXNuJ3QgdXNlZCwgYW5kIG5vdCByZWFsbHkgbmVlZGVkLgorICAgICAgICAxMi4gZGlkQ3JlYXRl
RGVzdGluYXRpb24gaXMgZ29uZS4gIFRoYXQgY2FsbGJhY2sgdGltZSB3YXNuJ3QgcmVhbGx5IG5l
Y2Vzc2FyeS4gIElmIHlvdSBuZWVkIHRvIGtub3cgd2hlbiBpdCdzIGNyZWF0ZWQsIHdhaXQgdW50
aWwgdGhlIGZpcnN0CisgICAgICAgICAgICBkaWRXcml0ZURhdGEgY2FsbGJhY2suICBUaGUgZGVz
dGluYXRpb24gaGFzIGRlZmluaXRlbHkgYmVlbiBjcmVhdGVkIGJ5IHRoZW4uCisgICAgICAgIDEz
LiBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZSBpcyBnb25lLiAgSXQncyBhY3R1YWxs
eSBub3QgY2FsbGVkIHNpbmNlIHdlIGFkb3B0ZWQgTlNVUkxTZXNzaW9uLCBhbmQgd2Ugc2hvdWxk
IHJlbW92ZSB0aGUgcmVsYXRlZCBkZWFkIGNvZGUuCisgICAgICAgIDE0LiBvcmlnaW5hdGluZ0Zy
YW1lIGlzIGdvbmUuICBPbiBfV0tEb3dubG9hZCBpdCB3YXMgYWN0dWFsbHkgYSBub24tbnVsbCBX
S0ZyYW1lSW5mbyB0aGF0IG9mdGVuIGNvbnRhaW5lZCBubyBpbmZvcm1hdGlvbi4gIFdoZW4gaW5m
b3JtYXRpb24gd2FzIHRoZXJlLAorICAgICAgICAgICAgdGhlIGluZm9ybWF0aW9uIGFjY2VzcyBo
YXMgYmVlbiByZXBsYWNlZCBieSBkaWRCZWNvbWVEb3dubG9hZCB3aGljaCBsaW5rcyB0aGUgV0tO
YXZpZ2F0aW9uUmVzcG9uc2Ugd2hpY2ggaGFzIGZyYW1lIGluZm8gb24gaXQuCisKKyAgICAgICAg
SSB3cm90ZSBBUEkgdGVzdHMgZm9yIGV2ZXJ5dGhpbmcgSSBjb3VsZCB0aGluayBvZi4KKworICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6
bmV3T2JqZWN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGll
bnQ6OmxlZ2FjeURpZFN0YXJ0KToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZEZh
aWwpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAo
QVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
U2V0RG93bmxvYWRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToK
KyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNpdGVEYXRh
U3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5hdGluZ1dl
YlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXN1bWVEb3dubG9hZDpkZXN0aW5hdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1b
X1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgY2FuY2Vs
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOl0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9y
aWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZWRpcmVjdENoYWlu
XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0ZWRdKToKKyAgICAgICAg
KC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAg
ICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtfV0tE
b3dubG9hZDIgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBvcmln
aW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBkZWxlZ2F0ZV0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZDIgc2V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkMiBkZWFsbG9jXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkMiBfYXBpT2JqZWN0XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDJJbnRlcm5hbC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRl
cm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZTIu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVy
bmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OnBy
b2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3du
bG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0
aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25EaWRCZWNv
bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkpOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkUHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkRmFpbCk6CisgICAgICAgIChX
ZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldENsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OnNldERpZFN0YXJ0Q2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAyMC0xMS0xMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUSzRdIFdlYlZpZXcgaXMgZmxpcHBlZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3
Yjc2Mi4uMmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3du
bG9hZERlc3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAg
ICAgbV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RG
TW92ZShuZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3Zv
aWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1
bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNh
bmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERp
ZFN0YXJ0KQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpA
QCAtMTA1LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93
bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwg
Km5ldHdvcmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0
aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0
aWJpbGl0eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQg
aWYgd2UncmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0
ID09IENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1l
c3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJU
KCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRk
KGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApp
bmRleCAyY2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZk
NDI5Y2IwOWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAs
NiArNjAsOCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5l
dHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3du
bG9hZERpZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2Vy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3
ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQo
RG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVy
ZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVk
KERvd25sb2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9h
ZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsK
IAogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2Nv
YS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCAwOGI1NWYwYjJmZGQ5YmY1MmU0MWJmMDE3
YWJjNGRjOTQzMDJmMDdiLi43NjUxMDRjMWNjNzE0OWRlNDg0N2JjMzViNDkxNjFmNWFhYmJjNTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2Nv
YS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDggQEAgdm9pZCBEb3du
bG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RT
ZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJv
cGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogI2VuZGlm
CiAKKyAgICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ug
d2UndmUgbWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBfV0tEb3dubG9hZDIKKyAgICAvLyBi
ZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJv
bSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCiAgICAgbV9kb3dubG9hZFRhc2sgPSBbY29j
b2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRh
c2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9
IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl07CiAgICAgQVNTRVJUKCFjb2NvYVNlc3Np
b24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5kb3dubG9hZE1hcC5jb250YWlucyh0YXNr
SWRlbnRpZmllcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCAwYmI4NTczMDUzODRjYjM1ZDc4YTY0ZGFjOTQzNGQ3ZmM4MjRkOWY1
Li5mOGZhZmIxYzc2NDE4NTA1Nzk2NmU5NDFlNTYyOTY2YjVkN2E1NzUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5ICsy
MDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93
bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBh
dGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0
aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3RhcnQp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKaW5kZXggMWE3N2ZhYjk2MWRmMmU1ZTMwNjEyNjlmNTkyYTJjNGM4
Njk0NmY5ZC4uNjdkNzUzZmQwNzZiOGMwMWJjOThiMzI3MDhiMDZmNDAxOTA1MmJlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA2LDYg
KzEwNiw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN0b3JhZ2VNYW5h
Z2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJv
b2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVt
IGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRl
RGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQyMSw3ICs0MjIsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vz
c2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25s
b2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3du
bG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
PiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dy
ZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCmluZGV4IDIwZmZiY2MzZmNkZmFkZWEzYzBhMzQ5NmM1MjgyMjQ4NGZmZGFh
MTUuLjJlNDUxNTliMDllOTQ0OWJjMDIwOWU0MmI1Y2M2MTZhYTljZDViNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdEb21haW4sIE9wdGlvblNldDxXZWJLaXQ6
OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykgLT4gKCkgQXN5bmMKIAogICAgIERv
d25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29s
IE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICBSZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAg
UmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRo
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBlbnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkg
LT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKSBBc3luYwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggMWZiNzMzZDVjMTU4OTAxZjYxYTM2NjM5MWRmM2Y5MDIzYTc2OTcxOC4uZTQ0MGRhOGNj
ZjYzOWJlNzU3YjllZjYxMjI0NTJiMDY4OTgzYWU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzIsNiArNjcyLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRy
YXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsn
IkRvd25sb2FkSUQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9h
ZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggYzk0MjBjZDVmMjBk
YjExOTlhMmZmMGE1MzVjZTAwOWNmOTI4NjVhNC4uNDFlMWE0ZTg5YzEzNjA1Y2I4MWI4NTRhMTZh
NmQ4ZjM5YzkxMDhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpA
QCAtNzMsNyArNzMsNyBAQAogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tEb3dubG9hZElu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RXhwZXJpbWVudGFsRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBl
KQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdy
YXBwZXIgPSBbX1dLRG93bmxvYWQgYWxsb2NdOworICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25s
b2FkMiBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpFeHBlcmltZW50
YWxGZWF0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA4NGQ1MTM1MmQ0NGE0NTA5NDli
M2ZiZDFkMWQ3NjEzNWZiMmJlYjIuLmE1OTA0OTE3ZDE0NDFmOTc5Zjk1NmNjOWEzMWZiMTJhNmI4
Zjk3ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1MCw2ICsyNTAsNyBAQCBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0N1c3RvbUhlYWRlckZpZWxkcy5tbSBAbm8tdW5pZnkKIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RG93bmxvYWQubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tCiBVSVByb2Nl
c3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJp
bWVudGFsRmVhdHVyZS5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93
bmxvYWRDbGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRk
Y2U1Li5kZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDksMTgg
KzQ5LDIwIEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2Ug
QVBJIHsKIAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2Up
IHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRf
dCwgdWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZh
aWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5Jikg
eyB9CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRiZTg4NmEwNzQyMmJmODNiN2Fm
Y2ZjYmM2YWM5ZTZhZS4uOTI5NDA4ZWEwNTM4NjVmYmQ5NWUzZGI0NjRlZWM4ZTdjOTZhOTMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGll
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKK2NsYXNz
IERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTk5LDYg
KzEwMCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmU+KSB7IH0KIAorICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb25SZXNwb25zZSYs
IFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2hvdWxkQWxsb3dMZWdhY3lUTFMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZE5lZ290aWF0ZU1vZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKaW5kZXggN2NmNTc3MjRmMmFiOTMzOTAwOGQxYjJlMWRiZDJlN2EzNGRmMTk3OS4u
OTgyMDQ2OTJlMTU3ZmMyNTI0NjRhZjc3ZjY3YmJiNDg5ZmQwNGZkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qg
V0tDb250ZXh0RG93bmxvYWRDbGkKICAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKICAg
ICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lkIGxlZ2FjeURpZFN0
YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2gobV9jb250
ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikg
ZmluYWwKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSop
IGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKICAg
ICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCmluZGV4IGRjMmUwZDE5MjMxNWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLmVj
NmNiYjQxMmY4YjVkZjU4ZWRkM2Q5ZmU5YzhkZmNiMzJmYzg3N2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0xMzgsNyArMTM4LDcgQEAgV0tfRVhQT1JU
IFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihXS0NvbnRleHRD
b25maWd1cmF0aW9uUmUKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNsaWVudCk7
CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KTsKLVdLX0VY
UE9SVCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CitXS19FWFBPUlQg
dm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29u
c3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpIFdLX0NfQVBJX0RFUFJFQ0FU
RURfV0lUSF9SRVBMQUNFTUVOVChXS0Rvd25sb2FkU2V0RG93bmxvYWRDbGllbnQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4
dCwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIGNsaWVudCk7CiAKIFdLX0VY
UE9SVCBXS0Rvd25sb2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5t
bQppbmRleCA3NzA3NWJkNjY0YmIxYjkxNTdkODAzYTRmYmFlYjEzOGI3M2JmMzQzLi5jZjM1N2Rm
MGFhMjczMDVkMzA2ZTQ3ZDk2ZDQ4YjZhZDM0ZmM2MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KQEAgLTQ1LDYgKzQ1LDExIEBA
CiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQog
CistIChCT09MKV93YXNVc2VySW5pdGlhdGVkCit7CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT53
YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChX
S0NvbnRlbnRNb2RlKWVmZmVjdGl2ZUNvbnRlbnRNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTViNS4uYTA4
OTFjMGY1N2FlMzAzZjY3NzRiYTZkYTFlOWI3NzIxMDA5NGY1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaApAQCAtNTgsOCArNTgsOCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBf
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCAr
IDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgi
X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwg
V0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3Qg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBp
b3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExp
bmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdyArIDIpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvd0luTmV3UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKIHN0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOwpAQCAtODMsNiArODMsMTQgQEAgc3Rh
dGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2EKIC0gKHZvaWQpX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21l
UmVzcG9uc2l2ZTooV0tXZWJWaWV3ICopd2ViVmlldzsKIC0gKHZvaWQpX3dlYlZpZXdXZWJQcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCisvKgorIEBh
YnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IHRoYXQgY3JlYXRlZCB0
aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25zZSBUaGUgcmVzcG9uc2UgdGhh
dCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUg
ZG93bmxvYWQuCisqLworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZp
Z2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNl
IGRpZEJlY29tZURvd25sb2FkOihfV0tEb3dubG9hZDIgKilkb3dubG9hZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtIChOU0RhdGEgKilf
d2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldzsKIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0xl
Z2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCmluZGV4
IDkxNTg5ZDEyYTQyMzdjZDczYmI3M2VkNWM5N2I2MWMxN2ExZjEzOWMuLmE3YTdkOTI5ZGZmODcw
NDNlN2YzYTYwM2Y2OGRlNDA3ZDBkMzBhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaApAQCAtMjcsNCArMjcs
NSBAQAogCiBAaW50ZXJmYWNlIFdLTmF2aWdhdGlvbiAoV0tQcml2YXRlKQogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKl9yZXF1ZXN0OworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF93YXNVc2VySW5pdGlhdGVkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmlu
ZGV4IGU3OTViMzMyNmM3NmRmOWQ5ZDg0MDM0MmY4ZGQxNGJiYmZhMTA3ZGIuLjRlN2Y4NmY1ZmUz
MTE5ZGQyMTE4NmMxYzE5NGM4ZDM0N2Y3NDc4MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKKyNp
bXBvcnQgIkRvd25sb2FkTWFuYWdlci5oIgogI2ltcG9ydCAiTGVnYWN5RG93bmxvYWRDbGllbnQu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgi
CkBAIC00NCw2ICs0NSw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgogI2ltcG9ydCAi
X1dLQXV0b21hdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbklu
dGVybmFsLmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKQEAgLTU1MSwxMiAr
NTUzLDEyIEBAIHN0YXRpYyBOU0RpY3Rpb25hcnkgKnBvbGljaWVzSGFzaE1hcFRvRGljdGlvbmFy
eShjb25zdCBIYXNoTWFwPFN0cmluZywgSGFzaE1hcDxTCiAKIC0gKF9XS0Rvd25sb2FkICopX2Rv
d25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3du
bG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1
ZXN0KSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3Jl
LCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jl
c3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGgg
b3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdy
YXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURh
dGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlc3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpk
YXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6
Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2Fs
bERvd25sb2FkRGlkU3RhcnQ6Ok5vKSldOwogfQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09y
aWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCAyMTk0MWIyZDQ2MDcwZGExY2E5NWZiOTA2Zjg4MzJmNWFmMDRkOGFiLi4y
ZjMxZTUwNzQ4MDUyMDkwMGI1M2M3MWY1OGVlMDAyZmEwZDBjYzJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aApAQCAtNjIsNyArNjIsNyBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMykpOwogI2VuZGlmCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBz
ZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rv
d25sb2FkRGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRE
b3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVn
YXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9XS0Rvd25sb2FkMi5kb3du
bG9hZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1Nf
VEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9u
RGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRl
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAqKV9k
b3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YToo
TlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUg
KilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tf
QVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJlcXVl
c3QiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0g
KF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURh
dGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRo
OihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5fcmVzdW1lRG93
bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RC
QSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2Fs
bGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAo
dm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
NCksIGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDljNjc0
Li4xY2E3ZDEzZmVjMWI2MzRhMGNjODYzZjU5NTJiNTcxMzg5MzdjNTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTk2LDYgKzk2LDcg
QEAKICNpbXBvcnQgIldlYlZpZXdJbXBsLmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmgi
CisjaW1wb3J0ICJfV0tEb3dubG9hZDJJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRmluZERlbGVn
YXRlLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tG
cmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTI4MjEsNiArMjgyMiwzNSBAQCBzdGF0aWMgaW5s
aW5lIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiB0b0ZpbmRPcHRpb25zKF9XS0ZpbmRP
cHRpb25zIHdrRmluZAogICAgIHJldHVybiBfcGFnZS0+aXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1
cmVTbmFwc2hvdCgpOwogfQogCistICh2b2lkKV9kb3dubG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVz
dCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLRG93bmxvYWQyICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClfcmVzdW1lRG93
bmxvYWRXaXRoRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShfV0tEb3dubG9hZDIgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHVuYXJj
aGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5n
RnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZlciBzZXREZWNv
ZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07
CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0
T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05T
QXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRh
IGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5
OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2ZXIgZmluaXNo
RGVjb2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYgKCFwYXRoKQor
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisgICAgX3BhZ2UtPnJlc3VtZURvd25sb2Fk
KEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSksIHBhdGgsIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBk
b3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChfV0tMYXlvdXRNb2RlKV9sYXlv
dXRNb2RlCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdk
YWRlZTY0OTNlZjc2M2ExNjE4MDc1ZDBkYy4uMTM4OTZhNzJlOWYwN2MxNjQ2OWE5ZmQyOWUxMGQz
OTdmZTBkNzBiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xMTIsNiArMTEyLDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xh
c3MgV0tXZWJwYWdlUHJlZmVyZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsK
K0BjbGFzcyBfV0tEb3dubG9hZDI7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dL
RnJhbWVUcmVlTm9kZTsKIEBjbGFzcyBfV0tIaXRUZXN0UmVzdWx0OwpAQCAtMjA2LDYgKzIwNyw5
IEBAIGZvciB0aGlzIHByb3BlcnR5LgogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1faXNTaG93aW5nTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCkgQk9PTCBfc2hvd2lu
Z05hdmlnYXRpb25HZXN0dXJlU25hcHNob3Q7CiAKKy0gKHZvaWQpX2Rvd25sb2FkUmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShfV0tEb3du
bG9hZDIgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6
KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoX1dLRG93bmxv
YWQyICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0gKHZvaWQpX2Nsb3NlOwogLSAoQk9PTClfdHJ5Q2xv
c2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IC0gKEJPT0wpX2lzQ2xvc2VkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQwYzAzZTZiNGIwMTg5ZjA3Mjk5Y2Vj
NzMuLjYyYTE0MzZlNjhjNjMyMDA1MzA5OWY5MGU1YWU1MzkwZjc1OTliM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCkBAIC0yOCwxMiAr
MjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFz
cyBfV0tEb3dubG9hZDI7CiAKLVdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4
LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfV0tEb3dubG9hZDIi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVy
ZmFjZSBfV0tEb3dubG9hZCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CiAKLS0gKHZvaWQpY2FuY2Vs
OworKyAoaW5zdGFuY2V0eXBlKWRvd25sb2FkV2l0aERvd25sb2FkMjooX1dLRG93bmxvYWQyICop
ZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLSAodm9pZCljYW5jZWw7CiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihO
U1VSTCAqKVVSTCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpp
bmRleCBkZmVmZTBmMTY2YTU0OWRkZTY1YmUxMDIyZWI1YzFmZmRlY2MyZGJjLi4zNTFlYmUyYjE0
Y2JmMTZmYjhhYzliODI2Yzk2YzBmNzNhMDYwMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC0zMSw2MyArMzEsODQgQEAKICNp
bXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwu
aCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gX1dLRG93
bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9k
b3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitzdGF0aWMgTlNN
YXBUYWJsZTxfV0tEb3dubG9hZDIgKiwgX1dLRG93bmxvYWQgKj4gKmRvd25sb2FkV3JhcHBlck1h
cCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU01hcFRhYmxlPj4g
dGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQoKSkKKyAgICAgICAgdGFibGUuZ2V0KCkgPSBbTlNN
YXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRhYmxlXTsKKyAgICByZXR1cm4gdGFibGUuZ2V0
KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKworSUdOT1JF
X1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCitAaW1wbGVtZW50
YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9XQVJOSU5HU19FTkQKIAotLSAodm9pZClkZWFsbG9j
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZDI6KF9XS0Rvd25sb2FkMiAqKWRvd25s
b2FkCiB7Ci0gICAgX2Rvd25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9kb3dubG9hZCA9IGRv
d25sb2FkOworICAgIHJldHVybiBzZWxmOworfQogCi0gICAgW3N1cGVyIGRlYWxsb2NdOworKyAo
aW5zdGFuY2V0eXBlKWRvd25sb2FkV2l0aERvd25sb2FkMjooX1dLRG93bmxvYWQyICopZG93bmxv
YWQKK3sKKyAgICBpZiAoX1dLRG93bmxvYWQgKndyYXBwZXIgPSBbZG93bmxvYWRXcmFwcGVyTWFw
KCkgb2JqZWN0Rm9yS2V5OmRvd25sb2FkXSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAg
X1dLRG93bmxvYWQgKndyYXBwZXIgPSBbW1tfV0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhEb3du
bG9hZDI6ZG93bmxvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkg
c2V0T2JqZWN0OndyYXBwZXIgZm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlcjsK
IH0KIAogLSAodm9pZCljYW5jZWwKIHsKLSAgICBfZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQg
PSBtYWtlUmVmKCpfZG93bmxvYWQpXSAoYXV0byopIHsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9h
ZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1
dG8qKSB7CiAgICAgICAgIGRvd25sb2FkLT5jbGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxv
YWQuZ2V0KCkpOwogICAgIH0pOwogfQogCiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihO
U1VSTCAqKVVSTAogewotICAgIF9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CisgICAg
X2Rvd25sb2FkLT5fZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0CiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5z
VVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQ
Qm9keSk7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxS
ZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5
KTsKIH0KIAogLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1
dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCisgICAg
aWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5h
dGluZ1BhZ2UoKSkKICAgICAgICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRp
bmdQYWdlKSByZXRhaW5dIGF1dG9yZWxlYXNlXTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5T
QXJyYXk8TlNVUkwgKj4gKilyZWRpcmVjdENoYWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkoX2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICog
eworICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZWRpcmVj
dENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJs
OwogICAgIH0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAog
ewotICAgIHJldHVybiBfZG93bmxvYWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKKyAgICByZXR1cm4g
X2Rvd25sb2FkLT5fZG93bmxvYWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRh
ICopcmVzdW1lRGF0YQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5s
ZWdhY3lSZXN1bWVEYXRhKCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICop
b3JpZ2luYXRpbmdGcmFtZQogewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9h
ZC0+ZnJhbWVJbmZvKCkpOworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+
X2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25l
ICopem9uZQpAQCAtOTksNyArMTIwLDcgQEAKIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QK
IHsKLSAgICByZXR1cm4gKl9kb3dubG9hZDsKKyAgICByZXR1cm4gKl9kb3dubG9hZC0+X2Rvd25s
b2FkOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTk1Y2VlNTY0NjMyMDBlNTBlYmY4YzE4ZTg0YzI4
YzMzMTQ3MDBjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZDIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CisKK0BjbGFzcyBXS0ZyYW1lSW5mbzsKK0Bwcm90b2NvbCBfV0tEb3dubG9hZERlbGVn
YXRlMjsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIF9XS0Rvd25sb2Fk
MiA6IE5TT2JqZWN0CisKKy8qIEBhYnN0cmFjdCBUaGUgcmVxdWVzdCB1c2VkIHRvIGluaXRpYXRl
IHRoaXMgZG93bmxvYWQuCisgIEBkaXNjdXNzaW9uIElmIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHJl
ZGlyZWN0ZWQgdG8gYSBkaWZmZXJlbnQgVVJMLCBvcmlnaW5hbFJlcXVlc3QKKyAgd2lsbCBiZSB1
bmNoYW5nZWQgYWZ0ZXIgdGhlIGRvd25sb2FkIGZvbGxvd3MgdGhlIHJlZGlyZWN0LgorKi8KK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TVVJMUmVxdWVzdCAqb3Jp
Z2luYWxSZXF1ZXN0OworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoYXQgcmVjZWl2ZXMg
cHJvZ3Jlc3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrKSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+IGRlbGVnYXRlOworCisvKiBAYWJz
dHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBi
bG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMgZmluaXNoZWQuCisgQGRpc2N1c3Np
b24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCBkYXRhIHRvIGJlIHVzZWQgdG8gcmVz
dW1lIHRoZSBkb3dubG9hZCBpZiBwb3NzaWJsZS4KKyovCistICh2b2lkKWNhbmNlbDoodm9pZCAo
XiBfTnVsbGFibGUpKE5TRGF0YSAqIF9OdWxsYWJsZSByZXN1bWVEYXRhKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZDIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliYTQz
NzhmM2FkZGE5NzFlYjFhNDZlNjRmYmJjYWFjOTVlMDdkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQyLm1tCkBAIC0wLDAg
KzEsMjIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tE
b3dubG9hZDJJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS05TRGF0YS5oIgor
I2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLRG93bmxvYWREZWxlZ2F0ZTIuaCIKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGll
bnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9h
ZERlbGVnYXRlMj4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAg
ICAgICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVk
RmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlk
V3JpdGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2Fk
OmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
OildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOildKQorICAgICAgICAsIG1f
cmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOildKQorICAgIHsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9X
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5z
UmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246c3RhdGljX2Nhc3Q8
TlNIVFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSBuZXdSZXF1ZXN0
Om5zUmVxdWVzdC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3Qg
PSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6KSldKF9X
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgICAgICAgICBjYXNlIF9X
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIF9XS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3lBbGxvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJ
bnZhbGlkIF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCkiLCAobG9uZylwb2xpY3ldOwor
ICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGZp
bmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgIHJldHVybiBjaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKwor
ICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5k
bGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihjaGFsbGVuZ2UpLCBjaGVja2Vy
ID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0
ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0Jl
ZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGlzcG9z
aXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNy
ZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRl
Q2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNl
Q3JlZGVudGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkg
OiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGlu
ZzoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVu
Z2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5s
aXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52
YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylk
aXNwb3NpdGlvbl07CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisK
KyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8
ICFtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgc3VnZ2Vz
dGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtkb3dubG9hZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1l
OmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24u
aXNGaWxlVVJMKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJh
aXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAImRlc3RpbmF0aW9uIG11c3Qg
YmUgYSBmaWxlIFVSTCJdOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdl
ciBkZWZhdWx0TWFuYWdlcl07CisgICAgICAgICAgICBpZiAoIVtmaWxlTWFuYWdlciBmaWxlRXhp
c3RzQXRQYXRoOltkZXN0aW5hdGlvbiBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdLnBh
dGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9h
ZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJv
cldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVG
aWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRlc3RpbmF0aW9uLnBhdGhdKSB7CisgICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0geworICAgICAg
ICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46
TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZv
Om5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24ucGF0aCk7CisgICAg
ICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3Qg
dG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZp
bmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFdy
aXRlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgfQorCisgICAgdm9pZCBkaWRGaW5pc2goV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxv
YWQpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSog
cmVzdW1lRGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9y
ZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9y
OmVycm9yLm5zRXJyb3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVzdW1lRGF0YSldOworICAgIH0K
KworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNU
b0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVs
ZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JOZXR3b3Jr
Q29ubmVjdGlvbkxvc3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRhOm5pbF07CisgICAgfQorCisg
ICAgV2Vha09iakNQdHI8aWQgPF9XS0Rvd25sb2FkRGVsZWdhdGUyPiA+IG1fZGVsZWdhdGU7CisK
KyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAg
ICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7
CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA6IDE7
CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNw
b25kc1RvRGlkRmluaXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJy
b3IgOiAxOworfTsKKworQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkMgorCistICh2b2lkKWNh
bmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcgorewor
ICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlmIChjb21wbGV0aW9u
SGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSkpOwor
ICAgIH0pOworfQorCistIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKK3sKKyAgICBy
ZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5
VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGUyPilkZWxlZ2F0ZQoreworICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0
KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlMj4p
ZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfZG93bmxvYWQtPnNl
dENsaWVudChhZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50KGRlbGVnYXRlKSkpOworfQorCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAg
W3N1cGVyIGRlYWxsb2NdOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1w
bGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4g
Kl9kb3dubG9hZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQySW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzY1MWFj
YWZkNWQyZjQ1MzI2ZWE4N2Q1M2EyNWU4ZTQ4ZTFlNGYzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkMkludGVybmFsLmgKQEAg
LTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0ICJfV0tEb3dubG9hZDIuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94
eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rvd25sb2FkMjsKK307CisKK30KKwor
QGludGVyZmFjZSBfV0tEb3dubG9hZDIgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQ
STo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBX
ZWFrT2JqQ1B0cjxpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZTI+ID4gX2RlbGVnYXRlOworfQorQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmgKaW5kZXggYTgzZjkwMjliNWM3M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUx
MTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBACiAKIEBwcm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRl
IDxOU09iamVjdD4KIEBvcHRpb25hbAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25z
IgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsKIC0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
LCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2U7CkBAIC00Niw0ICs0
OCw1IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGRE
ZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogCiAtIChOU1N0cmluZyAqKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFs
bG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9h
ZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxl
cjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlMi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUyLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDY3NGU4
MDhjMWJmZTZkNDM4MmI0ZDRlYjFlYzk2ZTIzYTQ1OGRkZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlMi5oCkBA
IC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0
aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBfV0tEb3du
bG9hZDI7CisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0Rvd25sb2FkUmVkaXJlY3RQ
b2xpY3kpIHsKKyAgICBfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIF9XS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdywKK30gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwor
QHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGUyIDxOU09iamVjdD4KK0BvcHRpb25hbAorCisv
KiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRU
UCByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRo
YXQgcmVjZWl2ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rp
b24gcmVzcG9uc2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2ls
bCBiZSBzZW50LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5k
bGVyIHlvdSBtdXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2Nl
ZWQgd2l0aCB0aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBs
ZW1lbnQgdGhpcyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJl
IHRha2VuLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5l
d1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBA
YWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFu
IGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3
IHRoYXQgcmVjZWl2ZWQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY2hh
bGxlbmdlIFRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIHJlc3BvbmQg
dG8gdGhlIGNoYWxsZW5nZS4gVGhlCisgZGlzcG9zaXRpb24gYXJndW1lbnQgaXMgb25lIG9mIHRo
ZSBjb25zdGFudHMgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZQorIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbi4gV2hlbiBkaXNwb3NpdGlvbiBpcyBOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlVXNlQ3JlZGVudGlhbCwKKyB0aGUgY3JlZGVudGlhbCBhcmd1bWVudCBpcyB0aGUgY3Jl
ZGVudGlhbCB0byB1c2UsIG9yIG5pbCB0byBpbmRpY2F0ZSBjb250aW51aW5nIHdpdGhvdXQgYQor
IGNyZWRlbnRpYWwuCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBt
ZXRob2QsIHRoZSB3ZWIgdmlldyB3aWxsIHJlc3BvbmQgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGNo
YWxsZW5nZSB3aXRoIHRoZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlv
blNwYWNlIGRpc3Bvc2l0aW9uLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAq
KWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBf
TnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVu
IHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxs
ZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVkIGEg
ZmlsZSB0byB3aGljaCB0byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciByZXNw
b25zZSwgaWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3Qu
CisgQHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1lIFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52
b2tlIHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVSTCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3Igbmls
IHRvIGNhbmNlbCB0aGUgZG93bmxvYWQuCisgQGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25s
b2FkIG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNlIHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVu
YW1lCisgd2lsbCBvZnRlbiBiZSB0aGUgc2FtZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFt
ZSwgYnV0IHdlYiBjb250ZW50IGNhbiBzcGVjaWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBm
aWxlbmFtZS4gIElmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVz
dCBiZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90IGV4aXN0IHlldCBpbiBhIGRpcmVjdG9yeSB0aGF0
IGRvZXMgZXhpc3QuCisqLworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51bGxhYmxlIE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFt
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBfTnVsbGFibGUgZGVzdGluYXRp
b24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBk
b3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUgZGVzdGluYXRpb24u
CisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IGhhcyB3cml0dGVuIGRhdGEuCisg
QHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFt
IHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBA
cGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVz
IGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gSWYgdGhpcyBkb3dubG9hZCB3
YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2FkLCB0aGVuCisgdG90
YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUgbnVtYmVyIG9mIGJ5
dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgorIElmIHRoZSB0b3RhbCBudW1i
ZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSB3aWxsIGJl
IC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRpZFdy
aXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3Qp
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBk
b3dubG9hZCBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorIEBwYXJhbSBkb3dubG9hZCBUaGUg
d2ViIHZpZXcgdGhhdCBmaW5pc2hlZC4KKyovCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihf
V0tEb3dubG9hZDIgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUg
ZG93bmxvYWQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRoYXQg
aGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1
cmUgcmVhc29uLgorIEBwYXJhbSByZXN1bWVEYXRhIFRoZSBkYXRhIHRvIGJlIHVzZWQgdG8gcmVz
dW1lIHRoaXMgZG93bmxvYWQgaWYgcG9zc2libGUuCisqLworLSAodm9pZClkb3dubG9hZDooX1dL
RG93bmxvYWQyICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIHJl
c3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJlc3VtZURhdGE7CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZj
NmQ5MDg2MzQzNzA5MmQ0MDEyLi42ZWYxMWVjOTViMWVlMWQxNjBiMmY3ZmE4ZTUwNWQxMmEzZmE0
OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tE
b3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVj
dC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19OworQGNsYXNzIF9XS0Rvd25sb2FkMjsK
IAorQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAg
UmV0YWluUHRyPF9XS0Rvd25sb2FkMj4gX2Rvd25sb2FkOwogfQotCi1AaW50ZXJmYWNlIF9XS0Rv
d25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlMmZhNWM1
YzVkOWM5ZTVkOTY1NTZlNGExZmM4Y2RhZmU5MjExM2ZlLi5lYWRjZDQzZGIzZDliYjU5NmVkZTk4
MDNhMzg2YzI3MDFiMTQ2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZFN0YXJ0ZWQo
ZG93bmxvYWQuZ2V0KCkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdl
YmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2FkLmdldCgpLCBwYXRoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50LmgKaW5kZXggNzVkNTEyMjFkMmMzNTE4MmY4OTRkYTk4NjEzZDFjYzQwZDBm
MDE1ZS4uYjdmNjQ5MzEwYTQ4ODRmOTJmNTE2NWQwY2JmNzU2NTM4ZTE0MDZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5o
CkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAvLyBGcm9t
IEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94
eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpEYXRhKikgZmluYWw7CiAgICAgdm9pZCBsZWdhY3lEaWRDYW5jZWwo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb3dubG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxv
YWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5tbQppbmRleCAzZDMxYmRiZjQzYTM2ZWViY2QyMzY5ODVmYTY4YjQ5ZDE2MWU0ZGI0
Li42NWE5OGI1NWMyNzY5ZDk5YmI2NjQ0OTAwMzFhMWNhMDc1NTQ2MWQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpA
QCAtMzgsNiArMzgsNyBAQAogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbXBvcnQgIl9XS0Rv
d25sb2FkMkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1w
b3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJy
b3IuaD4KQEAgLTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKIExlZ2FjeURvd25sb2FkQ2xpZW50OjpMZWdh
Y3lEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAg
OiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewpAQCAtNzYsNyArNzksNyBAQCBzdGF0aWMgU3lzdGVt
UHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUAogfQogI2VuZGlmCiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0
YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50OjpsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZp
ZXdEb3dubG9hZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAg
IGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERv
d25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwNCw3ICsx
MDcsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29ucwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNwb25zZTpy
ZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAogdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEs
OSBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdAogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9h
ZCBkb3dubG9hZFdpdGhEb3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkV3JpdGVE
YXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOwogICAgIGVs
c2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVE
YXRhOmJ5dGVzV3JpdHRlbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJl
Y2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKQEAgLTEzMSw3ICsxMzQsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bgogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwg
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRl
LmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7
CisgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTcwLDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY28KICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsK
KyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhE
b3dubG9hZDI6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVz
dGluYXRpb25dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jh
c2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4Miw3ICsxODUsNyBAQCB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
UHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlk
Q3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDQsMTEgKzIwNywxMSBAQCB2
b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShEb3dubG9hZFByb3h5JgogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsK
ICAgICAgICAgQk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5POwogICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dP
dmVyd3JpdGVdOworICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFt
ZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwogICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVy
d3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5h
dGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24p
IG11dGFibGUgeworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRv
d25sb2FkV2l0aERvd25sb2FkMjp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtl
QmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
bV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3Jp
dGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoY2hl
Y2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5p
c2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQy
OndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiBlcnJvcikKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IsIEFQSTo6RGF0YSopCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlm
IChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTI0OCw3ICsy
NTEsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OgogI2VuZGlmCiAKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGYWlsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3Io
KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRX
aXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZEZhaWxXaXRoRXJyb3I6ZXJy
b3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlk
Q2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0yNjMsMTMgKzI2NiwxMyBA
QCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6
d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERp
ZENhbmNlbDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBwZXIoZG93bmxv
YWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1
ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJf
VVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQyOndyYXBw
ZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBf
d2ViX1VSTFdpdGhXVEZTdHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOwogCiAgICAgY29t
cGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0zMDEsNCArMzA0LDYgQEAg
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2Fy
eShEb3dubG9hZFByb3h5JiBkb3dubG8KIH0KICNlbmRpZgogCitBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDU3NGMzNDJmMzNkY2Yw
NmNjYWRhMTFmMGJkMmQwOTdlYzVhOTU3YTMuLjg2OWJjNjllMjZkZmU1ZDVmYTM4MGMxNmFkYmQ5
ZDNkMWY3ZGVlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCkBAIC0xMjYsNiArMTI2LDggQEAgcHJpdmF0ZToKIAogICAgICAgICBSZWZQ
dHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdl
UHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4m
IGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAKKyAgICAgICAgdm9pZCBu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5h
dmlnYXRpb25SZXNwb25zZSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKwogI2lmIFVTRShRVUlD
S19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYg
dXRpKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVycmlkZTsK
QEAgLTIzOCw2ICsyNDAsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYkNyeXB0b01hc3Rl
cktleUZvcldlYlZpZXcgOiAxOworICAgICAgICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9u
R2VzdHVyZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVy
ZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRM
aXN0SXRlbSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0
aW9uU3RhdGUubW0KaW5kZXggYzQxMDJmZjUyYjk1ZTMyMzQ1OTBjZTllMDMxNzY1Mjk1ZTk2YmRh
Ny4uMjkyMDViNDJmNTYwNWVjY2NhMTUxMmI1NjQ5NWQwMmI0MmQ3ODA2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNjUsNiAr
NjUsNyBAQAogI2ltcG9ydCAiV2ViUHJvdGVjdGlvblNwYWNlLmgiCiAjaW1wb3J0ICJXZWJzaXRl
RGF0YVN0b3JlLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5o
IgorI2ltcG9ydCAiX1dLRG93bmxvYWQySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0Vycm9yUmVj
b3ZlcnlBdHRlbXB0aW5nLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgiCkBAIC0xODcsNiAr
MTg4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2Vi
UHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTopXTsK
ICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2Vi
VmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJDcnlwdG9N
YXN0ZXJLZXlGb3JXZWJWaWV3OildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVE
b3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJl
Z2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2
aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0
aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zv
cndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW06KV07CkBAIC01NTUsMTEgKzU1NywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdl
UAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVz
dCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVx
dWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1
ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShb
bnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0
aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
bGlzdGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAg
ICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVl
c3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVt
ZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAgICAgICAgICAgIHx8IFtuc1VSTFJl
cXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9iIl0pIHsKKyAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNjM4LDkgKzYzOSwxMiBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVu
ZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFj
dGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRyeVNPQXV0aG9yaXphdGlvbihX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFtsb2NhbExpc3RlbmVyID0g
V1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZShhcGlXZWJz
aXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG9wdGltaXplZExvYWQpIHsKQEAgLTExNjgsNiArMTE3MiwxOCBAQCBSZWZQdHI8QVBJOjpTdHJp
bmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+
c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5Jiwg
QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2
aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9
CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3
YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0Y2QwNzdmMzYuLmQ5OWI4Yjg2ZGM3MDc2OTE1MThk
NGEyOWI3NjQwY2RlNThmZjMzYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2Fk
UHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwg
V2Vic2l0ZURhdGFTdG9yCiB7CiB9CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkg
PSBkZWZhdWx0OworRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmICht
X2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsK
K30KIAogc3RhdGljIFJlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQogewpAQCAtMTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94
eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENo
YWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBw
ZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAg
ICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhp
cyk7CisgICAgbV9jbGllbnQtPmxlZ2FjeURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3du
bG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdl
SUQpCkBAIC0xNzMsMTEgKzE3OSwxNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAg
IG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2Ns
aWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlz
LCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRhLmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNh
dXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxv
YWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFBy
b3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAg
IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2EzNWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uNGQyMGIx
NmRjMTc4YTQ2NjBiYmZlNzRjODUwMzYwYTM4M2NjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw4
IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9m
cmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxv
YWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxv
YWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUlu
Zm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgot
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+
JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKTsgfQogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRp
ZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUpOwpAQCAtMTIwLDYgKzExNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAg
ICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwg
QWxsb3dPdmVyd3JpdGUpPiYmKTsKIAorcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFBy
b3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENs
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKKwogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAg
ICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CiAgICAgUmVmPEFQSTo6RG93
bmxvYWRDbGllbnQ+IG1fY2xpZW50OwpAQCAtMTM0LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVk
IHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmVlMjZkMDQ2
YjBiMjE4ODcwNzNlNmVlNzM0OTg0M2RhZDMzNWFmYS4uYzFmZTI0MWEyZWEzNzFiMTdkM2IzODU1
NzA0OTRjM2QyNTE5MjEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1h
cC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1l
SW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQog
I2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYzY2MGU1NjZiMDhkZDM2NzkxM2Qy
MjQ1MDZiZGYxZWRmMDBkNWQ4Ny4uMDFjNTU5NTM0NTg2NzQ5ZGY3Y2ViYmIyMDkxODRiMTRlZGFh
ZDVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2
ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
LmgiCkBAIC0zMTY4LDcgKzMxNjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAg
ICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGlj
eUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAh
bmF2aWdhdGlvbikgewotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzE4NSw3ICszMTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEK
ICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlv
blN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8g
cHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhh
c05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RG
TW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xp
Y2llcyksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMzIyMSwxMSArMzIyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8g
bnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0
aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNo
b3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBX
VEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dh
cCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBu
YXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVz
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNp
dGVQb2xpY2llcywgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRpb25S
ZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lE
ZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9w
dCB9KTsKQEAgLTMyNDEsNiArMzI0MiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAg
aWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0
ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAg
ICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAv
LyBGSVhNRTogT25jZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8gbG9u
Z2VyIHVzZWQsIHdlIHNob3VsZCBhc3NlcnQgbmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVyIG51
bGwgaGVyZS4KKyAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCgqdGhpcywgKm5hdmlnYXRpb25SZXNwb25zZSwgKmRvd25sb2FkUHJveHkpOworICAgICAg
ICB9KTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNl
dFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAg
ICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0
Q2hhaW4oKSk7CkBAIC01MDk0LDcgKzUxMDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29u
dGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0
aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRl
ciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246
Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVs
bHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9u
KG5hdmlnYXRpb25JRCksIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAg
fQogI2VuZGlmCiAKQEAgLTUzMjUsNyArNTMzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
CiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7
CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIs
IG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRl
cikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4
cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50
KQpAQCAtNTM2Myw4ICs1MzcxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVT
U0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVD
S19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25z
ZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2Fu
U2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0g
bWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlz
dGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nl
c3NdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pIG11dGFibGUgeworICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFi
bGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyog
aXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VX
aXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dh
cm5pbmcpOwpAQCAtNTM3MywxNCArNTM4MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAog
ICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFn
ZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5k
ZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92
ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBT
aG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lD
bGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgq
dGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNw
b25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwg
Y2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhp
cywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwot
ICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNjAxOSw2ICs2MDI3LDE4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAg
cGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMs
IHJlc3VtZURhdGEsIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7
IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVu
dFNpemUoc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDdj
ZWZiZmM2OTQ1ZWRmZTQzYWU1NmMyZDU2NGMwZTgxZTk1YmI0YTYuLmU5ZTUxMTQxMmU1Yjk3OWM1
ZjY0N2JiZDEyNzc2YjE3YTgwZjRkZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xMTYzLDcgKzExNjMsNyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lE
ZWNpc2lvblNlbmRlcjsKICAgICBlbnVtIGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3MgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
ID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJl
ZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxs
Q29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CiAgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbios
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAg
ICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYpOwpAQCAtMTI3OCw2ICsxMjc4LDggQEAgcHVibGljOgogICAgIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYs
IERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxs
cHRyKTsKIAogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsK
KyAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4m
Jik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQg
YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAg
IHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlMDQ1MWZiNDhiMmQyNzc4
MGExYWRlOWNmM2QxMmY2NmI0ZTQ0ZTRiLi5lYjU5Yjc1NGI0M2M4OWZkNTVlZDY5ODVmMThjMjc3
ZGRiYzdmYWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CkBAIC0xMTMxLDcgKzExMzEsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93
bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVy
biBkb3dubG9hZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVz
dW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGlu
aXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJz
aXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxv
YWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFBy
b3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBp
bml0aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAtMTEzOSw3ICsxMTM5LDcgQEAgRG93bmxvYWRQcm94
eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSwgV2ViUGEKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdy
aXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRh
U3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRh
LmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAg
IGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93
bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgY2FsbERvd25sb2FkRGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxv
YWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5k
ZXggNGUyZTlhNTIzZTQ2ZWU0NDc0N2NlMzUwMmFlOTUwZTU4Zjk5NTAyZS4uMjc0ODk4NDlkNWE4
ZGI5M2I5NmFiOTZjYmE2OTBmZWFjNzUwNmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTcsNiArMTE3LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5
UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNs
YXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDog
cHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKQEAgLTIwNSw3ICsyMDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERv
d25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGlu
aXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVE
b3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERv
d25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3Rl
ZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJE
YXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1
c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYzAyNzQ5NGI3M2FjY2VjNWVmZDgxYzY5NGQzYTg1M2I0ZWRlZjBjYS4u
NWE5MDE1MDMxM2E2Mjg2YTBjODc5NGVhZmJhMjRiNWRmNDRjYTlmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xODEyLDYgKzE4MTIs
OSBAQAogCQlDRUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAy
RjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyog
V2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJ
CUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4
RTAwRDkyMURCIC8qIF9XS0Rvd25sb2FkMi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIF9XS0Rvd25sb2Fk
Mi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCURG
MEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZERlbGVnYXRlMi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAw
RDkyMURCIC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIF9X
S0Rvd25sb2FkMkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxvYWQySW50ZXJu
YWwuaCAqLzsgfTsKIAkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0
b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGNDYy
RTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTExMjNGMzM4QUQwMEVG
RjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyogV0tQ
REZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREY4NENFRTIyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSAqLzsgfTsKQEAg
LTUzNTQsNiArNTM1NywxMCBAQAogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9w
dXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkg
LyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBfV0tE
b3dubG9hZDIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tE
b3dubG9hZDIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI0MjUyRUNC
OEQwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLRG93bmxvYWQyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1
RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tEb3dubG9hZDJJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogX1dLRG93bmxv
YWREZWxlZ2F0ZTIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLRG93bmxv
YWREZWxlZ2F0ZTIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0Yy
MkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVu
dFdvcmxkUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRl
bnRXb3JsZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzEx
MzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzM0Niw3ICs3MzUzLDExIEBACiAJCQkJODM4OTFCNjgxQTY4QkVCQzAw
MzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCAqLywKIAkJCQlBMUE0RkU1
NzE4RENFOUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCAqLywKIAkJCQlBMUE0RkU1ODE4RENF
OUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQubW0gKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAw
RDkyMURCIC8qIF9XS0Rvd25sb2FkMi5oICovLAorCQkJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFE
QiAvKiBfV0tEb3dubG9hZDIubW0gKi8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8q
IF9XS0Rvd25sb2FkMkludGVybmFsLmggKi8sCiAJCQkJQTFBNEZFNjAxOERENTRBNDAwQjVFQThB
IC8qIF9XS0Rvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIx
REIgLyogX1dLRG93bmxvYWREZWxlZ2F0ZTIuaCAqLywKIAkJCQlBMUE0RkU1OTE4RENFOUZBMDBC
NUVBOEEgLyogX1dLRG93bmxvYWRJbnRlcm5hbC5oICovLAogCQkJCTM3OUE4NzM4MThCQkZFMEYw
MDU4OEFGMiAvKiBfV0tFbGVtZW50QWN0aW9uLmggKi8sCiAJCQkJMzc5QTg3MzcxOEJCRkUwRjAw
NTg4QUYyIC8qIF9XS0VsZW1lbnRBY3Rpb24ubW0gKi8sCkBAIC0xMDc5Myw3ICsxMDgwNCwxMCBA
QAogCQkJCTVDNUQyMzhDMjI3QTJDREEwMDBCOUJEQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkxQjY5MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUE0RkU1QTE4RENF
OUZBMDBCNUVBOEEgLyogX1dLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4
MjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDIuaCBpbiBIZWFkZXJzICovLAorCQkJCURG
MEM1RjJCMjUyRUQ0NDAwMEQ5MjFEQiAvKiBfV0tEb3dubG9hZDJJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFBNEZFNjExOERENTRBNDAwQjVFQThBIC8qIF9XS0Rvd25sb2FkRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBfV0tE
b3dubG9hZERlbGVnYXRlMi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFBNEZFNUMxOERDRTlGQTAw
QjVFQThBIC8qIF9XS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ0RUMz
RUE5MjQ3RjVDMDkwMDU5NDg5QyAvKiBfV0tEcmFnQWN0aW9uc0ludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzNzlBODczQTE4QkJGRTBGMDA1ODhBRjIgLyogX1dLRWxlbWVudEFjdGlvbi5o
IGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNWY2NWI0ZTJhMDVhOTIzNzJmM2NjNmNiYjQ5MzI0NzNjZTI5NzMwNS4uOWY5
M2RmYmM0OGNiYjMyMTliYmYzYWUzNjZlZjdlMWQ5ZDFmYjliZSAxMDA2NDQKLS0tIGEvVG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEx
LTEwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChkb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tSZXN1
bWVkRG93bmxvYWRDb250ZW50cyk6CisgICAgICAgIChzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIp
OgorICAgICAgICAoY2hlY2tGaWxlQ29udGVudHMpOgorICAgICAgICAodGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5l
d1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlMiBkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUyIGRvd25sb2FkOmRp
ZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0p
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZTIgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlMiBkb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6
XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBkb3dubG9hZFByb2Nlc3NEaWRU
ZXJtaW5hdGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiBfd2ViVmlldzpu
YXZpZ2F0aW9uOmRpZEJlY29tZURvd25sb2FkOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZTIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZTIgd2FpdEZvckRv
d25sb2FkRGlkRmluaXNoXSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlMiB0YWtl
Q2FsbGJhY2tSZWNvcmRdKToKKwogMjAyMC0xMS0xMCAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVy
ZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbUkVHUkVTU1NJT04ocjI2
OTM5MCkgU2V2ZXJhbCBlZGl0aW5nLyB0ZXN0cyBhcmUgZmxha3kKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291
cmNlc0NvY29hLnR4dAppbmRleCBkOTdmMjY2ZTQwNWVjZmFhNDE0MTk0NTk5MDg4YWQ1NDBiZDRk
MDllLi5kMDNlZmNiNjAxNGQzOWE1ZWIxY2UxYzlkZWJiZThiNGZhOTFmOTFkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZp
Z3VyYXRpb25FeHRyYXMubW0KIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29h
L1Rlc3RDb2NvYS5tbQogY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlMi5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29j
b2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCAxMmM4MDEwY2VmYWMzNWYwNmU4YzNiY2I0NzgzY2Q5MzcxNDk1ZjcyLi4y
NTNlN2Q4ZWNlOTFlMWNiYzc0NmM2MDE4NTg5ZDhjZDEyMmJjNzIxIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjc4Niw2ICsyNzg2LDggQEAKIAkJRDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNB
IC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tXZWJWaWV3R2V0Q29udGVudHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURDNjlBQTYyMUNGNzdDNjUwMEM2MjcyRiAvKiBTY29wZWRMYW1iZGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkTGFtYmRhLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdL
TlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0Mg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERv
d25sb2FkRGVsZWdhdGUyLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0Mg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERl
bGVnYXRlMi5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGQjhGRjMxMjQ5MkY1MUEwMEYwMEIwRCAvKiBQcmVjb25u
ZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlY29ubmVj
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNF
MkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVt
b3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMDgsNiArMzExMCw4IEBACiAJCQkJNUNFNzU5NDcyMkE4
ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKIAkJCQk1QzcyRThD
RDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKIAkJCQk1Qzcy
RThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJ
REY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlMi5oICovLAor
CQkJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZTIubW0g
Ki8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MTYyODEyMzIzMjVDMTdBMDBCQjdFNDIgLyogVGVzdFBERkRv
Y3VtZW50LmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbQppbmRleCAzYWVmZWI4ZWMzMzVlMTAyMzJmZjhlNWM4MGM2Zjc5YmQzNWVm
YzA4Li44YzM2MGRjNjFjYzYyNzhhNDZmNzNjNGY4ZDM3YTU0OTFjZjMyZjJkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMz
LDExICszMywxNCBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAj
aW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdERvd25sb2FkRGVs
ZWdhdGUyLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CkBAIC00NSw2ICs0OCw3IEBACiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
RG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZDIuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KQEAgLTExODksMjQgKzExOTMsMzAgQEAgU3RyaW5nIGxvbmdTdHJpbmco
TENoYXIgYykKICAgICByZXR1cm4gU3RyaW5nKHZlY3Rvci5kYXRhKCksIGxlbmd0aCk7CiB9CiAK
LVRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK2VudW0gY2xhc3MgSW5jbHVkZUVUYWcgOiBib29s
IHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgOiBib29s
IHsgTm8sIFllcyB9OworCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBkb3dubG9h
ZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRlRVRhZzo6WWVzLCBG
dW5jdGlvbjx2b2lkKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24pPiYmIHRlcm1pbmF0b3IgPSBu
dWxscHRyKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwotICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24p
IG11dGFibGUgeworICAgIHJldHVybiB7IFtpbmNsdWRlRVRhZywgdGVybWluYXRvciA9IFdURk1v
dmUodGVybWluYXRvciksIGNvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9u
Q291bnQpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
SFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7Ci0gICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICJIVFRQ
LzEuMSAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisg
ICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbaW5jbHVkZUVUYWcsIGNv
bm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAoVmVjdG9yPGNoYXI+
JiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtYWtlU3RyaW5n
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIsCisgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVFVGFnID09IEluY2x1ZGVFVGFnOjpZZXMgPyAiRVRhZzogdGVzdFxy
XG4iIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxu
IgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsg
ZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIlxyXG4i
LCBsb25nU3RyaW5nPDUwMDA+KCdhJykKLSAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAg
ICAgICApOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNl
KSwgW2Nvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3IpCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXJtaW5hdG9yKGNvbm5lY3Rpb24pOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAg
ICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3Rv
cjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBS
ZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4i
LCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtl
U3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVu
dFxyXG4iCkBAIC0xMjIwLDEyICsxMjMwLDYwIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrUmVzdW1lZERv
d25sb2FkQ29udGVudHMoTlNVUkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMg
PSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmls
ZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMu
Ynl0ZXMpOworICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNvbnRlbnRzLmxlbmd0
aCA9PSAxMDAwMHUpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKysp
CisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250
ZW50cy5ieXRlcylbaV0sICdhJyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwg
MTAwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CisKK3N0YXRpYyBUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpCit7CisgICAg
cmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAg
ICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hh
cj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAg
ICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgIkVUYWc6IHRl
c3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwi
ZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAgICB9KTsKKyAgICB9fTsKK30KIAotICAg
IE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFJlc3VtZVRl
c3QiXSBpc0RpcmVjdG9yeTpZRVNdOworc3RhdGljIHZvaWQgY2hlY2tGaWxlQ29udGVudHMoTlNV
UkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICBOU0RhdGEg
KmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVdOworICAg
IEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBleHBlY3RlZENvbnRlbnRzLmxlbmd0aCgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVDb250ZW50cy5sZW5ndGg7IGkrKykK
KyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMu
Ynl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsKK30KKworc3RhdGljIE5TVVJMICp0ZW1w
RmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZp
bGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dGVtcERpciB3
aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07
Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjpu
aWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07CisgICAgcmV0dXJuIGZpbGU7Cit9CisK
K1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworCisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKQEAgLTEy
NDMsNyArMTMwMSw4IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBhdXRvIGRvd25s
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBk
b3dubG9hZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikpIHsKICAgICAgICAgY2FsbGJh
Y2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdn
ZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZXhhbXBsZS50
eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywg
ZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRl
LmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBi
eXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6
OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcgKzEzMTcsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1
bWUpCiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0ZURlc3RpbmF0
aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAgICAg
Y2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwotICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShk
ZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3du
bG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsKQEAg
LTEyOTYsMTUgKzEzNTUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgVXRpbDo6
c3BpblJ1bkxvb3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAKLSAgICBOU0RhdGEgKmZpbGVD
b250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmV4cGVjdGVkRG93bmxvYWRG
aWxlXTsKLSAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKLSAgICBF
WFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlmIChmaWxlQ29udGVudHMuYnl0
ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCi0gICAgICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRl
cylbaV0sICdhJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkr
KykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNv
bnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRD
b250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBpbnRlcmZhY2UgRG93bmxvYWRU
ZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkBAIC0x
MzczLDQgKzE0MjQsMTExNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdWJmcmFtZVNlY3VyaXR5T3Jp
Z2luKQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OkAiPGJvZHk+PGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvcGFnZSc+PC9pZnJh
bWU+PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
Kworc3RhdGljIHZvaWQgY2hlY2tDYWxsYmFja1JlY29yZChUZXN0RG93bmxvYWREZWxlZ2F0ZTIg
KmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7
CisgICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxlZ2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7
CisgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tz
LnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxs
YmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOyBpKyspCisgICAgICAgIEVY
UEVDVF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVjdGVkQ2FsbGJhY2tzW2ldKTsKK30KKwor
VEVTVChfV0tEb3dubG9hZDIsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKK3sKKyAgICBhdXRvIHNlcnZl
ciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2Fp
dEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3du
bG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlz
aERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQoreworICAg
IGNoZWNrRmlsZUNvbnRlbnRzKGRlc3RpbmF0aW9uLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOwor
CisgICAgYXV0byAqZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvICp3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiByZXRhaW5lZERvd25sb2Fk
OworCisgICAgW3dlYlZpZXcgX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6cmVzdW1lRGF0YSBjb21w
bGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxl
Z2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkU2Vj
b25kNWsgPSBmYWxzZTsKKyAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLmRl
bGVnYXRlKTsKKyAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25s
b2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsK
KyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIGlu
dDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCBy
ZXRhaW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiAr
IDUwMDAsIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAw
KQorICAgICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1ZTsKKyAgICB9OworICAgIF9f
YmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZp
bmlzaCA9IF4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfRVEocmV0
YWluZWREb3dubG9hZC5nZXQoKSwgZG93bmxvYWQpOworICAgICAgICByZXRhaW5lZERvd25sb2Fk
ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX1RSVUUoZG93bmxvYWRlZFNlY29uZDVrKTsKKyAg
ICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICB9OworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2gpOworCisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAor
ICAgIH0pOworfQorCitzdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxvYWREZWxl
Z2F0ZTIgKmRlbGVnYXRlKQoreworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkRmlyc3Q1ayA9
IGZhbHNlOworICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRhKTsKKyAgICBkZWxlZ2F0
ZS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkMiAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwg
aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVu
KTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsK
KyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxvYWRl
ZEZpcnN0NWsgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZGVkRmlyc3Q1
ayk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rv
d25sb2FkMj4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9
IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQy
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0
YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0
YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdoaWxlICghcmV0
YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3Vt
ZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIEZhaWxBbmRSZXN1bWUpCit7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFn
OjpZZXMsIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAg
ICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5h
dGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiByZXRhaW5lZERvd25sb2Fk
OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgewor
ICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQsIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAg
ICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07Cisg
ICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisg
ICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29w
KCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgp
LCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdp
dGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIENhbmNlbE5vUmVzdW1l
RGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRh
Zzo6Tm8pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
MiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQyPiByZXRhaW5lZERvd25sb2Fk
OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0
cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07Cisg
ICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3
YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewor
ICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1Qo
X1dLRG93bmxvYWQyLCBGYWlsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZl
ciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQ
STo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVn
YXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2Fk
MiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25s
b2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhF
cnJvciA9IF4oX1dLRG93bmxvYWQyICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURh
dGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JO
ZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0
YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgor
ICAgIH0pOworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lm
IEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKF9X
S0Rvd25sb2FkMiwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKK3sKKyAgICBPcHRpb25h
bDxUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOworICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlvbl0oVGVz
dFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dp
dGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBz
ZXJ2ZXJDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZCgKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4i
CisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50
eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIgorICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+
JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVz
dC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAg
ICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0
ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8MTAwPigneCcpCisgICAgICAg
ICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IFsmXShfV0tEb3du
bG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+dGVybWluYXRlKCk7CisgICAg
fTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICByZXRhaW5lZFJl
c3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvd25sb2Fk
RmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oX1dL
RG93bmxvYWQyICopIHsKKyAgICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CisgICAgfTsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxl
ICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAg
IAorICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxT
RShkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxvYWRXaXRoRGF0
YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9h
ZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBjaGVja0ZpbGVD
b250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOworCisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKKyNlbmRpZgorCit2b2lkIHRlc3RSZXN1
bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QsIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0YXRlRmlsZSkodm9pZCkpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxfV0tEb3dubG9hZDI+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVk
RG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9X
S0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUp
OworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNh
bmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEg
PSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEp
CisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0
ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBfcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmlu
aXNoID0gXihfV0tEb3dubG9hZDIgKikgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25C
ZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQy
LCBSZXN1bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAg
ICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
Wz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1h
a2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAg
ICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJD
b250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5n
PDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZSIsIHJlcXVl
c3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAg
ICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykKKyAgICAgICAgICAgICAgICApKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAor
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOworICAgIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBl
eHBlY3RlZERvd25sb2FkRmlsZSwgXnsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7Cisg
ICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4
cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICB9KTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRG
aWxlLCBsb25nU3RyaW5nPDEwMDAwPigneCcpKTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFJl
c3VtZVdpdGhFeHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtl
U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlz
cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1
MDAwPignYScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAw
MC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNl
bmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFs
IENvbnRlbnRcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxu
IgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAw
MDA+KCdkJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRl
ck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsK
KyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9y
OiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW1soTlNTdHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0
cmluZzwzMDAwPignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10g
d3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIH0p
OworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIG1ha2VTdHJp
bmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJyksIGxvbmdTdHJp
bmc8NTAwMD4oJ2QnKSkpOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgUmVzdW1lV2l0aEludmFs
aWRSZXN1bWVEYXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEg
b24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9V
Ukw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2Vw
dGlvbiA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyBfcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTpbQCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25s
b2FkKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07Cisg
ICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
Lm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0
aW9uID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30K
KworVEVTVChfV0tEb3dubG9hZDIsIFJlc3VtZUNhbnRSZWNvbm5lY3QpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rvd25s
b2FkMj4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRv
d25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICos
IE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShO
U1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9h
ZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsK
KyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAg
ICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGls
ZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKwor
ICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOwor
ICAgIFt3ZWJWaWV3IF9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAg
ICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3du
bG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQor
ICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQo
KS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQyICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGls
OjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAg
ICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFVua25vd25Db250ZW50TGVuZ3RoKQorewor
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKCJIVFRQLzEuMSAyMDAgT0tcclxu
XHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRl
LmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQyICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIHsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gNTAwMCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc1dyaXR0ZW4sIDUw
MDApOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIC0x
KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIEludmFsaWRBcmd1
bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgX19ibG9jayBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IF9kb3du
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25s
b2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rv
d25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEB0cnkgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQu
b3JnLyJdKTsKKyAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uKTsKKyAgICAgICAgICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2F1Z2h0RXhjZXB0aW9u
KTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgIH0pOworfQorCitzdGF0aWMgSFRUUFNl
cnZlciByZWRpcmVjdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHt7CisgICAgICAgIHsgIi8iLCB7
IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRpcmVjdFRhcmdldCIgfSwgeyAiQ3VzdG9tLU5hbWUi
LCAiQ3VzdG9tLVZhbHVlIiB9fSB9IH0sCisgICAgICAgIHsgIi9yZWRpcmVjdFRhcmdldCIsIHsg
ImhpIiB9IH0sCisgICAgfX07Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBSZWRpcmVjdEFsbG93
KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1
dG9yZWxlYXNlXTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIAorICAgIF9fYmxvY2sgYm9v
bCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVxdWVz
dDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9h
ZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxl
Z2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oX1dLRG93bmxvYWQyICosIE5TSFRU
UFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKF9XS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdh
bnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
c3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7Cisg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3Vz
dG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxs
b3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVu
YW1lLCAicmVkaXJlY3RUYXJnZXQudHh0Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLnBhdGgsICIvcmVkaXJlY3RUYXJnZXQiKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnBhdGgsICIvIik7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9Owor
ICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oX1dLRG93bmxvYWQyICopIHsK
KyAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1d
OworICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250
ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNl
cnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5p
c2gKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIFJlZGlyZWN0Q2FuY2VsKQorewor
ICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTFJlcXVlc3QgKnNl
cnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24gPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2Us
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShfV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3Bv
bnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcp
OworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9t
LU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2Vs
KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dL
RG93bmxvYWQyICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxs
ZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVk
KTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFp
bFdpdGhFcnJvcgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygp
LCAxdSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBEb3dubG9hZFJlcXVlc3RGYWlsdXJlKQor
eworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJS
ZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBzZXJ2ZXIuY2FuY2VsKCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wg
ZmFpbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIERv
d25sb2FkUmVxdWVzdDQwNCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsg
Ii8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0KKyAgICB9KTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBk
aWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihfV0tEb3du
bG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAg
ICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrRmls
ZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsKK30KKworVEVT
VChfV0tEb3dubG9hZDIsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCit7CisgICAgYXV0byBzZXJ2ZXIg
PSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dL
RG93bmxvYWQyICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
X1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdh
dGUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7CisgICAgZGVs
ZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oX1dLRG93bmxvYWQyICosIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JO
ZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9
OworICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRl
TmV0d29ya1Byb2Nlc3NdOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNh
bWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25s
b2FkMiwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9zdCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZl
cih7CisgICAgICAgIHsgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9IH0KKyAgICB9KTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRl
bGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgX1dLRG93bmxvYWQyICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdn
ZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxv
YWQyLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RT
ZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNl
XTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Q6cmVxdWVz
dCBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6
IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKF9XS0Rvd25s
b2FkMiwgUGF0aE11c3RFeGlzdCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOm5p
bF07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKworICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihfV0tEb3dubG9hZDIgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAg
IH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZh
aWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNh
bWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30K
KworVEVTVChfV0tEb3dubG9hZDIsIEZpbGVNdXN0Tm90RXhpc3QpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGF1dG8gcmV0YWlu
ZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBFWFBF
Q1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2Fs
bHk6WUVTXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgcmV0YWlu
ZWREZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxv
YWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgp
OworICAgICAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKworICAgICAgICAg
ICAgcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXdd
KTsKKyAgICAgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQo
KTsKKworICAgICAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9y
ID0gXihfV0tEb3dubG9hZDIgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7
CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RD
cmVhdGVGaWxlKTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAg
fTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUp
OworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworCisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChyZXRhaW5lZERlbGVnYXRlLmdldCgpLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQyLCBEZXN0
aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAg
IF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3Bv
bnNlICosIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRo
RXJyb3IgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQp
OworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFp
bGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
ZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhF
cnJvcgorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQ2hhbGxlbmdlU3VjY2VzcykK
K3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7eyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH19
fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZTIgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29s
IGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKF9X
S0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07
CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7CisgICAgZGVsZWdh
dGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihfV0tEb3dubG9hZDIgKiwg
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVk
ZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgICAgICByZWNlaXZl
ZENoYWxsZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmll
dyBfZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihf
V0tEb3dubG9hZDIgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RS
VUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93
bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgQ2hhbGxl
bmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihfV0tEb3dubG9hZDIgKmRvd25sb2FkLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICBk
ZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKF9XS0Rvd25sb2Fk
MiAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKyAgICAgICAg
cmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcgX2Rvd25sb2Fk
UmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLRG93bmxvYWQy
ICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
IH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENo
YWxsZW5nZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKF9XS0Rvd25s
b2FkMiwgQmxvYlJlc3BvbnNlKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIK
KyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwz
XSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAg
ICBhLmRvd25sb2FkID0gJ2Rvd25sb2FkRmlsZW5hbWUnOyIKKyAgICAiICAgIGEuY2xpY2soKTsi
CisgICAgIn0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwv
Ym9keT4iOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpuaWxdOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlMiBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRl
bGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBfV0tEb3dubG9hZDIgKmRvd25sb2Fk
KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1l
LCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1
ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA9IF4oX1dLRG93bmxvYWQyICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAq
c3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlICJkb3dubG9hZEZpbGVuYW1lIiBidXQgdGhhdCdzIGN1cnJl
bnRseSBvbmx5IHBpcGVkIHRvIHRoZSBuYXZpZ2F0aW9uIGFjdGlvbiwgbm90IHRoZSByZXNwb25z
ZS4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
IH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9h
ZERpZEZpbmlzaCA9IF4oX1dLRG93bmxvYWQyICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhw
ZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5p
c2gKKyAgICB9KTsKK30KKworVEVTVChfV0tEb3dubG9hZDIsIEJsb2JSZXNwb25zZU5vRmlsZW5h
bWUpCit7CisgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBk
b3dubG9hZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdhJyk7IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBh
LmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisg
ICAgIn0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9k
eT4iOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
cmVzcG9uc2UsIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIndlYmtpdC5v
cmciKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKF9XS0Rvd25sb2FkMiAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1l
LCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJ1
bmtub3duIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0p
OworfQorCitURVNUKF9XS0Rvd25sb2FkMiwgU3ViZnJhbWVPcmlnaW5hdG9yKQoreworICAgIGNv
bnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9u
IGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAg
IGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIK
KyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9i
b2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhUVFBTZXJ2ZXIg
Y2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBn
cmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBOU1VSTFJlcXVl
c3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIu
cmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBj
aGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAgIE5TU3RyaW5n
ICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0
dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07
CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUyIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Cisg
ICAgICAgIGlmIChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdCisgICAgICAgICAgICB8fCBbcmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpjaGlsZEZyYW1lU2Vy
dmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddCisgICAgICAgICAgICB8fCBbcmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpncmFuZGNoaWxkRnJh
bWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqcmVzcG9uc2UsIF9XS0Rvd25sb2FkMiAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIjEyNy4w
LjAuMSIpOworICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2lu
LnBvcnQsIGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQpOworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oX1dLRG93bmxv
YWQyICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
bgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlMi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIxODJkYjYwMTA3N2U2NjViOWViYTBlMjVjNGI5NTYyYmE1MTE0
MWMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3du
bG9hZERlbGVnYXRlMi5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxX
ZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZTIuaD4K
KworZW51bSBjbGFzcyBEb3dubG9hZENhbGxiYWNrIDogdWludDhfdCB7CisgICAgV2lsbFJlZGly
ZWN0LAorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgIERlY2lkZURlc3RpbmF0aW9u
LAorICAgIERpZFdyaXRlRGF0YSwKKyAgICBEaWRGaW5pc2gsCisgICAgRGlkRmFpbFdpdGhFcnJv
ciwKKyAgICBOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgTmF2aWdhdGlvblJlc3BvbnNl
Cit9OworCitAaW50ZXJmYWNlIFRlc3REb3dubG9hZERlbGVnYXRlMiA6IE5TT2JqZWN0PF9XS0Rv
d25sb2FkRGVsZWdhdGUyLCBXS05hdmlnYXRpb25EZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoX1dLRG93bmxv
YWQyICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lkICheKShfV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQyICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShfV0tEb3du
bG9hZDIgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93
bmxvYWQyICosIGludDY0X3QsIGludDY0X3QsIGludDY0X3QpOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQyICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3du
bG9hZDIgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkIChebmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBfV0tEb3dubG9hZDIgKik7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKTsKKworLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2g7CistIChWZWN0b3I8
RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkOworCitAZW5kCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUyLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjM5ZGNhNmM4MWExYmY0YzFjYjNjMmU5ZTk3OGJlN2RlYWNjNDE1M2UKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlMi5t
bQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2lt
cG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUyLmgiCisKKyNpbXBvcnQgPFdlYktpdC9XS05hdmln
YXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKworQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERl
bGVnYXRlMiB7CisgICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsK
K30KKworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoX1dL
RG93bmxvYWRSZWRpcmVjdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJh
Y2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisKKyAgICBB
U1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxl
cik7Cit9CisKKy0gKHZvaWQpZG93bmxvYWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpOworICAg
IF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UsIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZvaWQpZG93bmxvYWQ6
KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0
ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCit7Cisg
ICAgLy8gZGlkV3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9m
IHRpbWVzLCBzbyBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2FsbGJh
Y2tSZWNvcmQuaXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKKyAgICBpZiAoX2RpZFdyaXRlRGF0YSkK
KyAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
V3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Cit9CisKKy0gKHZvaWQpZG93bmxv
YWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisg
ICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cit9CisKKy0g
KHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkCit7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gpOworCisg
ICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRv
d25sb2FkKTsKK30KKworLSAodm9pZClkb3dubG9hZDooX1dLRG93bmxvYWQyICopZG93bmxvYWQg
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6KE5TRGF0YSAqKXJl
c3VtZURhdGEKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZhaWxXaXRoRXJyb3IpOworCisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQorICAgICAg
ICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IsIHJlc3VtZURhdGEpOworfQorCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZToo
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxv
YWQ6KF9XS0Rvd25sb2FkMiAqKWRvd25sb2FkCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVu
ZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQpOworCisgICAgaWYg
KF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25SZXNwb25zZSwg
ZG93bmxvYWQpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5h
dmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBw
ZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSk7CisKKyAgICBpZiAoX2Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkKKyAgICAgICAgX2RlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZShuYXZpZ2F0aW9uUmVzcG9uc2UsIGRlY2lzaW9uSGFuZGxlcik7
CisgICAgZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOworfQorCistICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZp
bmlzaAoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIEFTU0VSVCgh
X2Rvd25sb2FkRGlkRmluaXNoKTsKKyAgICBfZG93bmxvYWREaWRGaW5pc2ggPSBeKF9XS0Rvd25s
b2FkMiAqKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQorCistIChWZWN0b3I8RG93bmxvYWRDYWxs
YmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkCit7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoX2Nh
bGxiYWNrUmVjb3JkLCB7IH0pOworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413914</attachid>
            <date>2020-11-11 23:14:13 -0800</date>
            <delta_ts>2020-11-11 23:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201111231411.patch</filename>
            <type>text/plain</type>
            <size>202744</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDNjODJiMWJiZDgwNWU1
ZjEyN2M0ZDBjNWJmZTViYjc3MzMxNWMuLmFhYTU5ZTEwOWVkMmE0N2ZjMmUxMWE4ZjdlNWNhMzk3
YWQzNTQxOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5IHdhbnQg
dG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAgICAgICA5
LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlv
biBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBU
aGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2Jq
ZWN0IGJlZm9yZSB0aGVuIGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQg
InN0YXJ0cyIgd2hpY2ggaXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAg
ICAgICAgIHNvIHRoZXJlIHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZG93bmxvYWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICAxMC4gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNv
bnRpbnVpbmcgb3IgY2FuY2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250
cm9sIHRoZQorICAgICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAx
MS4gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVS
ZXNwb25zZSBoYXZlIGJlZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0
aGUgc2FtZSB0aW1lIGFuZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVk
RmlsZW5hbWUgQVBJLiAgYWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVz
ZWQsIGFuZCBub3QgcmVhbGx5IG5lZWRlZC4KKyAgICAgICAgMTIuIGRpZENyZWF0ZURlc3RpbmF0
aW9uIGlzIGdvbmUuICBUaGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3Nhcnku
ICBJZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBm
aXJzdAorICAgICAgICAgICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9u
IGhhcyBkZWZpbml0ZWx5IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMy4gc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNh
bGxlZCBzaW5jZSB3ZSBhZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlLgorICAgICAgICAxNC4gb3JpZ2luYXRpbmdGcmFtZSBpcyBn
b25lLiAgT24gX1dLRG93bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUlu
Zm8gdGhhdCBvZnRlbiBjb250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9u
IHdhcyB0aGVyZSwKKyAgICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGlkQmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlv
blJlc3BvbnNlIHdoaWNoIGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUg
QVBJIHRlc3RzIGZvciBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tEb3dubG9hZCBjYW5j
ZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAg
ICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBzZXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dL
RG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfd2FzVXNl
ckluaXRpYXRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBp
bml0V2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ1dlYlZp
ZXddKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVkaXJlY3RDaGFpbl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCB3YXNVc2VySW5pdGlhdGVkXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IHJlc3VtZURhdGFdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdGcmFtZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0Rv
d25sb2FkIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFy
dENhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjAtMTEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBEZWZpbmUgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4u
MmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERl
c3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9k
b3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShu
ZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0
KQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA1
LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQg
PSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdv
cmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2Un
cmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENh
bGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAy
Y2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZkNDI5Y2Iw
OWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAs
OCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtM
b2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERp
ZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25s
b2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCA5NWY4ZGVjMzAyNTFiODBiYWEyOWNlNTkwODczYTdh
YmFlZmRhOWNlLi41Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDggQEAgdm9pZCBEb3dubG9hZDo6
cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxp
emF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlM
aXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogI2VuZGlmCiAKKyAg
ICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUg
bWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rvd25sb2FkCisgICAgLy8gYmVjYXVzZSB0
aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBhdGggd2UgZ290IGZyb20gdGhlIGRh
dGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Npb24gZG93bmxvYWRUYXNrV2l0aFJl
c3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBbbV9kb3du
bG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Np
b25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZp
ZXIpKTsKQEAgLTgzLDcgKzg1LDIyIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKIHZvaWQgRG93
bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9kb3dubG9hZFRhc2spOwotICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1
Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICBb
bV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihb
cGF0aCA9IHJldGFpblB0cihtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNr
RmlsZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChO
U0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RP
V05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1vamF2
ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1lIGRh
dGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAgICAgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBbdW5h
cmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lS
YWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHN0
YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtO
U0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0
YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktl
eTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgICAg
ICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0OnBhdGguZ2V0KCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xv
Y2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRB
cmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAg
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNv
ZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHBhdGgpOworI2VuZGlmCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3Vt
ZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyB9OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bWVEYXRhUmVmZXJlbmNlKTsK
ICAgICB9KS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDBiYjg1NzMwNTM4NGNiMzVkNzhhNjRkYWM5NDM0ZDdmYzgyNGQ5
ZjUuLmY4ZmFmYjFjNzY0MTg1MDU3OTY2ZTk0MWU1NjI5NjZiNWQ3YTU3NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkg
KzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGRvd25sb2FkTWFuYWdlcigp
LnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxE
b3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewotICAgIGRvd25sb2FkTWFu
YWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwg
cGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZG93bmxvYWRNYW5h
Z2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBw
YXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBjYWxsRG93bmxvYWREaWRTdGFy
dCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYTc3ZmFiOTYxZGYyZTVlMzA2MTI2OWY1OTJhMmM0
Yzg2OTQ2ZjlkLi42N2Q3NTNmZDA3NmI4YzAxYmM5OGIzMjcwOGIwNmY0MDE5MDUyYmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYs
NiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgU3RvcmFnZU1h
bmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtNDIxLDcgKzQyMiw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpT
ZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJv
Z3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMjBmZmJjYzNmY2RmYWRlYTNjMGEzNDk2YzUyODIyNDg0ZmZk
YWExNS4uMmU0NTE1OWIwOWU5NDQ5YmMwMjA5ZTQyYjVjYzYxNmFhOWNkNWI2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC00OCw3ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAg
RG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJv
b2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQotICAgIFJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAg
ICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERp
ZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggOGE4YWIwYjliODMxY2Fm
NDhmYTIyNDUzMDk4YWZiMjRhYWE4ZjRkZS4uY2I2OTZmMzJhOTNlNWQ2NmViNzBjZDA0OGZlYjE0
MTZhYjk1ODdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lv
bkNvY29hJiBzZXNzaW9uLCBTZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7Cisg
ICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRp
b24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFz
ay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0p
OworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVj
b2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0
aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051
bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0
IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRh
YmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp0YXNrLl9wYXRoVG9Eb3dubG9hZFRhc2tG
aWxlIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJl
c3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZl
cmVuY2UgeyB9OwogICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YVJl
ZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggYjIyNjg4ZTBkYmMxOTJlYjY3Zjc4YjUxNTI0ZWM1MWVkNzE5ZDMzMy4uMzE5ZTE5ZGYy
MjY3Yjg1ZDVkMTZhYmU4YmY4MjBhZTExZmFkMGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzEsNiArNjcxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRy
YXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsn
IkRvd25sb2FkSUQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9h
ZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3
M2UxMDk5NGY1ZGMxMzdmYWY0MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJj
ZGUxOTIwZmI1MDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApA
QCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0Vycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLRmluZFJlc3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCmluZGV4IGM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQuLmU0
OWRmOTQ5YjdhYmJiOWUyMWNlYmMzNjA0M2ViMGI0MDVhNzFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldLQ29u
dGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tO
U0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9X
S0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFs
bG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtXS0Rvd25sb2FkIGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uMmFh
OWNiODVkMDRkYTdkNTg1ODUzYmY1MmVmZGU1NWM0OGViNTg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMjk5LDYgKzI5OSw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVs
ZUxpc3QubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVz
dWx0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVu
dC5oCmluZGV4IGQzN2Y2Mjg2OGI2MTI5N2ExMWFmZmYzODAyYTgwYmE2MTJhNGRjZTUuLmRmZjcz
ZmE2NWJmNmZiMGFkMTdhZmE5OWY1ODJmOTQyZmFmN2EwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSwxOCArNDksMjAgQEAg
ZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBBUEkgewogCitj
bGFzcyBEYXRhOworCiBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERv
d25sb2FkQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5
RGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxlZ2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAppbmRleCAwNjFlMTg2ZGJlODg2YTA3NDIyYmY4M2I3YWZjZmNiYzZhYzll
NmFlLi45Mjk0MDhlYTA1Mzg2NWZiZDk1ZTNkYjQ2NGVlYzhlN2M5NmE5MzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTU0
LDYgKzU0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgRG93bmxvYWRQ
cm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtOTksNiArMTAwLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4p
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxv
d0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApp
bmRleCA3Y2Y1NzcyNGYyYWI5MzM5MDA4ZDFiMmUxZGJkMmU3YTM0ZGYxOTc5Li45ODIwNDY5MmUx
NTdmYzI1MjQ2NGFmNzdmNjdiYmI0ODlmZDA0ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRE
b3dubG9hZENsaQogICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwogICAgICAgICB9CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAg
ICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5k
ZXggZGMyZTBkMTkyMzE1ZWU1NzJkMWQxZjY3OGFiYTYxZDZjMjRkMTM5MS4uZWM2Y2JiNDEyZjhi
NWRmNThlZGQzZDlmZTljOGRmY2IzMmZjODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBXS19FWFBPUlQgV0tDb250ZXh0
UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKFdLRG93bmxvYWRTZXREb3dubG9hZENsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLRG93
bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1
NDdmZjk4YTA1OWY3MjNmZjM5MWNmNDJiMWU5ODAwYjA1NWY1OTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCkBAIC0wLDAg
KzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOwor
QHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
CitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAorCisvKiBAYWJzdHJhY3QgVGhlIHJl
cXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgorICBAZGlzY3Vzc2lvbiBJZiB0
aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3JpZ2lu
YWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xsb3dz
IHRoZSByZWRpcmVjdC4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxh
YmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSBk
ZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMgZm9yIHRoaXMgZG93bmxvYWQu
ICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4g
ZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIGNhbmNlbGxhdGlvbiBpcyBm
aW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUaGUgY29tcGxldGlvbkhhbmRsZXIgaXMgcGFzc2VkIGRh
dGEgdG8gYmUgdXNlZCB0byByZXN1bWUgdGhlIGRvd25sb2FkIGlmIHBvc3NpYmxlLgorKi8KKy0g
KHZvaWQpY2FuY2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUgcmVzdW1l
RGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5E
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQyZTM0MTUwZmVhMTZhMDA1ZmMyOTkwYTUzZGJkZWI5MTdlYzJjMjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZC5tbQpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURvd25sb2FkQ2xp
ZW50LmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0
ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBv
cnQgIldLTlNEYXRhLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitjbGFzcyBEb3dubG9h
ZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0
ZSkKKyAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNU
b1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6
Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEoW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV0pCisgICAgICAgICwgbV9y
ZXNwb25kc1RvRGlkRmluaXNoKFttX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoZG93bmxvYWREaWRGaW5pc2g6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmFpbFdp
dGhFcnJvcihbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpk
aWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6KV0pCisgICAgeworICAgIH0KKworcHJpdmF0ZToK
KyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
CisKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5u
c1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRU
UEJvZHkpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSB3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpzdGF0aWNfY2FzdDxOU0hUVFBVUkxSZXNwb25zZSAq
PihyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpIG5ld1JlcXVlc3Q6bnNSZXF1ZXN0LmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIg
PSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRl
LmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246bmV3UmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjopKV0oV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlv
bkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBz
d2l0Y2ggKHBvbGljeSkgeworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3lDYW5jZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7
CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9saWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYg
KCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpCisgICAgICAgICAgICByZXR1cm4gY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVD
aGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWpl
Y3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxs
ZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rv
cihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhh
bmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBj
YXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwg
PyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVu
Z2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNw
YWNlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxs
ZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFBy
b3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52
YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAg
ICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6
QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICAgICAgW21fZGVsZWdh
dGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbZG93bmxvYWQgPSBtYWtlUmVm
KGRvd25sb2FkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKV0g
KE5TVVJMICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+
Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAg
ICAgICAgICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzRmlsZVVSTCkgeworICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0p
OworICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TRmlsZU1h
bmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAg
ICAgICAgICAgaWYgKCFbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbZGVzdGluYXRpb24g
VVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XS5wYXRoXSkgeworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAg
ICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JE
b21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0p
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0
c0F0UGF0aDpkZXN0aW5hdGlvbi5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQt
PmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpO
U1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfQor
CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYg
KCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkg
ZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVd
OworICAgIH0KKworICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZEZpbmlzaCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0
ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkKV07CisgICAgfQorCisgICAgdm9p
ZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIGZpbmFsCisgICAg
eworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJy
b3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgcmVzdW1l
RGF0YTp3cmFwcGVyKHJlc3VtZURhdGEpXTsKKyAgICB9CisKKyAgICB2b2lkIHByb2Nlc3NEaWRD
cmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJM
RXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0IHVzZXJJbmZv
Om5pbF0gcmVzdW1lRGF0YTpuaWxdOworICAgIH0KKworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rv
d25sb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0Rl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0Rp
ZFdyaXRlRGF0YSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOworICAg
IGJvb2wgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvciA6IDE7Cit9OworCitAaW1wbGVtZW50
YXRpb24gV0tEb3dubG9hZAorCistICh2b2lkKWNhbmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1
bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBk
YXRhKSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSkpOworICAgIH0pOworfQorCistIChOU1VSTFJlcXVl
c3QgKilvcmlnaW5hbFJlcXVlc3QKK3sKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCku
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KTsKK30KKworLSAoaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAg
ICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRl
OihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRD
bGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9kb3dubG9h
ZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEg
bWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGFkMzRiZGFkYzQ0ZWYzMjJhYTJhMmJhZWFlNTk3MmI5MDc0MDU0MQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rv
d25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgorCitAY2xhc3MgV0tEb3dubG9hZDsKKwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5KSB7CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2Fu
Y2VsLAorICAgIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorCitAcHJvdG9jb2wgV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KK0Bv
cHRpb25hbAorCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVj
ZWl2ZWQgYW4gSFRUUCByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhl
IHdlYiB2aWV3IHRoYXQgcmVjZWl2ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBU
aGUgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1
ZXN0IHRoYXQgd2lsbCBiZSBzZW50LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29t
cGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5v
dAorIHRvIHByb2NlZWQgd2l0aCB0aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91
IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGly
ZWN0cyB3aWxsIGJlIHRha2VuLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKily
ZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWNvbXBsZXRpb25IYW5kbGVy
OworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNw
b25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhl
IHdlYiB2aWV3IHRoYXQgcmVjZWl2ZWQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBA
cGFyYW0gY2hhbGxlbmdlIFRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNv
bXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRv
IHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5nZS4gVGhlCisgZGlzcG9zaXRpb24gYXJndW1lbnQgaXMg
b25lIG9mIHRoZSBjb25zdGFudHMgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZQorIE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbi4gV2hlbiBkaXNwb3NpdGlvbiBpcyBOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwKKyB0aGUgY3JlZGVudGlhbCBhcmd1bWVudCBp
cyB0aGUgY3JlZGVudGlhbCB0byB1c2UsIG9yIG5pbCB0byBpbmRpY2F0ZSBjb250aW51aW5nIHdp
dGhvdXQgYQorIGNyZWRlbnRpYWwuCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1l
bnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIgdmlldyB3aWxsIHJlc3BvbmQgdG8gdGhlIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZSB3aXRoIHRoZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0
UHJvdGVjdGlvblNwYWNlIGRpc3Bvc2l0aW9uLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9r
ZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9uZCB0byBhbiBhdXRoZW50aWNhdGlv
biBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCBmb3Igd2hpY2ggd2Ug
bmVlZCBhIGZpbGUgdG8gd2hpY2ggdG8gd3JpdGUuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSBzZXJ2
ZXIgcmVzcG9uc2UsIGlmIHRoaXMgZG93bmxvYWQgd2FzIHRoZSByZXN1bHQgb2YgYW4gSFRUUCBy
ZXF1ZXN0LgorIEBwYXJhbSBzdWdnZXN0ZWRGaWxlbmFtZSBUaGUgc3VnZ2VzdGVkIGZpbGVuYW1l
LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBt
dXN0IGludm9rZSB3aXRoCisgZWl0aGVyIGEgZmlsZSBVUkwgdG8gYmVnaW4gdGhlIGRvd25sb2Fk
IG9yIG5pbCB0byBjYW5jZWwgdGhlIGRvd25sb2FkLgorIEBkaXNjdXNzaW9uIElmIHRoaXMgaXMg
YSBkb3dubG9hZCBvZiBhIGJsb2IgVVJMLCByZXNwb25zZSB3aWxsIGJlIG51bGwuICBzdWdnZXN0
ZWRGaWxlbmFtZQorIHdpbGwgb2Z0ZW4gYmUgdGhlIHNhbWUgYXMgcmVzcG9uc2Uuc3VnZ2VzdGVk
RmlsZW5hbWUsIGJ1dCB3ZWIgY29udGVudCBjYW4gc3BlY2lmeSB0aGUKKyBzdWdnZXN0ZWQgZG93
bmxvYWQgZmlsZW5hbWUuICBJZiB0aGUgZGVzdGluYXRpb24gZmlsZSBVUkwgaXMgbm9uLW51bGws
IGl0IG11c3QgYmUgYSBmaWxlCisgdGhhdCBkb2VzIG5vdCBleGlzdCB5ZXQgaW4gYSBkaXJlY3Rv
cnkgdGhhdCBkb2VzIGV4aXN0LgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZToobnVsbGFibGUgTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqIF9OdWxsYWJsZSBkZXN0
aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4g
dGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbmQgd3JpdHRlbiBkYXRhIHRvIHRoZSBkZXN0aW5h
dGlvbi4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRoYXQgaGFzIHdyaXR0ZW4gZGF0
YS4KKyBAcGFyYW0gYnl0ZXNXcml0dGVuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBA
cGFyYW0gdG90YWxCeXRlc1dyaXR0ZW4gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVu
LgorIEBwYXJhbSB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIFRoZSB0b3RhbCBudW1iZXIgb2Yg
Ynl0ZXMgZXhwZWN0ZWQgdG8gYmUgd3JpdHRlbi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGRvd25s
b2FkIHdhcyB0aGUgcmVzdWx0IG9mIHJlc3VtaW5nIGEgcHJldmlvdXMgZG93bmxvYWQsIHRoZW4K
KyB0b3RhbEJ5dGVzV3JpdHRlbiB3aWxsIGJlIGJ5dGVzV3JpdHRlbiBwbHVzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGRvd25sb2FkZWQuCisgSWYgdGhlIHRvdGFs
IG51bWJlciBvZiBieXRlcyBpcyB1bmtub3duLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIHdp
bGwgYmUgLTEuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0
X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRo
ZSBkb3dubG9hZCBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgorIEBwYXJhbSBkb3dubG9hZCBU
aGUgd2ViIHZpZXcgdGhhdCBmaW5pc2hlZC4KKyovCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNo
OihXS0Rvd25sb2FkICopZG93bmxvYWQ7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhl
IGRvd25sb2FkIGhhcyBmYWlsZWQuCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0
IGhhcyBmYWlsZWQuCisgQHBhcmFtIGVycm9yIFRoZSBlcnJvciBpbmRpY2F0aW5nIHRoZSBmYWls
dXJlIHJlYXNvbi4KKyBAcGFyYW0gcmVzdW1lRGF0YSBUaGUgZGF0YSB0byBiZSB1c2VkIHRvIHJl
c3VtZSB0aGlzIGRvd25sb2FkIGlmIHBvc3NpYmxlLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVz
dW1lRGF0YToobnVsbGFibGUgTlNEYXRhICopcmVzdW1lRGF0YTsKKworQGVuZAorCitOU19BU1NV
TUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNmM4OTQyMGU2ZTI3YjE0M2Ri
MDI1NDA1Y2IzM2I3YTlkN2M0YWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25s
b2FkLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFByb3h5PiB7CisgICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gV0tEb3dubG9hZDsKK307CisKK30KKworQGludGVyZmFjZSBXS0Rvd25s
b2FkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2Vi
S2l0OjpEb3dubG9hZFByb3h5PiBfZG93bmxvYWQ7CisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93
bmxvYWREZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQppbmRleCA3NzA3NWJkNjY0YmIx
YjkxNTdkODAzYTRmYmFlYjEzOGI3M2JmMzQzLi5jZjM1N2RmMGFhMjczMDVkMzA2ZTQ3ZDk2ZDQ4
YjZhZDM0ZmM2MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb24ubW0KQEAgLTQ1LDYgKzQ1LDExIEBACiAgICAgcmV0dXJuIF9uYXZpZ2F0
aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRh
dGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCistIChCT09MKV93YXNVc2VySW5p
dGlhdGVkCit7CisgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9
CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCiAtIChXS0NvbnRlbnRNb2RlKWVmZmVjdGl2
ZUNvbnRlbnRNb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCmluZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2Ux
YmUzNTEwZWI4ODRhMDU4NzguLjI5MzU2MmRlMTM4YzE1M2FmYzllMjI2ZWJlYmY1MzcxOWQ3YmQy
ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25EZWxlZ2F0ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiAKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBj
bGFzcyBXS05hdmlnYXRpb25BY3Rpb247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBA
IC01NCw2ICs1NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSkgewogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpIHsKICAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCwKICAg
ICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93LAorICAgIFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlv
cyg4LjApKTsKIAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUgcHJvdG9jb2wgY2FuIHByb3ZpZGUKQEAgLTE2NCw2ICsxNjYsMTQgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAqLwogLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93RGVw
cmVjYXRlZFRMUzoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qCisgQGFic3RyYWN0
IENhbGxlZCBhZnRlciB1c2luZyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhlIGRvd25s
b2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uUmVzcG9uc2UgVGhlIHJlc3BvbnNlIHRoYXQgaXMgYmVp
bmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2Fk
LgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uUmVz
cG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRpZEJlY29t
ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVM
TF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmMDljMmE4ZTZhNWI3ODU1
YmZmOWVhNWZjMzIxMzJhMTUzZWIxNWI1Li4yMzRhMGIwMmNiZmI4YTM3ZGVkZWY5Mjg5MTU1Y2U3
YTdlOTlhNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC01OCwxMSArNTgs
MTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeSkgewogICAgIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUsCiB9IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCi1zdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCA9
IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lP
U19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDIpOwogc3RhdGljIGNvbnN0IFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBp
b3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd0luTmV3UHJvY2VzcyA9IChX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dp
dGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA9IChX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
dyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQiLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyArIDEp
OwogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25Qcml2YXRlLmgKaW5kZXggOTE1ODlkMTJhNDIzN2NkNzNiYjczZWQ1Yzk3
YjYxYzE3YTFmMTM5Yy4uYTdhN2Q5MjlkZmY4NzA0M2U3ZjNhNjAzZjY4ZGU0MDdkMGQzMGFjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
blByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uUHJpdmF0ZS5oCkBAIC0yNyw0ICsyNyw1IEBACiAKIEBpbnRlcmZhY2UgV0tOYXZpZ2F0
aW9uIChXS1ByaXZhdGUpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
VVJMUmVxdWVzdCAqX3JlcXVlc3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgX3dhc1VzZXJJbml0aWF0ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggMDM1OTFlOGE4ZmE5MDQyMTIwOWI5Mzkw
ZDRmM2Q4ZTA3NjgwZGY2MS4uMjc3ZDhkMWY5YzhiZjRmYmEwZmI4NjZiM2RmZGYyOWNlNzlhMDhk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0KQEAgLTI4LDExICsyOCwxMyBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50
LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCisjaW1wb3J0ICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbXBvcnQgIkxlZ2FjeURvd25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAj
aW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGll
cy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgpAQCAtNTYxLDEy
ICs1NjMsMTIgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNIYXNoTWFwVG9EaWN0aW9u
YXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKIAogLSAoX1dLRG93bmxvYWQgKilf
ZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3Rv
cmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJl
cXVlc3QpKTsKKyAgICByZXR1cm4gW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoX3Byb2Nlc3NQb29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9y
ZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0KSldOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9y
ZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3Rv
cmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRo
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3
cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVE
YXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWlu
ZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93
bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpk
YXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6
Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2Fs
bERvd25sb2FkRGlkU3RhcnQ6Ok5vKSldOwogfQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09y
aWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAppbmRleCA3YzRmZTRjZDhmYjlhZmZhOGNhMDMxOWI5NDg5M2MxZjRlNjg5NjZjLi5m
MjQ5ODBjOWNmZjY3ZWNkM2JlZGU3M2ZlMjQwMDgxOGFhNTBjMDQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aApAQCAtNjIsNyArNjIsNyBAQAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMykpOwogI2VuZGlmCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBz
ZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rv
d25sb2FkRGVsZWdhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRE
b3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVn
YXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxv
YWREZWxlZ2F0ZSIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RC
QSkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXV0b21hdGlvbkRl
bGVnYXRlOikgaWQgPF9XS0F1dG9tYXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmIFRBUkdFVF9P
U19JUEhPTkUKQEAgLTgzLDggKzgzLDkgQEAKIAogLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVB
c0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0OihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKIAotLSAoX1dLRG93bmxvYWQgKilfZG93
bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6
KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKLS0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5T
RGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICop
ZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKKy0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUg
KilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0
IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CistIChf
V0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDoo
TlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBX
S19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcuX3Jlc3VtZURvd25s
b2FkV2l0aERhdGE6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEp
LCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxl
ZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZv
aWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQp
LCBpb3MoMTIuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5oCmluZGV4IDc2MWExZGEwZjY1YjM2OTk3YmFiNDllNjZjMmMyOGU5ZmYwYjBjOGMuLmUx
YWZjMjM2OGE5YTU3ODIyMTEzMWFmY2Y1ZWY4MDI0MWM4MmU4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBjbGFzcyBX
S0JhY2tGb3J3YXJkTGlzdEl0ZW07CiBAY2xhc3MgV0tDb250ZW50V29ybGQ7CitAY2xhc3MgV0tE
b3dubG9hZDsKIEBjbGFzcyBXS0ZpbmRDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLRmluZFJlc3Vs
dDsKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKQEAgLTQ1MCw2ICs0NTEsMTggQEAgVGhlIHVuaWZvcm0g
dHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVs
YXRlZCBwYXN0ZWIKICAqLwogKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVy
bFNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAorLyog
QGFic3RyYWN0IEJlZ2lucyBhIGRvd25sb2FkLgorIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0
IHNwZWNpZnlpbmcgdGhlIFVSTCB0byBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisgKi8KKy0g
KHZvaWQpZG93bmxvYWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyogQGFic3Ry
YWN0IFJlc3VtZXMgYSBkb3dubG9hZCB0aGF0IGZhaWxlZCBvciB3YXMgY2FuY2VsbGVkLgorIEBw
YXJhbSByZXN1bWVEYXRhIERhdGEgZnJvbSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxX
aXRoRXJyb3Igb3IgYSBXS0Rvd25sb2FkJ3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBo
YXMgcmVzdW1lZC4KKyAqLworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEg
KilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJW
aWV3CiAgQGRpc2N1c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRo
ZSBub3JtYWwgdmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2
YWx1ZSB0byBuaWwgd2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzEx
Mzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDljNjc0Li43NTZmNjQxMzM0MDdlOWYyZGM0ZWEyZTRiMDdj
ODVjY2ExOTg0ZDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlz
dEl0ZW1JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3du
bG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RmluZENvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisj
aW1wb3J0ICJXS0ZyYW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRl
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxh
eWJhY2tTdGF0ZS5oIgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtl
eWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVm
LAogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3Rl
ckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKWRv
d25sb2FkUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRv
d25sb2FkUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25s
b2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsK
K30KKworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAg
ICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQ
b2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNE
aWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNO
dW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVz
dCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07Cisg
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2Rp
Y3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJd
OworCisgICAgaWYgKCFwYXRoKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYg
VVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsg
ZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxvYWQgaWYgdGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4
aXN0LgorICAgIC8vIElmIHNvbWVvbmUgaGFzIHJlbW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUs
IG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0aGF0IGxvY2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBb
W05TRGF0YSBkYXRhXSB3cml0ZVRvRmlsZTpwYXRoIGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgor
CisgICAgX3BhZ2UtPnJlc3VtZURvd25sb2FkKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcocmVzdW1lRGF0YSksIHBhdGgsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxv
YWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOwor
fQorCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9y
d2FyZExpc3RJdGVtICopaXRlbQogewogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFj
a0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFk
ZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMuLjUwYTYyYjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5
Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZTsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwog
QGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5o
CmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQwYzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJh
MWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRlOTAwNDVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAog
QGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNT
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBX
S19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2Fk
IDogTlNPYmplY3QgPE5TQ29weWluZz4KIAotLSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5
cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNh
bmNlbDsKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5
ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJkYmMuLmQ1ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5Mjdm
NTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KQEAgLTI4LDY2ICsyOCw4NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9h
ZENsaWVudC5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TRGF0YS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9X
ZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6
T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitzdGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2Fk
ICosIF9XS0Rvd25sb2FkICo+ICpkb3dubG9hZFdyYXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNYXBUYWJsZT4+IHRhYmxlOworICAgIGlmICghdGFi
bGUuZ2V0KCkpCisgICAgICAgIHRhYmxlLmdldCgpID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09i
amVjdHNNYXBUYWJsZV07CisgICAgcmV0dXJuIHRhYmxlLmdldCgpLmdldCgpOwogfQorQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVw
cmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQorQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJ
R05PUkVfV0FSTklOR1NfRU5ECiAKLS0gKHZvaWQpZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRG93bmxvYWQyOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQt
Pn5Eb3dubG9hZFByb3h5KCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgX2Rvd25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNl
bGY7Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRX
aXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9h
ZCAqd3JhcHBlciA9IFtkb3dubG9hZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRd
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtb
W19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVh
c2VdOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6
ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewot
ICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChh
dXRvKikgeworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFr
ZVJlZigqX2Rvd25sb2FkLT5fZG93bmxvYWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQt
PmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAK
IC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25s
b2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVi
bGlzaFByb2dyZXNzKFVSTCk7CiB9CiAKIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAg
ICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25s
b2FkLT5fZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilv
cmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rv
d25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdl
ID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1
cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0
Q2hhaW4KIHsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hh
aW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkoX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkg
LT4gTlNVUkwgKiB7CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoQk9PTCl3YXNVc2VySW5pdGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+
d2FzVXNlckluaXRpYXRlZCgpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2Fz
VXNlckluaXRpYXRlZCgpOwogfQogCiAtIChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1l
RGF0YSgpKTsKIH0KIAogLSAoV0tGcmFtZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBA
QAogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2Fk
OworICAgIHJldHVybiAqX2Rvd25sb2FkLT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNlYzVmOWRiNzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFj
Y2FjYjVmNzBlMTRhZTNiOTczODdmNDY4YTgzYTdiYjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAt
MzEsNiArMzEsOCBAQAogCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+
CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQp
X2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMp
KTsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAo
Qk9PTClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNl
RGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSwgaW9zKDExLjMpKTsKIAogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0
ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3Mo
MTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4wLCAxMS4zKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5
MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIxNzM3NTdhNTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3du
bG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5o
IgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVt
cGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0Bp
bnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFp
blB0cjxXS0Rvd25sb2FkPiBfZG93bmxvYWQ7CiB9Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQg
KCkgPFdLT2JqZWN0PgogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5Yzll
NWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEzZmUuLmVhZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZj
MjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJL
aXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9h
ZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9h
ZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93
bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAot
ICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSop
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9h
ZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsK
ICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRD
bGllbnQuaAppbmRleCA3NWQ1MTIyMWQyYzM1MTgyZjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5i
N2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBjYmY3NTY1MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2
LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpE
b3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwor
ICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwo
RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsKICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9h
ZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50
Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZlZWJjZDIzNjk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2
MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0YjYzNTk1NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2
ICszMyw3IEBACiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
ICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAg
LTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCisKIExlZ2FjeURvd25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9h
ZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVn
YXRlKGRlbGVnYXRlKQogewpAQCAtNzYsNyArNzksNyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UAogfQogI2VuZGlmCiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdh
Y3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0
YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxv
YWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgdWludDY0X3QKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNX
cml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRX
aXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3Jp
dHRlbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0
ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMx
LDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCks
IEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNv
bXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVy
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxl
Z2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURl
c3RpbmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQog
CiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4Miw3ICsxODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNl
bmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNo
KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihk
b3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRD
cmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTIwNCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2Fk
UHJveHkmCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFs
bG93T3ZlcndyaXRlID0gTk87CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAg
ICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6
JmFsbG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVy
d3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9P
TCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0
aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwx
MCBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZp
bmlzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV1dOwogfQogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRh
KikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94
eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1
ZXN0LnVybCgpLnN0cmluZygpXV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dL
RG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpy
ZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25s
bwogfQogI2VuZGlmCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKaW5kZXggNTc0YzM0MmYzM2RjZjA2Y2NhZGExMWYwYmQyZDA5N2VjNWE5
NTdhMy4uODY5YmM2OWUyNmRmZTVkNWZhMzgwYzE2YWRiZDlkM2QxZjdkZWU1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2
ICsxMjYsOCBAQCBwcml2YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBVUkwmKSBvdmVycmlkZTsKIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93
bmxvYWRQcm94eSYpIGZpbmFsOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQg
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAg
ICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpAQCAtMjM4LDYgKzI0MCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZl
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7Cisg
ICAgICAgIGJvb2wgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9u
R2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBjNDEw
MmZmNTJiOTVlMzIzNDU5MGNlOWUwMzE3NjUyOTVlOTZiZGE3Li5iNGY5ODNlNjkzOTYyZmE3MmFl
Y2JmNTk5NjkzMDdjODdlODJhMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1
dGhvcml6YXRpb25Db29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBv
cnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGlj
dGlvbmFyeS5oIgpAQCAtMTg3LDYgKzE4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXRO
YXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YkNyeXB0b01hc3RlcktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3Om5hdmlnYXRp
b25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1
cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2
aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRp
b25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVX
aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5h
dmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC01NTUsMTEgKzU1NywxMCBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VS
TFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUo
bmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29u
bmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2No
ZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAg
ICAgICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRl
UG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFu
ZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJs
U2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAg
ICAgICAgICAgIHx8IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJi
bG9iIl0pIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9s
aWNpZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApA
QCAtNjM4LDkgKzYzOSwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAK
KyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAg
IGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVy
LT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAg
IHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJv
eHksIFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGlj
aWVzID0gV1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7
CiAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTc1NCw3ICs3NTgsNyBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdu
b3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5k
b3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExNjgsNiArMTE3
MiwxOCBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXpl
SW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRp
b25SZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtu
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZp
ZXcgbmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNv
bWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykK
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYw
MWY0Y2QwNzdmMzYuLmQ5OWI4Yjg2ZGM3MDc2OTE1MThkNGEyOWI3NjQwY2RlNThmZjMzYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93
bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9CiAK
LURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxvYWRQcm94
eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAg
ICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0cjxBUEk6
OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpAQCAt
MTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJl
Y3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVy
bCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0g
ICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNr
KQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQtPmxlZ2Fj
eURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNzMsMTEgKzE3OSwxNiBA
QCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNy
ZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJy
b3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVE
YXRhLmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9i
amVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlz
aGVkKCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGll
bnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJi
M2EzNWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uNGQyMGIxNmRjMTc4YTQ2NjBiYmZlNzRjODUwMzYw
YTM4M2NjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw4IEBAIHB1YmxpYzoKICAgICBBUEk6OkZy
YW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAg
IEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFw
JiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7
Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3Rh
cnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxs
YmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCiAgICAg
Ly8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAtMTIw
LDYgKzExNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKIAor
cHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBX
ZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKwor
ICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKwogICAgIERvd25sb2Fk
UHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4gbV9kYXRhU3RvcmU7CiAgICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fY2xpZW50OwpA
QCAtMTM0LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENo
YWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6
OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3du
bG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNmVlMjZkMDQ2YjBiMjE4ODcwNzNlNmVlNzM0OTg0M2Rh
ZDMzNWFmYS4uYzFmZTI0MWEyZWEzNzFiMTdkM2IzODU1NzA0OTRjM2QyNTE5MjEyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMzEzODYxNzBkMjYwMTVhN2EwMjllZTRiOTFmYmE4YjYzNzk1ZTRlNy4uYjY3
NTY0YWMyNTMxYmFiOTI3NDQxZmIzOTZkZTVkMjBmNGRjMDUyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTY4LDcgKzMxNjksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lB
Y3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246
OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikgewotICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShw
b2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwg
V1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4NSw3ICsz
MTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWNpZXMgPSBXVEZN
b3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlv
biwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0
cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFz
IGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlz
Q2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
c2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUo
c2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMSwxMSAr
MzIyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNp
ZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9j
ZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51
ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihw
b2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0
ciA6IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUo
b3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5l
d1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpX
ZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVl
TG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVm
UHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRp
ZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0Miwx
MyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rp
b246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAg
ICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3du
bG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5m
bygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENh
bGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvblJl
c3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpXSAoYXV0byogZG93bmxvYWRQcm94
eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWRQcm94eSkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBGSVhNRTogT25jZSBfV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8gbG9uZ2VyIHVzZWQsIHdlIHNob3VsZCBhc3Nl
cnQgbmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVyIG51bGwgaGVyZS4KKyAgICAgICAgICAgIGlm
IChuYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50
LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgKm5hdmlnYXRpb25S
ZXNwb25zZSwgKmRvd25sb2FkUHJveHkpOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5hdmln
YXRpb24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdh
dGlvbi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGly
ZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDk0LDcgKzUx
MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRF
UklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0
aW9uKHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJv
Y2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVz
ZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3Rh
dGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsK
KyAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25v
cmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIs
IG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUzMjUsNyAr
NTMzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJ
RCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVy
KSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVj
dFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0
OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpAQCAtNTM2Myw4ICs1MzcxLDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2Vzcywg
cmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2Uu
dXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0
aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVs
bHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRo
aXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0
dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xp
Y3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdl
YlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBw
cm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTog
QXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xp
ZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2Fm
ZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM3MywxNCArNTM4
MywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxp
c3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdU
Rk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91
bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFp
blJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVs
c2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyks
IHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVz
cG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAt
NjAxOSw2ICs2MDI3LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVl
c3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25s
b2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3du
bG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVE
b3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENhbGxE
b3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2so
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxvYWQod2Vi
c2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2FkLnNldERp
ZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsK
ICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJkZjExYmE0NjY0NzZjMjdiMzJhNWI5ZmM5
ZmVlMzU1N2YyMGE3ZDUuLmY1MjI3NTE1MjNkNmZmYmRmMGYyOTJhMThlMmU2NDY1NTA5MDA2MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTYyLDcgKzExNjIs
NyBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBlbnVt
IGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9Owot
ICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0g
eyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4mJiwgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8UG9saWN5RGVjaXNp
b25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
OjpObyk7CiAgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJl
ZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3Zl
ZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwpAQCAtMTI3
Nyw2ICsxMjc3LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3Jl
YXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQ
dHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFuZGxl
RG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2Fk
KGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3dubG9hZFJl
cXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dv
cmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCA2MzQ4MDBiMjg4MzIwYmY5NDcyNDY5MzY3YTlhNDIyM2ZmMjNiMzRm
Li44NjA5ZWVmNzM1ZmIzOGMxODhiMmU1ZjM2ZWMwMzhkMWFjNjZkNGM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBE
b3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi1E
b3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFT
dG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6
OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rvd25sb2FkUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWRE
aWRTdGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94
eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKIApA
QCAtMTE0OSw3ICsxMTQ5LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3Vt
ZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAoIXBh
dGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25s
b2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3Rv
cmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2FsbERvd25sb2Fk
RGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWNmZTZkNDcwZmNhYzIwZTJkYWQw
MjBkNDQ1ODNmMmE3NjY4MjY5Mi4uMzc4MTA4NTcxMWFmNjMzYjExZWZlZTU3NGI0MWZlOWMyNjA0
Y2UxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTcs
NiArMTE3LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Ro
cm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0
IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7
CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxB
UEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2Vi
UHJvY2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwNSw3ICsy
MDYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdl
YnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0g
eyB9KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3Jl
JiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25s
b2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2Fk
RGlkU3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJ
bml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVlOTk3MTAx
OTYwMzZiM2ZhMWJmZTMxMzE1M2I4OWYyODg4N2QzOS4uODhhMzQ5ZTM5ZmIwNzc0OTFmZmY5NTk3
YWQzN2M0MDQ3ZTNiN2Y0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0xODEyLDYgKzE4MTIsOSBAQAogCQlDRUU0QUUyQjFBNURDRjQz
MDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9
OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAw
MzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0
MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tE
b3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYy
QjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIg
LyogV0tEb3dubG9hZEludGVybmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1
RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBD
b29raWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQ
cml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlB
QTI0RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhV
RFZpZXcubW0gKi87IH07CkBAIC01MzU2LDYgKzUzNTksMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4
NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2Vh
cmNoUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJj
aFBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVD
QjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLRG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdL
RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rv
d25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUy
M0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29u
dGVudFdvcmxkUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nv
bnRlbnRXb3JsZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2
MzExMzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzQ5OCw2ICs3NTA1LDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0
QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2
QjIyOUYyRDRCMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAq
LywKIAkJCQk1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvUHJpdmF0ZS5oICovLAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25s
b2FkLmggKi8sCisJCQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0g
Ki8sCisJCQkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5o
ICovLAorCQkJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwu
aCAqLywKIAkJCQkxQUY0NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJ
CTFBRjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJB
MTk0Njg4RkQwMDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTExODE2LDcgKzEx
ODI3LDEwIEBACiAJCQkJQkM1RDI0QzUxNkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2
YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tE
T01UZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyog
V0tET01UZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEyODhD
RDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkEy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9n
cmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdL
RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZC
NzdFMDA5RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFlOTRiMTAwNzUyMThk
MzlkYzMxZGNmYjA0NmFhODY1Yjk1MTE2Yi4uZTI2OWYxN2IxY2NkNjllMTNiMTdkMDFiNTQ2MTUy
YWE2Njk3YWZiNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTExLTExICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBT
UEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0
NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1b
QmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9E
b3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5h
dmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9h
ZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmlu
aXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0
U2VydmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAg
ICAoc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRz
KToKKyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25s
b2FkVGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0
ZUZpbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2Vi
VmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBP
bk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgor
ICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxv
YWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90
YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBkb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVE
b3dubG9hZDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVk
LgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRl
c1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9y
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWRE
aWRDYW5jZWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOiBDb3BpZWQg
ZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tLgor
ICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpd
KToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtU
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0
ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAg
ICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0p
OgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGlu
YXRpb246XSk6CisKIDIwMjAtMTEtMTEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUgQ2hlY2tPdXRTb3VyY2Ug
c3RlcCBmb3IgbmV3IGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Nv
dXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2
OGFmMjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0Nv
Y29hLnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1t
CiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNv
Y29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3Rv
Y29sLm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzZDEyNzQ1MzhhNzM2YTBjZGE1NTM0YWEzNzI2YWU2OTAzYTBmNDY3Li41MzU3ZDExY2QxNTI0
NTg0OTA4NDMwZTVlODY2NWU2ZTUyZjMxMGYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjIwOSw4ICsyMjA5LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3Jp
cHREdXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2Fs
aXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQw
NzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERl
bGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25s
b2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFF
QjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1
QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVn
SW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1
RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yNzkzLDYgKzI3OTMsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJW
aWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
REM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25h
cnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVn
YXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRo
ID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2Fj
aGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVC
Mjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVn
YXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzExMyw4ICszMTE1LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8q
IFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENv
bnRleHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRl
c3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFF
QjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAw
OEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEy
MDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0
RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVD
NzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAq
LywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9j
dW1lbnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5MTMxMTAxZjJjZGQ5NTA5ODY3
ZWZlOTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDczMjM5M2IzNGNhZWVlMGFlN2Iz
MzkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgVEVTVChDb250ZW50
RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAtICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05h
dmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAg
ICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1Yzgw
YzZmNzliZDM1ZWZjMDguLmIyNTQ3NThkYmY4ZjQ2Y2IxYTQ0MzRjZTJjM2U5ZGViYTQ1ZDNlNzUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQg
IlRlc3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsxNzgsNyBAQCBURVNUKF9XS0Rv
d25sb2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRpb24gQ29udmVydFJlc3BvbnNl
VG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNp
b25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3du
bG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5p
c2hOYXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dLTGVnYWN5RXJyb3JEb21haW4s
IGVycm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24gPSBZRVM7
Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAgICBpZiAoX3Jlc3BvbnNlUG9s
aWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0
YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTk4NSw3ICs5ODks
NyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQp
CiB7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKTsKICAg
ICBfZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9
IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERv
d25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2Fk
TmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9XS19TVFJFUShm
aXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAK
ICAgICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYnVu
ZGxlLWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5
Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdh
dGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3du
bG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUsNyBAQCBURVNUKFdlYktpdCwg
RG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1RS
VUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
Zmlyc3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwog
Ci0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBp
c0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBA
IC0xMTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMpCiAgICAgcmV0
dXJuIFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQogCi1URVNUKF9XS0Rvd25sb2Fk
LCBSZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9vbCB7IE5vLCBZZXMgfTsKK2Vu
dW0gY2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9vbCB7IE5vLCBZZXMgfTsKKwor
c3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxvYWRUZXN0U2VydmVyKEluY2x1
ZGVFVGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6OlllcywgRnVuY3Rpb248dm9pZChUZXN0
V2ViS2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0gbnVsbHB0cikKIHsKLSAgICB1
c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29u
bmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICBy
ZXR1cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpLCBj
b25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24p
IG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAg
IGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25u
ZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2Vu
ZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIK
LSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVj
dGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBjb25uZWN0aW9uLCB0ZXJtaW5h
dG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFyPiYmKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAg
ICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRl
RVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3RcclxuIiA6ICIiLAogICAgICAg
ICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBs
ZS50eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAw
PignYScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCB0
ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVybWlu
YXRvcihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rp
b24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0
KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9y
PGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIo
cmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkp
KTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAg
ICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgpAQCAtMTIyMCwx
NiArMTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgIH0pOwor
ICAgIH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKE5T
VVJMICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0
aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgs
IDEwMDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKKyAgICBpZiAo
ZmlsZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5ndGggPT0gMTAwMDB1KSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQorICAgICAgICAgICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAn
YScpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCisgICAg
ICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5i
eXRlcylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7IFtdKFRlc3RX
ZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJl
Y2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJIVFRQLzEu
MSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAg
ICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAgICAgICJDb250
ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxu
IgorICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAg
ICAgICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAgICBOU1VSTCAqdGVtcERpciA9
IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6
WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5TVVJMICpmaWxlLCBjb25zdCBT
dHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBb
TlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNv
bnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgoKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKyspCisgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgZXhwZWN0
ZWRDb250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05T
VGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93
bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURp
cmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
ImV4YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1v
dmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAq
ZmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0
Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6
ZmlsZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQorCitURVNUKF9XS0Rvd25sb2Fk
LCBSZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwogCiAgICAgYXV0byBuYXZp
Z2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwog
ICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQs
IFdyaXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWws
IEZpbmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1
bWUpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IGRvd25sb2FkOwogICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAotICAgIGF1dG8gZG93bmxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8g
ZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIG5l
d10pOwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxl
bmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBOU1N0cmluZyAqKSkgewogICAg
ICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KCJleGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25s
b2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQs
IHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVu
ZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMxNyw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkQ3Jl
YXRlRGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpkZXN0aW5hdGlvbikg
ewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7
Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgW3RlbXBEaXIgVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRoKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9
OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRDYW5jZWwgPSBeKF9XS0Rv
d25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpD
YW5jZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkK
ICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVwKDEwMDAwKTsKIAotICAgIE5T
RGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhwZWN0
ZWREb3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAw
MHUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7Ci0gICAgaWYgKGZpbGVD
b250ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkr
KykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNv
bnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkg
PCAxMDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAgIH0KKyAgICBjaGVja1Jlc3Vt
ZWREb3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKIH0KIAogQGludGVyZmFj
ZSBEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxl
Z2F0ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lz
aW9uSGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5h
YnNvbHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkKLSAgICAgICAgZGVjaXNpb25I
YW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDExMzMgQEAgVEVTVChfV0tEb3du
bG9hZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5PjxpZnJhbWUgc3JjPSdodHRwOi8v
MTI3LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNl
VVJMOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCitu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFj
az4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxl
Z2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5z
aXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5z
aXplKCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVj
dGVkQ2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaW5pc2hTdWNjZXNzZnVs
bHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZv
aWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVz
dGluYXRpb24pCit7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJl
dGFpbmVkRG93bmxvYWQ7CisKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJl
c3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRv
d25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQp
CisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRv
d25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkuZGVsZWdhdGUpOworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25s
b2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3du
bG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dy
aXR0ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4g
PT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsK
KyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxv
YWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9F
UShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93
bmxvYWQgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWsp
OworICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaCk7CisKKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9u
KTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmlu
aXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9h
ZERlbGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0
NWsgPSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVs
ZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVu
LCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0
ZW4pOworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDAp
OworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9h
ZGVkRmlyc3Q1ayA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJz
dDVrKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3du
bG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3du
bG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERv
d25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJl
c3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmlu
aXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQor
ICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZd
IChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZv
ckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAg
IH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBf
X2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWlu
ZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5l
ZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5k
RmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRh
aW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93
bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNh
bmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVE
YXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0
YSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRl
RVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7Cisg
ICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJt
aW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1w
RmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
cnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAg
RVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAg
ICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdv
cmsgaW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9O
T19DT05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2
ZWQpCit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29u
bmVjdGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNl
cnZlckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0
YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2Fz
ZSAxOgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAg
ICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsK
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBm
aWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIK
KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVl
c3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJl
cXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50
LUxlbmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5n
PDEwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJt
aW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRS
ZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQg
KiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNU
X0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAg
ICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBi
b29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZp
bmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVl
OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoKTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBF
WFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcp
KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVy
cm9yLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCisjZW5kaWYKKwordm9pZCB0
ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUp
OworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNh
bmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEg
PSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEp
CisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0
ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNo
ID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAg
ICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1l
RG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3Vt
ZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29u
bmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBt
dXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVj
dG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQt
TGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0
aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRU
UFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsg
c2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciByZW1v
dmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsKKyNl
bmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEw
MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAg
ICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERv
d25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9u
Z1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEV4
dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rp
b25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3Rvcjxj
aGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisg
ICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAg
ICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjog
YXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykK
KyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1
ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNU
X1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCBy
ZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3Ry
aW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxy
XG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2QnKQor
ICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0g
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdE
aXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbWyhOU1N0
cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+
KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25nU3Ry
aW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAwPign
ZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRh
KQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNl
OworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOltA
ImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxv
YWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2Fp
dEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBj
YW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRh
ID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkK
KyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAg
ICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25s
b2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25s
b2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07Cisg
ICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgp
OworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwg
VW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVj
dGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7
CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRl
bGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAg
IH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2
NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9
IDUwMDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRv
dGFsQnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2Fk
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0g
ZmFsc2U7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVn
aHRFeGNlcHRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0
YXRpYyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAg
ICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJD
dXN0b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0
VGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRp
cmVjdEFsbG93KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxl
Q29weV0gYXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19i
bG9jayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBkb3dubG9h
ZFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5T
SFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkg
d2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJD
dXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFs
bG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5h
bWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07Cisg
ICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAg
ICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZl
ci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBh
dXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJS
ZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24g
PSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0
UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNv
bHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1
c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFi
c29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICB9
OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9O
VUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFp
biwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
TlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAg
ICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxS
ZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAg
IH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVy
IHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5y
ZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25s
b2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5l
Y3RUb0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9
XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisg
ICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJv
ZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBk
aWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlk
RmluaXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAi
aHR0cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZp
bmlzaCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNo
KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0
Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQg
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICos
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVk
ID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRl
ZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRU
UFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9
CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQi
KTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9h
ZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpy
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgRVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklY
TUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93
bmxvYWQsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpu
aWxdOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsK
KyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3du
bG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93
bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBhdXRvIHJldGFpbmVkRGVsZWdh
dGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShb
W0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7
CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgcmV0YWluZWREZWxlZ2F0
ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAg
cmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAgICAgICByZXRhaW5lZERl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAg
ICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9h
ZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAg
ICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07Cisg
ICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBV
dGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVs
ZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJv
ciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxl
ZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAg
ICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICos
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tS
ZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxv
YWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1v
amF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNl
cnZlciB0cnVzdCBldmFsdWF0aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9B
RFMpCitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlBy
b3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBy
ZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25N
ZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBb
TlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLnNlcnZlclRydXN0XSk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAg
ICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAg
IGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVu
dCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOwor
fQorI2VuZGlmCisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBI
VFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
X19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAg
Ly8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBm
b3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBF
Q1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5n
ZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0
aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
bmlsKTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dl
YlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdl
KTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNF
KExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQg
dGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZh
bHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgor
ICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBOU1N0
cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsi
CisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAg
ICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9hZCA9ICdkb3dubG9hZEZpbGVuYW1l
JzsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBv
bmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0
cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNl
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9u
c2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJM
LnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVu
YW1lLCAidW5rbm93biIpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgImRvd25sb2FkRmlsZW5h
bWUiIGJ1dCB0aGF0J3MgY3VycmVudGx5IG9ubHkgcGlwZWQgdG8gdGhlIG5hdmlnYXRpb24gYWN0
aW9uLCBub3QgdGhlIHJlc3BvbnNlLgorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9i
UmVzcG9uc2VOb0ZpbGVuYW1lKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIK
KyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwz
XSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAg
ICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25s
b2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhv
c3QsICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
QmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQor
eworICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAg
ImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIK
KyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5j
bGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJs
b2IoKSc+PC9ib2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhU
VFBTZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lm
cmFtZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBO
U1VSTFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJh
bWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJl
cXVlc3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNo
aWxkRnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAg
IE5TU3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFt
ZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVy
LnBvcnQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNw
b25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpIHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl0KKyAgICAgICAgICAgIHx8IFty
ZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxk
RnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10KKyAgICAgICAgICAgIHx8IFty
ZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5k
Y2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXSkKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAi
MTI3LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlP
cmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmls
ZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGls
OjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMyOGNlMWU4OTY3ZjVkYWIwZDg4
OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBlMjZjOTk0NjAw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQqIHBy
b2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7CiAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNv
bnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0NWQx
ZTkwNDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODllOWY5
NmNkNmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyArMTY2
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVS
TDsKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRU
b0Rvd25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hv
dWxkQ29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5kZXgg
YWUyYmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0OGZm
Y2M4ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBURVNU
KFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1
aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRo
RXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVS
TDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxl
Z2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJM
XSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGlj
eUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZB
TFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcgQEAg
VEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNp
ZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMw
NDAwCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcp
CiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5
cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJM
OnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlN
RVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3du
bG9hZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVD
VF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxl
Z2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUg
ZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBjMGEw
ZWE2MGI4YzQ4NWIuLjJhYzhmMjIzYzYxMTc4MjcxMTEwN2UzMmEzYmZmMjcwZGQ4OGMyNWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgK
QEAgLTI0LDE3ICsyNCwzMSBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNp
bXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVzdERv
d25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAq
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRl
RGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBO
U1N0cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2Fk
RGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25s
b2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2VudW0g
Y2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAg
ICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBE
aWRXcml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAg
TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25SZXNwb25zZQorfTsKKwor
QGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxvYWREZWxl
Z2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwgTlNIVFRQ
VVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVj
dFBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBp
bnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93
bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0Rh
dGEgKik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxs
YmFja1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEz
MDJhODAxZmRkMy4uMWE2YmViN2E0MWE2MDUyNzY3MGQyNDdmODE0NWIxMjRmMDBkMzhmOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
CkBAIC0yNiw2OCArMjYsOTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdERv
d25sb2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRl
CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAKLS0gKHZv
aWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAo
X2Rvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7CisgICAgVmVjdG9yPERvd25s
b2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJM
ICopdXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIGlmIChfZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERv
d25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisKKyAgICBBU1NFUlQoX3dpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oZG93bmxv
YWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93
bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNw
b25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFu
ZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBfZGlkUmVjZWl2
ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVu
ZChEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7CisKKyAgICBBU1NFUlQoX2Rl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlv
bkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoo
dWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWlu
dDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxC
eXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7CisgICAgLy8gZGlk
V3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9mIHRpbWVzLCBz
byBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2FsbGJhY2tSZWNvcmQu
aXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdyaXRlRGF0YSkKICAgICAgICAg
X2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwg
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
OihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGFs
bG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCist
ICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgQVNT
RVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgX2RlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBmaWxlbmFtZSwgY29t
cGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxs
YmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgaWYgKF9kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVs
c2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBl
cmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkRmlu
aXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihX
S0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQog
ICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YQog
eworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdp
dGhFcnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCi0gICAgICAgIF9kaWRGYWls
V2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRv
d25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkQ2Fu
Y2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmln
YXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7
Ci0gICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2Vs
KGRvd25sb2FkKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBkb3dubG9hZCk7CiB9CiAKLS0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAg
ICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5n
ZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNl
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlz
aCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9Owor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwogfQogCi0tICh2b2lkKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNT
dHJpbmcgKilkZXN0aW5hdGlvbgorLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxs
YmFja1JlY29yZAogewotICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIF9k
aWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworICAgIHJldHVybiBz
dGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEyYzljYWRhNjE1ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CisK
K0BpbnRlcmZhY2UgVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3du
bG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9h
ZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJM
ICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9u
c2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVp
bnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0
cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxv
YWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93
bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2Fk
ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9h
ZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRi
ZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVkYmYxY2EwODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZQorCistICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZFN0YXJ0KQorICAgICAgICBfZG93
bmxvYWREaWRTdGFydChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVy
bAoreworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCisgICAgICAgIF9k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKK30KKworLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihO
U1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkK
KyAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworfQorCist
ICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVp
bnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRl
c1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZQoreworICAgIGlmIChfZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3Jp
dGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVy
d3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBB
U1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBj
b21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAg
ICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJv
cihkb3dubG9hZCwgZXJyb3IpOworfQorCistICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dL
RG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCisgICAg
ICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0
aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIF9kaWRD
cmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworfQorCitAZW5kCg==
</data>
<flag name="commit-queue"
          id="430622"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413916</attachid>
            <date>2020-11-11 23:35:41 -0800</date>
            <delta_ts>2020-11-12 15:48:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201111233540.patch</filename>
            <type>text/plain</type>
            <size>203332</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGYyZDQzOTEwMjlhNjA5MTcz
MDJjMTQ2MDg4N2ZiMTI4NTkyODc0ZDUuLjA5YzA1MWI2ODhlNzVkNjc5ZThmMjhkMDFkZDIwNjI0
NTJlZGUwMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTExICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5IHdhbnQg
dG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAgICAgICA5
LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlv
biBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBU
aGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2Jq
ZWN0IGJlZm9yZSB0aGVuIGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQg
InN0YXJ0cyIgd2hpY2ggaXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAg
ICAgICAgIHNvIHRoZXJlIHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZG93bmxvYWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICAxMC4gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNv
bnRpbnVpbmcgb3IgY2FuY2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250
cm9sIHRoZQorICAgICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAx
MS4gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVS
ZXNwb25zZSBoYXZlIGJlZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0
aGUgc2FtZSB0aW1lIGFuZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVk
RmlsZW5hbWUgQVBJLiAgYWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVz
ZWQsIGFuZCBub3QgcmVhbGx5IG5lZWRlZC4KKyAgICAgICAgMTIuIGRpZENyZWF0ZURlc3RpbmF0
aW9uIGlzIGdvbmUuICBUaGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3Nhcnku
ICBJZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBm
aXJzdAorICAgICAgICAgICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9u
IGhhcyBkZWZpbml0ZWx5IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMy4gc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNh
bGxlZCBzaW5jZSB3ZSBhZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlLgorICAgICAgICAxNC4gb3JpZ2luYXRpbmdGcmFtZSBpcyBn
b25lLiAgT24gX1dLRG93bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUlu
Zm8gdGhhdCBvZnRlbiBjb250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9u
IHdhcyB0aGVyZSwKKyAgICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGlkQmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlv
blJlc3BvbnNlIHdoaWNoIGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUg
QVBJIHRlc3RzIGZvciBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tEb3dubG9hZCBjYW5j
ZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAg
ICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBzZXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dL
RG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfd2FzVXNl
ckluaXRpYXRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBp
bml0V2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ1dlYlZp
ZXddKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVkaXJlY3RDaGFpbl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCB3YXNVc2VySW5pdGlhdGVkXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IHJlc3VtZURhdGFdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdGcmFtZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0Rv
d25sb2FkIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFy
dENhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjAtMTEtMTEgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjY3NDExKTogVW5hYmxlIHRvICJTdGFydCBFbGVtZW50IFNlbGVjdGlvbiIgd2l0aCBX
ZWIgSW5zcGVjdG9yIGNsb3NlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdj
MTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4uMmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0
MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZv
aWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElE
IGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVj
aWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShuZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9p
ZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9h
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9h
ZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewogI2lmICFQTEFURk9STShDT0NPQSkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA1LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9h
ZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhp
cywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2Fk
LT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQg
QVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAg
aWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisg
ICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7
IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElE
KSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1
ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZkNDI5Y2IwOWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2Fk
OwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsK
KwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3du
bG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZl
cnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdv
cmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdl
YkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRv
d25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+
JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2Fk
KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxv
YWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4m
Jik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCA5
NWY4ZGVjMzAyNTFiODBiYWEyOWNlNTkwODczYTdhYmFlZmRhOWNlLi41Zjc5OWQ1YzA1YjZiMTg0
OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAg
LTcxLDYgKzcxLDggQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRl
ZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0
OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczow
IGVycm9yOm51bGxwdHJdOwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0
ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUgbWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0
byBXS0Rvd25sb2FkCisgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhl
IGxvY2FsIHBhdGggd2UgZ290IGZyb20gdGhlIGRhdGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAg
IG1fZG93bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2Fk
cygpLnNlc3Npb24gZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAg
IGF1dG8gdGFza0lkZW50aWZpZXIgPSBbbV9kb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwog
ICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93
bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZpZXIpKTsKQEAgLTgzLDcgKzg1LDIyIEBAIHZv
aWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29y
a0xvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZFRhc2spOwotICAg
IFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRy
KFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRh
ICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9k
dWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbcGF0aCA9IHJldGFpblB0cihtX2Rvd25sb2Fk
VGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUg
eworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgaWYgKHJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1vamF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3du
bG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1lIGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBm
cm9tIHRoZSB0YXNrLgorICAgICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05T
S2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEg
ZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQ
b2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAg
ICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25h
cnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9i
amVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNs
YXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtO
U1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVj
dEtleSJdIG11dGFibGVDb3B5XSkpOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVj
b2RpbmddOworICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnBhdGguZ2V0KCkgZm9y
S2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgICAgICAgICAgYXV0
byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpk
aWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOwor
ICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAg
fQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworI2VuZGlmCiAgICAgICAgIGF1
dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURh
dGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVuY2UgeyB9OwogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihyZXN1bWVEYXRhUmVmZXJlbmNlKTsKICAgICB9KS5nZXQoKV07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDhhOWQyZjM5
MzllNzE4NmI4MWU4YTdlZmQ0YmJlYjUwYTYzYjJmNTkuLjAxZjlhYzg3NmJiZTMwZTI5MmM5ZGY3
OTI0Y2ZlN2MwYTQ1MDU3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkgKzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElE
IGRvd25sbwogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBk
b3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0
ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9h
ZERpZFN0YXJ0KQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Np
b25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpLCBjYWxsRG93bmxvYWREaWRTdGFydCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCBi
ZTUyNmVmZjFlOGM5MWQzNmVhODliODdlN2I1Njc5NThhOTU2ZmIyLi4yOWQ0YTY4MDBlYzZhYjBk
ODBkYjgzM2Q1NGQyN2YwZDU3N2I4ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jl
c291cmNlTG9hZGVyOwogY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZl
ckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitlbnVt
IGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1
cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90
OwpAQCAtNDIxLDcgKzQyMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShX
YWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3du
bG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0
KTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJM
JiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMGYwMTkw
NTZlNWI1N2Y1MzM0YjhjZTczODI2ZTJmYTA1Njg4OTNiZi4uYTliYmVjZTVhYThkODdiMzQ5MzJh
NjM5MmNmNWFkZTI3ODc4ZTEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00OCw3ICs0OCw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmln
aW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwg
VVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRl
RGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5n
IHN1Z2dlc3RlZEZpbGVuYW1lKQotICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5j
ZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFS
ZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxE
b3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2Fk
KFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VtZURhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25sb2Fk
UHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KaW5kZXggOGE4YWIwYjliODMxY2FmNDhmYTIyNDUzMDk4YWZiMjRhYWE4ZjRkZS4u
Y2I2OTZmMzJhOTNlNWQ2NmViNzBjZDA0OGZlYjE0MTZhYjk1ODdkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZl
clRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29hJiBzZXNzaW9uLCBTZQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBu
b3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20g
Q0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdG
cm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIg
c2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNl
cHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2Fz
dDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNz
ZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBj
bGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3Nd
LCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tl
eWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1
bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9i
amVjdDp0YXNrLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlIGZvcktleTpAIk5TVVJMU2Vzc2lvblJl
c3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMo
W1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7
CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JL
ZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURh
dGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAg
IGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3Vt
ZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVuY2UgeyB9OwogICAgICAgICBkb3dubG9h
ZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YVJlZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJL
aXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggZGYxZDk2ZmExMDI2NjllNjQ4MmJl
YzU0OWQ2OGVmM2YzMzVmMTY3Ni4uYjliODk2YjI3ZGFhNjdiYmEyYzYyYTcyZTRkMmViOGZhZDgz
NGFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5w
eQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzEs
NiArNjcxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6
OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKICAgICAgICAg
J1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10s
CisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5h
Z2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJD
b250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0aW5n
Q29udGV4dFJlcXVlc3QnOiBbJyJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAgICAg
ICdXZWJLaXQ6OkZpbmRPcHRpb25zJzogWyciV2ViRmluZE9wdGlvbnMuaCInXSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAppbmRleCAxZjdhM2RkM2M2OTczZTEwOTk0ZjVk
YzEzN2ZhZjQwNmEyNWVhMjlkLi40MTVkOTE2NDY1OTZjZWYyN2Y4NzE4M2Y1MmNkZTE5MjBmYjUw
NGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zMCw2ICsz
MCw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3IuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tGaW5kUmVzdWx0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9B
UElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5k
ZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4uN2YwNTg0NTZkZWU3
NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tDb250ZW50UnVsZUxp
c3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAj
aW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tE
b3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIK
QEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVO
b2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVj
dChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlw
ZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQgYWxsb2NdOworICAg
ICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRl
eCA1ZDliOTNkMTdhZjI0YmVhYTAyMGUyODUyOTg1NjkwOWJjYjZlYWYyLi44ZjM5OTUzZjM0Y2Y5
YTFiOWI4ZTExMzM5MzBkODUyOGZkMTJiNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0z
MDAsNiArMzAwLDcgQEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQ29udGVudFdvcmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4
dE1lbnVFbGVtZW50SW5mby5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5k
Q29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXgg
ZDM3ZjYyODY4YjYxMjk3YTExYWZmZjM4MDJhODBiYTYxMmE0ZGNlNS4uZGZmNzNmYTY1YmY2ZmIw
YWQxN2FmYTk5ZjU4MmY5NDJmYWY3YTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIGNsYXNz
IEFsbG93T3ZlcndyaXRlIDogYm9vbDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERhdGE7
CisKIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGll
bnQ+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IH5Eb3dubG9hZENsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktp
dDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRTdGFydChX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5l
cigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6Q2FuY2VsKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdURjo6U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ3JlYXRlRGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RG
OjpTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgQVBJOjpEYXRhKiByZXN1bWVEYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVn
YWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFjOWU2YWUuLjkyOTQw
OGVhMDUzODY1ZmJkOTVlM2RiNDY0ZWVjOGU3Yzk2YTkzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNTQsNiArNTQsNyBA
QCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBEb3dubG9hZFByb3h5OwogY2xh
c3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC05OSw2ICsxMDAsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmKSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxs
ZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93TGVnYWN5VExT
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWROZWdvdGlh
dGVNb2Rlcm5UTFMoY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDdjZjU3
NzI0ZjJhYjkzMzkwMDhkMWIyZTFkYmQyZTdhMzRkZjE5NzkuLjk4MjA0NjkyZTE1N2ZjMjUyNDY0
YWY3N2Y2N2JiYjQ4OWZkMDRmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxv
YWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xp
CiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2YXRl
OgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkgZmluYWwKKyAgICAgICAgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkU3RhcnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KLSAg
ICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHZvaWQg
ZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKSBmaW5hbAogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCBkYzJlMGQx
OTIzMTVlZTU3MmQxZDFmNjc4YWJhNjFkNmMyNGQxMzkxLi5lYzZjYmI0MTJmOGI1ZGY1OGVkZDNk
OWZlOWM4ZGZjYjMyZmM4NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIFdLX0VYUE9SVCBXS0NvbnRleHRSZWYgV0tDb250
ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJhdGlvblJlCiBXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0
IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250
ZXh0SGlzdG9yeUNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9pZCBXS0NvbnRleHRT
ZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93
bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50QmFzZSogY2xpZW50KSBXS19DX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
V0tEb3dubG9hZFNldERvd25sb2FkQ2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNl
dENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBX
S0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU0N2ZmOThhMDU5
ZjcyM2ZmMzkxY2Y0MmIxZTk4MDBiMDU1ZjU5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmgKQEAgLTAsMCArMSw1NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tGcmFtZUluZm87CitAcHJvdG9jb2wg
V0tEb3dubG9hZERlbGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZh
Y2UgV0tEb3dubG9hZCA6IE5TT2JqZWN0CisKKy8qIEBhYnN0cmFjdCBUaGUgcmVxdWVzdCB1c2Vk
IHRvIGluaXRpYXRlIHRoaXMgZG93bmxvYWQuCisgIEBkaXNjdXNzaW9uIElmIHRoZSBvcmlnaW5h
bCByZXF1ZXN0IHJlZGlyZWN0ZWQgdG8gYSBkaWZmZXJlbnQgVVJMLCBvcmlnaW5hbFJlcXVlc3QK
KyAgd2lsbCBiZSB1bmNoYW5nZWQgYWZ0ZXIgdGhlIGRvd25sb2FkIGZvbGxvd3MgdGhlIHJlZGly
ZWN0LgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TVVJM
UmVxdWVzdCAqb3JpZ2luYWxSZXF1ZXN0OworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRo
YXQgcmVjZWl2ZXMgcHJvZ3Jlc3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZTsK
KworLyogQGFic3RyYWN0IENhbmNlbCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgor
IEBkaXNjdXNzaW9uIFRoZSBjb21wbGV0aW9uSGFuZGxlciBpcyBwYXNzZWQgZGF0YSB0byBiZSB1
c2VkIHRvIHJlc3VtZSB0aGUgZG93bmxvYWQgaWYgcG9zc2libGUuCisqLworLSAodm9pZCljYW5j
ZWw6KHZvaWQoXiBfTnVsbGFibGUpKE5TRGF0YSAqIF9OdWxsYWJsZSByZXN1bWVEYXRhKSljb21w
bGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NDJlMzQxNTBmZWExNmEwMDVmYzI5OTBhNTNkYmRlYjkxN2VjMmMyMAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC0w
LDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
S0Rvd25sb2FkSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNp
bXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIkRvd25sb2Fk
UHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tOU0Rh
dGEuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0
IERvd25sb2FkQ2xpZW50KGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAg
ICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9u
SGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxv
YWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0
ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9E
aWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9h
ZERpZEZpbmlzaDopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZEZhaWxXaXRo
RXJyb3I6cmVzdW1lRGF0YTopXSkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQg
d2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVz
dChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cisg
ICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOnN0YXRpY19jYXN0PE5TSFRUUFVSTFJlc3BvbnNlICo+KHJlc3BvbnNl
Lm5zVVJMUmVzcG9uc2UoKSkgbmV3UmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0
KCksIEBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOikpXShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgcG9saWN5
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhh
c0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVj
a2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAocG9s
aWN5KSB7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbDoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
ICAgIGNhc2UgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3c6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kg
KCVsZCkiLCAobG9uZylwb2xpY3ldOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07
CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAg
ICAgICAgICAgIHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rp
b25TcGFjZUFuZENvbnRpbnVlKTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihj
aGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0gbWFr
ZVJlZihjaGFsbGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2Fk
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0g
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6
OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxp
c3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6CisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNw
YWNlQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CisgICAgICAgICAgICB9CisgICAg
ICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAg
ICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpyZXNwb25z
ZS5uc1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9hZCA9IG1ha2VSZWYoZG93bmxvYWQp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2Vy
ID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0
ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwgKmRl
c3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAg
aWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmICghZGVzdGluYXRpb24uaXNGaWxlVVJMKSB7CisgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAg
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZv
cm1hdDpAImRlc3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVSTCJdOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmls
ZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgICAgICAgICBp
ZiAoIVtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltkZXN0aW5hdGlvbiBVUkxCeURlbGV0
aW5nTGFzdFBhdGhDb21wb25lbnRdLnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9h
ZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2Rl
Ok5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRl
c3RpbmF0aW9uLnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtkb3dubG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChb
TlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JD
YW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywg
ZGVzdGluYXRpb24ucGF0aCk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURh
dGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgfQor
CisgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmlu
aXNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2Fk
RGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWQpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZhaWwo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYgZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgZmluYWwKKyAgICB7CisgICAgICAg
IGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSByZXN1bWVEYXRhOndyYXBw
ZXIocmVzdW1lRGF0YSldOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkg
ZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFp
biBjb2RlOk5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgdXNlckluZm86bmlsXSByZXN1
bWVEYXRhOm5pbF07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxl
Z2F0ZT4gPiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbiA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRh
IDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZpbmlzaCA6IDE7CisgICAgYm9vbCBtX3Jl
c3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yIDogMTsKK307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rv
d25sb2FkCisKKy0gKHZvaWQpY2FuY2VsOih2b2lkICheKShOU0RhdGEgKnJlc3VtZURhdGEpKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2NvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRhdGEpIHsKKyAg
ICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIod3JhcHBlcihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdp
bmFsUmVxdWVzdAoreworICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVl
c3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwor
fQorCistIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIHJldHVybiBf
ZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS0Rv
d25sb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgX2Rvd25sb2FkLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVudChkZWxl
Z2F0ZSkpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2Rvd25sb2FkLT5+RG93bmxv
YWRQcm94eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2Jq
ZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0
Cit7CisgICAgcmV0dXJuICpfZG93bmxvYWQ7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kYWQzNGJkYWRjNDRlZjMyMmFhMmEyYmFlYWU1OTcyYjkwNzQwNTQxCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxl
Z2F0ZS5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFz
cyBXS0Rvd25sb2FkOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rvd25sb2FkUmVk
aXJlY3RQb2xpY3kpIHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwsCisgICAg
V0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisK
Ky8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbiBI
VFRQIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcg
dGhhdCByZWNlaXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZWRpcmVj
dGlvbiByZXNwb25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVlc3QgdGhhdCB3
aWxsIGJlIHNlbnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhh
bmRsZXIgeW91IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CisgdG8gcHJv
Y2VlZCB3aXRoIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGlt
cGxlbWVudCB0aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJlY3RzIHdpbGwg
YmUgdGFrZW4uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5l
d1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBh
YnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4g
YXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcg
dGhhdCByZWNlaXZlZCB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFs
bGVuZ2UgVGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0
byB0aGUgY2hhbGxlbmdlLiBUaGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhl
IGNvbnN0YW50cyBvZiB0aGUgZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLiBXaGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVk
ZW50aWFsIHRvIHVzZSwgb3IgbmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisg
Y3JlZGVudGlhbC4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1l
dGhvZCwgdGhlIHdlYiB2aWV3IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlIHdpdGggdGhlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9u
U3BhY2UgZGlzcG9zaXRpb24uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBfTnVs
bGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRo
ZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5n
ZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVkIGEgZmls
ZSB0byB3aGljaCB0byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciByZXNwb25z
ZSwgaWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QuCisg
QHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1lIFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFt
IGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tl
IHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVSTCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRv
IGNhbmNlbCB0aGUgZG93bmxvYWQuCisgQGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2Fk
IG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNlIHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1l
Cisgd2lsbCBvZnRlbiBiZSB0aGUgc2FtZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwg
YnV0IHdlYiBjb250ZW50IGNhbiBzcGVjaWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxl
bmFtZS4gIElmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBi
ZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90IGV4aXN0IHlldCBpbiBhIGRpcmVjdG9yeSB0aGF0IGRv
ZXMgZXhpc3QuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihudWxsYWJsZSBOU1VSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICogX051bGxhYmxlIGRlc3RpbmF0aW9uKSlj
b21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxv
YWQgaGFzIHJlY2VpdmVkIGFuZCB3cml0dGVuIGRhdGEgdG8gdGhlIGRlc3RpbmF0aW9uLgorIEBw
YXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCBoYXMgd3JpdHRlbiBkYXRhLgorIEBwYXJh
bSBieXRlc1dyaXR0ZW4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3Rh
bEJ5dGVzV3JpdHRlbiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFt
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBleHBl
Y3RlZCB0byBiZSB3cml0dGVuLgorIEBkaXNjdXNzaW9uIElmIHRoaXMgZG93bmxvYWQgd2FzIHRo
ZSByZXN1bHQgb2YgcmVzdW1pbmcgYSBwcmV2aW91cyBkb3dubG9hZCwgdGhlbgorIHRvdGFsQnl0
ZXNXcml0dGVuIHdpbGwgYmUgYnl0ZXNXcml0dGVuIHBsdXMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IGhhZCBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZC4KKyBJZiB0aGUgdG90YWwgbnVtYmVyIG9m
IGJ5dGVzIGlzIHVua25vd24sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgd2lsbCBiZSAtMS4K
KyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRh
OihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2Fk
IGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmll
dyB0aGF0IGZpbmlzaGVkLgorKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxv
YWQgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQg
aGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRoYXQgaGFzIGZhaWxl
ZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUgcmVhc29u
LgorIEBwYXJhbSByZXN1bWVEYXRhIFRoZSBkYXRhIHRvIGJlIHVzZWQgdG8gcmVzdW1lIHRoaXMg
ZG93bmxvYWQgaWYgcG9zc2libGUuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihu
dWxsYWJsZSBOU0RhdGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxM
X0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIwMjU0MDVjYjMz
YjdhOWQ3YzRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWQuaCIKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xh
c3MgPSBXS0Rvd25sb2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgKCkgPFdL
T2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25s
b2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9hZERlbGVn
YXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFiOTE1N2Q4MDNh
NGZiYWViMTM4YjczYmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhiNmFkMzRmYzYx
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvbi5tbQpAQCAtNDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRpb24tPm9yaWdp
bmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0aWF0ZWQKK3sK
KyAgICByZXR1cm4gX25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZlQ29udGVudE1v
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkRlbGVnYXRlLmgKaW5kZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4
NGEwNTg3OC4uMjkzNTYyZGUxMzhjMTUzYWZjOWUyMjZlYmViZjUzNzE5ZDdiZDJlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkRlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAorQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLTmF2
aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAgLTU0LDYgKzU1
LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KSB7CiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkgewogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsLAogICAgIFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3csCisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwog
CiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSBwcm90
b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY0LDYgKzE2NiwxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICovCiAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxsb3dEZXByZWNhdGVkVExT
Oih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFm
dGVyIHVzaW5nIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBh
cmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBh
cmFtIG5hdmlnYXRpb25SZXNwb25zZSBUaGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQg
aW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMz
MjEzMmExNTNlYjE1YjUuLjIzNGEwYjAyY2JmYjhhMzdkZWRlZjkyODkxNTVjZTdhN2U5OWE1NjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKQEAgLTU4LDExICs1OCwxMSBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAg
ICAgX1dLU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0
VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lEb3dubG9hZCArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FU
RURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3du
bG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0g
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cg
KyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkg
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWlu
Z0FwcExpbmsgKyAxKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7Citz
dGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVO
VCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEw
LCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90
b2NvbCBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvblByaXZhdGUuaAppbmRleCA5MTU4OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdiNjFjMTdhMWYx
MzljLi5hN2E3ZDkyOWRmZjg3MDQzZTdmM2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2
YXRlLmgKQEAgLTI3LDQgKzI3LDUgQEAKIAogQGludGVyZmFjZSBXS05hdmlnYXRpb24gKFdLUHJp
dmF0ZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0
ICpfcmVxdWVzdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2FzVXNl
ckluaXRpYXRlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQppbmRleCAwMzU5MWU4YThmYTkwNDIxMjA5YjkzOTBkNGYzZDhlMDc2
ODBkZjYxLi4yNzdkOGQxZjljOGJmNGZiYTBmYjg2NmIzZGZkZjI5Y2U3OWEwOGQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpA
QCAtMjgsMTEgKzI4LDEzIEBACiAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBv
cnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBvcnQgIkRvd25sb2FkTWFuYWdlci5oIgogI2ltcG9ydCAi
TGVnYWN5RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBs
dWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCkBAIC01NjEsMTIgKzU2MywxMiBA
QCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8UwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVS
TFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJz
aXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRh
dGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpOwor
ICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihfcHJv
Y2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmll
dyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25s
b2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJz
aXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRp
bmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3By
b2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwg
W3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURh
dGEpLmdldCgpLCBwYXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhE
b3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+
X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRo
b3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93bmxvYWRE
aWRTdGFydDo6Tm8pKV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2Vi
UHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShO
U0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmlu
ZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2EwMzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYyNDk4MGM5Y2Zm
NjdlY2QzYmVkZTczZmUyNDAwODE4YWE1MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC02Miw3
ICs2Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlv
bmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0
RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxl
Z2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVs
ZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZC5kb3dubG9hZERlbGVnYXRl
IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBp
ZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpA
QCAtODMsOCArODMsOSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxh
eU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRl
RGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUg
IHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9y
ZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FU
RURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJlcXVlc3QiLCBtYWNvcygx
MC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2Fk
ICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAq
KXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5fcmVzdW1lRG93bmxvYWRXaXRoRGF0
YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAs
IFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hp
bGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWlu
YXRlU2VydmljZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4w
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5k
ZXggNzYxYTFkYTBmNjViMzY5OTdiYWI0OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uZTFhZmMyMzY4YTlh
NTc4MjIxMTMxYWZjZjVlZjgwMjQxYzgyZTgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0Zvcndh
cmRMaXN0SXRlbTsKIEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25sb2FkOwog
QGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNz
IFdLRnJhbWVJbmZvOwpAQCAtNDUwLDYgKzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50
aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3Rl
YgogICovCiArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJzdHJhY3Qg
QmVnaW5zIGEgZG93bmxvYWQuCisgQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3Qgc3BlY2lmeWlu
ZyB0aGUgVVJMIHRvIGRvd25sb2FkLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2Nr
IGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgc3RhcnRlZC4KKyAqLworLSAodm9pZClkb3du
bG9hZFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiBAYWJzdHJhY3QgUmVzdW1l
cyBhIGRvd25sb2FkIHRoYXQgZmFpbGVkIG9yIHdhcyBjYW5jZWxsZWQuCisgQHBhcmFtIHJlc3Vt
ZURhdGEgRGF0YSBmcm9tIGEgV0tEb3dubG9hZERlbGVnYXRlJ3MgZGlkRmFpbFdpdGhFcnJvciBv
ciBhIFdLRG93bmxvYWQncyBjYW5jZWwgY29tcGxldGlvbkhhbmRsZXIuCisgQHBhcmFtIGNvbXBs
ZXRpb25IYW5kbGVyIEEgYmxvY2sgY2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZXN1bWVk
LgorICovCistICh2b2lkKXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURh
dGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiAvKiBAYWJzdHJhY3QgVGhlIG1lZGlhIHR5cGUgZm9yIHRoZSBXS1dlYlZpZXcKICBAZGlz
Y3Vzc2lvbiBUaGUgdmFsdWUgb2YgbWVkaWFUeXBlIHdpbGwgb3ZlcnJpZGUgdGhlIG5vcm1hbCB2
YWx1ZSBvZiB0aGUgQ1NTIG1lZGlhIHByb3BlcnR5LgogIFNldHRpbmcgdGhlIHZhbHVlIHRvIG5p
bCB3aWxsIHJlc3RvcmUgdGhlIG5vcm1hbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDJkZDdlYTVlYTljMTEzOTdiNzI3NDgx
ODI3NmE3NDhlMzBkOWM2NzQuLjc1NmY2NDEzMzQwN2U5ZjJkYzRlYTJlNGIwN2M4NWNjYTE5ODRk
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtNTgsOSArNTgsMTEgQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGaW5kQ29uZmln
dXJhdGlvbi5oIgogI2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldL
RnJhbWVJbmZvUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgi
CiAjaW1wb3J0ICJXS0xheW91dE1vZGUuaCIKICNpbXBvcnQgIldLTWVkaWFQbGF5YmFja1N0YXRl
LmgiCkBAIC03MDgsNiArNzEwLDQyIEBAIHN0YXRpYyB2b2lkIGhhcmR3YXJlS2V5Ym9hcmRBdmFp
bGFiaWxpdHlDaGFuZ2VkQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsCiAgICAgcmV0
dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+
KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdO
YW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKSk7CiB9CiAKKy0gKHZvaWQpZG93bmxvYWRSZXF1
ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdL
RG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+ZG93bmxvYWRSZXF1
ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCistICh2
b2lkKXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5p
dEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgIFt1bmFyY2hp
dmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNl
RXhjZXB0aW9uXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZlciBk
ZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkg
Y2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFz
c10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwg
bmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICBbdW5hcmNo
aXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisKKyAgICBp
ZiAoIXBhdGgpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4
Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIHJlc3VtZSBkYXRhIl07CisKKyNpZiBVU0UoTEVHQUNZ
X0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgLy8gTW9qYXZlIENGTmV0d29yayBmYWlscyB0byBy
ZXN1bWUgYSBkb3dubG9hZCBpZiB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3QuCisgICAg
Ly8gSWYgc29tZW9uZSBoYXMgcmVtb3ZlZCB0aGUgZGVzdGluYXRpb24gZmlsZSwgbWFrZSBhbiBl
bXB0eSBmaWxlIGF0IHRoYXQgbG9jYXRpb24uCisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6cGF0aF0pCisgICAgICAgIFtbTlNEYXRhIGRh
dGFdIHdyaXRlVG9GaWxlOnBhdGggYXRvbWljYWxseTpZRVNdOworI2VuZGlmCisKKyAgICBfcGFn
ZS0+cmVzdW1lRG93bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVE
YXRhKSwgcGF0aCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3dubG9hZCkKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cit9CisKIC0gKFdL
TmF2aWdhdGlvbiAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0
ZW0gKilpdGVtCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0
ZW0oaXRlbS5faXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdkYWRlZTY0OTNlZjc2
M2ExNjE4MDc1ZDBkYy4uNTBhNjJiNTczMjQwOWVlZGFlZDc4MGFiZWY3YTM4NzlmNzQ4YjhmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1JlY3RFZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlOworQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tX
ZWJwYWdlUHJlZmVyZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggYjRk
ODI2YjlhNzI0NzhmZDBjMDNlNmI0YjAxODlmMDcyOTljZWM3My4uZWE4MjAzMmExY2RhY2E2YjQ2
ZTliYzFmY2EwNWQ4ZGU5MDA0NWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogCiBAY2xhc3MgV0tG
cmFtZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKLVdLX0NM
QVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRF
RF9XSVRIX1JFUExBQ0VNRU5UKCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEp
LCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLRG93bmxvYWQgOiBOU09iamVj
dCA8TlNDb3B5aW5nPgogCi0tICh2b2lkKWNhbmNlbDsKKysgKGluc3RhbmNldHlwZSlkb3dubG9h
ZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpY2FuY2VsOwogLSAo
dm9pZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KaW5kZXggZGZlZmUwZjE2NmE1NDlkZGU2NWJlMTAy
MmViNWMxZmZkZWNjMmRiYy4uZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMyZTA4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5tbQpAQCAtMjgsNjYgKzI4LDg3IEBACiAKICNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50Lmgi
CiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRy
Lmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KK3N0YXRpYyBOU01hcFRhYmxlPFdLRG93bmxvYWQgKiwgX1dLRG93
bmxvYWQgKj4gKmRvd25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFJldGFpblB0cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQoKSkK
KyAgICAgICAgdGFibGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRh
YmxlXTsKKyAgICByZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWlt
cGxlbWVudGF0aW9ucyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9XQVJO
SU5HU19FTkQKIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3du
bG9hZDI6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIF9kb3dubG9hZC0+fkRvd25sb2Fk
UHJveHkoKTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICBfZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4gc2VsZjsKK30KIAot
ICAgIFtzdXBlciBkZWFsbG9jXTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVy
ID0gW2Rvd25sb2FkV3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9hZF0pCisgICAgICAg
IHJldHVybiB3cmFwcGVyOworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxv
YWQgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07CisgICAg
W2Rvd25sb2FkV3JhcHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07
CisgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7Ci0gICAgX2Rvd25s
b2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7Cisg
ICAgX2Rvd25sb2FkLT5fZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93
bmxvYWQtPl9kb3dubG9hZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCku
bGVnYWN5RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0KIAogLSAodm9pZClw
dWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93bmxvYWQtPnB1Ymxp
c2hQcm9ncmVzcyhVUkwpOworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jl
c3MoVVJMKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBf
ZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQ
b2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3du
bG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5n
V2ViVmlldwogewotICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9y
aWdpbmF0aW5nUGFnZSgpKQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxv
YWQtPl9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21X
ZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAg
cmV0dXJuIG5pbDsKIH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgogewot
ICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAo
YXV0byYgdXJsKSAtPiBOU1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxv
YWQtPl9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAq
IHsKICAgICAgICAgcmV0dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChC
T09MKXdhc1VzZXJJbml0aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT53YXNVc2VySW5p
dGlhdGVkKCk7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53YXNVc2VySW5pdGlh
dGVkKCk7CiB9CiAKIC0gKE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKF9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp3cmFwcGVyKF9kb3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwog
fQogCiAtIChXS0ZyYW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAgICByZXR1cm4gV2Vi
S2l0Ojp3cmFwcGVyKCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKCZfZG93bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwogfQogCiAtIChp
ZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3IEBACiAKIC0gKEFQ
STo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQ7CisgICAgcmV0
dXJuICpfZG93bmxvYWQtPl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXgg
YTgzZjkwMjliNWM3M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUx
NGFlM2I5NzM4N2Y0NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4
IEBACiAKIEBwcm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25h
bAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWRE
aWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAq
KXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihO
U1VSTFJlc3BvbnNlICopcmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQp
LCBpb3MoMTEuMykpOwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcg
KilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9E
RVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAu
MTMuNCksIGlvcyg4LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWRJbnRlcm5hbC5oCmluZGV4IGUxMjkwYjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDky
ZDQwMTIuLmNhOTRjMjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5Y2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50
ZXJuYWwuaApAQCAtMjUsMTYgKzI1LDEyIEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAK
LSNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0
cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xh
c3MgPSBfV0tEb3dubG9hZDsKLX07CitAY2xhc3MgV0tEb3dubG9hZDsKIAorQGludGVyZmFjZSBf
V0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgUmV0YWluUHRyPFdLRG93
bmxvYWQ+IF9kb3dubG9hZDsKIH0KLQotQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmpl
Y3Q+CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRh
MWZjOGNkYWZlOTIxMTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93
bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dl
YktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2Fk
PiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9h
ZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsK
QEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3Rp
bmF0aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0
V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBp
ZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmlu
ZGV4IDc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0
ODg0ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEy
IEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xp
ZW50Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBs
ZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
KTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWlu
dDY0X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRG
aW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlk
RmFpbChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6
RGF0YSopIGZpbmFsOwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBm
aW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94
eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXgg
M2QzMWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjA3NTYyYWVlODhlNzY2
OWY4ZDkxODZmZGQ4MjRiNjM1OTU1YzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
IlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAi
V0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtNDcsNiArNDgs
OCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KKwogTGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlk
IDxfV0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdh
dGUpCiB7CkBAIC03Niw3ICs3OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciog
c3lzdGVtUHJldmlld0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5k
aWYKIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVX
KQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAg
LTkwLDcgKzkzLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0
YXJ0OndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRTdGFydDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlUmVzcG9uc2U6
cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3Qg
Ynl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEsOSBAQCB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1
aW50NjRfdAogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRX
cml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCi0gICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRl
RGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhv
ZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKKyAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5d
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyArMTM0LDcg
QEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBj
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
bWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhh
bmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAgICAg
ICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KCk7CkBAIC0xNjcsNyArMTcwLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkQ3Jl
YXRlRGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY28KICNlbmRpZgog
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24p
Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRp
ZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rv
d25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5KQpAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnBy
b2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtMjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYKICAg
ICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3Jp
dGUgPSBOTzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAg
ICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVy
d3JpdGVdOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVz
IDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3Zl
cndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0Jl
ZW5DYWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2Vy
LT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2LDEwIEBAIHZvaWQg
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5p
c2gpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9
CiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKQogewogI2lm
IFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZp
ZXdEb3dubG9hZCgpKSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjoKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkK
LSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlk
RmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSldIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpCkBAIC0yNjMsMTMgKzI2NiwxMyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojps
ZWdhY3lEaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpbX1dLRG93bmxvYWQgZG93bmxvYWRX
aXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURv
d25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCku
c3RyaW5nKCldXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBk
b3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJs
KCkuc3RyaW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OwogfQpAQCAtMzAxLDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJlbGVh
c2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB9CiAjZW5k
aWYKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUuaAppbmRleCA1NzRjMzQyZjMzZGNmMDZjY2FkYTExZjBiZDJkMDk3ZWM1YTk1N2EzLi44Njli
YzY5ZTI2ZGZlNWQ1ZmEzODBjMTZhZGJkOWQzZDFmN2RlZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2LDYgKzEyNiw4IEBA
IHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5nPiBzaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWduZWQga2V5U2l6ZUluZGV4LCBj
b25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYpIG92
ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3dubG9hZFByb3h5
JikgZmluYWw7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExv
YWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlk
RmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6
U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzgsNiArMjQwLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUgOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3IDogMTsKKyAgICAgICAgYm9v
bCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAxOwogICAgICAgICBib29sIHdlYlZp
ZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0
SXRlbSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0
aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGM0MTAyZmY1MmI5NWUz
MjM0NTkwY2U5ZTAzMTc2NTI5NWU5NmJkYTcuLmI0Zjk4M2U2OTM5NjJmYTcyYWVjYmY1OTk2OTMw
N2M4N2U4MmExNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNpbXBvcnQgIlNPQXV0aG9yaXphdGlv
bkNvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEludGVybmFsLmgiCiAj
aW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3du
bG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTlNEaWN0aW9uYXJ5Lmgi
CkBAIC0xODcsNiArMTg4LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25E
ZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nl
c3NEaWRCZWNvbWVSZXNwb25zaXZlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViQ3J5cHRvTWFz
dGVyS2V5Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OildOworICAgIG1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNl
OmRpZEJlY29tZURvd25sb2FkOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTopXTsKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2Vz
dHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6
d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0
aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRv
QmFja0ZvcndhcmRMaXN0SXRlbTopXTsKQEAgLTU1NSwxMSArNTU3LDEwIEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAq
bnNVUkxSZXF1ZXN0ID0gd3JhcHBlcihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0aW9u
QWN0aW9uLT5yZXF1ZXN0KCkpKTsKLSAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNh
bkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0XSB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVy
Rm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpKQotICAgICAgICAg
ICAgICAgICAgICBsaXN0ZW5lci0+ZG93bmxvYWQoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5n
ZXQoKSk7CisgICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0
Om5zVVJMUmVxdWVzdF0KKyAgICAgICAgICAgICAgICB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVlc3QgVVJMXS5zY2hlbWUpCisgICAgICAgICAgICAgICAg
fHwgW25zVVJMUmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImJsb2IiXSkgewor
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC02MzgsOSAr
NjM5LDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAg
bG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgY2FzZSBfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6CisgICAgICAgICAgICBBTExPV19ERVBSRUNB
VEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2Fk
KCk7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgogICAgICAgICAgICAgdHJ5U09BdXRo
b3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwgW2xvY2Fs
TGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZN
b3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9wdGltaXplZExvYWQpIHsKICAgICAgICAg
ICAgICAgICBpZiAob3B0aW1pemVkTG9hZCkgewpAQCAtNzU0LDcgKzc1OCw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UoV2ViUGFnCiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQ6CisgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZDoKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTE2OCw2ICsxMTcyLDE4IEBAIFJl
ZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2Vi
Q29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hh
bGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChX
ZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlvblJlc3BvbnNl
LCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUg
PSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAo
IW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0
aW9uUmVzcG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29tZURvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwogI2lmIFVTRShRVUlDS19MT09LKQogdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1
dGkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCmluZGV4IDg2NjIzOGJhZmU4ZjA1YzE3YTIzZDZmOWNjOTlhMjEwMTRk
ZDkzMTAuLjdhNTgzYzJlMWU3ZThkYjMwYTFiNzA1MWFjOWE5ZmRjNGE3YjRhM2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgogI2lt
cG9ydCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgog
I2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggMjljMTdiZWIzM2VkNjc2Yzlj
NDQ0YTRkNzJhNjAxZjRjZDA3N2YzNi4uZDk5YjhiODZkYzcwNzY5MTUxOGQ0YTI5Yjc2NDBjZGU1
OGZmMzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcApAQCAtNTksNyArNTksMTEgQEAgRG93bmxvYWRQcm94eTo6RG93bmxv
YWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0
b3IKIHsKIH0KIAotRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKSA9IGRlZmF1bHQ7CitE
b3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCit7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxs
YmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKG51bGxwdHIpOworfQogCiBzdGF0aWMg
UmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCiB7CkBAIC0xMTcsNyArMTIxLDkgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2UKICAgICBp
ZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9
IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVxdWVzdC51
cmwoKSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOworICAgIGlmIChtX2RpZFN0
YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayh0aGlzKTsKKyAgICBtX2Ns
aWVudC0+bGVnYWN5RGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTE3Mywx
MSArMTc5LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdhY3lSZXN1
bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5kaWRGYWls
KCp0aGlzLCBlcnJvcik7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xl
Z2FjeVJlc3VtZURhdGEuZ2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25s
b2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRv
d25sb2FkRmluaXNoZWQoKnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNldENsaWVu
dChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBX
VEZNb3ZlKGNsaWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAwNzE4
ZTg5M2FiMjU1YmIzYTM1ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi40ZDIwYjE2ZGMxNzhhNDY2MGJi
ZmU3NGM4NTAzNjBhMzgzY2NmMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTEwMiwxMiArMTAyLDggQEAgcHVibGljOgog
ICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFtZUluZm8oKSB7IHJldHVybiBtX2ZyYW1lSW5mby5nZXQo
KTsgfQogCiAgICAgQVBJOjpEb3dubG9hZENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGll
bnQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25s
b2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQ
YWdlUHJveHkqKTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7CisgICAgdm9p
ZCBzZXREaWRTdGFydENhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94
eSopPiYmIGNhbGxiYWNrKSB7IG1fZGlkU3RhcnRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OyB9CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlkU3RhcnQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSk7CkBAIC0xMjAsNiArMTE2LDEyIEBAIHByaXZhdGU6CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0
ZSk+JiYpOwogCitwcml2YXRlOgorICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQ
cm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBBUEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQ
cm94eSopOworCisgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworCiAg
ICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJz
aXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZWY8QVBJOjpEb3dubG9hZENsaWVudD4g
bV9jbGllbnQ7CkBAIC0xMzQsNiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VVJMPiBt
X3JlZGlyZWN0Q2hhaW47CiAgICAgYm9vbCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAg
ICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBtX2ZyYW1lSW5mbzsKKyAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERvd25sb2FkUHJveHkqKT4gbV9kaWRTdGFydENhbGxiYWNrOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3YjI0NWUzYzA0ODVjNTNjYjc5M2Yz
ZjRjMmI3MGFiM2RkMDFiODUxLi5iYTM3YThjMTc5YTAwMjFkZWUwYjFlNTM5MTU1ZTliZTM0YTNm
NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRoZW50
aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgog
I2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVn
YWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBmMDU0ZjJiYzhiN2ZkZGUwZTUwOGUzZGE3MGU2MTRkYmZl
ZjE3MGI3Li4yMDFlNDU5YmU0ZWIxMDE2ODk3NzNlMDNjOTU2ZjQ2NTY3OTBjNjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNp
bmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9y
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9h
ZE1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2lu
Z0FyZWFNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTMxNjgs
NyArMzE2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIHBvbGljeUFjdGlv
biA9IFBvbGljeUFjdGlvbjo6RG93bmxvYWQ7CiAKICAgICBpZiAocG9saWN5QWN0aW9uICE9IFBv
bGljeUFjdGlvbjo6VXNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpIHx8ICFuYXZpZ2F0aW9uKSB7
Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUocG9saWNpZXMp
LCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zMTg1LDcgKzMxODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xp
Y2llcyA9IFdURk1vdmUocG9saWNpZXMpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnRdIChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NG
b3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQYWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFn
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pIG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2
aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAg
ICAgICBpZiAoaXNDbG9zZWQoKSB8fCAhbmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSkpIHsKLSAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5
RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVz
KSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
cG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0
ciwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0zMjIxLDExICszMjIyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RG
TW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSks
IHNob3VsZFByb2Nlc3NTd2FwID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDog
V2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgICAgICByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3
YXAgPyBudWxscHRyIDogV1RGTW92ZShwb2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVy
KSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2FwID8gV2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6
Tm8pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJl
ZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxQb2xpY3lE
ZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3
aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYgbmF2aWdhdGlvblJlc3BvbnNlLCBSZWY8
UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpIHsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2Vu
ZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5
QWN0aW9uOjpJZ25vcmUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwpAQCAtMzI0
MSw2ICszMjQyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09
IFBvbGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQg
cHJveHkuCiAgICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LmNyZWF0ZURvd25sb2FkUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZv
clJlc3BvbnNlUmVxdWVzdCwgdGhpcywgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0
aW5nRnJhbWVJbmZvKCkgOiBGcmFtZUluZm9EYXRhIHsgfSk7CisgICAgICAgIGRvd25sb2FkLnNl
dERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBu
YXZpZ2F0aW9uUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSldIChhdXRvKiBk
b3dubG9hZFByb3h5KSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZFBy
b3h5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBPbmNl
IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCBpcyBubyBsb25nZXIgdXNlZCwgd2Ug
c2hvdWxkIGFzc2VydCBuYXZpZ2F0aW9uUmVzcG9uc2UgaXMgbmV2ZXIgbnVsbCBoZXJlLgorICAg
ICAgICAgICAgaWYgKG5hdmlnYXRpb25SZXNwb25zZSkKKyAgICAgICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKCp0aGlzLCAq
bmF2aWdhdGlvblJlc3BvbnNlLCAqZG93bmxvYWRQcm94eSk7CisgICAgICAgIH0pOwogICAgICAg
ICBpZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRp
YXRlZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxv
YWQuc2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAg
LTUwOTQsNyArNTEwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKENP
TlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5i
bG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNv
dXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQgZmlsdGVyIik7Ci0gICAgICAg
IHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25h
dmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3Zl
KHNlbmRlcikpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklE
KSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApA
QCAtNTMyNSw3ICs1MzMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlE
LCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwg
U2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQ6Ok5vKSk7CiAKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCkBAIC01MzYzLDgg
KzUzNzEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBNRVNTQUdFX0NIRUNLX1VS
TChwcm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNz
LCByZXNwb25zZS51cmwoKSk7CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlv
biA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCkgOiBudWxscHRyOworICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZp
Z2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJh
bWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUs
IGRvd25sb2FkQXR0cmlidXRlKTsKKwogICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1l
LT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZp
Z2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKLSAgICAgICAgcHJvY2Vzc10gKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJy
b3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7
CisgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2Fy
bmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAg
IC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhl
cmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBn
byBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJU
X1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01
MzczLDE0ICs1MzgzLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAgICAg
ICB9KTsKICAgICAgICAgCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0
aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwg
bnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlcikpOwog
ICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFw
cEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAgICAg
ICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUs
IHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBw
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUo
ZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5
cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICBlbHNlCiAgICAgICAgIG1fbmF2aWdhdGlvbkNs
aWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5h
dmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfQogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC02MDE5LDYgKzYwMjcsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURv
d25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKICAgICBwYWdlQ2xpZW50KCku
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLnJlc3VtZURvd25sb2FkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzdW1lRGF0YSwg
cGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQ6Olllcyk7CisgICAgZG93bmxvYWQuc2V0RGlkU3Rh
cnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFn
ZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5k
b3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlcXVlc3QsIHsgfSk7CisgICAgZG93
bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjJjOWFkNGYyODVlMTRm
YzRmMTRhNGZmNDgwNjMwNTFkNTg5NjBmNi4uNTk0NTA2YzhhMTdhNjk5ZjQ5ZDQwZTM2OTU4ZGQ2
YzcyODIwNDg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEx
NjIsNyArMTE2Miw3IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVy
OwogICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA6IGJvb2wgeyBO
bywgWWVzIH07Ci0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9u
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmLCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB2b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0Zv
cndhcmRSZW1vdmVkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Jik7CkBAIC0xMjc3LDYgKzEyNzcsOCBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQ
cm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAg
dm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVz
dW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lk
IGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0
TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VT
cGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDcwZmRkYWY4ZGQwMDU2Y2EyOTQ4ZTlmMTMyNTBj
OWFiYTBhMWJmOGMuLmEyYjZmNGE2Y2U5ZjFlY2UzMzg3ZmRjMDFmOGY3MDE1OTU0MjQ1MmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNTYsNyAr
MTE1Niw3IEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJv
eHk7CiB9CiAKLURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNh
bGxEb3dubG9hZERpZFN0YXJ0KQogewogICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVE
b3dubG9hZFByb3h5KGRhdGFTdG9yZSwgUmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdl
LCB7IH0pOwogCkBAIC0xMTY0LDcgKzExNjQsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNz
UG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQog
ICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpOwogCi0gICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9u
SUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5j
ZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5l
dHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25s
b2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJl
c3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBj
YWxsRG93bmxvYWREaWRTdGFydCksIDApOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBhYWI3MzZjOGE5
NDQyYTAzNjMxMThjMDRkYTg2Mjc0NzRkYmQ3OTM1Li4zYTU0MTQyNWMwYWRlYTUwMTZlMzE5Y2I4
YzNjZDcyNGQ4OTJlNmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTExNyw2ICsxMTcsNyBAQCBpbnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3
ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwogI2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25s
b2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IDogYm9vbDsKIAogY2xhc3MgV2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpA
QCAtMjA1LDcgKzIwNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYg
ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2Us
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUgPSB7IH0pOwotICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRh
dGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYg
cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGlu
Z1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBD
YWxsRG93bmxvYWREaWRTdGFydCk7CiAKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8QVBJOjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmpl
Y3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAwZGFlMWEwOTAxZTU4OTJmYzA5NmFhOWFiMzg4MWNmOWU4MzRiMjhhLi45Yzg2NDYyZDhjNWI1
N2M0MDY0YmQyYWMxMzc3ODk2MjcwMGVhMmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTksNiArMTgxOSw5IEBACiAJCUNFRTRB
RTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VFNEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0
U1BJLmggKi87IH07CiAJCUQzQjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQz
MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDkxMUZG
NEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlNlYXJjaFBvcHVwTWVudS5oICovOyB9OworCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJBMjUyRUNCOEUwMEQ5
MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CisJCURGMEM1RjJCMjUyRUQ0NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI1MjUyRUNC
OEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLzsgfTsKIAkJREY0NjJFMEYyM0Yy
MkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVG
IC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0Nv
bnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IERGNDYyRTExMjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlE
Rjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY4NENFRTIyNDlBQTIxRjAwOTA5NkY2
IC8qIFdLUERGSFVEVmlldy5tbSAqLzsgfTsKQEAgLTUzNzcsNiArNTM4MCwxMCBAQAogCQlEM0I5
NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURG
MEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBE
OTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLRG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFEMDBFRkYz
NUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NTI1LDYgKzc1MzIsMTAgQEAKIAkJCQk1Q0Uw
QzM2ODIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAog
CQkJCTVDRTBDMzZCMjI5RjJENEIwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9J
bnRlcm5hbC5oICovLAogCQkJCTVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRN
ZW51RWxlbWVudEluZm9Qcml2YXRlLmggKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURC
IC8qIFdLRG93bmxvYWQuaCAqLywKKwkJCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tE
b3dubG9hZC5tbSAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9h
ZERlbGVnYXRlLmggKi8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxv
YWRJbnRlcm5hbC5oICovLAogCQkJCTFBRjQ1OTJEMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9y
LmggKi8sCiAJCQkJMUFGNDU5MkMxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gKi8sCiAJ
CQkJMUEyRDI1MkExOTQ2ODhGRDAwNDUzN0IwIC8qIFdLRXJyb3JJbnRlcm5hbC5oICovLApAQCAt
MTE4NTcsNyArMTE4NjgsMTAgQEAKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEgLyogV0tE
T01SYW5nZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVG
ODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgw
MDcwNTRGNSAvKiBXS0RPTVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVG
MjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
QjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVy
bmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tE
b3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDA5QkExODFFNkU2NEJDMDA5
REEyOEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJF
Q0Y2NkNFMjFENkI3N0UwMDlFNUMzRiAvKiBXS0VkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiOGEw
MzgxMmYwZDc4YTQyMWQyNmU4YTZiODNkM2IwNzA4YjAxZGYyLi5mM2YzMTQ1OTk3NDc3MTkwODMw
N2QxNWRmNjA0MDk1YzliZmYzMmExIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMjAtMTEtMTEgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3
IGRvd25sb2FkIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tOgor
ICAgICAgICAoLVtCZWNvbWVEb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtDb252ZXJ0
UmVzcG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVz
dERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlRGVsZWdhdGUgd2ViVmll
dzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1b
VGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlRGVsZWdhdGUgd2Vi
VmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgIChk
b3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50
cyk6CisgICAgICAgIChzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tG
aWxlQ29udGVudHMpOgorICAgICAgICAodGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KToKKyAgICAg
ICAgKC1bRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6bXV0YXRlRmlsZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAgICAoLVtEb3dubG9hZFByb2dyZXNzVGVz
dFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTk5hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
ZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFdy
aXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RE
b3dubG9hZERlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0RG93
bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6XSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNl
OmRpZEJlY29tZURvd25sb2FkOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZp
bmlzaF0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB0YWtlQ2FsbGJhY2tSZWNv
cmRdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0
YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZh
aWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZERpZENhbmNlbDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21w
bGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDogQ29waWVk
IGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
bW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUubW0uCisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZERpZFN0YXJ0Ol0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93
bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6XSk6CisgICAgICAgICgtW1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6Cisg
ICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURh
dGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAg
ICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAg
ICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVy
cm9yOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWRE
aWRDYW5jZWw6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRD
cmVhdGVEZXN0aW5hdGlvbjpdKToKKwogMjAyMC0xMS0xMSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBtb3JlIFdlYktpdExlZ2FjeSBwcmVmZXJlbmNlcyBi
b3VuZCB0byBTZXR0aW5ncyB0byBXZWJQcmVmZXJlbmNlcy55YW1sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0
ZDA5ZS4uZjVhOWQyMTc2NWY2OGFmMjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2Nv
YS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bQogY29jb2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA4OTdmODIzYTUxZTc2MGE0MWM2ZTM2ZGFkOTU0NWY4NjIyOGJm
YTg5Li40N2Q4YmY4M2ZkZGY3OWJkOTVlM2IxNGY5YWVhZmRhOTlmNDk4Y2MzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjIxMCw4ICsyMjEwLDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAw
MEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBV
UkxDYW5vbmljYWxpemF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM3MTQ4OTQyMTIzQTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3
IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAz
ODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rl
c3REb3dubG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qzcy
RThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
aDsgcGF0aCA9IGNvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNB
ODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWlu
UGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1
bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
Nzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNzk1LDYgKzI3OTUsOCBAQAogCQlEM0JFNUUzNDFFNENFODVF
MDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJk
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQx
Q0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5
Q3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAw
MDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhG
NjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNv
bm5lY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25u
ZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAx
M0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzExNSw4ICszMTE3LDEwIEBACiAJCQkJQ0U2NDBDQTYy
MzcwQTRGMzAwQzVDQUE0IC8qIFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1
MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4
ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThD
RDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1Qzcy
RThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJ
REY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJ
CQkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICov
LAorCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZS5oICovLAorCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93
bmxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAv
KiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJC
N0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5
MTMxMTAxZjJjZGQ5NTA5ODY3ZWZlOTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDcz
MjM5M2IzNGNhZWVlMGFlN2IzMzkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUx
LDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNp
c2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhl
YzMzNWUxMDIzMmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLmIyNTQ3NThkYmY4ZjQ2Y2IxYTQ0MzRj
ZTJjM2U5ZGViYTQ1ZDNlNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BT
ZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsx
NzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRp
b24gQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCk7CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQ
RUNUX0ZBTFNFKF9kaWRGaW5pc2hOYXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dL
TGVnYWN5RXJyb3JEb21haW4sIGVycm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAg
ICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9
CiAKQEAgLTk4NSw3ICs5ODksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JS
ZXR1cm5Ub0ZvcmVncm91bmQpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uKTsKICAgICBfZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAo
X3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9h
ZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVT
VChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAg
IEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5h
YnNvbHV0ZVN0cmluZyk7CiAKICAgICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vYnVuZGxlLWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRl
IHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUs
NyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2Fj
aGUpCiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0u
YWJzb2x1dGVTdHJpbmcpOwogCi0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0
UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpz
ZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CkBAIC0xMTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5n
KExDaGFyIGMpCiAgICAgcmV0dXJuIFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQog
Ci1URVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9v
bCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9v
bCB7IE5vLCBZZXMgfTsKKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxv
YWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6Olllcywg
RnVuY3Rpb248dm9pZChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0g
bnVsbHB0cikKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQ
U2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9u
KSBtdXRhYmxlIHsKKyAgICByZXR1cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZN
b3ZlKHRlcm1pbmF0b3IpLCBjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlv
bkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgor
ICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBj
b25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFy
PiYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRlRVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3Rc
clxuIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJc
biIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7
IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxu
IiwgbG9uZ1N0cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25z
ZSksIFtjb25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVybWluYXRvcihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAg
ICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxu
IiwgcmVxdWVzdC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFr
ZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRl
bnRcclxuIgpAQCAtMTIyMCwxNiArMTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUp
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQotICAgIH0pOworICAgIH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWRE
b3dubG9hZENvbnRlbnRzKE5TVVJMICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRz
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZp
bGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRz
LmJ5dGVzKTsKKyAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5n
dGggPT0gMTAwMDB1KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsr
KQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29u
dGVudHMuYnl0ZXMpW2ldLCAnYScpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8
IDEwMDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAg
IHJldHVybiB7IFtdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAg
ICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNo
YXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0
ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAg
ICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1c
ImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1
MDAwPignYScpCisgICAgICAgICAgICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAg
ICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGly
ZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVU
ZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5T
VVJMICpmaWxlLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRh
ICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAg
ICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKysp
CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRz
LmJ5dGVzKVtpXSwgZXhwZWN0ZWRDb250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6
bmlsXTsKKyAgICBOU1VSTCAqZmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAImV4YW1wbGUudHh0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6ZmlsZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQor
CitURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEk7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOwogICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sg
OiB1aW50OF90IHsgU3RhcnQsIFdyaXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURl
c3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+
IGRvd25sb2FkOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAot
ICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10pOworICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlIG5ld10pOwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3Ry
aW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBO
U1N0cmluZyAqKSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJleGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsK
ICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tE
b3dubG9hZCAqZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxC
eXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAg
ICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMx
Nyw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVs
ZWdhdGUuZ2V0KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3Ry
aW5nICpkZXN0aW5hdGlvbikgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpD
cmVhdGVEZXN0aW5hdGlvbik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwg
W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRo
KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2Fk
RmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWRE
aWRDYW5jZWwgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3Mu
YXBwZW5kKENhbGxiYWNrOjpDYW5jZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIFJlc3VtZSkKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVw
KDEwMDAwKTsKIAotICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29u
dGVudHMubGVuZ3RoLCAxMDAwMHUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRl
cyk7Ci0gICAgaWYgKGZpbGVDb250ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDUwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAg
IH0KKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKIH0KIAogQGludGVyZmFjZSBEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIFJlc3VtZSkKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2
aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3Bv
bnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkK
LSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDEx
MzMgQEAgVEVTVChfV0tEb3dubG9hZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5Pjxp
ZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBz
ZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lk
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0
b3I8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1
YWxDYWxsYmFja3MgPSBkZWxlZ2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VR
KGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBl
eHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxD
YWxsYmFja3NbaV0sIGV4cGVjdGVkQ2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBGaW5pc2hTdWNjZXNzZnVsbHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9h
ZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRl
bGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hd
OworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9
KTsKK30KKworc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1
bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCit7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVz
dGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9
IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byAqd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisKKyAgICBbd2ViVmlldyByZXN1bWVE
b3dubG9hZFdpdGhEYXRhOnJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAo
IXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisg
ICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNlOworICAgIEVYUEVDVF9O
VUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOworICAgIHJldGFpbmVkRG93bmxv
YWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBe
KFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3Rh
bEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAg
ICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAg
IEVYUEVDVF9FUShieXRlc1dyaXR0ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAg
ICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAg
IGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1
ayA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7Cisg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfVFJVRShk
b3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgIH07CisK
KyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENv
bnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JG
aXJzdDVrKFRlc3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJv
b2wgZG93bmxvYWRlZEZpcnN0NWsgPSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdy
aXRlRGF0YSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGlu
dDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisg
ICAgICAgICAgICBkb3dubG9hZGVkRmlyc3Q1ayA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvd25sb2FkZWRGaXJzdDVrKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRS
ZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFp
bmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVn
YXRlKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRh
OworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgewor
ICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAg
d2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7
CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRS
ZXN1bWUpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5j
bHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24p
IHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9u
LnRlcm1pbmF0ZSgpOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERv
d25sb2FkOworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRh
OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9F
UShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAg
ICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07Cisg
ICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisg
ICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29w
KCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgp
LCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdp
dGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURh
dGEpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6
Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmly
c3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFty
ZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBF
WFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25s
b2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2Fk
VGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlv
biBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAg
ICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25s
b2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxv
c3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBG
SVhNRTogTWFrZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9O
U0VfQ0FMTEJBQ0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFm
dGVyWmVyb0J5dGVzUmVjZWl2ZWQpCit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMCwgJnNlcnZlckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rp
b24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291
bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNv
bm5lY3Rpb247CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0o
VmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0
aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5
dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVj
dGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAg
T0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IlxyXG4iLCBsb25nU3RyaW5nPDEwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUu
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2
ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVj
dGlvbkxvc3QpOworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAg
IH07CisgICAgX19ibG9jayBib29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25s
b2FkRmluaXNoZWQgPSB0cnVlOworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAg
ICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRG
aWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRG
aW5pc2hlZCk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxv
bmdTdHJpbmc8MTAwPigneCcpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQor
CisjZW5kaWYKKwordm9pZCB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0
ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0
ZUZpbGUpKHZvaWQpKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2Fk
OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZv
ckZpcnN0NWsoZGVsZWdhdGUpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKwor
ICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFty
ZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBy
ZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFy
ZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPign
YScpKTsKKworICAgIG11dGF0ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2gg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVz
dW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGRpZEZp
bmlzaCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2gpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIFJlc3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQ
U2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVj
dGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25D
b3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVI
VFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0
XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAg
IGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29u
bmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsK
KyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8v
IE1vamF2ZSBDRk5ldHdvcmsgc2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBk
b3dubG9hZCBhZnRlciByZW1vdmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVx
dWVzdC5zaXplKCkpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCht
YWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAor
ICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAg
ICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9
KTsKKyAgICAKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJl
cXVlc3QoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9y
ID0gbmlsOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0
ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgUmVzdW1lV2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24g
Y29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQp
IHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxu
IgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJc
biIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25n
U3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBi
eXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2
IFBhcnRpYWwgQ29udGVudFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJc
biIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8x
MDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0
cmluZzwxMDAwMD4oJ2QnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJl
c3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRG
aWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZp
bGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBF
WFBFQ1RfVFJVRShbWyhOU1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicp
LCBsb25nU3RyaW5nPDMwMDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7
CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwg
bWFrZVN0cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwg
bG9uZ1N0cmluZzw1MDAwPignZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0
aEludmFsaWRSZXN1bWVEYXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFs
IGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdy
aXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdo
dEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVE
b3dubG9hZFdpdGhEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07
CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhj
ZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxv
YWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxv
YWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxv
YWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUp
OworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxl
Q29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisK
KyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBb
cmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
cmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJl
dGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNl
cnZlci5jYW5jZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3
ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxl
Z2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdh
dGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1l
RGF0YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29u
bmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0
cmluZzw1MDAwPignYScpKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4o
V0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBp
ZiAoYnl0ZXNXcml0dGVuICE9IDUwMDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29u
dGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wg
Y2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RT
ZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICAgICAgQHRyeSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0
Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUu
bmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdo
dEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfV07Cisg
ICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
CisgICAgfSk7Cit9CisKK3N0YXRpYyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAg
ICByZXR1cm4ge3sKKyAgICAgICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGly
ZWN0VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAg
ICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJl
Y3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVy
LnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3Qu
SFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
Z107CisgICAgCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0g
XihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBv
bGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBG
SVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1
ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uu
c3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5h
bGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJS
ZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJd
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VS
TFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOwor
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwu
cGF0aCwgIi8iKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5h
bFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAg
ICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAg
ICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisg
ICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJl
ZGlyZWN0LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVj
dENhbmNlbCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNV
UkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNl
bGxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJl
c3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
V0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVT
dHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0Ai
Q3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lD
YW5jZWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0g
XihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5j
ZWxsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2Vs
bGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
RmFpbFdpdGhFcnJvcgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0
cygpLCAxdSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkK
K3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVy
UmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wg
ZmFpbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0
aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAq
cmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRS
ZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsg
NDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNo
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBO
ZXR3b3JrUHJvY2Vzc0NyYXNoKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2Vy
dmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19ibG9j
ayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwor
ICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3LmNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFV0
aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhF
cnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJv
bUhvc3QpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93
bmxvYWQgY29udGVudCIgfSB9CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0
ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1l
LCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERp
ZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwg
ImRvd25sb2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkg
bXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9k
eSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3
IGRvd25sb2FkUmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0
LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1u
dWxsLgorICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUp
OworfQorCitURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRl
bXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5
OllFU107CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRV
Ukw6dGVtcERpciBlcnJvcjpuaWxdOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisK
KyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0g
ZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQg
PSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4o
V0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAg
ICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAg
ICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQoreworICAg
IGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVk
RG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBh
dXRvIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisK
KyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxl
IGF0b21pY2FsbHk6WUVTXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0
ZS5nZXQoKTsKKyAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAg
ICAgICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSk7CisgICAgICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUu
Z2V0KCk7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhF
cnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5v
dENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAg
ICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0
aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAg
X19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuaWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAg
ICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOwor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURl
c3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisg
ICAgfSk7Cit9CisKKy8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorI2lmICFVU0UoTEVHQUNZ
X0NGTkVUV09SS19ET1dOTE9BRFMpCitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3Mp
Cit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9
fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29s
IGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9Owor
ICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRl
LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJU
cnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgICAgIHJlY2VpdmVkQ2hh
bGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmlldyBkb3du
bG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2
ZWRDaGFsbGVuZ2UpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxl
LCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZpbmlzaAorICAgIH0pOworfQorI2VuZGlmCisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdl
RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICpl
cnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RP
V05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlk
UmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7Cisj
ZWxzZQorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7
CisjZW5kaWYKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9v
bCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRp
b25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVl
OworICAgIH07CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVk
KTsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVF
KHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAv
LyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZv
ciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNw
b25zZSkKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9u
IGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAg
IGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9hZCA9
ICdkb3dubG9hZEZpbGVuYW1lJzsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAg
ICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAi
YmxvYiIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07Cisg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAidW5rbm93biIpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgImRvd25sb2FkRmlsZW5hbWUiIGJ1dCB0aGF0J3MgY3VycmVudGx5IG9ubHkgcGlwZWQgdG8g
dGhlIG5hdmlnYXRpb24gYWN0aW9uLCBub3QgdGhlIHJlc3BvbnNlLgorICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rv
d25sb2FkICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIx
MjMiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
ZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRh
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2VOb0ZpbGVuYW1lKQoreworICAgIE5TU3RyaW5nICpo
dG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAi
ICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBi
ID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVj
dFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48
Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0
cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5v
cmcvIl1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10g
YXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwu
c2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1l
LnNlY3VyaXR5T3JpZ2luLmhvc3QsICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3Vi
ZnJhbWVPcmlnaW5hdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwg
PSAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2
YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5l
dyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwo
Yik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkg
b25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFuZGNo
aWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0g
fQorICAgIH0pOworICAgIEhUVFBTZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsg
Ii8iLCB7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8x
MjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9
IH0KKyAgICB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAq
Y2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAg
ICB1aW50MTZfdCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2Vy
dmVyLnBvcnQoKTsKKworICAgIE5TU3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4i
LCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWlu
SFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1d
OworCisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdh
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25zZS5V
UkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl0K
KyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10K
KyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3Ry
aW5nXSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICB9OworICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVt
ZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1
cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShyZXNwb25z
ZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0
cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9i
Iik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24i
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNl
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMy
OGNlMWU4OTY3ZjVkYWIwZDg4OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJi
YTE2ZDI2ODBlMjZjOTk0NjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcg
QEAgc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2Vy
dmluZ0NvbnRleHQ7CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmln
YXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93
bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25I
YW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXgg
YTdkNGU1M2EzNTE3OTI0NWQxZTkwNDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4
OTVhOThkMzA5NTE3ODllOWY5NmNkNmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVk
aXJlY3REZXN0aW5hdGlvblVSTDsKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5k
bGVyKHNob3VsZENvbnZlcnRUb0Rvd25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQgOiBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
dyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5h
dmlnYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUXVpY2tMb29rLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9R
dWlja0xvb2subW0KaW5kZXggYWUyYmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFi
Zi4uZGZlMWQzOGM2NmM0OGZmY2M4ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2
NCw3ICszNjQsNyBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQ
cmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQ
cmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9u
c2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRl
QmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpwYWdlc0RvY3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2Fk
SW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29k
ZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBA
IC0zNzksNyArMzc5LDcgQEAgVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVM
b2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05f
TUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFm
dGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlj
a0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVu
dFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25z
ZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2Vz
RG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmco
ZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVu
dFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVD
VF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1
YjQyMTc1MWVkYzg0MDBjMGEwZWE2MGI4YzQ4NWIuLjJhYzhmMjIzYzYxMTc4MjcxMTEwN2UzMmEz
YmZmMjcwZGQ4OGMyNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlLmgKQEAgLTI0LDE3ICsyNCwzMSBAQAogICovCiAKICNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAK
LUBpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERl
bGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0
YXJ0KShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwot
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9X
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90
LCB1aW50NjRfdCk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAq
LCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwg
TlNFcnJvciAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWRE
aWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBO
U1N0cmluZyAqKTsKK2VudW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAg
IFdpbGxSZWRpcmVjdCwKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZh
aWxXaXRoRXJyb3IsCisgICAgTmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRp
b25SZXNwb25zZQorfTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2Jq
ZWN0PFdLRG93bmxvYWREZWxlZ2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdL
RG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4p
KFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwg
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3du
bG9hZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQg
KiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkIChebmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7
CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2Fk
Q2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2
ZjVkOTliNDEzZTZkMjFhYWEzMDJhODAxZmRkMy4uMWE2YmViN2E0MWE2MDUyNzY3MGQyNDdmODE0
NWIxMjRmMDBkMzhmOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2OCArMjYsOTUgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRl
c3REb3dubG9hZERlbGVnYXRlCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmg+CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQKLXsKLSAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERp
ZFN0YXJ0KGRvd25sb2FkKTsKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7
CisgICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAo
dm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICop
cmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSljb21wbGV0aW9uSGFuZGxl
cgogewotICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAgICAgIF9k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKKyAgICBfY2FsbGJh
Y2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisKKyAgICBB
U1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxl
cik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJl
Y2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2Fk
OihXS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5T
VVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdn
ZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0
aW9uKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQot
ICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CisgICAgX2Nh
bGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7
CisKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsKKyAgICBfZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRG
aWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0
b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9p
ZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdCli
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4g
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlCiB7CisgICAgLy8gZGlkV3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMg
bnVtYmVyIG9mIHRpbWVzLCBzbyBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlm
IChfY2FsbGJhY2tSZWNvcmQuaXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0g
RG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQu
YXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdy
aXRlRGF0YSkKICAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0
b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNv
bXBsZXRpb25IYW5kbGVyCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25I
YW5kbGVyCiB7Ci0gICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSk7Ci0gICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25s
b2FkLCBmaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5h
cHBlbmQoRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAg
aWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlv
bkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZv
aWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRv
d25sb2FkRGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tS
ZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rv
d25sb2FkRGlkRmluaXNoKQogICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwog
fQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YQogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3Ip
Ci0gICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9k
aWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZv
aWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRp
b25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAg
X2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5k
KERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAo
X25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBk
b3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9u
SGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9u
UmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCi0gICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
ZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1Jl
Y29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAg
IGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25I
YW5kbGVyKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9
CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29s
IGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAg
IF9kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGZpbmlzaGVk
ID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQp
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgorLSAoVmVjdG9yPERvd25sb2Fk
Q2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZAogewotICAgIGlmIChfZGlkQ3JlYXRlRGVzdGlu
YXRpb24pCi0gICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRp
b24pOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKIH0K
IAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEyYzljYWRhNjE1ZDFlMmM0
YTU3MzFmMWQxNWQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3du
bG9hZERlbGVnYXRlLmg+CisKK0BpbnRlcmZhY2UgVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUg
OiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9X
S0Rvd25sb2FkICosIE5TVVJMICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxv
YWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShf
V0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tE
b3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdp
dGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3Rp
bmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg3N2E5MjRiZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVkYmYxY2EwODMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCisKK0BpbXBsZW1l
bnRhdGlvbiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZQorCistICh2b2lkKV9kb3dubG9hZERp
ZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZFN0
YXJ0KQorICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwg
dXJsKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
UmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBpZiAoX2Rp
ZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwg
cmVzcG9uc2UpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoo
dWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWlu
dDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAgIGlmIChfZGlkV3JpdGVEYXRh
KQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0
ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAodm9pZClfZG93
bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlv
bkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93
bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZvaWQpX2Rvd25s
b2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9h
ZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKK30KKwor
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJv
cjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQorICAgICAg
ICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworfQorCistICh2b2lkKV9kb3du
bG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxv
YWREaWRDYW5jZWwpCisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7Cit9CisK
Ky0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAg
IGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworfQorCistICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlv
bjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRp
b24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24p
OworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413978</attachid>
            <date>2020-11-12 15:48:50 -0800</date>
            <delta_ts>2020-11-12 18:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201112154848.patch</filename>
            <type>text/plain</type>
            <size>204276</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDNjODJiMWJiZDgwNWU1
ZjEyN2M0ZDBjNWJmZTViYjc3MzMxNWMuLmNkMDBmN2IzNTkzN2IyNzZmZjZhNzA2M2Y2ZGNmNGMz
YjhjZTNlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5IHdhbnQg
dG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAgICAgICA5
LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlv
biBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBU
aGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2Jq
ZWN0IGJlZm9yZSB0aGVuIGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQg
InN0YXJ0cyIgd2hpY2ggaXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAg
ICAgICAgIHNvIHRoZXJlIHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZG93bmxvYWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICAxMC4gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNv
bnRpbnVpbmcgb3IgY2FuY2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250
cm9sIHRoZQorICAgICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAx
MS4gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVS
ZXNwb25zZSBoYXZlIGJlZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0
aGUgc2FtZSB0aW1lIGFuZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVk
RmlsZW5hbWUgQVBJLiAgYWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVz
ZWQsIGFuZCBub3QgcmVhbGx5IG5lZWRlZC4KKyAgICAgICAgMTIuIGRpZENyZWF0ZURlc3RpbmF0
aW9uIGlzIGdvbmUuICBUaGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3Nhcnku
ICBJZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBm
aXJzdAorICAgICAgICAgICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9u
IGhhcyBkZWZpbml0ZWx5IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMy4gc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNh
bGxlZCBzaW5jZSB3ZSBhZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlLgorICAgICAgICAxNC4gb3JpZ2luYXRpbmdGcmFtZSBpcyBn
b25lLiAgT24gX1dLRG93bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUlu
Zm8gdGhhdCBvZnRlbiBjb250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9u
IHdhcyB0aGVyZSwKKyAgICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGlkQmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlv
blJlc3BvbnNlIHdoaWNoIGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUg
QVBJIHRlc3RzIGZvciBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tEb3dubG9hZCBjYW5j
ZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAg
ICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBzZXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dL
RG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfd2FzVXNl
ckluaXRpYXRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBp
bml0V2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ1dlYlZp
ZXddKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVkaXJlY3RDaGFpbl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCB3YXNVc2VySW5pdGlhdGVkXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IHJlc3VtZURhdGFdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdGcmFtZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0Rv
d25sb2FkIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFy
dENhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjAtMTEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBEZWZpbmUgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4u
MmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERl
c3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9k
b3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShu
ZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0
KQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA1
LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQg
PSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdv
cmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2Un
cmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENh
bGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAy
Y2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZkNDI5Y2Iw
OWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAs
OCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtM
b2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERp
ZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25s
b2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCA5NWY4ZGVjMzAyNTFiODBiYWEyOWNlNTkwODczYTdh
YmFlZmRhOWNlLi41Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDggQEAgdm9pZCBEb3dubG9hZDo6
cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxp
emF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlM
aXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogI2VuZGlmCiAKKyAg
ICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUg
bWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rvd25sb2FkCisgICAgLy8gYmVjYXVzZSB0
aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBhdGggd2UgZ290IGZyb20gdGhlIGRh
dGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Npb24gZG93bmxvYWRUYXNrV2l0aFJl
c3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBbbV9kb3du
bG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Np
b25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZp
ZXIpKTsKQEAgLTgzLDcgKzg1LDIyIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKIHZvaWQgRG93
bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9kb3dubG9hZFRhc2spOwotICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1
Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICBb
bV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihb
cGF0aCA9IHJldGFpblB0cihtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNr
RmlsZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChO
U0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RP
V05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1vamF2
ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1lIGRh
dGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAgICAgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBbdW5h
cmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lS
YWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHN0
YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtO
U0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0
YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktl
eTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgICAg
ICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0OnBhdGguZ2V0KCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xv
Y2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRB
cmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAg
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNv
ZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHBhdGgpOworI2VuZGlmCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3Vt
ZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyB9OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bWVEYXRhUmVmZXJlbmNlKTsK
ICAgICB9KS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDBiYjg1NzMwNTM4NGNiMzVkNzhhNjRkYWM5NDM0ZDdmYzgyNGQ5
ZjUuLmY4ZmFmYjFjNzY0MTg1MDU3OTY2ZTk0MWU1NjI5NjZiNWQ3YTU3NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkg
KzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGRvd25sb2FkTWFuYWdlcigp
LnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxE
b3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewotICAgIGRvd25sb2FkTWFu
YWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwg
cGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZG93bmxvYWRNYW5h
Z2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBw
YXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBjYWxsRG93bmxvYWREaWRTdGFy
dCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYTc3ZmFiOTYxZGYyZTVlMzA2MTI2OWY1OTJhMmM0
Yzg2OTQ2ZjlkLi42N2Q3NTNmZDA3NmI4YzAxYmM5OGIzMjcwOGIwNmY0MDE5MDUyYmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYs
NiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgU3RvcmFnZU1h
bmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtNDIxLDcgKzQyMiw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpT
ZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJv
Z3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMjBmZmJjYzNmY2RmYWRlYTNjMGEzNDk2YzUyODIyNDg0ZmZk
YWExNS4uMmU0NTE1OWIwOWU5NDQ5YmMwMjA5ZTQyYjVjYzYxNmFhOWNkNWI2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC00OCw3ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAg
RG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJv
b2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQotICAgIFJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAg
ICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERp
ZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggOGE4YWIwYjliODMxY2Fm
NDhmYTIyNDUzMDk4YWZiMjRhYWE4ZjRkZS4uY2I2OTZmMzJhOTNlNWQ2NmViNzBjZDA0OGZlYjE0
MTZhYjk1ODdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lv
bkNvY29hJiBzZXNzaW9uLCBTZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7Cisg
ICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRp
b24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFz
ay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0p
OworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVj
b2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0
aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051
bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0
IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRh
YmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp0YXNrLl9wYXRoVG9Eb3dubG9hZFRhc2tG
aWxlIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJl
c3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZl
cmVuY2UgeyB9OwogICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YVJl
ZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggYjIyNjg4ZTBkYmMxOTJlYjY3Zjc4YjUxNTI0ZWM1MWVkNzE5ZDMzMy4uMzE5ZTE5ZGYy
MjY3Yjg1ZDVkMTZhYmU4YmY4MjBhZTExZmFkMGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzEsNiArNjcxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRy
YXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsn
IkRvd25sb2FkSUQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9h
ZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3
M2UxMDk5NGY1ZGMxMzdmYWY0MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJj
ZGUxOTIwZmI1MDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApA
QCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0Vycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLRmluZFJlc3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCmluZGV4IGM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQuLmU0
OWRmOTQ5YjdhYmJiOWUyMWNlYmMzNjA0M2ViMGI0MDVhNzFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldLQ29u
dGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tO
U0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9X
S0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFs
bG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtXS0Rvd25sb2FkIGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uMmFh
OWNiODVkMDRkYTdkNTg1ODUzYmY1MmVmZGU1NWM0OGViNTg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMjk5LDYgKzI5OSw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVs
ZUxpc3QubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVz
dWx0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVu
dC5oCmluZGV4IGQzN2Y2Mjg2OGI2MTI5N2ExMWFmZmYzODAyYTgwYmE2MTJhNGRjZTUuLmRmZjcz
ZmE2NWJmNmZiMGFkMTdhZmE5OWY1ODJmOTQyZmFmN2EwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSwxOCArNDksMjAgQEAg
ZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBBUEkgewogCitj
bGFzcyBEYXRhOworCiBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERv
d25sb2FkQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5
RGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxlZ2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAppbmRleCAwNjFlMTg2ZGJlODg2YTA3NDIyYmY4M2I3YWZjZmNiYzZhYzll
NmFlLi45Mjk0MDhlYTA1Mzg2NWZiZDk1ZTNkYjQ2NGVlYzhlN2M5NmE5MzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTU0
LDYgKzU0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgRG93bmxvYWRQ
cm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtOTksNiArMTAwLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4p
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxv
d0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApp
bmRleCA3Y2Y1NzcyNGYyYWI5MzM5MDA4ZDFiMmUxZGJkMmU3YTM0ZGYxOTc5Li45ODIwNDY5MmUx
NTdmYzI1MjQ2NGFmNzdmNjdiYmI0ODlmZDA0ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRE
b3dubG9hZENsaQogICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwogICAgICAgICB9CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAg
ICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5k
ZXggZGMyZTBkMTkyMzE1ZWU1NzJkMWQxZjY3OGFiYTYxZDZjMjRkMTM5MS4uZWM2Y2JiNDEyZjhi
NWRmNThlZGQzZDlmZTljOGRmY2IzMmZjODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBXS19FWFBPUlQgV0tDb250ZXh0
UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKFdLRG93bmxvYWRTZXREb3dubG9hZENsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLRG93
bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
NmYxMzE3NzMxNzNiZDI3ZGZhODEzNTY0OGExZjA3NWIxYzQ4ZTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOwor
QHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
CitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAorCisvKiBAYWJzdHJhY3QgVGhlIHJl
cXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgorICBAZGlzY3Vzc2lvbiBJZiB0
aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3JpZ2lu
YWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xsb3dz
IHRoZSByZWRpcmVjdC4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxh
YmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSBk
ZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMgZm9yIHRoaXMgZG93bmxvYWQu
ICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4g
ZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIGNhbmNlbGxhdGlvbiBpcyBm
aW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUbyBhdHRlbXB0IHRvIHJlc3VtZSB0aGUgZG93bmxvYWQs
IGNhbGwgV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHdpdGggdGhlIGRhdGEgZ2l2
ZW4gdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLgorIElmIG5vIHJlc3VtZSBhdHRlbXB0IGlzIHBv
c3NpYmxlIHdpdGggdGhpcyBzZXJ2ZXIsIGNvbXBsZXRpb25IYW5kbGVyIHdpbGwgYmUgY2FsbGVk
IHdpdGggbmlsLgorKi8KKy0gKHZvaWQpY2FuY2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEg
KiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MmE5OTQ1NDE5MDc3YmQ5NDk4N2RhMDJiY2E0
MjM5ZjgxODEzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCisKKyNpbXBv
cnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2Fk
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgorCitjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8V0tEb3dubG9h
ZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAg
ICAgICAsIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9u
ZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkV3Jp
dGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRp
ZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOildKQorICAgIHsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9XaWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zUmVx
dWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246c3RhdGljX2Nhc3Q8TlNI
VFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSBuZXdSZXF1ZXN0Om5z
UmVxdWVzdC5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopKV0oV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFs
bG93OgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9saWN5XTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4gY2hhbGxlbmdlLmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisKKyAgICAgICAgW21f
ZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0
KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWws
IGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6
Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAg
ICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGlu
Zyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0
UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25d
OworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25k
c1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpCisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVuYW1l
OnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbZG93bmxv
YWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopKV0gKE5TVVJMICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0p
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzRmlsZVVSTCkg
eworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3Jp
dGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBV
UkwiXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOworICAgICAgICAgICAgaWYgKCFbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpb
ZGVzdGluYXRpb24gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XS5wYXRoXSkgeworICAg
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAg
ICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
Ok5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5m
bzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChbZmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0aW5hdGlvbi5wYXRoXSkgeworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAg
ICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JE
b21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0p
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUg
fHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkKV07CisgICAg
fQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0Rp
ZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdh
dGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vy
cm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3VtZURhdGEpXTsKKyAgICB9CisKKyAgICB2b2lk
IHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0
aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25s
b2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25M
b3N0IHVzZXJJbmZvOm5pbF0gcmVzdW1lRGF0YTpuaWxdOworICAgIH0KKworICAgIFdlYWtPYmpD
UHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9y
ZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNw
b25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlIDogMTsKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5p
c2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvciA6IDE7Cit9Owor
CitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZAorCistICh2b2lkKWNhbmNlbDoodm9pZCAoXiko
TlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9kb3dubG9hZC0+
Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSkpOworICAgIH0pOworfQorCist
IChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKK3sKKyAgICByZXR1cm4gX2Rvd25sb2Fk
LT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpE
b05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVs
ZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lk
KXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0Q2xpZW50KGFkb3B0UmVmKCpu
ZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5NGY0ZjkzMGJhOTMyOGYzNmVlOTJmYjlmN2Vm
NjczOTU0NjRlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsKKworLyogQGVudW0gV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRo
ZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCisgQGNvbnN0YW50IFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgcmVkaXJlY3QuCisgQGNv
bnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93ICAgIEFsbG93IHRoZSByZWRpcmVj
dC4KKyovCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3kpIHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwsCisgICAgV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90
b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qIEBhYnN0
cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbiBIVFRQIHJlZGly
ZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNl
aXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZWRpcmVjdGlvbiByZXNw
b25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVlc3QgdGhhdCB3aWxsIGJlIHNl
bnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91
IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CisgdG8gcHJvY2VlZCB3aXRo
IHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0
aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJlY3RzIHdpbGwgYmUgdGFrZW4u
CisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9r
ZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9uZCB0byBhbiBhdXRoZW50aWNhdGlv
biBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IHJlY2VpdmVk
IHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNoYWxsZW5nZSBUaGUgYXV0
aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29t
cGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byByZXNwb25kIHRvIHRoZSBjaGFsbGVu
Z2UuIFRoZQorIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzIG9m
IHRoZSBlbnVtZXJhdGVkIHR5cGUKKyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRl
bnRpYWwsCisgdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMgdGhlIGNyZWRlbnRpYWwgdG8gdXNl
LCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRob3V0IGEKKyBjcmVkZW50aWFsLgor
IEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2Vi
IHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugd2l0aCB0
aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSBkaXNwb3Np
dGlvbi4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5l
ZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBk
b3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNoIHdlIG5lZWQgYSBmaWxlIHRvIHdoaWNoIHRv
IHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUgc2VydmVyIHJlc3BvbnNlLCBpZiB0aGlzIGRv
d25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVxdWVzdC4KKyBAcGFyYW0gc3VnZ2Vz
dGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2Ugd2l0aAorIGVpdGhl
ciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBvciBuaWwgdG8gY2FuY2VsIHRoZSBk
b3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEgZG93bmxvYWQgb2YgYSBibG9iIFVS
TCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVkRmlsZW5hbWUKKyB3aWxsIG9mdGVu
IGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCBidXQgd2ViIGNvbnRl
bnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVkIGRvd25sb2FkIGZpbGVuYW1lLiAgSWYgdGhl
IGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBpdCBtdXN0IGJlIGEgZmlsZQorIHRo
YXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGV4aXN0IGFuZCBjYW4g
YmUgd3JpdHRlbiB0by4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51bGxhYmxlIE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFt
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBfTnVsbGFibGUgZGVzdGluYXRp
b24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBk
b3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUgZGVzdGluYXRpb24u
CisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IGhhcyB3cml0dGVuIGRhdGEuCisg
QHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFt
IHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBA
cGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVz
IGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gSWYgdGhpcyBkb3dubG9hZCB3
YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2FkLCB0aGVuCisgdG90
YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUgbnVtYmVyIG9mIGJ5
dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgorIElmIHRoZSB0b3RhbCBudW1i
ZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSB3aWxsIGJl
IC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0
ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRv
dGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdl
YiB2aWV3IHRoYXQgZmluaXNoZWQuCisqLworLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tE
b3dubG9hZCAqKWRvd25sb2FkOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3du
bG9hZCBoYXMgZmFpbGVkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCBoYXMg
ZmFpbGVkLgorIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgaW5kaWNhdGluZyB0aGUgZmFpbHVyZSBy
ZWFzb24uCisgQHBhcmFtIHJlc3VtZURhdGEgVGhpcyBkYXRhIGNhbiBiZSBwYXNzZWQgdG8gV0tX
ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHRvIGF0dGVtcHQgdG8gcmVzdW1lIHRoaXMg
ZG93bmxvYWQuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihudWxsYWJsZSBOU0Rh
dGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIwMjU0MDVjYjMzYjdhOWQ3YzRhZjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
IkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWQuaCIKKyNpbXBvcnQgIldLT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Rvd25s
b2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9k
b3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IF9kZWxl
Z2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFiOTE1N2Q4MDNhNGZiYWViMTM4Yjcz
YmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhiNmFkMzRmYzYxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQpAQCAt
NDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRpb24tPm9yaWdpbmFsUmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVI
VFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0aWF0ZWQKK3sKKyAgICByZXR1cm4g
X25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZlQ29udGVudE1vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmgKaW5kZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4NGEwNTg3OC4uZWUz
ZTBjMDk1YjkwMWVjMDNlMDI0NmJkN2ZmMmYyYTE5MGZlM2U1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdL
RG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlv
bjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAgLTUwLDEwICs1MSwxMiBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICBAYWJz
dHJhY3QgVGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJv
bSB0aGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25I
YW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2Fu
Y2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUFsbG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBj
b25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4g
dGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cs
CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5n
IHRvIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSBwcm90b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY0
LDYgKzE2NywxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeSkgewogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2Ugc2hvdWxkQWxsb3dEZXByZWNhdGVkVExTOih2b2lkICheKShCT09MKSlkZWNpc2lv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3
IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25zZSBU
aGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJh
bSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZp
Z2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
ZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1YjUuLjIzNGEwYjAy
Y2JmYjhhMzdkZWRlZjkyODkxNTVjZTdhN2U5OWE1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmgKQEAgLTU4LDExICs1OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCArIDEp
Oworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19N
QUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5
LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9
IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgKyAxKTsKIAotc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaAppbmRleCA5MTU4
OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdiNjFjMTdhMWYxMzljLi5hN2E3ZDkyOWRmZjg3MDQzZTdm
M2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKQEAgLTI3LDQgKzI3LDUgQEAK
IAogQGludGVyZmFjZSBXS05hdmlnYXRpb24gKFdLUHJpdmF0ZSkKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpfcmVxdWVzdDsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2FzVXNlckluaXRpYXRlZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAw
MzU5MWU4YThmYTkwNDIxMjA5YjkzOTBkNGYzZDhlMDc2ODBkZjYxLi4yNzdkOGQxZjljOGJmNGZi
YTBmYjg2NmIzZGZkZjI5Y2U3OWEwOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNp
bXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBv
cnQgIkRvd25sb2FkTWFuYWdlci5oIgogI2ltcG9ydCAiTGVnYWN5RG93bmxvYWRDbGllbnQuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5o
IgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmgiCkBAIC01NjEsMTIgKzU2MywxMiBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpw
b2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8
UwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3Jl
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3
cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3Rv
cmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQg
ZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRh
U3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9
CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJl
c3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3Jl
ICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9h
ZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRh
dGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAg
cmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNz
UG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJW
aWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5n
ZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAKIC0g
KHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90
KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNv
bXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2Ew
MzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYyNDk4MGM5Y2ZmNjdlY2QzYmVkZTczZmUyNDAwODE4YWE1
MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tEb3dubG9hZC5kb3dubG9hZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19U
QkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywg
c2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRl
PiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2
b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3Ry
aW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwog
Ci0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9y
aWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilf
ZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3Rv
cmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tX
ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3QiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4
LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0
b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
IldLV2ViVmlldy5fcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVz
dCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vz
c2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNzYxYTFkYTBmNjViMzY5OTdiYWI0
OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uZjQ4OTI1MjMxMjA1ZDY0N2YwNjY2NWY3ZTc2OGNjNWVkMmMw
ODgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLQmFj
a0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRlbTsKIEBjbGFzcyBXS0Nv
bnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRp
b247CiBAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNzIFdLRnJhbWVJbmZvOwpAQCAtNDUwLDYg
KzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUg
Y2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogICovCiArIChCT09MKWhhbmRsZXNV
UkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJzdHJhY3QgQmVnaW5zIGEgZG93bmxvYWQgaW4gdGhl
IGNvbnRleHQgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgd2VicGFnZSBhcyBpZiB0aGUgV0tO
YXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVkIGEgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQgaW5z
dGVhZAorIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHNwZWNpZnlpbmcgdGhlIFVSTCB0byBk
b3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0
aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisgKi8KKy0gKHZvaWQpZG93bmxvYWRSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxv
YWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyogQGFic3RyYWN0IFJlc3VtZXMgYSBkb3dubG9hZCB0
aGF0IGZhaWxlZCBvciB3YXMgY2FuY2VsbGVkLgorIEBwYXJhbSByZXN1bWVEYXRhIERhdGEgZnJv
bSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3IgYSBXS0Rvd25sb2Fk
J3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBB
IGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4KKyAqLworLSAodm9p
ZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3Ry
YWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRpc2N1c3Npb24gVGhlIHZh
bHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwgdmFsdWUgb2YgdGhlIENT
UyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBuaWwgd2lsbCByZXN0b3Jl
IHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDlj
Njc0Li43NTZmNjQxMzM0MDdlOWYyZGM0ZWEyZTRiMDdjODVjY2ExOTg0ZDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU4LDkgKzU4
LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50
V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0
ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKICNp
bXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJXS0ZyYW1lSW5mb1ByaXZh
dGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tM
YXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5oIgpAQCAtNzA4LDYg
KzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdl
ZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJldHVybiB3cmFwcGVyKF9w
YWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5h
YnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKWRvd25sb2FkUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZXN1bWVEb3du
bG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJv
bURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZlciBzZXREZWNvZGlu
Z0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07Cisg
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJy
YXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNs
YXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAi
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVj
b2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAi
TlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYgKCFwYXRoKQorICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9X
TkxPQURTKQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxv
YWQgaWYgdGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIHNvbWVvbmUg
aGFzIHJlbW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0
aGF0IGxvY2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBbW05TRGF0YSBkYXRhXSB3cml0ZVRvRmls
ZTpwYXRoIGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgorCisgICAgX3BhZ2UtPnJlc3VtZURvd25s
b2FkKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSksIHBhdGgsIFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRv
KiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChXS05hdmlnYXRpb24gKiln
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewog
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFkZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMu
LjUwYTYyYjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRn
ZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBX
S0Rvd25sb2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVu
Y2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQw
YzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJhMWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRl
OTAwNDVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNs
YXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2FkOwogCi1XS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tf
SU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3QgPE5TQ29weWluZz4K
IAotLSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZvaWQpcHVibGlzaFBy
b2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCks
IGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJk
YmMuLmQ1ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5MjdmNTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTI4LDY2
ICsyOCw4NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiRG93
bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVt
ZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRv
d25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCitzdGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2FkICosIF9XS0Rvd25sb2FkICo+ICpkb3du
bG9hZFdyYXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNNYXBUYWJsZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisgICAgICAgIHRhYmxl
LmdldCgpID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJsZV07CisgICAgcmV0
dXJuIHRhYmxlLmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMi
KQorQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklOR1NfRU5ECiAKLS0g
KHZvaWQpZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxvYWQyOihXS0Rvd25s
b2FkICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2Rv
d25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAgICBbc3VwZXIgZGVh
bGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQg
Kilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9hZFdy
YXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0
V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtkb3dubG9hZFdyYXBw
ZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3
cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtk
b3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAgIF9kb3dubG9hZC0+
X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5fZG93bmxv
YWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNl
bChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNz
QXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJM
KTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CiB9CiAK
IC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVw
ZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlcXVlc3Qo
KS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAg
ICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2Uo
KSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQt
Pm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpv
cmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7CiB9
CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4g
TlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93bmxvYWQt
PnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CiAgICAgICAgIHJl
dHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTCl3YXNVc2VySW5p
dGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOworICAg
IHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOwogfQogCiAt
IChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93
bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihf
ZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0KIAogLSAoV0tGcmFt
ZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigm
X2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rv
d25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQpY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVybiAqX2Rvd25sb2Fk
LT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNl
YzVmOWRiNzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFjY2FjYjVmNzBlMTRhZTNiOTczODdmNDY4
YTgzYTdiYjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMzEsNiArMzEsOCBAQAogCiBAcHJvdG9j
b2wgX1dLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk
ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAoQk9PTClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
IAogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxs
b3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4w
LCAxMS4zKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwu
aAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIx
NzM3NTdhNTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1
LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3du
bG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRy
YWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxv
YWQ7Ci19OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0BpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkg
PFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiBfZG93bmxv
YWQ7CiB9Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PgogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEz
ZmUuLmVhZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENs
aWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisg
ICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQo
ZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25s
b2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRleCA3NWQ1MTIyMWQy
YzM1MTgyZjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBj
YmY3NTY1MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9MZWdhY3lEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAg
ICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQg
ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25s
b2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dP
dmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2Fk
UHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsK
ICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZl
ZWJjZDIzNjk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0
YjYzNTk1NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xl
Z2FjeURvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEb3du
bG9hZFByb3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAgLTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewpAQCAtNzYs
NyArNzksNyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdD
b250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUAogfQogI2VuZGlmCiAKLXZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
Cit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93
bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERp
ZFN0YXJ0KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsK
IH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNw
b25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJM
UmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QKICNlbmRp
ZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxC
eXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0
dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
UmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9h
ZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcg
KzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9u
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5kaWYKIAogICAgIGlmIChtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5h
dGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3Jl
YXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4
Miw3ICsxODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2go
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIw
NCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVB
bGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRlID0gTk87CiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93
T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlv
biA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zlcndy
aXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRl
LmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9h
ZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJP
T0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgog
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07Cisg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCi12b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkg
ewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6CiAjZW5kaWYKIAog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6
ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWls
V2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMjYz
LDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2Vs
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6
W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07Cisg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
Ukw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07
CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0
ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tl
bklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlmCiAKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggNTc0
YzM0MmYzM2RjZjA2Y2NhZGExMWYwYmQyZDA5N2VjNWE5NTdhMy4uODY5YmM2OWUyNmRmZTVkNWZh
MzgwYzE2YWRiZDlkM2QxZjdkZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgogCiAg
ICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQ
STo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAorICAg
ICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94
eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwpAQCAtMjM4LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2Vi
Vmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Q3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRCZWdp
bk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbEVuZE5hdmln
YXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBjNDEwMmZmNTJiOTVlMzIzNDU5MGNlOWUwMzE3
NjUyOTVlOTZiZGE3Li5iNGY5ODNlNjkzOTYyZmE3MmFlY2JmNTk5NjkzMDdjODdlODJhMTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5o
IgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCYWNr
Rm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVs
ZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpAQCAtMTg3LDYgKzE4
OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KV07CiAg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3RlcktleUZvcldlYlZp
ZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5cHRvTWFz
dGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3du
bG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2lu
TmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9u
VG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zvcndh
cmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06KV07CkBAIC01NTUsMTEgKzU1NywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9
IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVz
dCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0
Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNV
UkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9u
QWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbGlz
dGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3Rd
CisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShb
bnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAgICAgICAgICAgIHx8IFtuc1VSTFJlcXVl
c3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9iIl0pIHsKKyAgICAgICAgICAgICAg
ICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNjM4LDkgKzYzOSwxMiBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXIt
Pmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dX
aXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFtsb2NhbExpc3RlbmVyID0gV1RG
TW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZShhcGlXZWJzaXRl
UG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9w
dGltaXplZExvYWQpIHsKQEAgLTc1NCw3ICs3NTgsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBh
ZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTExNjgsNiArMTE3MiwxOCBAQCBSZWZQdHI8QVBJOjpTdHJp
bmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+
c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5Jiwg
QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkg
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndy
YXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi43YTU4M2My
ZTFlN2U4ZGIzMGExYjcwNTFhYzlhOWZkYzRhN2I0YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
IAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBvcnQgIkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNP
YmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0
Y2QwNzdmMzYuLmQ5OWI4Yjg2ZGM3MDc2OTE1MThkNGEyOWI3NjQwY2RlNThmZjMzYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxv
YWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9CiAKLURv
d25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxvYWRQcm94eTo6
fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAg
IG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0cjxBUEk6OkRh
dGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpAQCAtMTE3
LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RD
aGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgp
KQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAg
bV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQor
ICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQtPmxlZ2FjeURp
ZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNzMsMTEgKzE3OSwxNiBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0
ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3Ip
OworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRh
LmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93
bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2Ez
NWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uNGQyMGIxNmRjMTc4YTQ2NjBiYmZlNzRjODUwMzYwYTM4
M2NjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw4IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1l
SW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQ
STo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwg
V2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0K
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRD
YWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFj
aykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAtMTIwLDYg
KzExNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKIAorcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJz
aXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKwogICAgIERvd25sb2FkUHJv
eHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
bV9kYXRhU3RvcmU7CiAgICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fY2xpZW50OwpAQCAt
MTM0LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWlu
OwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6OkZy
YW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggNmVlMjZkMDQ2YjBiMjE4ODcwNzNlNmVlNzM0OTg0M2RhZDMz
NWFmYS4uYzFmZTI0MWEyZWEzNzFiMTdkM2IzODU1NzA0OTRjM2QyNTE5MjEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVH
QUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMzEzODYxNzBkMjYwMTVhN2EwMjllZTRiOTFmYmE4YjYzNzk1ZTRlNy4uYjY3NTY0
YWMyNTMxYmFiOTI3NDQxZmIzOTZkZTVkMjBmNGRjMDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTY4LDcgKzMxNjksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rp
b246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVz
ZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikgewotICAgICAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xp
Y2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
cG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4NSw3ICszMTg2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3Zl
KHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwg
U3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJl
ZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xv
c2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGlj
eUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2Vu
ZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUoc2Vu
ZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMSwxMSArMzIy
MiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMp
LCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNz
U3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6
IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0
aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+
JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRy
PEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmll
cigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0MiwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
YWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246
OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAg
ICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9h
ZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVl
c3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygp
IDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxi
YWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvblJlc3Bv
bnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBGSVhNRTogT25jZSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8gbG9uZ2VyIHVzZWQsIHdlIHNob3VsZCBhc3NlcnQg
bmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVyIG51bGwgaGVyZS4KKyAgICAgICAgICAgIGlmIChu
YXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgKm5hdmlnYXRpb25SZXNw
b25zZSwgKmRvd25sb2FkUHJveHkpOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5hdmlnYXRp
b24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlv
bi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0
Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDk0LDcgKzUxMDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9u
KHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
cywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBp
dCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUt
Pm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUs
IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUzMjUsNyArNTMz
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
cG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7
CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNh
ZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpO
bykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpAQCAtNTM2Myw4ICs1MzcxLDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVx
dWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJs
KCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9u
SUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0
cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
OjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMp
LmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJp
YnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBh
Z2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1v
dmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBwcm9j
ZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJy
b3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNz
ZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50
cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM3MywxNCArNTM4Mywx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAg
IAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlv
bi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1v
dmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRF
eHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJl
c3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xp
ZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVx
dWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRo
aXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0
dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNjAx
OSw2ICs2MDI3LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9h
ZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3du
bG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENhbGxEb3du
bG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxv
YWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0
ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0
YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAg
ICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJkZjExYmE0NjY0NzZjMjdiMzJhNWI5ZmM5ZmVl
MzU1N2YyMGE3ZDUuLmY1MjI3NTE1MjNkNmZmYmRmMGYyOTJhMThlMmU2NDY1NTA5MDA2MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTYyLDcgKzExNjIsNyBA
QCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBlbnVtIGNs
YXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwotICAg
IHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9
LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiwgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpO
byk7CiAgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0
ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwpAQCAtMTI3Nyw2
ICsxMjc3LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRp
b25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8
QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNv
bnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93
bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCA2MzQ4MDBiMjg4MzIwYmY5NDcyNDY5MzY3YTlhNDIyM2ZmMjNiMzRmLi44
NjA5ZWVmNzM1ZmIzOGMxODhiMmU1ZjM2ZWMwMzhkMWFjNjZkNGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBEb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi1Eb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRh
dGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rvd25sb2FkUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShk
YXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAt
MTE0OSw3ICsxMTQ5LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAoIXBhdGgu
aXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2Fk
UHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFS
ZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2FsbERvd25sb2FkRGlk
U3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWNmZTZkNDcwZmNhYzIwZTJkYWQwMjBk
NDQ1ODNmMmE3NjY4MjY5Mi4uMzc4MTA4NTcxMWFmNjMzYjExZWZlZTU3NGI0MWZlOWMyNjA0Y2Ux
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTcsNiAr
MTE3LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91
Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAK
IGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJv
Y2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwNSw3ICsyMDYs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9
KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwg
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBB
UEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlk
U3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVlOTk3MTAxOTYw
MzZiM2ZhMWJmZTMxMzE1M2I4OWYyODg4N2QzOS4uODhhMzQ5ZTM5ZmIwNzc0OTFmZmY5NTk3YWQz
N2M0MDQ3ZTNiN2Y0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODEyLDYgKzE4MTIsOSBAQAogCQlDRUU0QUUyQjFBNURDRjQzMDAw
MkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9Owog
CQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAv
KiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1l
bnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUy
RUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3du
bG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQjI1
MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZEludGVybmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29r
aWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2
MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0
RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZp
ZXcubW0gKi87IH07CkBAIC01MzU2LDYgKzUzNTksMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBv
cHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhE
MDBEOTIxREIgLyogV0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLRG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURG
MEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93
bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0Yy
MkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVu
dFdvcmxkUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRl
bnRXb3JsZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzEx
MzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzQ5OCw2ICs3NTA1LDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0QTAw
MzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2QjIy
OUYyRDRCMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywK
IAkJCQk1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZv
UHJpdmF0ZS5oICovLAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
LmggKi8sCisJCQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8s
CisJCQkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICov
LAorCQkJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAq
LywKIAkJCQkxQUY0NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFB
RjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0
Njg4RkQwMDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTExODE2LDcgKzExODI3
LDEwIEBACiAJCQkJQkM1RDI0QzUxNkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01U
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tE
T01UZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUwMEQ5
MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEyODhDRDlB
MDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkEyNTJF
Q0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
REYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdF
MDA5RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFlOTRiMTAwNzUyMThkMzlk
YzMxZGNmYjA0NmFhODY1Yjk1MTE2Yi4uMDJlMWJkYzA0MzI5YmIyNjQ3Njk0MGIzNzg2Yzg1MTcx
NTUwZjZkNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTExLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1bQmVj
b21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9Eb3du
bG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmln
YXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5h
dmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNo
TmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0U2Vy
dmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAo
c2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToK
KyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25sb2Fk
VGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZp
bGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQ
cm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxC
eXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBkb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
ZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3du
bG9hZDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRD
YW5jZWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRDcmVhdGVEZXN0aW5hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJv
bSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tLgorICAg
ICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKToK
KyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNX
cml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOgor
ICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRp
b246XSk6CisKIDIwMjAtMTEtMTEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUgQ2hlY2tPdXRTb3VyY2Ugc3Rl
cCBmb3IgbmV3IGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJj
ZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
ZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2OGFm
MjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29h
LnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBj
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29s
Lm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
ZDEyNzQ1MzhhNzM2YTBjZGE1NTM0YWEzNzI2YWU2OTAzYTBmNDY3Li41MzU3ZDExY2QxNTI0NTg0
OTA4NDMwZTVlODY2NWU2ZTUyZjMxMGYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIw
OSw4ICsyMjA5LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHRE
dXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXph
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAw
RkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVn
YXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2Fk
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcg
LyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
NzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAv
KiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1
NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0
QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NzkzLDYgKzI3OTMsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3
R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlF
bXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRl
Lm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0g
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3
RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzExMyw4ICszMTE1LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRl
c3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRl
eHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RD
b250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyog
VGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2
M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEyMDAw
OEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0RkZD
RTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDNzJF
OENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
ICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1l
bnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5MTMxMTAxZjJjZGQ5NTA5ODY3ZWZl
OTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDczMjM5M2IzNGNhZWVlMGFlN2IzMzky
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgVEVTVChDb250ZW50Rmls
dGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBk
ZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1YzgwYzZm
NzliZDM1ZWZjMDguLmIyNTQ3NThkYmY4ZjQ2Y2IxYTQ0MzRjZTJjM2U5ZGViYTQ1ZDNlNzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRl
c3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS05h
dmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsxNzgsNyBAQCBURVNUKF9XS0Rvd25s
b2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRpb24gQ29udmVydFJlc3BvbnNlVG9E
b3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25I
YW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7
CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9h
ZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5pc2hO
YXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dLTGVnYWN5RXJyb3JEb21haW4sIGVy
cm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24gPSBZRVM7Ci0g
ICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5
ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0
RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTk4NSw3ICs5ODksNyBA
QCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiB7
CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKTsKICAgICBf
ZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25s
b2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2FkTmF2
aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9XS19TVFJFUShmaXJz
dFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKICAg
ICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYnVuZGxl
LWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUg
c2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUsNyBAQCBURVNUKFdlYktpdCwgRG93
bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmly
c3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCi0g
ICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0x
MTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMpCiAgICAgcmV0dXJu
IFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQogCi1URVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0g
Y2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9vbCB7IE5vLCBZZXMgfTsKKworc3Rh
dGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVF
VGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6OlllcywgRnVuY3Rpb248dm9pZChUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0gbnVsbHB0cikKIHsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICByZXR1
cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpLCBjb25u
ZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11
dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNh
c2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0
aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCht
YWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBjb25uZWN0aW9uLCB0ZXJtaW5hdG9y
ID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFyPiYmKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlRVRh
ZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3RcclxuIiA6ICIiLAogICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50
eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPign
YScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCB0ZXJt
aW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRv
cihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7
CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVx
dWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsK
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAgICAg
ICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgpAQCAtMTIyMCwxNiAr
MTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgIH0pOworICAg
IH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKE5TVVJM
ICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEw
MDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKKyAgICBpZiAoZmls
ZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5ndGggPT0gMTAwMDB1KSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQorICAgICAgICAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRl
cylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7IFtdKFRlc3RXZWJL
aXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJIVFRQLzEuMSAy
MDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgor
ICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAg
ICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAgICBOU1VSTCAqdGVtcERpciA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6WUVT
XTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5TVVJMICpmaWxlLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRl
bnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgZXhwZWN0ZWRD
b250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVt
cG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxv
YWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4
YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJ
dGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZmls
ZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6Zmls
ZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQorCitURVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwogCiAgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAg
IG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7
CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFdy
aXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZp
bmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUp
CiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IGRvd25sb2FkOwogICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAotICAgIGF1dG8gZG93bmxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gZG93
bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIG5ld10p
OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFt
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBOU1N0cmluZyAqKSkgewogICAgICAg
ICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJl
eGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2Fk
RGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVp
bnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChD
YWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMxNyw3IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkQ3JlYXRl
RGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgewog
ICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7Ci0g
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9Owog
ICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRDYW5jZWwgPSBeKF9XS0Rvd25s
b2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDYW5j
ZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAg
ICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVwKDEwMDAwKTsKIAotICAgIE5TRGF0
YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUp
OwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7Ci0gICAgaWYgKGZpbGVDb250
ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykK
LSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRl
bnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAx
MDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAgIH0KKyAgICBjaGVja1Jlc3VtZWRE
b3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKIH0KIAogQGludGVyZmFjZSBE
b3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9u
SGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNv
bHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkKLSAgICAgICAgZGVjaXNpb25IYW5k
bGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDExMzMgQEAgVEVTVChfV0tEb3dubG9h
ZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5PjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3
LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJM
Om5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
VGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4g
ZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxlZ2F0
ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5zaXpl
KCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXpl
KCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVjdGVk
Q2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaW5pc2hTdWNjZXNzZnVsbHkp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29u
dGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQg
cmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGlu
YXRpb24pCit7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFp
bmVkRG93bmxvYWQ7CisKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3Vt
ZURhdGEgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25s
b2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25s
b2FkZWRTZWNvbmQ1ayA9IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQu
Z2V0KCkuZGVsZWdhdGUpOworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9h
ZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0
ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0g
NTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsKKyAg
ICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWRE
aWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShy
ZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOwor
ICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaCk7CisKKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERl
bGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsg
PSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdh
dGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4p
OworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOwor
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVk
Rmlyc3Q1ayA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVr
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9h
ZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25s
b2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3Vt
ZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3Vt
ZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNo
RG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZdIChU
ZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZp
cnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0p
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWRE
b3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdp
dGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEg
KnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWRE
b3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWlu
LCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVz
dW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmlu
aXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5Q
dHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRh
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1
MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3Jp
dGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkK
K3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRh
Zzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAg
ICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5h
dGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQ
RUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
aW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9OT19D
T05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQp
Cit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29ubmVj
dGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNlcnZl
ckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJIVFRQ
LzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxl
bmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
Wz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVl
c3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDEw
MD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5h
dGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1
bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwg
TlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICBy
ZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29s
IGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlz
aCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOwor
ICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3Ao
KTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRX
aXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcpKTsK
KworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9y
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCisjZW5kaWYKKwordm9pZCB0ZXN0
UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQoreworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJl
dGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWRE
b3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwor
ICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSBy
ZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0ZUZp
bGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmll
dyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0g
XihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93
bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdp
dGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9y
PGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygK
KyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9u
OiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FDWV9DRk5F
VFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgc2Vu
ZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciByZW1vdmlu
ZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAg
ICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVU
YWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAw
XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBs
b25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICB0
ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWREb3du
bG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25s
b2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
fSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0
cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEV4dHJh
SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25D
b3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7
CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgor
ICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFy
PiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDog
MTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0
YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAg
ICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1
ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5n
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2QnKQorICAg
ICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNr
KHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbWyhOU1N0cmlu
ZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdj
JykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4
cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25nU3RyaW5n
PDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAwPignZCcp
KSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRhKQor
eworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3du
bG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOltAImlu
dmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBAY2F0Y2ggKE5TRXhj
ZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9
CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0
U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7
CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZv
ckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5j
ZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0g
cmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAg
ICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICAK
KyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2Fk
V2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2Fk
OworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAg
d2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
CisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwor
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hv
c3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgVW5r
bm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlv
biBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUw
MDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFs
Qnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBb
d2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L3dlYmtpdC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7
CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRF
eGNlcHRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRp
YyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAg
eyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0
b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFy
Z2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVj
dEFsbG93KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxl
VVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29w
eV0gYXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9j
ayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJl
cXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRU
UFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2Fu
dCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0
b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93
KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUs
ICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
ICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAg
ICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAg
IFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZlci50
b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBhdXRv
IHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1
ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBe
KFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0
ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAg
RVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3Rv
bS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICB9Owor
ICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxM
KHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgICAg
ICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRp
cmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0p
OworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNl
cnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1
ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Cisg
ICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAg
fSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHki
IH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxv
YWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRG
aW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmlu
aXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0
cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlz
aCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQor
eworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9y
Rmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
ZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVkID0g
dHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9Cisg
ICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rv
d25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6
IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93bmxv
YWQsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpuaWxd
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9IGRv
d25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUu
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxv
YWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBhdXRvIHJldGFpbmVkRGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShbW0Ai
aW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgcmV0YWluZWREZWxlZ2F0ZS5n
ZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgcmV0
YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAgICAgICByZXRhaW5lZERlbGVn
YXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgICAg
IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAg
ICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGls
OjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdh
dGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7
CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9
IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9
OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2
ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNl
aXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRo
b2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LnNlcnZlclRydXN0XSk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9
OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVu
KCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNo
ZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQor
I2VuZGlmCisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQ
U2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19i
bG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVE
YXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8g
TW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Ig
c2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAgZmFp
bGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9
IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsK
KyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNFKExF
R0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFz
a3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVh
dGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
CisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBOU1N0cmlu
ZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisg
ICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2
YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVP
YmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9hZCA9ICdkb3dubG9hZEZpbGVuYW1lJzsi
CisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxv
YWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRv
d25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNj
aGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1l
LCAidW5rbm93biIpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgImRvd25sb2FkRmlsZW5hbWUi
IGJ1dCB0aGF0J3MgY3VycmVudGx5IG9ubHkgcGlwZWQgdG8gdGhlIG5hdmlnYXRpb24gYWN0aW9u
LCBub3QgdGhlIHJlc3BvbnNlLgorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVz
cG9uc2VOb0ZpbGVuYW1lKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAg
ICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7
IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBh
LmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2Fk
QmxvYigpJz48L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3Qs
ICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVS
TC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxl
bmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQorewor
ICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAgImZ1
bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAg
ICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGlj
aygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2Io
KSc+PC9ib2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhUVFBT
ZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFt
ZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBOU1VS
TFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXIucmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNoaWxk
RnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAgIE5T
U3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBz
cmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBv
cnQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25z
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
IHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl0KKyAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJh
bWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10KKyAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hp
bGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXSkKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3
LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmln
aW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
bgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMyOGNlMWU4OTY3ZjVkYWIwZDg4OGNj
Nzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBlMjZjOTk0NjAwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQqIHByb2dy
ZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7CiAtICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhh
bmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNvbnZl
cnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0NWQxZTkw
NDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODllOWY5NmNk
NmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyArMTY2LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTDsK
IAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9u
c2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
ZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rv
d25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxk
Q29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5kZXggYWUy
YmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0OGZmY2M4
ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUKFF1
aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNr
TG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhw
ZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0
ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7
CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNo
YW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNF
KFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcgQEAgVEVT
VChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAw
CiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6
cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBh
Z2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9F
UShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0
ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlk
RmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBjMGEwZWE2
MGI4YzQ4NWIuLjJhYzhmMjIzYzYxMTc4MjcxMTEwN2UzMmEzYmZmMjcwZGQ4OGMyNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKQEAg
LTI0LDE3ICsyNCwzMSBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNpbXBv
cnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVzdERvd25s
b2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0
YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0
cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlk
RmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2Fk
ICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2VudW0gY2xh
c3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRX
cml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2
aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25SZXNwb25zZQorfTsKKworQGlu
dGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxvYWREZWxlZ2F0
ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJM
UmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBv
bGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2
NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxv
YWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEg
Kik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZv
aWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRv
d25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFj
a1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJh
ODAxZmRkMy4uYzk4ZjAyNWQ4OTVjNDFkOGNkNTA2ZDg3NTM4ZGM4NjBjMTE2MmViZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBA
IC0yNiw2OCArMjYsOTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdERvd25s
b2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRlCisj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAKLS0gKHZvaWQp
X2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAoX2Rv
d25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKK0Bp
bXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7CisgICAgVmVjdG9yPERvd25sb2Fk
Q2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICop
dXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKGRvd25sb2FkLCB1cmwpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRD
YWxsYmFjazo6V2lsbFJlZGlyZWN0KTsKKworICAgIEFTU0VSVChfd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOworICAgIF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkb3dubG9hZCwgcmVz
cG9uc2UsIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2UKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1
Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1VSTCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCiB7
Ci0gICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIF9kaWRSZWNlaXZlUmVzcG9u
c2UoZG93bmxvYWQsIHJlc3BvbnNlKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25s
b2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZShkb3dubG9hZCwgcmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxl
cik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdy
aXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRf
dCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3Jp
dHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
OihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKIHsKKyAgICAvLyBkaWRXcml0ZURh
dGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5pc3RpYyBudW1iZXIgb2YgdGltZXMsIHNvIG9ubHkg
cmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCisgICAgaWYgKF9jYWxsYmFja1JlY29yZC5pc0VtcHR5
KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3QoKSAhPSBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEpCisgICAgICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhKTsKKwogICAgIGlmIChfZGlkV3JpdGVEYXRhKQogICAgICAgICBfZGlkV3Jp
dGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVy
d3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQp
ZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBBU1NFUlQoX2Rl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICBfZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9u
SGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CisKKyAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURl
ZmF1bHRIYW5kbGluZywgbmlsKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxv
YWQgKilkb3dubG9hZAogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxs
YmFjazo6RGlkRmluaXNoKTsKKwogICAgIGlmIChfZG93bmxvYWREaWRGaW5pc2gpCiAgICAgICAg
IF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgor
LSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhCiB7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9y
KTsKKwogICAgIGlmIChfZGlkRmFpbFdpdGhFcnJvcikKLSAgICAgICAgX2RpZEZhaWxXaXRoRXJy
b3IoZG93bmxvYWQsIGVycm9yKTsKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQs
IGVycm9yLCByZXN1bWVEYXRhKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBuYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJl
c3BvbnNlIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBp
ZiAoX2Rvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBfZG93bmxvYWREaWRDYW5jZWwoZG93bmxv
YWQpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkJlY2FtZURvd25sb2FkKTsKKworICAgIGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQpCisgICAgICAgIF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uUmVzcG9uc2UsIGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsK
LSAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgX2Rp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UpOworCisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UpCisgICAgICAgIF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UobmF2aWdhdGlvblJlc3BvbnNlLCBkZWNpc2lvbkhhbmRsZXIpOwogICAgIGVsc2UKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZh
dWx0SGFuZGxpbmcsIG5pbCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKK30KKworLSAodm9pZCl3YWl0Rm9yRG93bmxv
YWREaWRGaW5pc2gKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBB
U1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7CisgICAgX2Rvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAq
KWRlc3RpbmF0aW9uCistIChWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVj
b3JkCiB7Ci0gICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0
ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6ZXhj
aGFuZ2UoX2NhbGxiYWNrUmVjb3JkLCB7IH0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUxMjQ2MWVhMTJjOWNhZGE2MTVkMWUyYzRhNTczMWYxZDE1ZDEzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKworQGludGVy
ZmFjZSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVs
ZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3Rh
cnQpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3Qs
IHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICos
IHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBO
U0Vycm9yICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERp
ZENhbmNlbCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGluYXRpb24pKF9XS0Rvd25sb2FkICosIE5T
U3RyaW5nICopOworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc3YTkyNGJkZmU2OTVl
MGI3OTE1Yjk1ZWZlOWYwNWRiZjFjYTA4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUuaCIKKworQGltcGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlCisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCisgICAgICAgIF9kb3dubG9hZERp
ZFN0YXJ0KGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCit7Cisg
ICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKKyAgICAgICAgX2RpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOworfQorCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZQoreworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAg
ICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3Qp
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlCit7CisgICAgaWYgKF9kaWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEo
ZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGUpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEFTU0VSVChf
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRp
b25IYW5kbGVyKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93
bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAg
ICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25s
b2FkLCBlcnJvcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKKyAgICAgICAgX2Rv
d25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9u
Cit7CisgICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgX2RpZENyZWF0ZURl
c3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7Cit9CisKK0BlbmQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413992</attachid>
            <date>2020-11-12 18:55:31 -0800</date>
            <delta_ts>2020-11-17 22:57:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201112185530.patch</filename>
            <type>text/plain</type>
            <size>204274</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU5NDNjODJiMWJiZDgwNWU1
ZjEyN2M0ZDBjNWJmZTViYjc3MzMxNWMuLmNkMDBmN2IzNTkzN2IyNzZmZjZhNzA2M2Y2ZGNmNGMz
YjhjZTNlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTEyICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5IHdhbnQg
dG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAgICAgICA5
LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlv
biBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBU
aGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2Jq
ZWN0IGJlZm9yZSB0aGVuIGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQg
InN0YXJ0cyIgd2hpY2ggaXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAg
ICAgICAgIHNvIHRoZXJlIHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZG93bmxvYWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICAxMC4gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNv
bnRpbnVpbmcgb3IgY2FuY2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250
cm9sIHRoZQorICAgICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAx
MS4gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVS
ZXNwb25zZSBoYXZlIGJlZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0
aGUgc2FtZSB0aW1lIGFuZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVk
RmlsZW5hbWUgQVBJLiAgYWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVz
ZWQsIGFuZCBub3QgcmVhbGx5IG5lZWRlZC4KKyAgICAgICAgMTIuIGRpZENyZWF0ZURlc3RpbmF0
aW9uIGlzIGdvbmUuICBUaGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3Nhcnku
ICBJZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBm
aXJzdAorICAgICAgICAgICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9u
IGhhcyBkZWZpbml0ZWx5IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMy4gc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNh
bGxlZCBzaW5jZSB3ZSBhZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlLgorICAgICAgICAxNC4gb3JpZ2luYXRpbmdGcmFtZSBpcyBn
b25lLiAgT24gX1dLRG93bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUlu
Zm8gdGhhdCBvZnRlbiBjb250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9u
IHdhcyB0aGVyZSwKKyAgICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGlkQmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlv
blJlc3BvbnNlIHdoaWNoIGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUg
QVBJIHRlc3RzIGZvciBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tEb3dubG9hZCBjYW5j
ZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAg
ICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBzZXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dL
RG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfd2FzVXNl
ckluaXRpYXRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBp
bml0V2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ1dlYlZp
ZXddKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVkaXJlY3RDaGFpbl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCB3YXNVc2VySW5pdGlhdGVkXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IHJlc3VtZURhdGFdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdGcmFtZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0Rv
d25sb2FkIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFy
dENhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjAtMTEtMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBEZWZpbmUgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJjNjkwN2I3ZDkxYjQ3Yjc2Mi4u
MmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERl
c3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9k
b3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShu
ZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0
KQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA1
LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQg
PSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdv
cmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RG
TW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0
eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2Un
cmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENh
bGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2Vz
OjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rv
d25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25s
b2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCAy
Y2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUwLi5jNDgxZWI1ZjZkNDI5Y2Iw
OWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAs
OCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtM
b2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERp
ZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxv
YWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+
JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25s
b2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAg
IHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCA5NWY4ZGVjMzAyNTFiODBiYWEyOWNlNTkwODczYTdh
YmFlZmRhOWNlLi41Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3du
bG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDggQEAgdm9pZCBEb3dubG9hZDo6
cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxp
emF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlM
aXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogI2VuZGlmCiAKKyAg
ICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUg
bWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rvd25sb2FkCisgICAgLy8gYmVjYXVzZSB0
aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBhdGggd2UgZ290IGZyb20gdGhlIGRh
dGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Npb24gZG93bmxvYWRUYXNrV2l0aFJl
c3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBbbV9kb3du
bG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Np
b25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZp
ZXIpKTsKQEAgLTgzLDcgKzg1LDIyIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKIHZvaWQgRG93
bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQobV9kb3dubG9hZFRhc2spOwotICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1
Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICBb
bV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihb
cGF0aCA9IHJldGFpblB0cihtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNr
RmlsZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChO
U0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RP
V05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1vamF2
ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1lIGRh
dGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAgICAgICAgYXV0
byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9y
UmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBbdW5h
cmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lS
YWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHN0
YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9iamVj
dE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtO
U0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0
YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktl
eTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgICAg
ICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0OnBhdGguZ2V0KCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xv
Y2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRB
cmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAg
ICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNv
ZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFN
KHBhdGgpOworI2VuZGlmCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3Vt
ZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4o
cmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVu
Y2UgeyB9OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bWVEYXRhUmVmZXJlbmNlKTsK
ICAgICB9KS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDBiYjg1NzMwNTM4NGNiMzVkNzhhNjRkYWM5NDM0ZDdmYzgyNGQ5
ZjUuLmY4ZmFmYjFjNzY0MTg1MDU3OTY2ZTk0MWU1NjI5NjZiNWQ3YTU3NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkg
KzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGRvd25sb2FkTWFuYWdlcigp
LnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6
OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxE
b3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewotICAgIGRvd25sb2FkTWFu
YWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwg
cGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZG93bmxvYWRNYW5h
Z2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBw
YXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBjYWxsRG93bmxvYWREaWRTdGFy
dCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAxYTc3ZmFiOTYxZGYyZTVlMzA2MTI2OWY1OTJhMmM0
Yzg2OTQ2ZjlkLi42N2Q3NTNmZDA3NmI4YzAxYmM5OGIzMjcwOGIwNmY0MDE5MDUyYmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYs
NiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgU3RvcmFnZU1h
bmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVu
dW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNp
dGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtNDIxLDcgKzQyMiw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpT
ZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93
bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJv
Z3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KaW5kZXggMjBmZmJjYzNmY2RmYWRlYTNjMGEzNDk2YzUyODIyNDg0ZmZk
YWExNS4uMmU0NTE1OWIwOWU5NDQ5YmMwMjA5ZTQyYjVjYzYxNmFhOWNkNWI2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC00OCw3ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAg
RG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJv
b2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQotICAgIFJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAg
ICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBh
dGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERp
ZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElE
KSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggOGE4YWIwYjliODMxY2Fm
NDhmYTIyNDUzMDk4YWZiMjRhYWE4ZjRkZS4uY2I2OTZmMzJhOTNlNWQ2NmViNzBjZDA0OGZlYjE0
MTZhYjk1ODdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBAQCBzdGF0
aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lv
bkNvY29hJiBzZXNzaW9uLCBTZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7Cisg
ICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRp
b24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFz
ay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0p
OworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVj
b2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0
aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051
bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0
IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRh
YmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp0YXNrLl9wYXRoVG9Eb3dubG9hZFRhc2tG
aWxlIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07Cisg
ICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJl
c3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZl
cmVuY2UgeyB9OwogICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YVJl
ZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggYjIyNjg4ZTBkYmMxOTJlYjY3Zjc4YjUxNTI0ZWM1MWVkNzE5ZDMzMy4uMzE5ZTE5ZGYy
MjY3Yjg1ZDVkMTZhYmU4YmY4MjBhZTExZmFkMGM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzEsNiArNjcxLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5
cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRy
YXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsn
IkRvd25sb2FkSUQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9h
ZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNv
bnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIiddLAogICAgICAg
ICAnV2ViS2l0OjpHZXN0dXJlUmVjb2duaXplclN0YXRlJzogWyciR2VzdHVyZVR5cGVzLmgiJ10s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3
M2UxMDk5NGY1ZGMxMzdmYWY0MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJj
ZGUxOTIwZmI1MDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApA
QCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0Vycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLRmluZFJlc3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCmluZGV4IGM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQuLmU0
OWRmOTQ5YjdhYmJiOWUyMWNlYmMzNjA0M2ViMGI0MDVhNzFkMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldLQ29u
dGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNp
bXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tO
U0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lv
bkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5o
IgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9X
S0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
RnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCogT2JqZWN0
OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFs
bG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtXS0Rvd25sb2FkIGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMDg0ZDUxMzUyZDQ0YTQ1MDk0OWIzZmJkMWQxZDc2MTM1ZmIyYmViMi4uMmFh
OWNiODVkMDRkYTdkNTg1ODUzYmY1MmVmZGU1NWM0OGViNTg0YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMjk5LDYgKzI5OSw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVs
ZUxpc3QubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVz
dWx0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVu
dC5oCmluZGV4IGQzN2Y2Mjg2OGI2MTI5N2ExMWFmZmYzODAyYTgwYmE2MTJhNGRjZTUuLmRmZjcz
ZmE2NWJmNmZiMGFkMTdhZmE5OWY1ODJmOTQyZmFmN2EwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSwxOCArNDksMjAgQEAg
ZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBBUEkgewogCitj
bGFzcyBEYXRhOworCiBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERv
d25sb2FkQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRT
dGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5
RGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVu
Z2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAg
dmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYs
IGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGxlZ2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAppbmRleCAwNjFlMTg2ZGJlODg2YTA3NDIyYmY4M2I3YWZjZmNiYzZhYzll
NmFlLi45Mjk0MDhlYTA1Mzg2NWZiZDk1ZTNkYjQ2NGVlYzhlN2M5NmE5MzIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTU0
LDYgKzU0LDcgQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgRG93bmxvYWRQ
cm94eTsKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJGcmFtZVBvbGlj
eUxpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtOTksNiArMTAwLDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4p
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxv
d0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApp
bmRleCA3Y2Y1NzcyNGYyYWI5MzM5MDA4ZDFiMmUxZGJkMmU3YTM0ZGYxOTc5Li45ODIwNDY5MmUx
NTdmYzI1MjQ2NGFmNzdmNjdiYmI0ODlmZDA0ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRE
b3dubG9hZENsaQogICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwogICAgICAgICB9CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCisgICAgICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAorICAg
ICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgZmluYWwKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5k
ZXggZGMyZTBkMTkyMzE1ZWU1NzJkMWQxZjY3OGFiYTYxZDZjMjRkMTM5MS4uZWM2Y2JiNDEyZjhi
NWRmNThlZGQzZDlmZTljOGRmY2IzMmZjODc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBXS19FWFBPUlQgV0tDb250ZXh0
UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNv
bnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQg
V0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdL
Q29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkgV0tfQ19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKFdLRG93bmxvYWRTZXREb3dubG9hZENsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBX
S0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLRG93
bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVi
NmYxMzE3NzMxNzNiZDI3ZGZhODEzNTY0OGExZjA3NWIxYzQ4ZTUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCkBAIC0wLDAg
KzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOwor
QHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
KworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
CitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAorCisvKiBAYWJzdHJhY3QgVGhlIHJl
cXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgorICBAZGlzY3Vzc2lvbiBJZiB0
aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3JpZ2lu
YWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xsb3dz
IHRoZSByZWRpcmVjdC4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxh
YmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSBk
ZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMgZm9yIHRoaXMgZG93bmxvYWQu
ICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4g
ZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBj
b21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIGNhbmNlbGxhdGlvbiBpcyBm
aW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUbyBhdHRlbXB0IHRvIHJlc3VtZSB0aGUgZG93bmxvYWQs
IGNhbGwgV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHdpdGggdGhlIGRhdGEgZ2l2
ZW4gdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLgorIElmIG5vIHJlc3VtZSBhdHRlbXB0IGlzIHBv
c3NpYmxlIHdpdGggdGhpcyBzZXJ2ZXIsIGNvbXBsZXRpb25IYW5kbGVyIHdpbGwgYmUgY2FsbGVk
IHdpdGggbmlsLgorKi8KKy0gKHZvaWQpY2FuY2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEg
KiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MmE5OTQ1NDE5MDc3YmQ5NDk4N2RhMDJiY2E0
MjM5ZjgxODEzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCisKKyNpbXBv
cnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2Fk
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1w
b3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgorCitjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8V0tEb3dubG9h
ZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAg
ICAgICAsIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9u
ZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkV3Jp
dGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRp
ZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOildKQorICAgIHsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBm
aW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9XaWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zUmVx
dWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5
OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246c3RhdGljX2Nhc3Q8TlNI
VFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSBuZXdSZXF1ZXN0Om5z
UmVxdWVzdC5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopKV0oV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFs
bG93OgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9saWN5XTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4gY2hhbGxlbmdlLmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisKKyAgICAgICAgW21f
ZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6
Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0
KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7Cisg
ICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgor
ICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShX
ZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWws
IGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6
Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAg
ICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGlu
Zyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAg
ICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0
UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9u
IHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25d
OworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25k
c1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpCisgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVuYW1l
OnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbZG93bmxv
YWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpk
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopKV0gKE5TVVJMICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CisKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0p
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzRmlsZVVSTCkg
eworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3Jp
dGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBV
UkwiXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdOworICAgICAgICAgICAgaWYgKCFbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpb
ZGVzdGluYXRpb24gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XS5wYXRoXSkgeworICAg
ICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAg
ICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWlu
Ok5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5m
bzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChbZmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0aW5hdGlvbi5wYXRoXSkgeworICAgICAgICAgICAgICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAg
ICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JE
b21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0p
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgpOworICAgICAgICB9KS5nZXQo
KV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBmaW5hbAorICAgIHsK
KyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUg
fHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkKV07CisgICAg
fQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0Rp
ZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdh
dGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vy
cm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3VtZURhdGEpXTsKKyAgICB9CisKKyAgICB2b2lk
IHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0
aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25s
b2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25M
b3N0IHVzZXJJbmZvOm5pbF0gcmVzdW1lRGF0YTpuaWxdOworICAgIH0KKworICAgIFdlYWtPYmpD
UHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9y
ZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNw
b25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlIDogMTsKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5p
c2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvciA6IDE7Cit9Owor
CitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZAorCistICh2b2lkKWNhbmNlbDoodm9pZCAoXiko
TlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9kb3dubG9hZC0+
Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSkpOworICAgIH0pOworfQorCist
IChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKK3sKKyAgICByZXR1cm4gX2Rvd25sb2Fk
LT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpE
b05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVs
ZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lk
KXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0Q2xpZW50KGFkb3B0UmVmKCpu
ZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODg5NGY0ZjkzMGJhOTMyOGYzNmVlOTJmYjlmN2Vm
NjczOTU0NjRlNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsKKworLyogQGVudW0gV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRo
ZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCisgQGNvbnN0YW50IFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgcmVkaXJlY3QuCisgQGNv
bnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93ICAgIEFsbG93IHRoZSByZWRpcmVj
dC4KKyovCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3kpIHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwsCisgICAgV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90
b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qIEBhYnN0
cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbiBIVFRQIHJlZGly
ZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNl
aXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZWRpcmVjdGlvbiByZXNw
b25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVlc3QgdGhhdCB3aWxsIGJlIHNl
bnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91
IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CisgdG8gcHJvY2VlZCB3aXRo
IHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0
aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJlY3RzIHdpbGwgYmUgdGFrZW4u
CisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9r
ZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9uZCB0byBhbiBhdXRoZW50aWNhdGlv
biBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IHJlY2VpdmVk
IHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNoYWxsZW5nZSBUaGUgYXV0
aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29t
cGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byByZXNwb25kIHRvIHRoZSBjaGFsbGVu
Z2UuIFRoZQorIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9uZSBvZiB0aGUgY29uc3RhbnRzIG9m
IHRoZSBlbnVtZXJhdGVkIHR5cGUKKyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRl
bnRpYWwsCisgdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMgdGhlIGNyZWRlbnRpYWwgdG8gdXNl
LCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRob3V0IGEKKyBjcmVkZW50aWFsLgor
IEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCB0aGUgd2Vi
IHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2Ugd2l0aCB0
aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZSBkaXNwb3Np
dGlvbi4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5l
ZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBk
b3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNoIHdlIG5lZWQgYSBmaWxlIHRvIHdoaWNoIHRv
IHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUgc2VydmVyIHJlc3BvbnNlLCBpZiB0aGlzIGRv
d25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVxdWVzdC4KKyBAcGFyYW0gc3VnZ2Vz
dGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4KKyBAcGFyYW0gY29tcGxldGlvbkhh
bmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2Ugd2l0aAorIGVpdGhl
ciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBvciBuaWwgdG8gY2FuY2VsIHRoZSBk
b3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEgZG93bmxvYWQgb2YgYSBibG9iIFVS
TCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVkRmlsZW5hbWUKKyB3aWxsIG9mdGVu
IGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCBidXQgd2ViIGNvbnRl
bnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVkIGRvd25sb2FkIGZpbGVuYW1lLiAgSWYgdGhl
IGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBpdCBtdXN0IGJlIGEgZmlsZQorIHRo
YXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGV4aXN0IGFuZCBjYW4g
YmUgd3JpdHRlbiB0by4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51bGxhYmxlIE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFt
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBfTnVsbGFibGUgZGVzdGluYXRp
b24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBk
b3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUgZGVzdGluYXRpb24u
CisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmlldyB0aGF0IGhhcyB3cml0dGVuIGRhdGEuCisg
QHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFt
IHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBA
cGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVz
IGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gSWYgdGhpcyBkb3dubG9hZCB3
YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2FkLCB0aGVuCisgdG90
YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUgbnVtYmVyIG9mIGJ5
dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgorIElmIHRoZSB0b3RhbCBudW1i
ZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSB3aWxsIGJl
IC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0
ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRv
dGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdl
YiB2aWV3IHRoYXQgZmluaXNoZWQuCisqLworLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tE
b3dubG9hZCAqKWRvd25sb2FkOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3du
bG9hZCBoYXMgZmFpbGVkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCBoYXMg
ZmFpbGVkLgorIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgaW5kaWNhdGluZyB0aGUgZmFpbHVyZSBy
ZWFzb24uCisgQHBhcmFtIHJlc3VtZURhdGEgVGhpcyBkYXRhIGNhbiBiZSBwYXNzZWQgdG8gV0tX
ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHRvIGF0dGVtcHQgdG8gcmVzdW1lIHRoaXMg
ZG93bmxvYWQuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihudWxsYWJsZSBOU0Rh
dGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5h
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIwMjU0MDVjYjMzYjdhOWQ3YzRhZjkK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
IkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWQuaCIKKyNpbXBvcnQgIldLT2Jq
ZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Rvd25s
b2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitA
cGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9k
b3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IF9kZWxl
Z2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFiOTE1N2Q4MDNhNGZiYWViMTM4Yjcz
YmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhiNmFkMzRmYzYxNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQpAQCAt
NDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRpb24tPm9yaWdpbmFsUmVxdWVzdCgp
Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVI
VFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0aWF0ZWQKK3sKKyAgICByZXR1cm4g
X25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZlQ29udGVudE1vZGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmgKaW5kZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4NGEwNTg3OC4uZWUz
ZTBjMDk1YjkwMWVjMDNlMDI0NmJkN2ZmMmYyYTE5MGZlM2U1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdL
RG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlv
bjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAgLTUwLDEwICs1MSwxMiBAQCB0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICBAYWJz
dHJhY3QgVGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJv
bSB0aGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25I
YW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2Fu
Y2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUFsbG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBj
b25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4g
dGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cs
CisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5n
IHRvIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSBwcm90b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY0
LDYgKzE2NywxNCBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeSkgewogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2Ugc2hvdWxkQWxsb3dEZXByZWNhdGVkVExTOih2b2lkICheKShCT09MKSlkZWNpc2lv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3
IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25zZSBU
aGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJh
bSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZp
Z2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
ZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1YjUuLjIzNGEwYjAy
Y2JmYjhhMzdkZWRlZjkyODkxNTVjZTdhN2U5OWE1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmgKQEAgLTU4LDExICs1OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCArIDEp
Oworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19N
QUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5
LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9
IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgKyAxKTsKIAotc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwg
V0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBXS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaAppbmRleCA5MTU4
OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdiNjFjMTdhMWYxMzljLi5hN2E3ZDkyOWRmZjg3MDQzZTdm
M2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKQEAgLTI3LDQgKzI3LDUgQEAK
IAogQGludGVyZmFjZSBXS05hdmlnYXRpb24gKFdLUHJpdmF0ZSkKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpfcmVxdWVzdDsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2FzVXNlckluaXRpYXRlZCBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCAw
MzU5MWU4YThmYTkwNDIxMjA5YjkzOTBkNGYzZDhlMDc2ODBkZjYxLi4yNzdkOGQxZjljOGJmNGZi
YTBmYjg2NmIzZGZkZjI5Y2U3OWEwOGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNp
bXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBv
cnQgIkRvd25sb2FkTWFuYWdlci5oIgogI2ltcG9ydCAiTGVnYWN5RG93bmxvYWRDbGllbnQuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAj
aW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5o
IgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9y
ZUludGVybmFsLmgiCkBAIC01NjEsMTIgKzU2MywxMiBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpw
b2xpY2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8
UwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3Jl
IG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3
cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3Rv
cmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQg
ZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRh
U3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9
CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJl
c3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3Jl
ICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9h
ZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRh
dGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAg
cmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNz
UG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJW
aWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5n
ZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAKIC0g
KHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90
KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNv
bXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2Ew
MzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYyNDk4MGM5Y2ZmNjdlY2QzYmVkZTczZmUyNDAwODE4YWE1
MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQ
b2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3Bl
cnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tEb3dubG9hZC5kb3dubG9hZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19U
QkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywg
c2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRl
PiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3Mo
MTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2
b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3Ry
aW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwog
Ci0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9y
aWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBv
cmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilf
ZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3Rv
cmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tX
ZWJWaWV3IF9kb3dubG9hZFJlcXVlc3QiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4
LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURh
dGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0
b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQo
IldLV2ViVmlldy5fcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVz
dCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vz
c2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNzYxYTFkYTBmNjViMzY5OTdiYWI0
OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uZjQ4OTI1MjMxMjA1ZDY0N2YwNjY2NWY3ZTc2OGNjNWVkMmMw
ODgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
aApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLQmFj
a0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRlbTsKIEBjbGFzcyBXS0Nv
bnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRp
b247CiBAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNzIFdLRnJhbWVJbmZvOwpAQCAtNDUwLDYg
KzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUg
Y2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogICovCiArIChCT09MKWhhbmRsZXNV
UkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJzdHJhY3QgQmVnaW5zIGEgZG93bmxvYWQgaW4gdGhl
IGNvbnRleHQgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgd2VicGFnZSBhcyBpZiB0aGUgV0tO
YXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVkIGEgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQgaW5z
dGVhZAorIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHNwZWNpZnlpbmcgdGhlIFVSTCB0byBk
b3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0
aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisgKi8KKy0gKHZvaWQpZG93bmxvYWRSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxv
YWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyogQGFic3RyYWN0IFJlc3VtZXMgYSBkb3dubG9hZCB0
aGF0IGZhaWxlZCBvciB3YXMgY2FuY2VsbGVkLgorIEBwYXJhbSByZXN1bWVEYXRhIERhdGEgZnJv
bSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3IgYSBXS0Rvd25sb2Fk
J3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBB
IGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4KKyAqLworLSAodm9p
ZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3Ry
YWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRpc2N1c3Npb24gVGhlIHZh
bHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwgdmFsdWUgb2YgdGhlIENT
UyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBuaWwgd2lsbCByZXN0b3Jl
IHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDlj
Njc0Li43NTZmNjQxMzM0MDdlOWYyZGM0ZWEyZTRiMDdjODVjY2ExOTg0ZDMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU4LDkgKzU4
LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50
V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0
ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKICNp
bXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJXS0ZyYW1lSW5mb1ByaXZh
dGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tM
YXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5oIgpAQCAtNzA4LDYg
KzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdl
ZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJldHVybiB3cmFwcGVyKF9w
YWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwg
ZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5h
YnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKWRvd25sb2FkUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZXN1bWVEb3du
bG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2
ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJv
bURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZlciBzZXREZWNvZGlu
Z0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07Cisg
ICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJy
YXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNs
YXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAi
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVj
b2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAi
TlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYgKCFwYXRoKQorICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9X
TkxPQURTKQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxv
YWQgaWYgdGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIHNvbWVvbmUg
aGFzIHJlbW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0
aGF0IGxvY2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBm
aWxlRXhpc3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBbW05TRGF0YSBkYXRhXSB3cml0ZVRvRmls
ZTpwYXRoIGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgorCisgICAgX3BhZ2UtPnJlc3VtZURvd25s
b2FkKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSksIHBhdGgsIFtj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRv
KiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChXS05hdmlnYXRpb24gKiln
b1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewog
ICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFkZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMu
LjUwYTYyYjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAt
MTA5LDYgKzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRn
ZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBX
S0Rvd25sb2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVu
Y2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQw
YzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJhMWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRl
OTAwNDVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNs
YXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2FkOwogCi1XS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNF
TUVOVCgiV0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tf
SU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3QgPE5TQ29weWluZz4K
IAotLSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZvaWQpcHVibGlzaFBy
b2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCks
IGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJk
YmMuLmQ1ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5MjdmNTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTI4LDY2
ICsyOCw4NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiRG93
bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVt
ZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRv
d25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JF
R0lOCitzdGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2FkICosIF9XS0Rvd25sb2FkICo+ICpkb3du
bG9hZFdyYXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
TlNNYXBUYWJsZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisgICAgICAgIHRhYmxl
LmdldCgpID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJsZV07CisgICAgcmV0
dXJuIHRhYmxlLmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMi
KQorQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklOR1NfRU5ECiAKLS0g
KHZvaWQpZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxvYWQyOihXS0Rvd25s
b2FkICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2Rv
d25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAgICBbc3VwZXIgZGVh
bGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQg
Kilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9hZFdy
YXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICByZXR1cm4gd3JhcHBl
cjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0
V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtkb3dubG9hZFdyYXBw
ZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3
cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtk
b3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAgIF9kb3dubG9hZC0+
X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5fZG93bmxv
YWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNl
bChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNz
QXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJM
KTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CiB9CiAK
IC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1
ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVw
ZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlcXVlc3Qo
KS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAg
ICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2Uo
KSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQt
Pm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpv
cmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7CiB9
CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAgICByZXR1cm4gY3Jl
YXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4g
TlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93bmxvYWQt
PnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CiAgICAgICAgIHJl
dHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTCl3YXNVc2VySW5p
dGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOworICAg
IHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOwogfQogCiAt
IChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93
bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihf
ZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0KIAogLSAoV0tGcmFt
ZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigm
X2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rv
d25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQpY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6Ok9iamVjdCYpX2Fw
aU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVybiAqX2Rvd25sb2Fk
LT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNl
YzVmOWRiNzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFjY2FjYjVmNzBlMTRhZTNiOTczODdmNDY4
YTgzYTdiYjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMzEsNiArMzEsOCBAQAogCiBAcHJvdG9j
b2wgX1dLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdk
ZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAoQk9PTClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
IAogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxs
b3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4w
LCAxMS4zKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwu
aAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIx
NzM3NTdhNTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1
LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3du
bG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRy
YWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxv
YWQ7Ci19OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0BpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkg
PFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiBfZG93bmxv
YWQ7CiB9Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PgogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEz
ZmUuLmVhZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENs
aWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisg
ICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3
ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAg
ICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAx
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQo
ZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJp
ZGUKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAgICAgewogICAgICAg
ICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRP
ckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25s
b2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRleCA3NWQ1MTIyMWQy
YzM1MTgyZjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBj
YmY3NTY1MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9MZWdhY3lEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAg
ICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQg
ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25s
b2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRf
dCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dP
dmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2Fk
UHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsK
ICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZl
ZWJjZDIzNjk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0
YjYzNTk1NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xl
Z2FjeURvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEb3du
bG9hZFByb3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMu
aCIKICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAgLTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWRE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewpAQCAtNzYs
NyArNzksNyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdD
b250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUAogfQogI2VuZGlmCiAKLXZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
Cit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93
bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERp
ZFN0YXJ0KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsK
IH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNw
b25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJM
UmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwg
dWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QKICNlbmRp
ZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxC
eXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0
dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
UmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9h
ZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRs
ZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
cjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRl
bnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVj
dG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tl
ci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcg
KzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9u
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5kaWYKIAogICAgIGlmIChtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5h
dGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3Jl
YXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4
Miw3ICsxODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2go
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIw
NCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAgaWYgKG1fZGVsZWdh
dGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVB
bGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRlID0gTk87CiAgICAg
ICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93
T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlv
biA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3Zlcndy
aXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihb
Y2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRl
LmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9h
ZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJP
T0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgog
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07Cisg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCi12b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBVU0UoU1lTVEVNX1BS
RVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkg
ewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6CiAjZW5kaWYKIAog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6
ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWls
V2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMjYz
LDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2Vs
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVn
YXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6
W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07Cisg
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
Ukw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07
CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0
ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tl
bklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlmCiAKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggNTc0
YzM0MmYzM2RjZjA2Y2NhZGExMWYwYmQyZDA5N2VjNWE5NTdhMy4uODY5YmM2OWUyNmRmZTVkNWZh
MzgwYzE2YWRiZDlkM2QxZjdkZWU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBwcml2YXRlOgogCiAg
ICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQ
STo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAorICAg
ICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94
eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworCiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29r
RG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYp
IG92ZXJyaWRlOwpAQCAtMjM4LDYgKzI0MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2Vi
Vmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Q3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRCZWdp
bk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbEVuZE5hdmln
YXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBjNDEwMmZmNTJiOTVlMzIzNDU5MGNlOWUwMzE3
NjUyOTVlOTZiZGE3Li5iNGY5ODNlNjkzOTYyZmE3MmFlY2JmNTk5NjkzMDdjODdlODJhMTc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5o
IgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCYWNr
Rm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVs
ZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpAQCAtMTg3LDYgKzE4
OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVz
cG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KV07CiAg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3RlcktleUZvcldlYlZp
ZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5cHRvTWFz
dGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3du
bG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2lu
TmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9u
VG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zvcndh
cmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06KV07CkBAIC01NTUsMTEgKzU1NywxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2
aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9
IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVz
dCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0
Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNV
UkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9u
QWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbGlz
dGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAg
ICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3Rd
CisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShb
bnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAgICAgICAgICAgIHx8IFtuc1VSTFJlcXVl
c3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9iIl0pIHsKKyAgICAgICAgICAgICAg
ICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNjM4LDkgKzYzOSwxMiBAQCBBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXIt
Pmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dX
aXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFtsb2NhbExpc3RlbmVyID0gV1RG
TW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZShhcGlXZWJzaXRl
UG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9w
dGltaXplZExvYWQpIHsKQEAgLTc1NCw3ICs3NTgsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBh
ZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTExNjgsNiArMTE3MiwxOCBAQCBSZWZQdHI8QVBJOjpTdHJp
bmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+
c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5Jiwg
QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94
eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVs
ZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkg
d2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndy
YXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi43YTU4M2My
ZTFlN2U4ZGIzMGExYjcwNTFhYzlhOWZkYzRhN2I0YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
IAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBvcnQgIkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNP
YmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0
Y2QwNzdmMzYuLmQ5OWI4Yjg2ZGM3MDc2OTE1MThkNGEyOWI3NjQwY2RlNThmZjMzYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxv
YWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9CiAKLURv
d25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxvYWRQcm94eTo6
fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAg
IG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0cjxBUEk6OkRh
dGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpAQCAtMTE3
LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RD
aGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgp
KQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAg
bV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQor
ICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQtPmxlZ2FjeURp
ZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNzMsMTEgKzE3OSwxNiBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0
ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3Ip
OworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRh
LmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93
bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2Ez
NWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uNGQyMGIxNmRjMTc4YTQ2NjBiYmZlNzRjODUwMzYwYTM4
M2NjZjBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw4IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1l
SW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQ
STo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwg
V2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0K
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRD
YWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFj
aykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAtMTIwLDYg
KzExNiwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKIAorcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJz
aXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKwogICAgIERvd25sb2FkUHJv
eHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4g
bV9kYXRhU3RvcmU7CiAgICAgUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+IG1fY2xpZW50OwpAQCAt
MTM0LDYgKzEzNiw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWlu
OwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6OkZy
YW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKaW5kZXggNmVlMjZkMDQ2YjBiMjE4ODcwNzNlNmVlNzM0OTg0M2RhZDMz
NWFmYS4uYzFmZTI0MWEyZWEzNzFiMTdkM2IzODU1NzA0OTRjM2QyNTE5MjEyMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVH
QUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5h
Z2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggMzEzODYxNzBkMjYwMTVhN2EwMjllZTRiOTFmYmE4YjYzNzk1ZTRlNy4uYjY3NTY0
YWMyNTMxYmFiOTI3NDQxZmIzOTZkZTVkMjBmNGRjMDUyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTY4LDcgKzMxNjksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rp
b246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVz
ZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikgewotICAgICAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xp
Y2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24o
cG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4NSw3ICszMTg2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3Zl
KHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwg
U3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmlu
ZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJl
ZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xv
c2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGlj
eUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2Vu
ZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUoc2Vu
ZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMSwxMSArMzIy
MiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMp
LCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNz
U3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6
IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0
aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+
JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRl
bnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRy
PEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmll
cigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0MiwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
YWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246
OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAg
ICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9h
ZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVl
c3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygp
IDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxi
YWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvblJlc3Bv
bnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkg
eworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvLyBGSVhNRTogT25jZSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8gbG9uZ2VyIHVzZWQsIHdlIHNob3VsZCBhc3NlcnQg
bmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVyIG51bGwgaGVyZS4KKyAgICAgICAgICAgIGlmIChu
YXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgKm5hdmlnYXRpb25SZXNw
b25zZSwgKmRvd25sb2FkUHJveHkpOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5hdmlnYXRp
b24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlv
bi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0
Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDk0LDcgKzUxMDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9u
KHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
cywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBp
dCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUt
Pm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUs
IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUzMjUsNyArNTMz
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
cG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7
CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNh
ZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpO
bykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQpAQCAtNTM2Myw4ICs1MzcxLDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVx
dWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJs
KCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9u
SUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0
cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
OjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMp
LmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJp
YnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBh
Z2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1v
dmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBwcm9j
ZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJy
b3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNz
ZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50
cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM3MywxNCArNTM4Mywx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAg
IAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlv
bi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1v
dmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRF
eHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJl
c3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xp
ZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVx
dWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2Ug
ewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRo
aXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0
dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNjAx
OSw2ICs2MDI3LDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2Fk
UmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9h
ZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7
CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3du
bG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENhbGxEb3du
bG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxv
YWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0
ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0
YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAg
ICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGJkZjExYmE0NjY0NzZjMjdiMzJhNWI5ZmM5ZmVl
MzU1N2YyMGE3ZDUuLmY1MjI3NTE1MjNkNmZmYmRmMGYyOTJhMThlMmU2NDY1NTA5MDA2MDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTYyLDcgKzExNjIsNyBA
QCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBlbnVtIGNs
YXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwotICAg
IHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9
LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJv
Y2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiwgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpO
byk7CiAgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0
ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwpAQCAtMTI3Nyw2
ICsxMjc3LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRp
b25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8
QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNv
bnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVl
c3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93
bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQo
Y29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcAppbmRleCA2MzQ4MDBiMjg4MzIwYmY5NDcyNDY5MzY3YTlhNDIyM2ZmMjNiMzRmLi44
NjA5ZWVmNzM1ZmIzOGMxODhiMmU1ZjM2ZWMwMzhkMWFjNjZkNGM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQxLDcgKzExNDEsNyBAQCBEb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0
YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi1Eb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRh
dGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rvd25sb2FkUHJveHkmIFdlYlBy
b2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShk
YXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAt
MTE0OSw3ICsxMTQ5LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURv
d25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAoIXBhdGgu
aXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2Fk
UHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUu
c2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFS
ZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2FsbERvd25sb2FkRGlk
U3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggOWNmZTZkNDcwZmNhYzIwZTJkYWQwMjBk
NDQ1ODNmMmE3NjY4MjY5Mi4uMzc4MTA4NTcxMWFmNjMzYjExZWZlZTU3NGI0MWZlOWMyNjA0Y2Ux
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTcsNiAr
MTE3LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91
Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAK
IGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJv
Y2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwNSw3ICsyMDYs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9
KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwg
V2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBB
UEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlk
U3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGVlOTk3MTAxOTYw
MzZiM2ZhMWJmZTMxMzE1M2I4OWYyODg4N2QzOS4uODhhMzQ5ZTM5ZmIwNzc0OTFmZmY5NTk3YWQz
N2M0MDQ3ZTNiN2Y0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xODEyLDYgKzE4MTIsOSBAQAogCQlDRUU0QUUyQjFBNURDRjQzMDAw
MkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9Owog
CQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAv
KiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1l
bnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUy
RUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3du
bG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQjI1
MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZEludGVybmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29r
aWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2
MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0
RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZp
ZXcubW0gKi87IH07CkBAIC01MzU2LDYgKzUzNTksMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBv
cHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhE
MDBEOTIxREIgLyogV0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLRG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURG
MEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93
bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0Yy
MkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVu
dFdvcmxkUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRl
bnRXb3JsZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzEx
MzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNzQ5OCw2ICs3NTA1LDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0QTAw
MzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2QjIy
OUYyRDRCMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywK
IAkJCQk1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZv
UHJpdmF0ZS5oICovLAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
LmggKi8sCisJCQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8s
CisJCQkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICov
LAorCQkJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAq
LywKIAkJCQkxQUY0NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFB
RjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0
Njg4RkQwMDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTExODE2LDcgKzExODI3
LDEwIEBACiAJCQkJQkM1RDI0QzUxNkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01U
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tE
T01UZXh0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUwMEQ5
MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI3RDc4RDEyODhDRDlB
MDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkEyNTJF
Q0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
REYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVz
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdF
MDA5RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFlOTRiMTAwNzUyMThkMzlk
YzMxZGNmYjA0NmFhODY1Yjk1MTE2Yi4uMDJlMWJkYzA0MzI5YmIyNjQ3Njk0MGIzNzg2Yzg1MTcx
NTUwZjZkNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDY3IEBACisyMDIwLTExLTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1bQmVj
b21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9Eb3du
bG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmln
YXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5h
dmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNo
TmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0U2Vy
dmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAo
c2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToK
KyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25sb2Fk
VGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZp
bGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQ
cm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmll
dzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxC
eXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBkb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
ZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3du
bG9hZDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dy
aXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRD
YW5jZWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRDcmVhdGVEZXN0aW5hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJv
bSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tLgorICAg
ICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKToK
KyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNX
cml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOgor
ICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRp
b246XSk6CisKIDIwMjAtMTEtMTEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUgQ2hlY2tPdXRTb3VyY2Ugc3Rl
cCBmb3IgbmV3IGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJj
ZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
ZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2OGFm
MjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29h
LnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBj
b2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29s
Lm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
ZDEyNzQ1MzhhNzM2YTBjZGE1NTM0YWEzNzI2YWU2OTAzYTBmNDY3Li41MzU3ZDExY2QxNTI0NTg0
OTA4NDMwZTVlODY2NWU2ZTUyZjMxMGYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIw
OSw4ICsyMjA5LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHRE
dXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXph
dGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAw
RkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVn
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVn
YXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2Fk
RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcg
LyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVD
NzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAv
KiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1
NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4u
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0
QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NzkzLDYgKzI3OTMsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3
R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2
OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlF
bXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRl
Lm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0g
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3
RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMzExMyw4ICszMTE1LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRl
c3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRl
eHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RD
b250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyog
VGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2
M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEyMDAw
OEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0RkZD
RTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDNzJF
OENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywK
IAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
ICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1l
bnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5MTMxMTAxZjJjZGQ5NTA5ODY3ZWZl
OTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDczMjM5M2IzNGNhZWVlMGFlN2IzMzky
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRl
bnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgVEVTVChDb250ZW50Rmls
dGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBk
ZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1YzgwYzZm
NzliZDM1ZWZjMDguLmIyNTQ3NThkYmY4ZjQ2Y2IxYTQ0MzRjZTJjM2U5ZGViYTQ1ZDNlNzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRl
c3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS05h
dmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsxNzgsNyBAQCBURVNUKF9XS0Rvd25s
b2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRpb24gQ29udmVydFJlc3BvbnNlVG9E
b3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25I
YW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7
CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9h
ZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5pc2hO
YXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dLTGVnYWN5RXJyb3JEb21haW4sIGVy
cm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24gPSBZRVM7Ci0g
ICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5
ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0
RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTk4NSw3ICs5ODksNyBA
QCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiB7
CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKTsKICAgICBf
ZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25s
b2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2FkTmF2
aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9XS19TVFJFUShmaXJz
dFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKICAg
ICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYnVuZGxl
LWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUg
c2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUsNyBAQCBURVNUKFdlYktpdCwgRG93
bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1RSVUUo
W2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmly
c3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCi0g
ICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0x
MTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMpCiAgICAgcmV0dXJu
IFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQogCi1URVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0g
Y2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9vbCB7IE5vLCBZZXMgfTsKKworc3Rh
dGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVF
VGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6OlllcywgRnVuY3Rpb248dm9pZChUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0gbnVsbHB0cikKIHsKLSAgICB1c2lu
ZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICByZXR1
cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpLCBjb25u
ZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11
dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNh
c2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0
aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCht
YWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBjb25uZWN0aW9uLCB0ZXJtaW5hdG9y
ID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFyPiYmKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAg
ICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlRVRh
ZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3RcclxuIiA6ICIiLAogICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50
eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPign
YScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCB0ZXJt
aW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRv
cihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7
CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNo
YXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVx
dWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsK
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAgICAg
ICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgpAQCAtMTIyMCwxNiAr
MTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgIH0pOworICAg
IH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKE5TVVJM
ICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEw
MDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKKyAgICBpZiAoZmls
ZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5ndGggPT0gMTAwMDB1KSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQorICAgICAgICAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScp
OworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAg
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRl
cylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
ciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7IFtdKFRlc3RXZWJL
aXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICJIVFRQLzEuMSAy
MDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgor
ICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAg
ICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAgICBOU1VSTCAqdGVtcERpciA9IFtO
U1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6WUVT
XTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5TVVJMICpmaWxlLCBjb25zdCBTdHJp
bmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRl
bnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgZXhwZWN0ZWRD
b250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVt
cG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxv
YWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURpcmVj
dG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4
YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJ
dGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZmls
ZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6Zmls
ZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQorCitURVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwogCiAgICAgYXV0byBuYXZpZ2F0
aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAg
IG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7
CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFdy
aXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZp
bmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUp
CiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IGRvd25sb2FkOwogICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAotICAgIGF1dG8gZG93bmxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gZG93
bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIG5ld10p
OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFt
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBOU1N0cmluZyAqKSkgewogICAgICAg
ICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJl
eGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2Fk
RGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVp
bnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChD
YWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMxNyw3IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkQ3JlYXRl
RGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgewog
ICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7Ci0g
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9Owog
ICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRDYW5jZWwgPSBeKF9XS0Rvd25s
b2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDYW5j
ZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAg
ICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVwKDEwMDAwKTsKIAotICAgIE5TRGF0
YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUp
OwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7Ci0gICAgaWYgKGZpbGVDb250
ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykK
LSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRl
bnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAx
MDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAgIH0KKyAgICBjaGVja1Jlc3VtZWRE
b3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKIH0KIAogQGludGVyZmFjZSBE
b3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0
ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9u
SGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNv
bHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkKLSAgICAgICAgZGVjaXNpb25IYW5k
bGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDExMzMgQEAgVEVTVChfV0tEb3dubG9h
ZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5PjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3
LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJM
Om5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
VGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4g
ZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxlZ2F0
ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5zaXpl
KCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXpl
KCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVjdGVk
Q2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaW5pc2hTdWNjZXNzZnVsbHkp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29u
dGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQg
cmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGlu
YXRpb24pCit7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFp
bmVkRG93bmxvYWQ7CisKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3Vt
ZURhdGEgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25s
b2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25s
b2FkZWRTZWNvbmQ1ayA9IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQu
Z2V0KCkuZGVsZWdhdGUpOworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9h
ZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0
ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0g
NTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsKKyAg
ICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWRE
aWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShy
ZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBudWxscHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOwor
ICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZp
bmlzaCk7CisKKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERl
bGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsg
PSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdh
dGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4p
OworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOwor
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVk
Rmlyc3Q1ayA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVr
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9h
ZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25s
b2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3Vt
ZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3Vt
ZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNo
RG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZdIChU
ZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZp
cnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0p
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWRE
b3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdp
dGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEg
KnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWRE
b3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWlu
LCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVz
dW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmlu
aXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5Q
dHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRh
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1
MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3Jp
dGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkK
K3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRh
Zzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAg
ICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5h
dGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQ
RUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsg
aW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9OT19D
T05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQp
Cit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29ubmVj
dGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNlcnZl
ckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJIVFRQ
LzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxl
bmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIKKyAg
ICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3Qo
Wz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVl
c3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDEw
MD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5h
dGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1
bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwg
TlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICBy
ZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29s
IGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlz
aCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOwor
ICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3Ao
KTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRX
aXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcpKTsK
KworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9y
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCisjZW5kaWYKKwordm9pZCB0ZXN0
UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQoreworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJl
dGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWRE
b3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOwor
ICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSBy
ZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0ZUZp
bGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmll
dyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0g
XihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAg
IH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93
bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdp
dGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRh
YmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNl
IDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9y
PGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygK
KyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9u
OiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FDWV9DRk5F
VFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgc2Vu
ZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciByZW1vdmlu
ZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsKKyNlbmRp
ZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAg
ICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVU
YWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAw
XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBs
b25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICB0
ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWREb3du
bG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25s
b2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAg
fSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0
cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEV4dHJh
SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25D
b3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7
CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgor
ICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFy
PiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDog
MTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0
YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAg
ICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1
ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5n
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2QnKQorICAg
ICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNr
KHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbWyhOU1N0cmlu
ZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdj
JykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4
cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25nU3RyaW5n
PDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAwPignZCcp
KSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRhKQor
eworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVz
aW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3du
bG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOltAImlu
dmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBAY2F0Y2ggKE5TRXhj
ZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9
CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0
U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7
CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZv
ckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5j
ZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0g
cmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAg
ICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICAK
KyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2Fk
V2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2Fk
OworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAg
d2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
CisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOwor
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hv
c3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgVW5r
bm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlv
biBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUw
MDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFs
Qnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgSW52YWxpZEFyZ3VtZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFs
c2U7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBb
d2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczov
L3dlYmtpdC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7
CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRF
eGNlcHRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRp
YyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAg
eyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0
b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFy
Z2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVj
dEFsbG93KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxl
VVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29w
eV0gYXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9j
ayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJl
cXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRU
UFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2Fu
dCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0
b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93
KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUs
ICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
ICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAg
ICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAg
IFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZlci50
b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBhdXRv
IHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1
ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBe
KFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0
ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAg
RVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3Rv
bS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICB9Owor
ICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxM
KHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgICAg
ICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRp
cmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0p
OworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNl
cnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1
ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAg
W3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7Cisg
ICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAg
fSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhU
VFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHki
IH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxv
YWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRG
aW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmlu
aXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0
cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlz
aCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQor
eworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9y
Rmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3Iu
ZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVkID0g
dHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9Cisg
ICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rv
d25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxl
YXNlXTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6
IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93bmxv
YWQsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVS
TFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpuaWxd
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9IGRv
d25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUu
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRy
dWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIu
cmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxv
YWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBhdXRvIHJldGFpbmVkRGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShbW0Ai
aW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgcmV0YWluZWREZWxlZ2F0ZS5n
ZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgcmV0
YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAgICAgICByZXRhaW5lZERlbGVn
YXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgICAg
IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAg
ICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGls
OjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdh
dGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7
CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9
IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9
OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVl
OworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2
ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3Rv
Y29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNl
aXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRo
b2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNV
UkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNl
LnNlcnZlclRydXN0XSk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9
OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVu
KCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNo
ZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0
ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQor
I2VuZGlmCisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQ
U2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19i
bG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVE
YXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8g
TW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Ig
c2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAgZmFp
bGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9
IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsK
KyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNFKExF
R0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFz
a3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVh
dGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
CisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBOU1N0cmlu
ZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisg
ICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2
YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVP
YmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9hZCA9ICdkb3dubG9hZEZpbGVuYW1lJzsi
CisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxv
YWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRv
d25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNj
aGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1l
LCAidW5rbm93biIpOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgImRvd25sb2FkRmlsZW5hbWUi
IGJ1dCB0aGF0J3MgY3VycmVudGx5IG9ubHkgcGlwZWQgdG8gdGhlIG5hdmlnYXRpb24gYWN0aW9u
LCBub3QgdGhlIHJlc3BvbnNlLgorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVz
cG9uc2VOb0ZpbGVuYW1lKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAg
ICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7
IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBh
LmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2Fk
QmxvYigpJz48L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3Qs
ICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVS
TC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxl
bmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQorewor
ICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAgImZ1
bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAg
ICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGlj
aygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2Io
KSc+PC9ib2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhUVFBT
ZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFt
ZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBOU1VS
TFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXIucmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNoaWxk
RnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAgIE5T
U3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBz
cmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBv
cnQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25z
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
IHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcvIl0KKyAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJh
bWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10KKyAgICAgICAgICAgIHx8IFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hp
bGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXSkKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3
LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmln
aW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9ydCk7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpy
dW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
bgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMyOGNlMWU4OTY3ZjVkYWIwZDg4OGNj
Nzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBlMjZjOTk0NjAwIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQqIHByb2dy
ZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7CiAtICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhh
bmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNvbnZl
cnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNz
U3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0NWQxZTkw
NDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODllOWY5NmNk
NmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyArMTY2LDcg
QEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTDsK
IAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9u
c2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
ZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rv
d25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxk
Q29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5kZXggYWUy
YmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0OGZmY2M4
ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUKFF1
aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNr
TG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhw
ZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0
ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7
CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNo
YW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNF
KFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcgQEAgVEVT
VChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQ
TEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAw
CiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7
Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6
cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBh
Z2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9F
UShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0
ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlk
RmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBjMGEwZWE2
MGI4YzQ4NWIuLjJhYzhmMjIzYzYxMTc4MjcxMTEwN2UzMmEzYmZmMjcwZGQ4OGMyNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKQEAg
LTI0LDE3ICsyNCwzMSBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNpbXBv
cnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVzdERvd25s
b2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0
YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0
cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlk
RmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2Fk
ICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2VudW0gY2xh
c3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAgICBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRX
cml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2
aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25SZXNwb25zZQorfTsKKworQGlu
dGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxvYWREZWxlZ2F0
ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJM
UmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBv
bGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2
NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxv
YWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEg
Kik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZv
aWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRv
d25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFj
a1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJh
ODAxZmRkMy4uMzAyN2FkOTQyZmNjYTA2ZGI4OGI4MjIxYTdhYzU0YWM2OWM0MzYzZCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBA
IC0yNiw2OCArMjYsOTUgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdERvd25s
b2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRlCisj
aW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAKLS0gKHZvaWQp
X2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAoX2Rv
d25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKK0Bp
bXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7CisgICAgVmVjdG9yPERvd25sb2Fk
Q2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICop
dXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKGRvd25sb2FkLCB1cmwpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRD
YWxsYmFjazo6V2lsbFJlZGlyZWN0KTsKKworICAgIEFTU0VSVChfd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24pOworICAgIF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkb3dubG9hZCwgcmVz
cG9uc2UsIHJlcXVlc3QsIGRlY2lzaW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgogewot
ICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNl
KGRvd25sb2FkLCByZXNwb25zZSk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7CisKKyAgICBBU1NFUlQoX2RlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Uo
ZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIp
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0
ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3Qp
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0
ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToo
aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7CisgICAgLy8gZGlkV3JpdGVEYXRh
IGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9mIHRpbWVzLCBzbyBvbmx5IHJl
Y29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2FsbGJhY2tSZWNvcmQuaXNFbXB0eSgp
IHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdyaXRlRGF0YSkKICAgICAgICAgX2RpZFdyaXRl
RGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmlu
ZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGFsbG93T3Zlcndy
aXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKWRv
d25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgQVNTRVJUKF9kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgX2RlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBmaWxlbmFtZSwgY29tcGxldGlvbkhh
bmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
ZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZh
dWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihXS0Rvd25sb2Fk
ICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQogICAgICAgICBf
ZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0g
KHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YQogeworICAgIF9j
YWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcik7
CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCi0gICAgICAgIF9kaWRGYWlsV2l0aEVycm9y
KGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBl
cnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
bmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNw
b25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYg
KF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25sb2Fk
KTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQo
d2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0g
ICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgIF9kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
KG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVs
dEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2Fk
RGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNT
RVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tE
b3dubG9hZCAqKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDoo
X1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilk
ZXN0aW5hdGlvbgorLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29y
ZAogewotICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIF9kaWRDcmVhdGVE
ZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworICAgIHJldHVybiBzdGQ6OmV4Y2hh
bmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1MTI0NjFlYTEyYzljYWRhNjE1ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVn
YXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XZWJL
aXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CisKK0BpbnRlcmZh
Y2UgVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVn
YXRlPgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0
KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1
aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2
b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNF
cnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRD
YW5jZWwpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0
cmluZyAqKTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRiZGZlNjk1ZTBi
NzkxNWI5NWVmZTlmMDVkYmYxY2EwODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCkBAIC0wLDAgKzEsOTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZQorCistICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25s
b2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZFN0YXJ0KQorICAgICAgICBfZG93bmxvYWREaWRT
dGFydChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAoreworICAg
IGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKK30KKworLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVzcG9uc2UKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAg
X2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworfQorCistICh2b2lkKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4g
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZQoreworICAgIGlmIChfZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRv
d25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmls
ZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5T
U3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2Rl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9u
SGFuZGxlcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25s
b2FkRGlkRmluaXNoKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25s
b2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAg
aWYgKF9kaWRGYWlsV2l0aEVycm9yKQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9h
ZCwgZXJyb3IpOworfQorCistICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCisgICAgICAgIF9kb3du
bG9hZERpZENhbmNlbChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCBuaWwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgor
eworICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0
aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworfQorCitAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414415</attachid>
            <date>2020-11-17 22:57:38 -0800</date>
            <delta_ts>2020-11-18 15:09:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201117225737.patch</filename>
            <type>text/plain</type>
            <size>284834</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Nzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViYzQ3NmU0YzcwNWQ2MTA3
ZDM1OGE3N2I3NTg4ODRmNTE4YTVkMWIuLjQ4OWExNzhhNzQyZDA2YmUxNWNmY2U4YzQxOTJiMmM3
NTVkYmI0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ5IEBACisyMDIwLTExLTE2ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkIGlzIGRlcHJlY2F0ZWQuICBJZiB5b3UgcmVhbGx5IHdhbnQg
dG8gZG93bmxvYWQsIHdhaXQgdW50aWwgd2UgcmVjZWl2ZSBhIHJlc3BvbnNlLgorICAgICAgICA5
LiAgX2Rvd25sb2FkRGlkU3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlv
biBoYW5kbGVycyB0aGF0IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBU
aGVyZSdzIG5vIG5lZWQgdG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2Jq
ZWN0IGJlZm9yZSB0aGVuIGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQg
InN0YXJ0cyIgd2hpY2ggaXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAg
ICAgICAgIHNvIHRoZXJlIHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNl
IGJldHdlZW4gZG93bmxvYWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICAxMC4gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNv
bnRpbnVpbmcgb3IgY2FuY2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250
cm9sIHRoZQorICAgICAgICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAx
MS4gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVS
ZXNwb25zZSBoYXZlIGJlZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0
aGUgc2FtZSB0aW1lIGFuZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVk
RmlsZW5hbWUgQVBJLiAgYWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVz
ZWQsIGFuZCBub3QgcmVhbGx5IG5lZWRlZC4KKyAgICAgICAgMTIuIGRpZENyZWF0ZURlc3RpbmF0
aW9uIGlzIGdvbmUuICBUaGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3Nhcnku
ICBJZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBm
aXJzdAorICAgICAgICAgICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9u
IGhhcyBkZWZpbml0ZWx5IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMy4gc2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNh
bGxlZCBzaW5jZSB3ZSBhZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUg
dGhlIHJlbGF0ZWQgZGVhZCBjb2RlLgorICAgICAgICAxNC4gb3JpZ2luYXRpbmdGcmFtZSBpcyBn
b25lLiAgT24gX1dLRG93bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUlu
Zm8gdGhhdCBvZnRlbiBjb250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9u
IHdhcyB0aGVyZSwKKyAgICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4g
cmVwbGFjZWQgYnkgZGlkQmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlv
blJlc3BvbnNlIHdoaWNoIGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUg
QVBJIHRlc3RzIGZvciBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZDo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3Jt
Q2FuY2VsTmV0d29ya0xvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dL
TmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJy
b3I6XSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICog
U2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAgICogU291
cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAg
ICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tEb3dubG9hZCBjYW5j
ZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1ZXN0XSk6CisgICAgICAg
ICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBzZXREZWxl
Z2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6CisgICAgICAgICgtW1dL
RG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb24ubW06CisgICAgICAgICgtW1dLTmF2aWdhdGlvbiBfd2FzVXNl
ckluaXRpYXRlZF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfZG93bmxvYWRVUkxSZXF1ZXN0OndlYnNp
dGVEYXRhU3RvcmU6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9yZXN1bWVEb3dubG9hZEZyb21EYXRhOndlYnNpdGVEYXRhU3RvcmU6cGF0aDpvcmlnaW5h
dGluZ1dlYlZpZXc6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBp
bml0V2l0aERvd25sb2FkMjpdKToKKyAgICAgICAgKCtbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIGNhbmNlbF0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCBwdWJsaXNoUHJvZ3Jlc3NBdFVSTDpdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcmVxdWVzdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ1dlYlZp
ZXddKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVkaXJlY3RDaGFpbl0pOgorICAgICAgICAo
LVtfV0tEb3dubG9hZCB3YXNVc2VySW5pdGlhdGVkXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IHJlc3VtZURhdGFdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdGcmFtZV0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICgtW19XS0Rv
d25sb2FkIGRlYWxsb2NdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0
RG93bmxvYWRDbGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3du
bG9hZENsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENs
aWVudC5tbToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURp
ZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbCk6CisgICAg
ICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZp
Z2F0aW9uU3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5h
dmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJv
eHkpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRTdGFydCk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFy
dENhbGxiYWNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2Fk
UmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIw
MjAtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVn
LWluIGxvYWQgcG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYyN2MxNjA1
YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi4yYzEzN2Y2N2YyYjQwZDc0YjE2YTM4YmYwYjQwNzli
MzUyZmZkMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBE
b3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2FkSUQgZG93
bmxvYWRJRCwgUmVmPE5ldHcKICAgICBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25EZWNpZGVk
LnNldChkb3dubG9hZElELCBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzaykpOwogfQogCi12b2lkIERv
d25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBE
b3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ2FsbERvd25sb2FkRGlk
U3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiB7CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CkBAIC0xMDUsNiArMTA1LDExIEBAIHZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvCiAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0aGlzLCBk
b3dubG9hZElELCBudWxscHRyLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgZG93bmxvYWQtPnJl
c3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsK
KworICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGxlZ2FjeSBkb3dubG9hZCBBUEks
IG9ubHkgc2VuZCBEaWRTdGFydCBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IEFQSS4KKyAgICBpZiAo
Y2FsbERvd25sb2FkRGlkU3RhcnQgPT0gQ2FsbERvd25sb2FkRGlkU3RhcnQ6OlllcykKKyAgICAg
ICAgZG93bmxvYWQtPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0KHsgfSwg
eyB9KSk7CisKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2FkSUQpKTsK
ICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkpOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAxNjVmMWM3
MjY3OGZhNTAuLmM0ODFlYjVmNmQ0MjljYjA5YmJjNTI1OTZmZjU5YTdiZTU3MzI1ZjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93bmxvYWQ7CiAK
K2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sIHsgTm8sIFllcyB9OworCiBj
bGFzcyBEb3dubG9hZE1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERvd25sb2Fk
TWFuYWdlcik7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29udmVydE5l
dHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0xv
YWQ+JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8V2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZG93bmxv
YWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCwgUmVmPE5ldHdvcmtEYXRhVGFzaz4mJik7
CiAKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgQ2Fs
bERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsK
ICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4IDk1Zjhk
ZWMzMDI1MWI4MGJhYTI5Y2U1OTA4NzNhN2FiYWVmZGE5Y2UuLjVmNzk5ZDVjMDViNmIxODQ4ZWM1
MDMyZDg0MzA1MGJhNWIxZDZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpAQCAtNzEs
NiArNzEsOCBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgTlNEYXRhICp1cGRhdGVkRGF0
YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxpc3Q6ZGlj
dGlvbmFyeSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCBvcHRpb25zOjAgZXJy
b3I6bnVsbHB0cl07CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGluc3RlYWQg
b2YgdXBkYXRlZERhdGEgb25jZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2FkIHRvIFdL
RG93bmxvYWQKKyAgICAvLyBiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0aGUgbG9j
YWwgcGF0aCB3ZSBnb3QgZnJvbSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCiAgICAgbV9k
b3dubG9hZFRhc2sgPSBbY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCku
c2Vzc2lvbiBkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CiAgICAgYXV0
byB0YXNrSWRlbnRpZmllciA9IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl07CiAgICAg
QVNTRVJUKCFjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5kb3dubG9h
ZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOwpAQCAtODMsNyArODUsMjIgQEAgdm9pZCBE
b3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoLAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3b3JrTG9h
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2Rvd25sb2FkVGFzayk7Ci0gICAgW21f
ZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQdHIoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0RhdGEgKnJl
c3VtZURhdGEpIG11dGFibGUgeworICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1Y2lu
Z1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtwYXRoID0gcmV0YWluUHRyKG1fZG93bmxvYWRUYXNr
LmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7Cisj
aWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBpZiAocmVzdW1lRGF0
YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUgdGhlIGRvd25sb2Fk
IGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4gQWRkIGl0IGZyb20g
dGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJv
cjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGlj
eTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAgICAgICAgICAgIGF1
dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAq
PihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0
czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3Nd
LCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJM
UmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGlu
Z107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6cGF0aC5nZXQoKSBmb3JLZXk6
QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVu
Y29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2Vj
dXJlQ29kaW5nOllFU10pOworICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rp
b25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAg
ICAgICAgICByZXN1bWVEYXRhID0gW2VuY29kZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9Cisj
ZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisjZW5kaWYKICAgICAgICAgYXV0byBy
ZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRhLmJ5dGVzKSwgcmVzdW1lRGF0YS5s
ZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0pLmdldCgpXTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmluZGV4IDhk
ODk3YTQyMzBhZmUyZTk4ZGRkYTljNGE5ZDIxMDE3NDc0YjM3OTIuLmI5MjA2ODJjOWU0NzNiZjM1
ZTAzZmYzYTYyZjcwNWQzZTFhYzIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDQ2LDEwICs0NDYsNyBAQCB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIFNhbgogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3Vn
Z2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotCi0gICAgcmV0
dXJuICJ1bmtub3duIl9zOworICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogfQogCiB2
b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGE5ZDJmMzkzOWU3MTg2Yjgx
ZThhN2VmZDRiYmViNTBhNjNiMmY1OS4uYjRlYjEwYTA5ODQzZmZjNjQ1M2EwY2M0YTljNzJmNGVi
ZjhlZTc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKQEAgLTIwNTMsOSArMjA1Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmRvd25s
b2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvCiAg
ICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQs
IHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3RlZEZpbGVuYW1l
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQp
CiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3du
bG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUp
KTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25s
b2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSks
IGNhbGxEb3dubG9hZERpZFN0YXJ0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2FuY2Vs
RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjA3OSwx
MCArMjA3OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2Nh
dGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiB7CiAgICAgdWludDY0X3QgZGVz
dGluYXRpb25JRCA9IG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgpLnRvVUludDY0
KCk7CiAKLSAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXMtYS1k
b3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQtRGlzcG9zaXRp
b24gaGVhZGVyCi0gICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUg
ZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgotICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpID8gcmVzcG9uc2Uuc3VnZ2Vz
dGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwotICAg
IHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lv
bklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKyAg
ICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBuZXR3b3JrRGF0YVRhc2suc3VnZ2VzdGVkRmls
ZW5hbWUoKTsKIAogICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUocmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgbmV0d29ya0RhdGFUYXNrID0gbWFrZVJlZihuZXR3b3JrRGF0YVRhc2sp
XSAoU3RyaW5nJiYgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlKSBtdXRhYmxl
IHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5kaW5nRG93
bmxvYWRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5oCmluZGV4IGJlNTI2ZWZmMWU4YzkxZDM2ZWE4OWI4N2U3YjU2Nzk1OGE5NTZmYjIuLjI5ZDRh
NjgwMGVjNmFiMGQ4MGRiODMzZDU0ZDI3ZjBkNTc3YjhlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwNiw2ICsxMDYsNyBAQCBjbGFz
cyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdG9yYWdlTWFuYWdlclNldDsKIGNsYXNz
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbjsKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBjbGFz
cyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTdG9yYWdl
QWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlv
biA6IHVpbnQ4X3Q7CkBAIC00MjEsNyArNDIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFy
RGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxv
YWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgQ2FsbERvd25s
b2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3dubG9hZElE
LCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCAwZjAxOTA1NmU1YjU3ZjUzMzRiOGNlNzM4MjZlMmZhMDU2ODg5M2JmLi5hOWJiZWNlNWFh
OGQ4N2IzNDkzMmE2MzkyY2Y1YWRlMjc4NzhlMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTQ4LDcg
KzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwg
b2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpIEFzeW5jCiAKICAgICBEb3dubG9hZFJlcXVlc3Qo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25hbDxXZWJL
aXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCi0gICAgUmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlc3VtZURvd25sb2Fk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQs
IElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpib29sIFdl
YktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiAgICAgQ2Fu
Y2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6OkRhdGFS
ZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBQdWJs
aXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgVVJMIHVy
bCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA4YThhYjBiOWI4MzFjYWY0OGZhMjI0NTMwOThhZmIy
NGFhYThmNGRlLi5jYjY5NmYzMmE5M2U1ZDY2ZWI3MGNkMDQ4ZmViMTQxNmFiOTU4N2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
U2Vzc2lvbkNvY29hLm1tCkBAIC03NjgsNiArNzY4LDIwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBw
cm9jZXNzU2VydmVyVHJ1c3RFdmFsdWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24s
IFNlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JL
X0RPV05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1v
amF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1l
IGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAgICAgICAg
YXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0
Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBb
dW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xp
Y3lSYWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5T
KHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9i
amVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10s
IFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05T
RGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZv
cktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAg
ICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAgW2RpY3Rp
b25hcnkgc2V0T2JqZWN0OnRhc2suX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgZm9yS2V5OkAiTlNV
UkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBlbmNvZGVy
ID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNv
ZGluZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5
LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgICAgICAg
ICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQorI2VuZGlm
CisKICAgICAgICAgYXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQQzo6
RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRhLmJ5
dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAgICAg
ICAgIGRvd25sb2FkLT5kaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhUmVmZXJlbmNlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5NzA4NzY0OTVm
YjFhY2M5MDRjMWVhMjUwNjkwOTNiMjAwZWIyNTVhLi44ZmY2OWNhYmMzYTg5N2MzMjQ2MTJmNzYw
ZjIwNzMzMTg5NmM2YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTY3MCw2ICs2NzAsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToKICAgICAg
ICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJbmZvLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJRC5oIidd
LAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9u
U3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQnOiBbJyJE
b3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRp
Zmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLAogICAgICAgICAnV2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRleHQuaCIn
XSwKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9ucy5oIidd
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IDFmN2EzZGQzYzY5
NzNlMTA5OTRmNWRjMTM3ZmFmNDA2YTI1ZWEyOWQuLjQxNWQ5MTY0NjU5NmNlZjI3Zjg3MTgzZjUy
Y2RlMTkyMGZiNTA0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgK
QEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlzdFN0b3Jl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRleHRNZW51RWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZENvbmZpZ3VyYXRpb24uaD4KICNpbXBv
cnQgPFdlYktpdC9XS0ZpbmRSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTaGFyZWRBUElDYXN0LmgKaW5kZXggNzZlODFiZTZkYjE0OTAyMzE4YmMyMWRlNWE1ZTRhMDFh
ZmU5ZTc2Ny4uZTNkY2E4NDBiN2NkYjZjZTU2MTkwMzIzMDNjN2MzNzEzZjdiNDIzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEyNyw2ICsx
MjcsMTIgQEAgYXV0byB0b0FQSShUKiB0KSAtPiBBUElUeXBlCiAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAodCkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJbmZvPFQ+OjpB
UElUeXBlPgorYXV0byB0b0FQSShUJiB0KSAtPiBBUElUeXBlCit7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAoJnQpKTsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW1wbFR5cGUgPSB0eXBlbmFtZSBBUElUeXBlSW5mbzxU
Pjo6SW1wbFR5cGU+CiBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGY4YTAyOGIwNmI1MTA2MTA4ZGRjM2Ni
YjY4YTQwMWJmYTM1ZjdkYmUuLjdmMDU4NDU2ZGVlNzY0ODk4MWZkNDZmMWYwMDU3Zjc1M2ZkNmUx
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1LDYgKzM1
LDcgQEAKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVudUVsZW1l
bnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3RvcmVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBACiAjaW1wb3J0
ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250ZW50UnVs
ZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50
ZXJuYWwuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4
cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUgdHlwZSkK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAgICB3cmFw
cGVyID0gW19XS0Rvd25sb2FkIGFsbG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtXS0Rvd25sb2Fk
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1lbnRhbEZl
YXR1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dAppbmRleCA1MTg0MGFhOTA3NWZkYWMwN2E0ZTkxYTIzMDViZDgxYjZk
YmYyM2FiLi4xYWQwMGY3MjU5ZGExMjMyZTBjODdhZjYwMzdjZTY1MGE5Mzc2MDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTM3MSw3ICszNzEsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAog
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5j
cHAKLVVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWRSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNw
cAogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZUhh
bmRsZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBi
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZDliOTNkMTdhZjI0YmVhYTAy
MGUyODUyOTg1NjkwOWJjYjZlYWYyLi44ZjM5OTUzZjM0Y2Y5YTFiOWI4ZTExMzM5MzBkODUyOGZk
MTJiNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMDAsNiArMzAwLDcgQEAgVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFdv
cmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbQor
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RXJyb3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggZDM3ZjYyODY4YjYxMjk3YTExYWZm
ZjM4MDJhODBiYTYxMmE0ZGNlNS4uZGZmNzNmYTY1YmY2ZmIwYWQxN2FmYTk5ZjU4MmY5NDJmYWY3
YTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2Fk
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xp
ZW50LmgKQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRlIDogYm9v
bDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERhdGE7CisKIGNsYXNzIERvd25sb2FkQ2xp
ZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVudCgpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCB1
aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092
ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVzdGluYXRp
b24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRv
d25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpEYXRhKiBy
ZXN1bWVEYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6
RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5kUmVxdWVz
dChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDA2MWUxODZkYmU4
ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFjOWU2YWUuLjkyOTQwOGVhMDUzODY1ZmJkOTVlM2RiNDY0
ZWVjOGU3Yzk2YTkzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaApAQCAtNTQsNiArNTQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk7CitjbGFzcyBEb3dubG9hZFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1l
UHJveHk7CkBAIC05OSw2ICsxMDAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVu
ZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZp
Z2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKwogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkg
eyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOyB9CiAg
ICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93TGVnYWN5VExTKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcih0
cnVlKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMoY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDNhMDgzY2E0ODY0NDNiZDg4MDYzM2E1YzI2
MDc0ZTI2MmQxMTM0YmMuLmZmZDA3ZThjY2Q4YjA0MDY3MTRlZTg3MTBlYzIxMzA4MDlmZWM0ZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNTUs
OSArNTUsNiBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBu
YW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHRE
b3dubG9hZENsaWVudEJhc2U+IHsKLSAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMCwgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19Owog
dGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNl
PiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVy
c2lvbnM7CiB9OwpAQCAtMTY4LDkwICsxNjUsNiBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlD
bGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAog
ICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKLXsK
LSAgICBjbGFzcyBMZWdhY3lEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVu
dDxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVu
dCB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBMZWdhY3lEb3dubG9hZENsaWVudChj
b25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0UmVmIGNv
bnRleHQpCi0gICAgICAgICAgICA6IG1fY29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAg
ICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
ZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydChtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9jb250ZXh0
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSSgmYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAg
IH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9u
c2UpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdl
YktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxl
bmd0aCwgdWludDY0X3QsIHVpbnQ2NF90KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVEYXRhKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQ
SSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQotICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBkaWRSZWNl
aXZlUmVzcG9uc2UoZG93bmxvYWRQcm94eSwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
Tm8sIHsgfSk7Ci0gICAgICAgICAgICBib29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7Ci0gICAg
ICAgICAgICBhdXRvIGRlc3RpbmF0aW9uID0gYWRvcHRXSyhtX2NsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGZpbGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0
ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihhbGxvd092ZXJ3cml0ZSA/IFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6OlllcyA6IFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBXZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdl
dCgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmlu
YWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5h
dGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRD
cmVhdGVEZXN0aW5hdGlvbihtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkp
LCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkRmluaXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xp
ZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFp
bChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRpZEZhaWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkRmFpbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBX
ZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAg
fQotICAgICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENhbmNlbChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3QpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktp
dDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7Ci0gICAgICAgIH0KLSAgICAgICAgV0tDb250ZXh0UmVmIG1fY29udGV4dDsKLSAgICB9
OwotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHQpLT5zZXRMZWdhY3lEb3dubG9hZENsaWVudChh
ZG9wdFJlZigqbmV3IExlZ2FjeURvd25sb2FkQ2xpZW50KHdrQ2xpZW50LCBjb250ZXh0KSkpOwot
fQotCiB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsK
ICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0UmVmKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGll
bnQod2tDbGllbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApp
bmRleCBkYzJlMGQxOTIzMTVlZTU3MmQxZDFmNjc4YWJhNjFkNmMyNGQxMzkxLi40MzE1NjBkNjA3
MzQ1YjU1NjdiMjc2MTNiOTdkNTAxMmY2YjAyMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg+
Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dERvd25sb2FkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLQ29udGV4dEhpc3RvcnlDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250
ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVk
Lmg+CkBAIC0xMzgsNyArMTM3LDYgQEAgV0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRD
cmVhdGVXaXRoQ29uZmlndXJhdGlvbihXS0NvbnRleHRDb25maWd1cmF0aW9uUmUKIFdLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dFNldENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tD
b250ZXh0Q2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRJ
bmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRl
eHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRI
aXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KTsKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERv
d25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9h
ZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0
aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0
RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVlc3RSZWYg
cmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmY2Y5NmFiZWYxMTQ1ODQ2YjIxMTYxMTg1NWZiNzdiMzJkMWQ4Nzcy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKKysrIC9kZXYv
bnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHREb3du
bG9hZENsaWVudF9oCi0jZGVmaW5lIFdLQ29udGV4dERvd25sb2FkQ2xpZW50X2gKLQotI2luY2x1
ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWRE
aWRTdGFydENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRE
b3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrKShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVJlZiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNh
bGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tV
UkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVm
IHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2spKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBib29sICgqV0tDb250ZXh0RG93bmxvYWRT
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLQ29udGV4dERvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVu
YW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBl
ZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2sp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1Jl
ZiBwYXRoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLQ29udGV4dERvd25sb2FkRGlkRmFpbENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCkoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jh
c2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxv
YWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QpKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwot
Ci10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UgewotICAgIGludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Ci19IFdLQ29udGV4dERv
d25sb2FkQ2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGll
bnRWMCB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdL
Q29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2VDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlv
bkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbjsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWw7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlkQ3Jhc2g7Ci19IFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjA7Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25s
b2FkQ2xpZW50VjEgewotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4K
LSAgICBXS0NvbnRleHREb3dubG9hZERpZFN0YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFN0YXJ0OwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3Bv
bnNlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRTaG91
bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBzaG91bGREZWNv
ZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAgIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVz
dGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRp
b247Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2g7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRG
YWlsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkQ2FuY2VsOwotICAgIFdLQ29udGV4dERvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNo
OwotCi0gICAgLy8gVmVyc2lvbiAxLgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0OwotfSBXS0NvbnRleHREb3dubG9hZENsaWVudFYxOwotCi0jZW5kaWYgLy8gV0tDb250
ZXh0RG93bmxvYWRDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBjMjg3YmIzNDcwNDcz
YWQ1YmM2NGZjZmQ1Mzg4NGM3NTJlYmVjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tEb3dubG9hZC5oIgotCi0jaW5jbHVkZSAiQVBJQXJy
YXkuaCIKLSNpbmNsdWRlICJBUElEYXRhLmgiCi0jaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQu
aCIKLSNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eS5o
IgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi11
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1XS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkK
LXsKLSAgICByZXR1cm4gdG9BUEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Ci19Ci0KLXVpbnQ2
NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmKQotewotICAgIHJldHVybiAwOwotfQot
Ci1XS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0lt
cGwoZG93bmxvYWQpLT5yZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Ci19Ci0KLVdLRGF0YVJlZiBXS0Rv
d25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwotfQotCi12b2lk
IFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4g
dG9JbXBsKGRvd25sb2FkKS0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKnRvSW1wbChkb3du
bG9hZCkpXSAoYXV0byopIHsKLSAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENh
bmNlbChkb3dubG9hZC5nZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLVdLUGFnZVJlZiBXS0Rvd25sb2Fk
R2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKLX0KLQotV0tBcnJh
eVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCkK
LXsKLSAgICBhdXRvJiByZWRpcmVjdENoYWluID0gIHRvSW1wbChkb3dubG9hZCktPnJlZGlyZWN0
Q2hhaW4oKTsKLSAgICBWZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKLSAgICB1cmxz
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVkaXJlY3RDaGFpbi5zaXplKCkpOwotICAgIGZvciAo
YXV0byYgcmVkaXJlY3RVUkwgOiByZWRpcmVjdENoYWluKQotICAgICAgICB1cmxzLnVuY2hlY2tl
ZEFwcGVuZChBUEk6OlVSTDo6Y3JlYXRlKHJlZGlyZWN0VVJMLnN0cmluZygpKSk7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh1cmxzKSkubGVha1JlZigpKTsK
LX0KLQotYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKQotewotICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVk
KCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZjcyMDI3OTNkNTRmNTQyYTM5MDkyMDRhM2M4MGRh
Y2E5YWQyMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tEb3dubG9hZF9oCi0jZGVm
aW5lIFdLRG93bmxvYWRfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUg
PFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUg
PHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewot
I2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7Ci0KLVdL
X0VYUE9SVCB1aW50NjRfdCBXS0Rvd25sb2FkR2V0SUQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkg
V0tfQ19BUElfREVQUkVDQVRFRDsKLVdLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9h
ZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLRGF0YVJl
ZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VY
UE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19F
WFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0
Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgYm9vbCBXS0Rvd25sb2Fk
R2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLQotI2lmZGVmIF9f
Y3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8vIFdLRG93bmxvYWRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY5NTdmODYwMTk1OTU1Zjc1OTU3YmRjMDE2ZmZjZTExMzIyNmRhMjEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKQEAg
LTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
S2l0L1dLQmFzZS5oPgorCit0eXBlZGVmIGJvb2wgKCpXS0Rvd25sb2FkV2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVz
cG9uc2UsIFdLVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VS
ZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdS
ZWYgKCpXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
RG93bmxvYWREaWRXcml0ZURhdGEpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGxvbmcgbG9uZyBi
eXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0b3RhbEJ5dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2
b2lkICgqV0tEb3dubG9hZERpZEZpbmlzaCkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkRGlkRmFpbFdpdGhF
cnJvcikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVm
IHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0eXBlZGVmIHN0cnVjdCBX
S0Rvd25sb2FkQ2xpZW50QmFzZSB7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsK
K30gV0tEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3RydWN0IFdLRG93bmxvYWRDbGll
bnRWMCB7CisgICAgV0tEb3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAwLgorICAgIFdLRG93bmxvYWRX
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAgICAgICAgICAgICAgICAgICAgICAgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb247CisgICAgV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CisgICAgV0tEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlICAgICAgICAg
ICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTsKKyAgICBXS0Rvd25sb2Fk
RGlkV3JpdGVEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFdyaXRl
RGF0YTsKKyAgICBXS0Rvd25sb2FkRGlkRmluaXNoICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZEZpbmlzaDsKKyAgICBXS0Rvd25sb2FkRGlkRmFpbFdpdGhFcnJvciAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWxXaXRoRXJyb3I7Cit9IFdLRG93
bmxvYWRDbGllbnRWMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3du
bG9hZFJlZi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYwM2Y4YjY0ZTg4MmE2N2IyM2JkMzQ2Yjc3YzA3ODQy
YTA1MWYwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRSZWYuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRG93bmxvYWRSZWYuaCIKKworI2luY2x1ZGUgIkFQ
SUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xp
ZW50LmgiCisjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJv
eHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkQ2xpZW50
LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBBUEkgewordGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLRG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAgdHlw
ZWRlZiBzdGQ6OnR1cGxlPFdLRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkK
K3sKKyAgICByZXR1cm4gdG9BUEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dLVVJM
UmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkK
K3sKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3du
bG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2FuY2Vs
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tE
b3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIHJldHVybiB0b0ltcGwoZG93
bmxvYWQpLT5jYW5jZWwoW2Z1bmN0aW9uQ29udGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3VtZURh
dGEpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2sodG9BUEko
cmVzdW1lRGF0YSksIGZ1bmN0aW9uQ29udGV4dCk7CisgICAgfSk7Cit9CisKK1dLUGFnZVJlZiBX
S0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7Cisg
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKK30K
KworYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKQoreworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7
Cit9CisKK3ZvaWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQoreworICAgIGNsYXNzIERvd25sb2FkQ2xpZW50
IDogcHVibGljIEFQSTo6Q2xpZW50PFdLRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6
RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93bmxvYWRD
bGllbnQoY29uc3QgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7CisgICAg
ICAgICAgICAgICAgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3Bh
Y2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRv
QVBJKGRvd25sb2FkKSwgdG9BUEkoY2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVEYXRh
KHRvQVBJKGRvd25sb2FkKSwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3Ry
aW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkgeworICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7
IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IEFQSTo6U3RyaW5nKiBkZXN0aW5hdGlvbiA9IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSh0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEko
c3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Cisg
ICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7CisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZEZpbmlzaCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5k
aWRGaW5pc2godG9BUEkoZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJl
c3VtZURhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBt
X2NsaWVudC5kaWRGYWlsV2l0aEVycm9yKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3IpLCB0
b0FQSShyZXN1bWVEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hl
ZCBkdXJpbmcgZG93bmxvYWQiIH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3Bv
bnNlKSwgdG9BUEkocmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpIHsKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOworICAgICAgICB9CisgICAgfTsKKworICAgIHRvSW1wbChkb3dubG9hZCktPnNl
dENsaWVudChhZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50KGNsaWVudCkpKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NDdmZmE4OTVlMmU1NTk1Yzg3Y2FhNDdjN2UxZTE4YzFiZGNiMzhlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9X
S0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorCisjaWZuZGVm
IF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93
bmxvYWRHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2Fk
Q29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CisKK3R5cGVkZWYgdm9pZCAoKldL
RG93bmxvYWRDYW5jZWxDYWxsYmFjaykoV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQq
IGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9h
ZENhbmNlbENhbGxiYWNrIGNhbGxiYWNrKTsKK1dLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9h
ZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCBi
b29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
OworV0tfRVhQT1JUIHZvaWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVz
Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
TmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCmluZGV4IDhmZjM3ZTVjODdiZTg0NzIxY2IxYTgwODNm
M2EyMGYxNTU5YTU1MDEuLjE0YTIzNTE1N2M3MzgzZDI2OTZlOWQ1YmQ4ZTVkNzdmMTRiYTAwOTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFj
dGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLmNwcApAQCAtMzUsOCArMzUsMyBAQCBXS1R5cGVJRCBXS05hdmlnYXRpb25B
Y3Rpb25HZXRUeXBlSUQoKQogewogICAgIHJldHVybiB0b0FQSShBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OkFQSVR5cGUpOwogfQotCi1ib29sIFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1E
b3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQotewotICAgIHJldHVybiB0b0lt
cGwoYWN0aW9uKS0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCmluZGV4IDlk
OGZjZjFlMTk5NzEzYjFmMDliMzI2MjBkMjE1NzkyNDU0ODZlOWMuLjU2OTFlYWJjZDQzZjBhNmEz
MWYzNzM1NzNmMjY4YjkwZmQyNGQwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCkBAIC0zNCw4ICszNCw2IEBAIGV4
dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0VHlw
ZUlEKCk7CiAKLVdLX0VYUE9SVCBib29sIFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1E
b3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYpOwotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZp
Z2F0aW9uUmVzcG9uc2VSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tO
YXZpZ2F0aW9uUmVzcG9uc2VSZWYuY3BwCmluZGV4IGVkNmYyMWIwZjczYzg4OTYzZjhmYThhYjEz
Mjg5MzcyY2U2NmVhMmYuLjE2ODVkMzhlM2Y0YWFjZjg2NzE3OTViMDlkNWNiOTU5MmIwY2QxZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvblJl
c3BvbnNlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25SZXNwb25zZVJlZi5jcHAKQEAgLTQwLDMgKzQwLDE0IEBAIGJvb2wgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VDYW5TaG93TUlNRVR5cGUoV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgcmVzcG9uc2Up
CiB7CiAgICAgcmV0dXJuIHRvSW1wbChyZXNwb25zZSktPmNhblNob3dNSU1FVHlwZSgpOwogfQor
CitXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25SZXNwb25zZUdldERvd25sb2FkQXR0cmlidXRlKFdL
TmF2aWdhdGlvblJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIC8vIEZJWE1FOiBDb25zaWRl
ciBtb3ZpbmcgdGhpcyB0byB0aGUgbmF2aWdhdGlvbiBhY3Rpb24gd2hlcmUgaXQgd291bGQgbWFr
ZSBtb3JlIHNlbnNlLAorICAgIC8vIGJ1dCB3ZSBwcm9iYWJseSBuZWVkIGEgYmV0dGVyIHdheSB0
byBhc3NvY2lhdGUgYWN0aW9uIGFuZCByZXNwb25zZS4KKyAgICAvLyBGSVhNRTogRG8gaXQgaW4g
T2JqQyBhbHNvLgorICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHRvSW1wbChyZXNwb25zZSktPmRvd25s
b2FkQXR0cmlidXRlKCk7CisgICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKGF0dHJpYnV0ZS5pbXBsKCkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uUmVzcG9u
c2VSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvblJlc3Bv
bnNlUmVmLmgKaW5kZXggYzgyYjE0ZGMzMjQ1MTQxODRlMjc0NTQ3ZTAyMDlhYjEyODliNDllYy4u
Mjc5Yzc2OGJkZDRkOTMwOWMzODZhNjI4MGU5NzA3ZmY1MzM2Mjg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25SZXNwb25zZVJlZi5o
CkBAIC0zNiw2ICszNiw4IEBAIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05hdmlnYXRpb25SZXNwb25z
ZUdldFR5cGVJRCgpOwogICAgIAogV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9uUmVzcG9uc2VD
YW5TaG93TUlNRVR5cGUoV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYpOwogCitXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tOYXZpZ2F0aW9uUmVzcG9uc2VHZXREb3dubG9hZEF0dHJpYnV0ZShXS05hdmln
YXRpb25SZXNwb25zZVJlZik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBhZjYyYWNhZTlhNGRhZmZh
MDJiMjhkZGFjNDRmNjRiNDhkMGQzYjJjLi43MWZiYWRhM2Y0ODJlZjZjY2RkMDdlNDg2MzgzZDJh
NDM5MTUyMzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAg
LTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmgi
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAi
Q29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKICNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtMjI1
MSw2ICsyMjUyLDEzIEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICByZXR1
cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwpKTsK
ICAgICAgICAgfQogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
JiByZXNwb25zZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2Ns
aWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRv
QVBJKCZyZXNwb25zZSksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUo
V2ViUGFnZVByb3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMzgw
NmQxODZhYTlmYjk3NzQ3YTczZDk3MzYwNmE1OGViNDE4OGI2MC4uMmJhYzQxMmE0YTI2Y2I2MGZj
NWExOTNkYTFhZDBlMzc2YzhhYmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzEsNyArNzEsOSBAQCB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uV2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZUNhbGxi
YWNrKShXS1BhZ2VSZWYgcGFnZSwgVwogdHlwZWRlZiBXS0RhdGFSZWYgKCpXS1BhZ2VOYXZpZ2F0
aW9uQ29weVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1BhZ2VOYXZpZ2F0
aW9uQ29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgCisKK3R5cGVkZWYgdm9pZCAo
KldLUGFnZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdLUGFn
ZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCiB0eXBlZGVm
IFdLUGx1Z2luTG9hZFBvbGljeSAoKldLUGFnZU5hdmlnYXRpb25EZWNpZGVQb2xpY3lGb3JQbHVn
aW5Mb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpbkxvYWRQb2xpY3kgY3VycmVu
dFBsdWdpbkxvYWRQb2xpY3ksIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGljdGlvbmFyeSwg
V0tTdHJpbmdSZWYqIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uRGlkQmVnaW5OYXZpZ2F0
aW9uR2VzdHVyZSkoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAt
MjEzLDYgKzIxNSw3IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyB7
CiAKICAgICAvLyBWZXJzaW9uIDMuCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjayBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nOworICAgIFdLUGFnZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkQ2FsbGJhY2sgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CiB9IFdLUGFn
ZU5hdmlnYXRpb25DbGllbnRWMzsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YjZmMTMx
NzczMTczYmQyN2RmYTgxMzU2NDhhMWYwNzViMWM0OGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApAQCAtMCwwICsxLDU1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS0ZyYW1lSW5mbzsKK0Bwcm90
b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dL
X0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGlu
dGVyZmFjZSBXS0Rvd25sb2FkIDogTlNPYmplY3QKKworLyogQGFic3RyYWN0IFRoZSByZXF1ZXN0
IHVzZWQgdG8gaW5pdGlhdGUgdGhpcyBkb3dubG9hZC4KKyAgQGRpc2N1c3Npb24gSWYgdGhlIG9y
aWdpbmFsIHJlcXVlc3QgcmVkaXJlY3RlZCB0byBhIGRpZmZlcmVudCBVUkwsIG9yaWdpbmFsUmVx
dWVzdAorICB3aWxsIGJlIHVuY2hhbmdlZCBhZnRlciB0aGUgZG93bmxvYWQgZm9sbG93cyB0aGUg
cmVkaXJlY3QuCisqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSkg
TlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CisKKy8qIEBhYnN0cmFjdCBUaGUgZGVsZWdh
dGUgdGhhdCByZWNlaXZlcyBwcm9ncmVzcyB1cGRhdGVzIGZvciB0aGlzIGRvd25sb2FkLiAqLwor
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVn
YXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxl
dGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMgZmluaXNo
ZWQuCisgQGRpc2N1c3Npb24gVG8gYXR0ZW1wdCB0byByZXN1bWUgdGhlIGRvd25sb2FkLCBjYWxs
IFdLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB3aXRoIHRoZSBkYXRhIGdpdmVuIHRv
IHRoZSBjb21wbGV0aW9uSGFuZGxlci4KKyBJZiBubyByZXN1bWUgYXR0ZW1wdCBpcyBwb3NzaWJs
ZSB3aXRoIHRoaXMgc2VydmVyLCBjb21wbGV0aW9uSGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRo
IG5pbC4KKyovCistICh2b2lkKWNhbmNlbDoodm9pZCheIF9OdWxsYWJsZSkoTlNEYXRhICogX051
bGxhYmxlIHJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDJhOTk0NTQxOTA3N2JkOTQ5ODdkYTAyYmNhNDIzOWY4
MTgxMzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWQubW0KQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgorCisjaW1wb3J0ICJB
UElEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tl
ci5oIgorI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZERlbGVn
YXRlLmgiCisjaW1wb3J0ICJXS05TRGF0YS5oIgorI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKwor
Y2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQgPFdLRG93bmxvYWREZWxl
Z2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICAgICAg
LCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9E
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1l
OmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0
YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRXcml0
ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTopXSkKKyAg
ICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRz
VG9EaWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkKKyAgICB7CisgICAgfQor
Citwcml2YXRlOgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKworICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3Qg
PSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9O
b3RVcGRhdGVIVFRQQm9keSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWQpIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnN0YXRpY19jYXN0PE5TSFRUUFVS
TFJlc3BvbnNlICo+KHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkgbmV3UmVxdWVzdDpuc1JlcXVl
c3QuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUo
cmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZSht
X2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSldKFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNv
bXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAg
ICAgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICAgICAgICAgIGNhc2UgV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5Q2FuY2VsOgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdzoK
KyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiBy
YWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSAoJWxkKSIsIChsb25nKXBvbGljeV07CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNv
bXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworCisgICAgICAgIFttX2RlbGVn
YXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTp3cmFwcGVyKGNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjaGFsbGVuZ2UgPSBtYWtlUmVmKGNoYWxsZW5nZSksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBA
c2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBs
ZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAg
ICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgeworICAgICAg
ICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoKKyAgICAg
ICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVk
ZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNyZWRl
bnRpYWwoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6CisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3Rl
Y3Rpb25TcGFjZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpS
ZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlz
ZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9uXTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0
IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
IGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0Rl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCisgICAgICAgIFtt
X2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZTpzdWdn
ZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25sb2FkID0g
bWFrZVJlZihkb3dubG9hZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6
OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigp
OworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVVUkwpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpO
bywgeyB9KTsKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBiZSBhIGZpbGUgVVJMIl07
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBO
U0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XTsKKyAgICAgICAgICAgIGlmICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W2Rlc3Rp
bmF0aW9uIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0ucGF0aF0pIHsKKyAgICAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAg
ICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VS
TEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmls
XSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoW2ZpbGVNYW5hZ2VyIGZp
bGVFeGlzdHNBdFBhdGg6ZGVzdGluYXRpb24ucGF0aF0pIHsKKyAgICAgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAgICAgIGRv
d25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWlu
IGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi5wYXRoKTsKKyAgICAgICAgfSkuZ2V0KCldOwor
ICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRl
biwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgZmluYWwKKyAgICB7CisgICAg
ICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93
bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxC
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFt
X3Jlc3BvbmRzVG9EaWRGaW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21f
ZGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZCldOworICAgIH0KKwor
ICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRhKSBmaW5h
bAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWls
V2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRv
d25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigp
IHJlc3VtZURhdGE6d3JhcHBlcihyZXN1bWVEYXRhKV07CisgICAgfQorCisgICAgdm9pZCBwcm9j
ZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCB1
c2VySW5mbzpuaWxdIHJlc3VtZURhdGE6bmlsXTsKKyAgICB9CisKKyAgICBXZWFrT2JqQ1B0cjxp
ZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1fcmVzcG9u
ZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNU
b0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBtX3Jlc3Bv
bmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3Bv
bmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmluaXNoIDog
MTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsKKworQGlt
cGxlbWVudGF0aW9uIFdLRG93bmxvYWQKKworLSAodm9pZCljYW5jZWw6KHZvaWQgKF4pKE5TRGF0
YSAqcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZG93bmxvYWQtPmNhbmNl
bChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
YXV0byogZGF0YSkgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpKTsKKyAgICB9KTsKK30KKworLSAoTlNV
UkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0Cit7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+cmVx
dWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RV
cGRhdGVIVFRQQm9keSk7Cit9CisKKy0gKGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRl
Cit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKK30KKworLSAodm9pZClzZXRE
ZWxlZ2F0ZTooaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICBfZG93bmxvYWQtPnNldENsaWVudChhZG9wdFJlZigqbmV3IERv
d25sb2FkQ2xpZW50KGRlbGVnYXRlKSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBf
ZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCisj
cHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpP
YmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9kb3dubG9hZDsKK30KKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4OTRmNGY5MzBiYTkzMjhmMzZlZTkyZmI5ZjdlZjY3Mzk1
NDY0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5k
YXRpb24uaD4KKworQGNsYXNzIFdLRG93bmxvYWQ7CisKKy8qIEBlbnVtIFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeQorIEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0aGUgZGVj
aXNpb24gaGFuZGxlciBmcm9tIHRoZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgorIEBjb25zdGFudCBXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwgICBDYW5jZWwgdGhlIHJlZGlyZWN0LgorIEBjb25zdGFu
dCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgcmVkaXJlY3QuCisq
LwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSB7
CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9jb2wg
V0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCisvKiBAYWJzdHJhY3Qg
SW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRUUCByZWRpcmVjdGlv
biByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2ZWQg
dGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rpb24gcmVzcG9uc2Uu
CisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2lsbCBiZSBzZW50Lgor
IEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0
IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2NlZWQgd2l0aCB0aGUg
cmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBt
ZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJlIHRha2VuLgorKi8K
Ky0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3dubG9hZFJl
ZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdo
ZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCByZWNlaXZlZCB0aGUg
YXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRp
b24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0byB0aGUgY2hhbGxlbmdlLiBU
aGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBvZiB0aGUg
ZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLiBX
aGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVzZSwgb3Ig
bmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisgY3JlZGVudGlhbC4KKyBAZGlz
Y3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2aWV3
IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHdpdGggdGhlIE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9zaXRpb24u
CisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25I
YW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0
byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxv
YWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVkIGEgZmlsZSB0byB3aGljaCB0byB3cml0
ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciByZXNwb25zZSwgaWYgdGhpcyBkb3dubG9h
ZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QuCisgQHBhcmFtIHN1Z2dlc3RlZEZp
bGVuYW1lIFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVy
IFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRoZXIgYSBm
aWxlIFVSTCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUgZG93bmxv
YWQuCisgQGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBVUkwsIHJl
c3BvbnNlIHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRlbiBiZSB0
aGUgc2FtZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250ZW50IGNh
biBzcGVjaWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRoZSBkZXN0
aW5hdGlvbiBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0aGF0IGRv
ZXMgbm90IGV4aXN0IGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2FuIGJlIHdy
aXR0ZW4gdG8uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihudWxsYWJsZSBOU1VSTFJlc3BvbnNlICopcmVz
cG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICogX051bGxhYmxlIGRlc3RpbmF0aW9uKSlj
b21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxv
YWQgaGFzIHJlY2VpdmVkIGFuZCB3cml0dGVuIGRhdGEgdG8gdGhlIGRlc3RpbmF0aW9uLgorIEBw
YXJhbSBkb3dubG9hZCBUaGUgd2ViIHZpZXcgdGhhdCBoYXMgd3JpdHRlbiBkYXRhLgorIEBwYXJh
bSBieXRlc1dyaXR0ZW4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3Rh
bEJ5dGVzV3JpdHRlbiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFt
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBleHBl
Y3RlZCB0byBiZSB3cml0dGVuLgorIEBkaXNjdXNzaW9uIElmIHRoaXMgZG93bmxvYWQgd2FzIHRo
ZSByZXN1bHQgb2YgcmVzdW1pbmcgYSBwcmV2aW91cyBkb3dubG9hZCwgdGhlbgorIHRvdGFsQnl0
ZXNXcml0dGVuIHdpbGwgYmUgYnl0ZXNXcml0dGVuIHBsdXMgdGhlIG51bWJlciBvZiBieXRlcyB0
aGF0IGhhZCBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZC4KKyBJZiB0aGUgdG90YWwgbnVtYmVyIG9m
IGJ5dGVzIGlzIHVua25vd24sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgd2lsbCBiZSAtMS4K
KyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRh
OihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2Fk
IGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRvd25sb2FkIFRoZSB3ZWIgdmll
dyB0aGF0IGZpbmlzaGVkLgorKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxv
YWQgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQg
aGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIHdlYiB2aWV3IHRoYXQgaGFzIGZhaWxl
ZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUgcmVhc29u
LgorIEBwYXJhbSByZXN1bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdLV2ViVmll
dyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlzIGRvd25s
b2FkLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWls
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YToobnVsbGFibGUgTlNEYXRhICop
cmVzdW1lRGF0YTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNmM4OTQyMGU2ZTI3YjE0M2RiMDI1NDA1Y2IzM2I3YTlkN2M0YWY5Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxv
YWRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJEb3du
bG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkLmgiCisjaW1wb3J0ICJXS09iamVjdC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0
czxEb3dubG9hZFByb3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tEb3dubG9hZDsK
K307CisKK30KKworQGludGVyZmFjZSBXS0Rvd25sb2FkICgpIDxXS09iamVjdD4geworQHBhY2th
Z2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBfZG93bmxv
YWQ7CisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gPiBfZGVsZWdhdGU7
Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbi5tbQppbmRleCA3NzA3NWJkNjY0YmIxYjkxNTdkODAzYTRmYmFlYjEzOGI3M2JmMzQz
Li5jZjM1N2RmMGFhMjczMDVkMzA2ZTQ3ZDk2ZDQ4YjZhZDM0ZmM2MTUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KQEAgLTQ1LDYg
KzQ1LDExIEBACiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3QoKS5uc1VS
TFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJv
ZHkpOwogfQogCistIChCT09MKV93YXNVc2VySW5pdGlhdGVkCit7CisgICAgcmV0dXJuIF9uYXZp
Z2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQogCiAtIChXS0NvbnRlbnRNb2RlKWVmZmVjdGl2ZUNvbnRlbnRNb2RlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5o
CmluZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2UxYmUzNTEwZWI4ODRhMDU4NzguLmVlM2UwYzA5
NWI5MDFlYzAzZTAyNDZiZDdmZjJmMmExOTBmZTNlNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0Rvd25s
b2FkOwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25BY3Rpb247CiBA
Y2xhc3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBAIC01MCwxMCArNTEsMTIgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSB7CiAgQGFic3RyYWN0
IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRoZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhl
IHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxl
cjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCAg
IENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdhdGlvbiB0byBjb250aW51ZS4KKyBAY29uc3Rh
bnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCAgICBUdXJuIHRoZSBu
YXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdl
ciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAgICBXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93LAorICAg
IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0
aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgcHJvdG9jb2wgY2FuIHByb3ZpZGUKQEAgLTE2NCw2ICsx
NjcsMTQgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpIHsKICAqLwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxl
bmdlIHNob3VsZEFsbG93RGVwcmVjYXRlZFRMUzoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAKKy8qCisgQGFic3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0
IGNyZWF0ZWQgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uUmVzcG9uc2UgVGhlIHJl
c3BvbnNlIHRoYXQgaXMgYmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93
bmxvYWQgVGhlIGRvd25sb2FkLgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBuYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAog
CiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRl
eCBmMDljMmE4ZTZhNWI3ODU1YmZmOWVhNWZjMzIxMzJhMTUzZWIxNWI1Li4yMzRhMGIwMmNiZmI4
YTM3ZGVkZWY5Mjg5MTU1Y2U3YTdlOTlhNTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oCkBAIC01OCwxMSArNTgsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU09B
dXRob3JpemF0aW9uTG9hZFBvbGljeSkgewogICAgIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xp
Y3lJZ25vcmUsCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwog
Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lEb3dubG9hZCA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgKyAxKTsKK3N0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RC
QSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkg
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDIp
Owogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
d0luTmV3UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKLXN0YXRpYyBjb25z
dCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lP
U19UQkEpKSA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvdyArIDEpOwogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKaW5kZXggOTE1ODlkMTJh
NDIzN2NkNzNiYjczZWQ1Yzk3YjYxYzE3YTFmMTM5Yy4uYTdhN2Q5MjlkZmY4NzA0M2U3ZjNhNjAz
ZjY4ZGU0MDdkMGQzMGFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCkBAIC0yNyw0ICsyNyw1IEBACiAKIEBp
bnRlcmZhY2UgV0tOYXZpZ2F0aW9uIChXS1ByaXZhdGUpCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqX3JlcXVlc3Q7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgX3dhc1VzZXJJbml0aWF0ZWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggNGYzNmUy
MzI2NDM3MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4NTlkYy4uZmFlMzFmMzFiNzk5MTIxZDBlMTcz
N2NkMDcyMTA4NTQ5ODAyMjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTI4LDExICsyOCwxMyBAQAogCiAjaW1wb3J0
ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1vZGVsLmgiCisjaW1wb3J0ICJE
b3dubG9hZE1hbmFnZXIuaCIKICNpbXBvcnQgIkxlZ2FjeURvd25sb2FkQ2xpZW50LmgiCiAjaW1w
b3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNzTWFuYWdlci5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNp
bXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRl
cm5hbC5oIgpAQCAtNDgxLDEyICs0ODMsMTIgQEAgc3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJl
ZFByb2Nlc3NQb29sOwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3Jl
ICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewot
ICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dl
YnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpOworICAgIHJldHVybiBb
X1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRv
d25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJl
cXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6
KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3Jl
ICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5y
ZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3Bh
Z2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBw
YXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFw
cGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRh
U3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhy
ZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydDo6Tm8p
KV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRl
c3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3Ry
aW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IDdjNGZlNGNk
OGZiOWFmZmE4Y2EwMzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYyNDk4MGM5Y2ZmNjdlY2QzYmVkZTcz
ZmUyNDAwODE4YWE1MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC02Miw3ICs2Miw3IEBACiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdp
bkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5k
aWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxl
Z2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURf
V0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZC5kb3dubG9hZERlbGVnYXRlIiwgbWFjb3MoMTAu
MTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21h
dGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQpAQCAtODMsOCArODMs
OSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJl
cXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBp
b3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICop
ZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAoX1dLRG93
bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJz
aXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3Ry
aW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLSAoX1dL
RG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdl
YnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJlcXVlc3QiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURv
d25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tX
ZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2lu
YXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIldLV2ViVmlldy5fcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9u
SGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEp
KTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2ViIGNv
bnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWluYXRlU2VydmljZVdv
cmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNzYxYTFkYTBm
NjViMzY5OTdiYWI0OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uZjQ4OTI1MjMxMjA1ZDY0N2YwNjY2NWY3
ZTc2OGNjNWVkMmMwODgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgog
QGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRlbTsK
IEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRmlu
ZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNzIFdLRnJhbWVJbmZv
OwpAQCAtNDUwLDYgKzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlw
ZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogICovCiArIChC
T09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJzdHJhY3QgQmVnaW5zIGEgZG93
bmxvYWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgd2VicGFnZSBh
cyBpZiB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVkIGEgbmF2aWdhdGlvbiBpbnRvIGEg
ZG93bmxvYWQgaW5zdGVhZAorIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHNwZWNpZnlpbmcg
dGhlIFVSTCB0byBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBj
YWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisgKi8KKy0gKHZvaWQpZG93bmxv
YWRSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
KF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyogQGFic3RyYWN0IFJlc3VtZXMg
YSBkb3dubG9hZCB0aGF0IGZhaWxlZCBvciB3YXMgY2FuY2VsbGVkLgorIEBwYXJhbSByZXN1bWVE
YXRhIERhdGEgZnJvbSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3Ig
YSBXS0Rvd25sb2FkJ3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4K
KyAqLworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRs
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
KwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRpc2N1
c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwgdmFs
dWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBuaWwg
d2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgy
NzZhNzQ4ZTMwZDljNjc0Li43NTZmNjQxMzM0MDdlOWYyZGM0ZWEyZTRiMDdjODVjY2ExOTg0ZDMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3Vy
YXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJXS0Zy
YW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgog
I2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5o
IgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxh
YmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJldHVy
biB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFt
ZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKWRvd25sb2FkUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rv
d25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVz
dChyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9p
ZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBh
dXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRG
b3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZl
ciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4
Y2VwdGlvbl07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNs
YXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3Nd
LCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5p
bF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2
ZXIgZmluaXNoRGVjb2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2Jq
ZWN0Rm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYg
KCFwYXRoKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24gZm9ybWF0OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYgVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgZmFpbHMgdG8gcmVz
dW1lIGEgZG93bmxvYWQgaWYgdGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0LgorICAgIC8v
IElmIHNvbWVvbmUgaGFzIHJlbW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1ha2UgYW4gZW1w
dHkgZmlsZSBhdCB0aGF0IGxvY2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBbW05TRGF0YSBkYXRh
XSB3cml0ZVRvRmlsZTpwYXRoIGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgorCisgICAgX3BhZ2Ut
PnJlc3VtZURvd25sb2FkKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0
YSksIHBhdGgsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChXS05h
dmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVt
ICopaXRlbQogewogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVt
KGl0ZW0uX2l0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFkZWU2NDkzZWY3NjNh
MTYxODA3NWQwZGMuLjUwYTYyYjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5Zjc0OGI4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tSZWN0RWRnZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2Vi
cGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgy
NmI5YTcyNDc4ZmQwYzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJhMWNkYWNhNmI0NmU5
YmMxZmNhMDVkOGRlOTAwNDVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJh
bWVJbmZvOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2FkOwogCi1XS19DTEFT
U19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURf
V0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwg
aW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3Qg
PE5TQ29weWluZz4KIAotLSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRX
aXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZv
aWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJl
YjVjMWZmZGVjYzJkYmMuLmQ1ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5MjdmNTBkOGIzMmUwODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW0KQEAgLTI4LDY2ICsyOCw4NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgog
I2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgog
I2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5o
PgogCi1AaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFn
ZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCitzdGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2FkICosIF9XS0Rvd25s
b2FkICo+ICpkb3dubG9hZFdyYXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZXRhaW5QdHI8TlNNYXBUYWJsZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisg
ICAgICAgIHRhYmxlLmdldCgpID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJs
ZV07CisgICAgcmV0dXJuIHRhYmxlLmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBs
ZW1lbnRhdGlvbnMiKQorQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklO
R1NfRU5ECiAKLS0gKHZvaWQpZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxv
YWQyOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFBy
b3h5KCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBu
aWw7CisgICAgX2Rvd25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAg
ICBbc3VwZXIgZGVhbGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9
IFtkb3dubG9hZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICBy
ZXR1cm4gd3JhcHBlcjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2Fk
IGFsbG9jXSBpbml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtk
b3dubG9hZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOwor
ICAgIHJldHVybiB3cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9h
ZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAg
IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25s
b2FkLT5fZG93bmxvYWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxl
Z2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVi
bGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNo
UHJvZ3Jlc3MoVVJMKTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNz
KFVSTCk7CiB9CiAKIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rv
d25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9s
aWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxv
YWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dl
YlZpZXcKIHsKLSAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmln
aW5hdGluZ1BhZ2UoKSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2Vi
UGFnZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJl
dHVybiBuaWw7CiB9CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAg
ICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1
dG8mIHVybCkgLT4gTlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7
CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9P
TCl3YXNVc2VySW5pdGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRp
YXRlZCgpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRl
ZCgpOwogfQogCiAtIChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6
d3JhcHBlcihfZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcihfZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0K
IAogLSAoV0tGcmFtZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktp
dDo6d3JhcHBlcigmX2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6
d3JhcHBlcigmX2Rvd25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVy
biAqX2Rvd25sb2FkLT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IGE4
M2Y5MDI5YjVjNzNlYzVmOWRiNzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFjY2FjYjVmNzBlMTRh
ZTNiOTczODdmNDY4YTgzYTdiYjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMzEsNiArMzEsOCBA
QAogCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQpX2Rvd25sb2FkRGlk
U3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1
cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlc3BvbnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAoQk9PTClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5
cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwg
aW9zKDExLjMpKTsKIAogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICop
ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZSBXS19BUElfREVQ
UkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIDEwLjEz
LjQpLCBpb3MoOC4wLCAxMS4zKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkSW50ZXJuYWwuaAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0
MDEyLi5jYTk0YzIxNzM3NTdhNTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVy
bmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0j
aW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNz
ID0gX1dLRG93bmxvYWQ7Ci19OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0BpbnRlcmZhY2UgX1dL
RG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxXS0Rvd25s
b2FkPiBfZG93bmxvYWQ7CiB9Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0
PgogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFm
YzhjZGFmZTkyMTEzZmUuLmVhZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25s
b2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAog
cHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
IG92ZXJyaWRlCisgICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBA
IC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5h
dGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlk
RmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdl
YkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYg
KHdlYmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRl
eCA3NWQ1MTIyMWQyYzM1MTgyZjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4
NGY5MmY1MTY1ZDBjYmY3NTY1MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBA
QCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVu
dAotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVn
YWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJl
c3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2
NF90LCB1aW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmlu
aXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZh
aWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRh
dGEqKSBmaW5hbDsKICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmlu
YWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkm
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNk
MzFiZGJmNDNhMzZlZWJjZDIzNjk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2MmFlZTg4ZTc2Njlm
OGQ5MTg2ZmRkODI0YjYzNTk1NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAj
aW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJT
eXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldL
TlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAgLTQ3LDYgKzQ4LDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCisKIExlZ2FjeURvd25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9hZENsaWVudChpZCA8
X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRl
KQogewpAQCAtNzYsNyArNzksNyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5
c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUAogfQogI2VuZGlm
CiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydChE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykK
ICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC05
MCw3ICs5Myw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFy
dDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2Fk
RGlkU3RhcnQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERp
ZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRX
aXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNlOnJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6
OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5
dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWlu
dDY0X3QKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3Jp
dGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAg
ICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURh
dGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CisgICAg
ICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsK
IH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb3dubG9hZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1h
a2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihf
ZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigp
OwpAQCAtMTY3LDcgKzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0
ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5kaWYKIAog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQot
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRD
cmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV0gZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQ
cm94eSkKQEAgLTE4Miw3ICsxODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBb
bV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5
KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQog
CiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTIwNCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRl
ID0gTk87CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAg
ICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZp
bGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5n
ICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3Zlcndy
aXRlXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6
IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0
ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3
cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxl
bmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVj
dG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21w
bGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0
YWJsZSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVu
Q2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNo
KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQog
Ci12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0g
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZh
aWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQpAQCAtMjYzLDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVn
YWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAg
IGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAg
ICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0
aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhv
ZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0
cmluZygpXV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93
bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgp
LnN0cmluZygpXV07CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsK
IH0KQEAgLTMwMSw0ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNl
QWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlm
CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
LmgKaW5kZXggMDQyZTc4ODU0MTFkNDE3N2ZjZTljNjc1ZWQ4ZDQ4ZjEyYmIzZDRkNi4uZjExYjcy
MTA1NTc2NWYwNGY3YjA1ZDM0MjM1MmE2ZmVlYzUyZjhhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsOCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29u
c3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVy
cmlkZTsKIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpAQCAtMjM1LDYgKzIzNyw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wg
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgOiAxOwogICAgICAgICBib29sIHdl
YlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhO
YXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBlN2NiMDgzYzRmZjJiMzM5
MDkzZDcxOTQ4M2I1OTRjODA1ZmQ1NGVjLi5kOTZiNTBlZmUxODkxMDBjZmNkOTYwNTkwNzViMjlm
M2ZmZjMxNzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25D
b29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxv
YWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpA
QCAtMTg3LDYgKzE4OCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVs
ZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNz
RGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3Rl
cktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpk
aWRCZWNvbWVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAg
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1
cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndp
dGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlv
blRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0Jh
Y2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC00NzIsMTEgKzQ3NCwxMCBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5z
VVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFj
dGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5I
YW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZv
clNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGlm
IChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0
KCkpOworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpu
c1VSTFJlcXVlc3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxl
ckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAgICAgICAgICAgIHx8
IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9iIl0pIHsKKyAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtNTU1LDkgKzU1
NiwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxv
Y2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAg
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2UgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgp
OwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRyeVNPQXV0aG9y
aXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFtsb2NhbExp
c3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92
ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTY3MSw3ICs2NzUsNyBAQCB2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKFdlYlBhZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAg
ICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwODUsNiArMTA4OSwxOCBAQCBSZWZQ
dHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNv
cmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxs
ZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwg
RG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0g
bV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFu
YXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlv
blJlc3BvbnNlOndyYXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRp
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5
MzEwLi43YTU4M2MyZTFlN2U4ZGIzMGExYjcwNTFhYzlhOWZkYzRhN2I0YTNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUHJveHkuaCIKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBv
cnQgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0
NGE0ZDcyYTYwMWY0Y2QwNzdmMzYuLmRjMTAxYjY2Y2IwY2UzZGFlZDhjYmIzMTFmNzcyMjQzZWEz
ODkxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2Fk
UHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9y
CiB7CiB9CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93
bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJh
Y2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJl
ZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
KQogewpAQCAtMTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYg
KG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSBy
ZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJs
KCkpOwogCi0gICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFy
dENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGll
bnQtPmxlZ2FjeURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNDUsOCAr
MTUxLDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpCiAgICAgbV9jbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKCp0aGlzLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAotdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3Jp
dGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRl
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy8jYXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20g
dGhlIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRo
ZSBzdWdnZXN0ZWQgZmlsZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIGlm
IChyZXNwb25zZS5pc0F0dGFjaG1lbnRXaXRoRmlsZW5hbWUoKSB8fCAoc3VnZ2VzdGVkRmlsZW5h
bWUuaXNFbXB0eSgpICYmIG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAg
c3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIGVs
c2UgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3VnZ2VzdGVk
RmlsZW5hbWUgPSBtX3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
TUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3Rl
ZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKwogICAgIG1fY2xpZW50LT5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNl
UmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1l
KSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChBbGxv
d092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7
CiAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCkBAIC0xNzMsMTEgKzE4NywxNiBA
QCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Is
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNy
ZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJy
b3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVE
YXRhLmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9i
amVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlz
aGVkKCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6
RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGll
bnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJi
M2EzNWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uMzE4OTVmNTY1OTk5NzllZjMyY2RjMTZiYjg5NDM0
NTBkMTVhOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw5IEBAIHB1YmxpYzoKICAgICBBUEk6OkZy
YW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAg
IEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9
Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFw
JiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7
Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3Rh
cnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxs
YmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZv
aWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkg
eyBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7IH0KIAogICAgIC8vIE1l
c3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTExOCw3ICsx
MTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFp
bChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7CisgICAgdm9pZCBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRl
KT4mJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFBy
b3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVBy
b3h5Kik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYnNp
dGVEYXRhU3RvcmU+IG1fZGF0YVN0b3JlOwpAQCAtMTM0LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlh
dGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFj
azsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggN2IyNDVl
M2MwNDg1YzUzY2I3OTNmM2Y0YzJiNzBhYjNkZDAxYjg1MS4uYmEzN2E4YzE3OWEwMDIxZGVlMGIx
ZTUzOTE1NWU5YmUzNGEzZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94
eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZy
YW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VS
KQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTFhOGVjYTlhNGYwYmFhNDQz
N2E1NDA4ZDY1ZmRmOWM4MjVlYmIzZi4uYmIwYjBhN2UyNTRjY2ZhNDQwZGI5NzA5M2E5YTg0MzJk
MDFhNWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01
OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisj
aW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgog
I2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5LmgiCkBAIC0zMTY4LDcgKzMxNjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAg
ICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBv
bGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8
fCAhbmF2aWdhdGlvbikgewotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7Cisg
ICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBX
VEZNb3ZlKHBvbGljaWVzKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzE4NSw3ICszMTg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IEEKICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92
ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5h
dGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAg
ICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQg
dG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgp
Lmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwg
V1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShw
b2xpY2llcyksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMzIyMSwxMSArMzIyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUo
b3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5l
d1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAg
ICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCks
IHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBudWxscHRy
LCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNz
U3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdl
YnNpdGVQb2xpY2llcywgUmVmUHRyPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYmIG5hdmlnYXRp
b25SZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xp
Y3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVs
bG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAg
ICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENy
ZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwg
bV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAg
ICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvblJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uUmVz
cG9uc2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cyB8fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAvLyBGSVhNRTogT25jZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgaXMgbm8g
bG9uZ2VyIHVzZWQsIHdlIHNob3VsZCBhc3NlcnQgbmF2aWdhdGlvblJlc3BvbnNlIGlzIG5ldmVy
IG51bGwgaGVyZS4KKyAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIW5hdmlnYXRpb25SZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5p
c051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRQcm94eS0+c2V0U3VnZ2VzdGVk
RmlsZW5hbWUobmF2aWdhdGlvblJlc3BvbnNlLT5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICAg
ICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKCp0aGlzLCAqbmF2aWdhdGlvblJlc3BvbnNlLCAqZG93bmxvYWRQcm94eSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0pOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAg
ICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53YXNVc2Vy
SW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQuc2V0UmVkaXJlY3RDaGFpbihuYXZp
Z2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTUwOTQsNyArNTEwNSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlm
IChmcmFtZS5kaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkp
IHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3Jp
bmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5k
bGVkIGJ5IGNvbnRlbnQgZmlsdGVyIik7Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZXR1
cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0
aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTMyNSw3ICs1MzM2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNp
c2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vKSk7CiAKICAg
ICBpZiAobV9wb2xpY3lDbGllbnQpCkBAIC01MzYzLDggKzUzNzQsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgp
KTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2
aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOworICAgIGF1
dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJl
cXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKwog
ICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJv
eHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFt
ZUlELCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0
aW9uKSwKLSAgICAgICAgcHJvY2Vzc10gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJv
d3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIHByb2Nlc3MsIG5hdmln
YXRpb25SZXNwb25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNF
X0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJu
aW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01MzczLDE0ICs1Mzg2LDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9s
aWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBu
dWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0
aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVC
cm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykp
OwogICAgIGlmIChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5T
aG93TUlNRVR5cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGF1dG8gbmF2aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0
ZShBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCks
IHJlcXVlc3QsIHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsK
KyAgICBlbHNlCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1v
dmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC02MDE5LDYgKzYwMzAs
MTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCkKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRv
d25sb2FkKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQ
STo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRv
JiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlc3VtZURvd25sb2FkKHdlYnNp
dGVEYXRhU3RvcmUoKSwgdGhpcywgcmVzdW1lRGF0YSwgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3Rh
cnQ6Olllcyk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93
bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3Jl
KCksIHRoaXMsIHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGll
bnQoKS5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggOWZjYmQ1ODkwY2FlYjZhZDEwNTc3Y2MwNWRmODNjY2I4NTZkYTFl
ZS4uNDM1ODg0NzJjN2I4NjliNGVlNzljNjg3OGU1NmFiMTJhNTZlOTFkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTExNjIsNyArMTE2Miw3IEBAIHB1YmxpYzoK
IAogICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVyOwogICAgIGVudW0gY2xhc3MgV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCByZWNl
aXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7
CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwg
QVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB2
b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlv
biwgQVBJOjpOYXZpZ2F0aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJh
bWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC0xMjc3LDYgKzEyNzcsOCBA
QCBwdWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRl
cnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVl
c3QoRG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpE
YXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5
Kik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJl
Zm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJp
bmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmlu
ZGV4IGFhMjc4ZWFjMjI5ZjA4NzEwNDFiYTMzZjc5MDk5Y2VlNjY4NmNlZTYuLjg4NTQxN2QyMTBm
NzZjNjk5ZGM1NmViMGE3NGI4ZTYyNGEyMzUxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNDcsNyArMTE0Nyw3IEBAIERvd25sb2FkUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdl
YlBhZ2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKLURvd25sb2FkUHJveHkm
IFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6
OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5
KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewog
ICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwg
UmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwogCkBAIC0xMTU1LDcgKzEx
NTUsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQogICAgIGlmICghcGF0aC5pc0VtcHR5KCkp
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCi0gICAg
ZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3du
bG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQo
KSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgp
LCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxvYWREaWRTdGFydCksIDAp
OwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA0Nzg1YTU0MjA2YmNmNmMzOGRiMzNhYzY1ZGJhNWE0YTA1
OTY1ODIwLi4zMjdmZWNlNDc5MTZjMzRhNTA0NmQ2NGYyMDI5NGExM2JhZjVjMTZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBp
bnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygp
OwogI2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51
bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIAogY2xhc3MgV2Vi
UHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4s
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMjA0LDcgKzIwNSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotICAgIERv
d25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJv
eHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURh
dGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAK
ICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8
QVBJOjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZTdmMTY5MDhkMjJlY2M1YTkxNmE0
M2Q1Y2JkZWJlYmUxZjk1YTA5Li41Y2M2Zjc3ZDNhZWM0NTgzMjkzMmVlMDZkODMwMGJkMDIyZmNh
NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxOCw3ICsyMTgsNiBAQAogCQkxQTQzRTgyQTE4OEYzQ0RDMDA5RTREMzAgLyogX1dL
UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkxQTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTAxODRE
NUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0
MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRl
eHREb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDgz
MkNDMUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDQTFBOUJDNDY1MDA4QjRE
RkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKIAkJMUE0ODMyQ0UxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0ODMyQ0QxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oICovOyB9OwpAQCAtMzMxLDcgKzMzMCw3IEBACiAJCTFBQjdENENBMTI4OEFB
QTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDODEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eS5oICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2Fn
ZXMuaCAqLzsgfTsKLQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENzhCMTI4
OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWRSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUMxODQwMDgwOTAw
RTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxv
YWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFBQjhBMUVFMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVEMTg0
MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkg
LyogV0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE3
OCw2ICsxMTc3LDcgQEAKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIxIC8qIE5ldHdvcmtTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIw
Q0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLzsgfTsKIAkJNUMyNjk1
ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAwNDJG
MTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyOThEQTAxQzNERjAyMTAw
NDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3du
bG9hZC5oICovOyB9OworCQk1QzJFQkRGQTI1NjQzODBCMDBENTVCMDUgLyogV0tEb3dubG9hZENs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMy
RUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzM1OUMwRDIxNTQ3MzlGMDA5
RTc5NDggLyogV0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM0NjA5
RTcyMjQzMTdCNDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NjA5RTIyMjQzMEU0QzAw
OTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAv
KiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8qIF9X
S0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi87IH07CkBAIC0xODE0LDYgKzE4MTQs
OSBAQAogCQlDRUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAy
RjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyog
V2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJ
CUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUw
MDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4
RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYy
QTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIg
LyogV0tEb3dubG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OworCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBE
RjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggKi87IH07CiAJ
CURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNG
MjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBF
RkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250
ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5
QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gKi87IH07CkBAIC0yNDQzLDcgKzI0NDYs
NiBAQAogCQkxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0NUI5RTE4
NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0
IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0RG93bmxvYWRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCQTQxODRENUZEQTAwNEIz
NDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkxQTQ4MzJDMTFBOTY1QTNDMDA4QjRERkUgLyogV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ4MzJD
OTFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFSZWNvcmQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM5LDggKzI2NDEsOCBAQAogCQkxQUI3RDVFOTEy
ODhCOEMwMDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEb3du
bG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dDIvRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CiAJCTFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRQ
cm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Rvd25sb2FkUHJv
eHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUI3
RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rv
d25sb2FkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93
bmxvYWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFQjE4NDAw
ODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZVBvbGljeUNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFRjE4NDAwQjAwMDBFOUFFNjkgLyog
V0tQYWdlRm9ybUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Bh
Z2VGb3JtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MDkwLDYgKzQw
OTIsNyBAQAogCQk1QzJCMUFGMzIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY0MjIzQUI3MjgwMEI5MUNG
NyAvKiBEb3dubG9hZE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RG93bmxvYWRNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY1
MjIzQzFGRDIwMEI5MUNGNyAvKiBEb3dubG9hZFByb3h5TWFwQ29jb2EubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb3h5TWFwQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBX
S0Rvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93
bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlDMEMyMTU0
NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMz
QUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBf
V0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MzUwLDYgKzUzNTMsMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1l
bnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyog
V0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
RG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI0MjUyRUNC
OEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjUy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVG
IC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3JsZFByaXZh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcxQUM1ODAwRjlB
MzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzQ4OCw2ICs3NDk1LDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0QTAwMzY5NUYwIC8qIFdL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2QjIyOUYyRDRCMDAzNjk1
RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0UwQzM2
QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvUHJpdmF0ZS5oICov
LAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8sCisJCQkJ
REYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8sCisJCQkJREYwQzVG
MjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCURGMEM1
RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywKIAkJCQkxQUY0
NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFBRjQ1OTJDMTk0NjRC
MjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0Njg4RkQwMDQ1MzdC
MCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTk0NTAsNyArOTQ2MSw2IEBACiAJCQkJMUFF
NTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICov
LAogCQkJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmLmggKi8sCiAJCQkJMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5l
Y3Rpb25DbGllbnQuaCAqLywKLQkJCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250
ZXh0RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyog
V0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQx
NCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUExRUEwMjM1MURB
QkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwICovLApAQCAtOTQ2MSw4
ICs5NDcxLDkgQEAKIAkJCQk1MTJGNThGMTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFs
LmNwcCAqLywKIAkJCQk1MTJGNThGMjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmgg
Ki8sCiAJCQkJNTE4QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmgg
Ki8sCi0JCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwICovLAot
CQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8sCisJCQkJNUMy
RUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLywKKwkJCQkxQUI3
RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8sCisJCQkJMUFCN0Q3
OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLywKIAkJCQlCQ0U0Njk1NzEy
MTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCAqLywKIAkJCQlC
Q0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmggKi8s
CiAJCQkJQkNEMDEzOTgxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwICovLApAQCAtMTE3
NzMsNyArMTE3ODQsNiBAQAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRl
eHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAvKiBXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBNTE4NEQ1
RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250
ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCOUYxODRENUZCNTAw
NEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1Qzc5NUQ3MDIyOUYzNzNGMDAzRkYxQzQgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTExODA2LDggKzExODE2LDEyIEBACiAJCQkJQkM1RDI0QzUx
NkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tET01UZXh0SXRlcmF0b3IuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9h
ZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93
bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFE
QiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJCMjUy
RUQ0NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVz
dGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y2NkNFMjFENkI3N0UwMDlF
NUMzRiAvKiBXS0VkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTkyRjE5NDY0
QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjM3NTMwNDQzNjMzNmY4NGE1YzM2
ZDMyMTFkODE5Y2ViYjc0MTgxMS4uOTgwZDI2YWEyMDgwMjBlNGIyMzYxZGQwZDgzNjdmOWUwNzQ3
MjU3NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDY3IEBACisyMDIwLTExLTE2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1bQmVjb21l
RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9Eb3dubG9h
ZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRp
b25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmln
YXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2
aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0U2VydmVy
KToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAoc2lt
cGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToKKyAg
ICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25sb2FkVGVz
dFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZpbGUp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9n
cmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxl
Z2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRl
c1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVzdERv
d25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBk
b3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93
bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtUZXN0RG93
bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9h
ZDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0
ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5j
ZWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRD
cmVhdGVEZXN0aW5hdGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tLgorICAgICAg
ICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKToKKyAg
ICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0
dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAg
KC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOgorICAg
ICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtU
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246
XSk6CisKIDIwMjAtMTEtMTMgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBVcGRhdGUgUnVuQVBJVGVzdHMgc3RlcCBmb3Ig
bmV3IGJ1aWxkYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2Nv
YS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDk3ZjI2
NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2OGFmMjJmZmI5
NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApA
QCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9Q
bGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQog
Y29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29sLm1tCiBj
b2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5Zjk2NTMx
NDgwOTcwYzUzMzRjNzYzMzk3NGJiZTFlMjdkMzAzNTNhLi5lZjRlNTgzYTUzN2ExNzJkZjE5OTAx
YjUxNDlmNmVlZmFiOWViMTI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIwOSw4ICsy
MjA5LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdO
YXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2
YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAwRkRFM0M1
IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7
IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdh
dGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENF
MjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVn
YXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNE
ZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRM
U0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIy
MTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBF
dmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBF
dmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzkzLDYg
KzI3OTMsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29u
dGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZp
ZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2OUFBNjIx
Q0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURp
Y3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxl
Z2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBw
YXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2Ev
VGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREZC
OEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNF
MkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEx
Myw4ICszMTE1LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRlc3RDb2Nv
YS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51
RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0
TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERv
d25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVz
dERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8q
IFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0ND
IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4
MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDNzJFOENFMjQ0
RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQky
RDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAog
CQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1t
ICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2Fk
RGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCmluZGV4IGNhNjk3YWMzNWE5
YWE1MjBhNWIxOWY1YzdiNzQzYzE3Yzg0NGM1MzguLmM0NTc1ODY1MDVkYjNlNGRiYWJkYjA3MTJh
MGU2NjNiZGIyOWM3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcApA
QCAtMjksNDIgKzI5LDQxIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBzdGF0aWMgYm9vbCBkaWREZWNpZGVEZXN0aW5hdGlvbjsKIAotc3RhdGljIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlv
bkFjdGlvblJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYs
IGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0
ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJEb3dubG9hZChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwgY29uc3Qgdm9pZCopCitz
dGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYsIGNv
bnN0IHZvaWQqKQogewogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1ZTsKLSAgICBXS0Rv
d25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElU
ZXN0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3Rh
dGljIHZvaWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQor
c3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVm
IHBhZ2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS0NvbnRl
eHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50
OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KICAgICBjbGllbnQu
YmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLQot
ICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGllbnQuYmFzZSk7Cisg
ICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9h
ZCwgJmNsaWVudC5iYXNlKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChX
S1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlv
bkNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbmF2aWdhdGlvbkNsaWVudDsK
ICAgICBtZW1zZXQoJm5hdmlnYXRpb25DbGllbnQsIDAsIHNpemVvZihuYXZpZ2F0aW9uQ2xpZW50
KSk7CiAKLSAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbmF2aWdh
dGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDM7CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UgPSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U7CisgICAgbmF2aWdhdGlvbkNs
aWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkOwogCiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGll
bnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiB9CkBAIC03Miw3ICs3MSw2IEBAIHN0
YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiBURVNUKFdlYktp
dCwgRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoKQogewogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3Vy
YXRpb24obnVsbHB0cikpOwotICAgIHNldENvbnRleHREb3dubG9hZENsaWVudChjb250ZXh0Lmdl
dCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogICAg
IHNldFBhZ2VQb2xpY3lDbGllbnQod2ViVmlldy5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5t
bQppbmRleCAxNTkzMGU1NDZkYmFhM2RhOWQ1ZWQyMTViNmM4YjljYzYxMDlhZjBmLi5lM2RkNGI2
MjY3YTg2YTM2N2M3MjE2N2E0MzA4MmYzMjVkYjg5NTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5t
bQpAQCAtMjgsMTMgKzI4LDE4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0TWVudUl0
ZW0uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tE
b3dubG9hZENsaWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVudUNs
aWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZC5oPgog
CisvLyBGSVhNRTogRWl0aGVyIHJlbW92ZSBzdXBwb3J0IGZvciBkb3dubG9hZGluZyB0aHJvdWdo
IFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQgaWYgbm9ib2R5IHVzZXMgaXQs
CisvLyBvciBtYWtlIGEgd2F5IHRvIGluZm9ybSB0aGUgYXBwbGljYXRpb24gdGhhdCB0aG9zZSBk
b3dubG9hZHMgc3RhcnRlZC4KKyNpZiAwCisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAog
c3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZDsKQEAgLTYyLDEyICs2NywxMiBAQCBzdGF0aWMgdm9p
ZCBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmIHBhZ2UsIFdLQXJyYXlS
ZWYgcHJvcG9zZWRNZQogICAgIH0KIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lk
KikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1Jl
ZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9m
IHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaW4gdGhlIEhUTUwuCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJkb3dubG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAg
IFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxv
YWQsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24g
PSB0cnVlOwogCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkT3JpZ2luYXRpbmdQYWdlLCBXS0Rvd25s
b2FkR2V0T3JpZ2luYXRpbmdQYWdlKGRvd25sb2FkKSk7CkBAIC03NiwyNSArODEsMjkgQEAgc3Rh
dGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdL
Q29udGV4dFJlZiwgV0tEb3dubG8KICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRB
UElUZXN0L0NvbnRleHRNZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKK3N0YXRpYyB2b2lk
IG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiBwYWdlLCBXS05h
dmlnYXRpb25SZXNwb25zZVJlZiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV0tEb3dubG9hZENsaWVudFYw
IGNsaWVudDsKKyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdL
RG93bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7Cit9CisKIC8vIENoZWNr
cyB0aGF0IHRoZSBIVE1MIGRvd25sb2FkIGF0dHJpYnV0ZSBpcyB1c2VkIGFzIHN1Z2dlc3RlZCBm
aWxlbmFtZSB3aGVuIHNlbGVjdGluZwogLy8gdGhlICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgaXRl
bSBpbiB0aGUgY29udGV4dCBtZW51LgogVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRI
VE1MRG93bmxvYWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkp
OwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7Ci0gICAgbWVtc2V0KCZj
bGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsK
LSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotCiAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVX
aXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAg
V0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50VjMgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CiAgICAgbG9hZGVyQ2xpZW50LmRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRGaW5pc2hOYXZpZ2F0aW9uOworICAgIGxvYWRlckNsaWVu
dC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdl
YlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlQ29udGV4dE1l
bnVDbGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKQEAgLTExNCwzNCArMTIzLDM4IEBAIFRFU1Qo
V2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlKQogICAgIFV0
aWw6OnJ1bigmZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbik7CiB9CiAKLXN0YXRpYyBXS1N0
cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdT
bGFzaGVzKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVz
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1
Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhl
IGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCwgYWZ0ZXIgc2FuaXRpemF0aW9uLgogICAg
IEVYUEVDVF9XS19TVFJFUSgidGVzdDFfdGVzdDJfZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQi
LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsK
KyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICBk
aWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIHJldHVybiBVdGlsOjp0
b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9hZCIpLmxlYWtSZWYoKTsK
IH0KIAotVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1
dGVXaXRoU2xhc2hlcykKK3N0YXRpYyB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tQYWdlUmVmIHBh
Z2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0
cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRo
SW5qZWN0ZWRCdW5kbGUoKSk7Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVu
dDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAw
LCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOworICAgIGNs
aWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7CisgICAgV0tEb3dubG9hZFNldENs
aWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIENvbnRleHRN
ZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJl
Zj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0
aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9u
Q2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2Fk
ZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGll
bnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGll
bnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlv
biA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9hZGVyQ2xpZW50Lm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKICAgICBXS1BhZ2VTZXRQ
YWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVudC5iYXNlKTsK
IAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1lbnVDbGllbnQ7CkBAIC0x
NjIsMyArMTc1LDUgQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxv
YWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKIH0KIAogfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bQppbmRleCA0MzM5MTMxMTAxZjJjZGQ5NTA5ODY3ZWZlOTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJj
OTNjOTJjYWFiZDczMjM5M2IzNGNhZWVlMGFlN2IzMzkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCkBA
IC0xNTEsNyArMTUxLDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJl
ZGlyZWN0KQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRp
b25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKIH0KIAogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246
KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmlu
ZGV4IDNhZWZlYjhlYzMzNWUxMDIzMmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLjEwZjY5MGU0MjNk
ZmI3ZDY4NWRkMDJkMGU5YjYwMTMwM2FkZDJjNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsMTEgKzMzLDE1IEBACiAj
aW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3REb3du
bG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgog
I2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29s
LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJM
UmVzcG9uc2UuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tFcnJvclByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4K
QEAgLTE3NCw3ICsxNzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3QpCiBA
aW1wbGVtZW50YXRpb24gQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0
ZQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9u
c2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkp
ZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5
ODEsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91
bmQpCiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGaW5pc2hOYXZpZ2F0aW9uKTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoX1dLTGVnYWN5RXJyb3JEb21haW4sIGVycm9yLmRvbWFpbik7CiAgICAgX2RpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAh
PSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnRE
b3dubG9hZCkKKyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiB9CiAKQEAgLTk4NSw3ICs5ODksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3du
bG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKTsKICAgICBfZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlF
UzsKLSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQ
b2xpY3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlk
U3RhcnREb3dubG9hZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsx
MDI4LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9y
eUNhY2hlKQogICAgIEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dl
YlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKICAgICBOU1VSTCAqc2Vjb25kVVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vYnVuZGxlLWZpbGUvc2ltcGxlMi5odG1sIl07Ci0g
ICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0Rv
bmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0x
MDUxLDcgKzEwNTUsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VG
cm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmln
YXRpb25dKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3
ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCi0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNl
UG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBb
ZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMTg5LDI0ICsxMTkzLDMwIEBAIFN0cmlu
ZyBsb25nU3RyaW5nKExDaGFyIGMpCiAgICAgcmV0dXJuIFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBs
ZW5ndGgpOwogfQogCi1URVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1
ZGVFVGFnIDogYm9vbCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJz
dFJlcGx5IDogYm9vbCB7IE5vLCBZZXMgfTsKKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBT
ZXJ2ZXIgZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnIGluY2x1ZGVFVGFnID0gSW5jbHVk
ZUVUYWc6OlllcywgRnVuY3Rpb248dm9pZChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0
ZXJtaW5hdG9yID0gbnVsbHB0cikKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
STsKLSAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlv
biBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICByZXR1cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1p
bmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpLCBjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2gg
KCsrY29ubmVjdGlvbkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewot
ICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAg
ICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6
IHRlc3RcclxuIgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2lu
Y2x1ZGVFVGFnLCBjb25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0g
KFZlY3RvcjxjaGFyPiYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNl
ID0gbWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4i
LAorICAgICAgICAgICAgICAgICAgICBpbmNsdWRlRVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8g
IkVUYWc6IHRlc3RcclxuIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5n
dGg6IDEwMDAwXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246
IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCiAgICAgICAgICAgICAg
ICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICAgICAgKSk7
CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RG
TW92ZShyZXNwb25zZSksIFtjb25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5h
dG9yKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yKQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRvcihjb25uZWN0aW9uKTsKKyAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgMjoKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25u
ZWN0aW9uXShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICBjb25uZWN0aW9u
LnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0
ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnNlbmQobWFrZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQ
YXJ0aWFsIENvbnRlbnRcclxuIgpAQCAtMTIyMCwxNiArMTIzMCw2NCBAQCBURVNUKF9XS0Rvd25s
b2FkLCBSZXN1bWUpCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgfQotICAgIH0pOworICAgIH19OworfQorCitzdGF0aWMgdm9pZCBj
aGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKE5TVVJMICpmaWxlKQoreworICAgIE5TRGF0YSAq
ZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAg
RVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7CisgICAgRVhQRUNUX1RSVUUo
ZmlsZUNvbnRlbnRzLmJ5dGVzKTsKKyAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVD
b250ZW50cy5sZW5ndGggPT0gMTAwMDB1KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgNTAwMDsgaSsrKQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScpOworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7CisgICAgfQorfQor
CitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2
ZXIoKQoreworICAgIHJldHVybiB7IFtdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlv
bl0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3Ry
aW5nKAorICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUw
MDBcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50
OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICJcclxuIiwg
bG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAgICApKTsKKyAgICAgICAgfSk7CisgICAg
fX07Cit9CiAKLSAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05T
VGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93
bmxvYWRSZXN1bWVUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrRmls
ZUNvbnRlbnRzKE5TVVJMICpmaWxlLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCit7
CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVS
TDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250
ZW50cy5sZW5ndGgoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMu
bGVuZ3RoOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
ZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgZXhwZWN0ZWRDb250ZW50c1tpXSk7Cit9CisKK3N0YXRp
YyBOU1VSTCAqdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCkKK3sKKyAgICBOU1VSTCAqdGVtcERp
ciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVT
XTsKICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0
VVJMOnRlbXBEaXIgd2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5p
bCBlcnJvcjpuaWxdOwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGly
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07Ci0gICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9h
ZEZpbGUgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZmlsZSBlcnJvcjpuaWxdOworICAgIHJldHVy
biBmaWxlOworfQorCitURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCit7CisgICAgdXNpbmcgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEk7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3Bv
bnNlICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgfTsKIAogICAgIGVudW0gY2xh
c3MgQ2FsbGJhY2sgOiB1aW50OF90IHsgU3RhcnQsIFdyaXRlRGF0YSwgRGVjaWRlRGVzdGluYXRp
b24sIENyZWF0ZURlc3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5
OCwxMSBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8
X1dLRG93bmxvYWQ+IGRvd25sb2FkOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmVz
dW1lRGF0YTsKIAotICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIG5ld10pOwogICAgIGRvd25sb2FkRGVsZWdhdGUu
Z2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25s
b2FkICosIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShCT09MLCBOU1N0cmluZyAqKSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywg
W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5w
YXRoKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJleGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBleHBlY3RlZERvd25sb2Fk
RmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVE
YXRhID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWlu
dDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKQEAg
LTEyNTgsNyArMTMxNyw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICB9OwogICAg
IGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBeKF9XS0Rvd25s
b2FkICosIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5k
KENhbGxiYWNrOjpDcmVhdGVEZXN0aW5hdGlvbik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShk
ZXN0aW5hdGlvbiwgW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBs
ZS50eHQiXS5wYXRoKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBleHBl
Y3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0
KCkuZG93bmxvYWREaWRDYW5jZWwgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAg
ICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDYW5jZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3
IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7
CiAgICAgdXNsZWVwKDEwMDAwKTsKIAotICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGVdOwotICAgIEVYUEVD
VF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVD
b250ZW50cy5ieXRlcyk7Ci0gICAgaWYgKGZpbGVDb250ZW50cy5ieXRlcykgewotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQotICAgICAgICAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ld
LCAnYicpOwotICAgIH0KKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKIH0KIAogQGludGVyZmFjZSBEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBA
IFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJl
c3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChbbmF2
aWdhdGlvblJlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIv
ZG93bmxvYWQiXSkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVj
aXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpAQCAtMTM3
Myw0ICsxNDI0LDExMzMgQEAgVEVTVChfV0tEb3dubG9hZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdp
bikKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIjxib2R5PjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1l
PjwvYm9keT4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOm5pbF07CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K3N0YXRpYyB2b2lkIGNoZWNrQ2FsbGJhY2tSZWNvcmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRl
bGVnYXRlLCBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7Cisg
ICAgYXV0byBhY3R1YWxDYWxsYmFja3MgPSBkZWxlZ2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7Cisg
ICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFj
a3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOyBpKyspCisgICAgICAgIEVYUEVD
VF9FUShhY3R1YWxDYWxsYmFja3NbaV0sIGV4cGVjdGVkQ2FsbGJhY2tzW2ldKTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBGaW5pc2hTdWNjZXNzZnVsbHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBz
aW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxv
YWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZp
bGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRG
aW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQo
TlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCit7CisgICAgY2hlY2tGaWxl
Q29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBhdXRv
ICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9f
YmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisKKyAgICBbd2Vi
VmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsK
KyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29w
KCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNlOwor
ICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOworICAgIHJl
dGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kaWRX
cml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwg
aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQo
KSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3Jp
dHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAw
MCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25s
b2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNo
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBk
b3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBudWxscHRyOworICAgICAgICBF
WFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICBjaGVja1Jlc3Vt
ZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2
b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAg
ICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsgPSBmYWxzZTsKKyAgICBBU1NFUlQoIWRl
bGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rv
d25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQRUNUX0VR
KGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBFQ1RfRVEodG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVu
ID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVkRmlyc3Q1ayA9IHRydWU7CisgICAgfTsK
KyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVrKTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JG
aXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWlu
ZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVz
dW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAg
IH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNw
aW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVE
YXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAg
ICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2Fk
PiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWlu
ZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
ZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rp
b25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7Cisg
ICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1
bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5j
ZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
SW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1w
RmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWRE
b3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZl
ciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQ
STo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVn
YXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3du
bG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21h
aW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3Jr
Q29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7Cisg
ICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAw
MD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0p
OworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUo
Q0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKFdLRG93bmxv
YWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQpCit7CisgICAgT3B0aW9uYWw8VGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbjsKKyAgICBIVFRQU2VydmVyIHNl
cnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNlcnZlckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRB
UEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytj
b25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2VydmVyQ29u
bmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9u
LnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxu
IgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIKKyAgICAgICAgICAgICAgICApOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAg
ICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVl
c3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgp
LCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDEwMD4oJ3gnKQorICAgICAgICAgICAgICAg
ICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRp
ZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAq
cmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JO
ZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1
bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxz
ZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7Cisg
ICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOworICAgIH07CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1l
RGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBFWFBFQ1RfRkFM
U0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVj
dGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hl
ZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURh
dGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1
bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAor
ICAgIH0pOworfQorCisjZW5kaWYKKwordm9pZCB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2so
TlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUs
IHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRh
aW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07
CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0
YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVE
YXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisg
ICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29w
KCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0
cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9v
bCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRh
OnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAg
ICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0p
OworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykK
K3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktp
dEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgr
K2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1c
ImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAg
ICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYm
IHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAg
ICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgc2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4g
cmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciByZW1vdmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0
YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwg
IlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisg
ICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0
ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rp
c2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5T
RXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOwor
ICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250
ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7Cisg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6
OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25u
ZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEu
MSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFt
cGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAg
ICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAg
ICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1
ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEo
KSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAi
SFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJF
VGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVz
IDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAg
ICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2QnKQorICAgICAgICAgICAgICAgICkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVj
dGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0
ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBFWFBFQ1RfVFJVRShbWyhOU1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmlu
ZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21p
Y2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERv
d25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8
MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAwPignZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVF
KFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNd
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2Vi
VmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAg
ICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0
RXhjZXB0aW9uKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQor
eworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25S
ZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25s
b2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisg
ICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAw
MD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1l
RGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEp
IHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAg
ICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3Ao
KTsKKworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0g
bmlsOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVE
YXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAg
ICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChk
b3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2Fk
KQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgcmV0YWluZWREb3dubG9hZC5n
ZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
cnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3Iu
Y29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9U
X05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRp
bDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisg
ICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7Cisg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAg
ICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5c
clxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdy
aXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0
b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7Cisg
ICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUwMDApCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAg
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAg
Y2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgSW52YWxpZEFyZ3VtZW50cykKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBf
X2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYXV0byBzZXJ2ZXIgPSBk
b3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0pOworICAgICAg
ICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOworICAgICAgICAg
ICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH07
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRpb24pOworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRpYyBIVFRQU2VydmVyIHJlZGlyZWN0U2Vy
dmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRp
b24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFtZSIsICJDdXN0b20tVmFsdWUi
IH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9
fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQoreworICAgIGF1dG8gc2Vy
dmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVz
dCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIHNl
cnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9jayBib29sIGZpbmlzaGVkRG93bmxvYWQg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRU
UEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwu
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5n
LCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVl
Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRp
cmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAgICAgICAgfTsKKyAgICAgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRv
d25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVu
YW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVj
dFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFs
UmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3du
bG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVS
TC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQg
PSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3du
bG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhp
Iik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKwor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVy
KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9j
ayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJM
UmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1
c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVh
ZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVz
dC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNv
bHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVk
aXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAg
ICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6
OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIu
dG90YWxSZXF1ZXN0cygpLCAxdSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1
ZXN0RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVx
dWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNl
bCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBf
X2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0
OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0
ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICAgICAgZmFp
bGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7
CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgRG93bmxvYWRSZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgNDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJM
ICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJv
b2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQoreworICAgIGF1dG8gc2VydmVyID0gZG93
bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAg
CisgICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVj
dGlvbkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJW
aWV3LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nl
c3NdOworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFN1Z2dlc3Rl
ZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3Ry
aW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3
LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dl
c3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRG
b3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERv
d25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZl
ci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXF1ZXN0LkhUVFBC
b2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwor
ICAgIFt3ZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQub3Jp
Z2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFr
ZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGls
OjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhpc3QpCit7Cisg
ICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURp
cmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJd
IGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBy
ZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpuaWxdOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1w
bGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJv
b2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdp
dGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVh
dGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpy
dW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZh
aWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4
aXN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNV
UkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Cisg
ICAgX19ibG9jayBhdXRvIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdh
dGUuZ2V0KCk7CisKKyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVk
RG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVk
ID0gZmFsc2U7CisgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0
YWluZWREZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworCisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSk7CisgICAgICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFp
bmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCku
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICopIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7
CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rv
d25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3du
bG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikg
eworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNl
bGxlZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVu
KCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBj
YWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorI2lm
ICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCitURVNUKFdLRG93bmxvYWQsIENoYWxs
ZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9h
ZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
X19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRG
aW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1
ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgICAg
IHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBb
d2ViVmlldyBkb3dubG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7CisgICAgRVhQRUNU
X1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorI2VuZGlmCisKK1RFU1QoV0tEb3dubG9h
ZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBT
ZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworI2lmIFVTRShMRUdBQ1lf
Q0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRv
bid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24u
CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yU2VjdXJlQ29ubmVjdGlv
bkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9OworICAg
IF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVz
dCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKyAgICAgICAgcmVjZWl2ZWRDaGFs
bGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6
OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAg
IEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURT
KQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZl
Q2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisg
ICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10p
OyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAg
YS5kb3dubG9hZCA9ICdkb3dubG9hZEZpbGVuYW1lJzsiCisgICAgIiAgICBhLmNsaWNrKCk7Igor
ICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2Jv
ZHk+IjsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJs
b2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5V
Ukwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0
ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiZG93bmxvYWRGaWxlbmFtZSIpOwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsK
KyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2VOb0ZpbGVuYW1lKQorewor
ICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxvYWRC
bG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyIK
KyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVmID0g
VVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9Igor
ICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2Us
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25z
ZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICJ3ZWJraXQub3JnIik7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAq
c3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24iKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGdyYW5k
Y2hpbGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigp
IHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAg
IiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5j
cmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAi
PC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgSFRU
UFNlcnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBncmFuZGNo
aWxkRnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhUVFBTZXJ2ZXIgY2hpbGRGcmFtZVNlcnZl
cih7CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFt
ZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBncmFuZGNoaWxkRnJhbWVT
ZXJ2ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKmdyYW5kY2hpbGRG
cmFtZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAg
IE5TVVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBjaGlsZEZyYW1lU2VydmVy
LnJlcXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0ID0gZ3Jh
bmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAgIE5TU3RyaW5nICptYWluSFRNTCA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6
JWQvJz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CisKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2Fk
SFRNTFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgaWYgKFtyZXNw
b25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDov
L3dlYmtpdC5vcmcvIl0KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJz
b2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZ10KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJz
b2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3Qu
VVJMLmFic29sdXRlU3RyaW5nXSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVz
cG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3Bv
bnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4xIik7CisgICAgICAgIEVY
UEVDVF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZy
YW1lU2VydmVyUG9ydCk7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVS
TC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxl
bmFtZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQorCit9CisK
ICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5t
bQppbmRleCBmMDAzYWMyOGNlMWU4OTY3ZjVkYWIwZDg4OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRm
ZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBlMjZjOTk0NjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCkBA
IC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9
ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25S
ZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBpZiAobV9z
dGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmln
YXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0NWQxZTkwNDBjM2VhNTZlM2EwODIyM2ZjZC4u
NGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODllOWY5NmNkNmFiNSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NT
d2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIFJldGFpblB0cjxO
U1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTDsKIAogLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0g
ICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rvd25sb2FkID8gX1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5kZXggYWUyYmM3ZmU2NjUzNGQ2NzlhNDhmYjQx
ZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0OGZmY2M4ODVmODMxZmMzMDJmYjk0OTdiNTM3
MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlj
a0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9u
c2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25z
ZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
UXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9j
dW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3Bv
bnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKICAg
ICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktp
dEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmln
YXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hO
YXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcgQEAgVEVTVChRdWlja0xvb2ssIERvd25sb2Fk
UmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgRG93
bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVV
Ukw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdN
SU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmll
d01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOwogICAgIHJ1blRlc3REZWNp
ZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9h
ZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNv
ZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0
ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmlu
ZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBjMGEwZWE2MGI4YzQ4NWIuLjJhYzhmMjIzYzYx
MTc4MjcxMTEwN2UzMmEzYmZmMjcwZGQ4OGMyNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKQEAgLTI0LDE3ICsyNCwzMSBAQAogICov
CiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9h
ZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVj
dDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2Fk
ICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNl
aXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9h
ZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAq
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvciko
X1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9X
S0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShf
V0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2VudW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6
IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0ZURhdGEsCisgICAgRGlkRmlu
aXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2aWdhdGlvbkJlY2FtZURvd25sb2Fk
LAorICAgIE5hdmlnYXRpb25SZXNwb25zZQorfTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxvYWREZWxlZ2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdh
dGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1
ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdy
aXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxv
YWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJy
b3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQp
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICopOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF4pKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoOworLSAo
VmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZDsKKwogQGVuZApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KaW5k
ZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJhODAxZmRkMy4uMzAyN2FkOTQyZmNj
YTA2ZGI4OGI4MjIxYTdhYzU0YWM2OWM0MzYzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2OCArMjYsOTUgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKIAotQGlt
cGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRlCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCi0gICAg
ICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93
bmxvYWREZWxlZ2F0ZSB7CisgICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1Jl
Y29yZDsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCistICh2b2lkKWRvd25sb2Fk
OihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRU
UFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpZGVj
aXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkK
LSAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOwor
ICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0
KTsKKworICAgIEFTU0VSVChfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOworICAgIF93aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkb3dubG9hZCwgcmVzcG9uc2UsIHJlcXVlc3QsIGRlY2lz
aW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCistICh2b2lk
KWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJp
bmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwg
KmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVJl
c3BvbnNlKQotICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7
CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbik7CisKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsK
KyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVz
V3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZQorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToo
aW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRl
c1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlCiB7CisgICAgLy8gZGlkV3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVy
bWluaXN0aWMgbnVtYmVyIG9mIHRpbWVzLCBzbyBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVz
LgorICAgIGlmIChfY2FsbGJhY2tSZWNvcmQuaXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5s
YXN0KCkgIT0gRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJh
Y2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBp
ZiAoX2RpZFdyaXRlRGF0YSkKICAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNX
cml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGlu
YXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNv
bXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk7Ci0gICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKGRvd25sb2FkLCBmaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFj
a1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
OworCisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAg
IF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwg
Y29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCist
ICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBf
Y2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAg
ICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQogICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93
bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1l
RGF0YTooTlNEYXRhICopcmVzdW1lRGF0YQogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQo
RG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxX
aXRoRXJyb3IpCi0gICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7Cisg
ICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihX
S05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkK
LSAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBfY2FsbGJhY2tSZWNv
cmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25CZWNhbWVEb3dubG9hZCk7CisK
KyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBf
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJl
c3BvbnNlLCBkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAq
KWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSlj
b21wbGV0aW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKilu
YXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9j
YWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNl
KTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAg
ICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwg
ZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAg
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3du
bG9hZCk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5p
c2gpOworICAgIF9kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAg
IGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgorLSAoVmVjdG9y
PERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZAogewotICAgIGlmIChfZGlkQ3Jl
YXRlRGVzdGluYXRpb24pCi0gICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwg
ZGVzdGluYXRpb24pOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwg
eyB9KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEyYzljYWRh
NjE1ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSw0MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktp
dC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CisKK0BpbnRlcmZhY2UgVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSko
X1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmlu
ZyAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmlu
aXNoKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICop
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENy
ZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVn
YXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRiZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVkYmYxY2Ew
ODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlLm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCisK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZQorCistICh2b2lkKV9k
b3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3du
bG9hZERpZFN0YXJ0KQorICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7Cit9CisK
Ky0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChk
b3dubG9hZCwgdXJsKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAg
ICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShk
b3dubG9hZCwgcmVzcG9uc2UpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVz
V3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAgIGlmIChfZGlk
V3JpdGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAo
dm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZv
aWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYg
KF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2Fk
KTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFp
bFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9y
KQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworfQorCistICh2
b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlm
IChfZG93bmxvYWREaWRDYW5jZWwpCisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9h
ZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAg
ICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2Us
IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwor
fQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVE
ZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3JlYXRl
RGVzdGluYXRpb24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVz
dGluYXRpb24pOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCmluZGV4IDE2YWQxN2UyNGJhM2ViMWRlNzczNzllZmI4NTI0Yjg2NmUzYzdiNjcuLjE0
MzAxNWI0NmIxMjUzMzRlYWNhMzg2YjRiY2ZlMGM0ZGEzMjRmN2QgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSA8
V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tD
b250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRpYWwuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25s
b2FkUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tIVFRQQ29va2ll
U3RvcmVSZWYuaD4KQEAgLTc5LDYgKzgxLDcgQEAKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQ
b29sLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0
ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNz
UHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMSw2ICsxMzQs
MjMgQEAgc3RhdGljIFdLU3RyaW5nUmVmIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoV0tQYWdlUmVmLCBjb25zdCB2b2lkKikKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIk1JSEZNSEV3WERBTkJna3Foa2lHOXcwQkFRRUZBQU5MQURCSUFrRUFu
WDBUSUxKck9NVXVlJTJCUHR3QlJFNlhmViUwQVd0S1Fic3NoeGs1WmhjVXdjd3l2Y25JcTliODJR
aEpkb0FDZEQzNHJxZkNBSU5ENDZmWEtRVW5iMG12S3pRSUQlMEFBUUFCRmhGTmIzcHBiR3hoU1hO
TmVVWnlhV1Z1WkRBTkJna3Foa2lHOXcwQkFRUUZBQU5CQUFLdjJFZXgybiUyRlMlMEFyJTJGN2lK
TnJvV2xTelNNdFRpUVRFQiUyQkFEV0hHajl1MXhyVXJPaWxxJTJGbzJjdVF4SWZaY05aa1lBa1dQ
NER1YnFXJTBBaTAlMkYlMkZyZ0J2bWNvJTNEIik7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2VSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworCisgICAgV0tE
b3dubG9hZENsaWVudFYwIGNsaWVudCB7CisgICAgICAgIHsgMCwgY2xpZW50SW5mbyB9LAorICAg
ICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkV3JpdGVEYXRhCisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCwKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkRmFpbAorICAgIH07CisKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2Fk
LCAmY2xpZW50LmJhc2UpOworfQorCiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJyZW50VGFz
azsKIAogYm9vbCBBc3luY1Rhc2s6OnJ1bigpCkBAIC00MTQsNyArNDM0LDggQEAgV0tQYWdlUmVm
IFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRW
aWV3LCBXS1BhZ2VDb24KICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hv
dCwKICAgICAgICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQogICAgICAgICAwLCAvLyBj
b250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZworICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwKICAg
ICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KG5ld1BhZ2UsICZwYWdlTmF2
aWdhdGlvbkNsaWVudC5iYXNlKTsKIApAQCAtNzUzLDI2ICs3NzQsMTAgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zKQogICAgICAgICBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90LAogICAgICAg
ICAwLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRlCiAgICAgICAgIDAsIC8vIGNvbnRlbnRSdWxl
TGlzdE5vdGlmaWNhdGlvbgotICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcsCisg
ICAgICAgIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkCiAgICAgfTsKICAgICBX
S1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdl
TmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKLQotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEg
ZG93bmxvYWRDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICBkb3dubG9h
ZERpZFN0YXJ0LAotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgICAgIDAsIC8vIGRpZFJl
Y2VpdmVEYXRhCi0gICAgICAgIDAsIC8vIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBl
Ci0gICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lLAotICAgICAg
ICAwLCAvLyBkaWRDcmVhdGVEZXN0aW5hdGlvbgotICAgICAgICBkb3dubG9hZERpZEZpbmlzaCwK
LSAgICAgICAgZG93bmxvYWREaWRGYWlsLAotICAgICAgICBkb3dubG9hZERpZENhbmNlbCwKLSAg
ICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoOwotICAgICAgICBkb3dubG9hZERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdFRvVVJMCi0gICAgfTsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAvLyB0aGlzIHNo
b3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVD
bGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKQEAgLTIwNjAsNDUgKzIwNjUsMzUgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdL
UGFnZVJlZiBwYWdlLCBXS0F1dGhlbnQKIH0KIAogCi0vLyBXS0NvbnRleHREb3dubG9hZENsaWVu
dAotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQot
ewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRleHQsIGRvd25sb2FkKTsKLX0KKy8vIFdL
RG93bmxvYWRDbGllbnQKICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3Zl
cndyaXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4dCwgZG93bmxvYWQsIGZpbGVu
YW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci19Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkRmluaXNoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChj
b250ZXh0LCBkb3dubG9hZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0
PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9h
ZERpZEZhaWwoY29udGV4dCwgZG93bmxvYWQsIGVycm9yKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRG
aW5pc2goZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENh
bmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQs
IGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGRvd25sb2FkLCBlcnJvcik7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJM
UmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCBuZXdSZXF1ZXN0KTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25s
b2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICBpZiAobV9zaG91bGRM
b2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0
VGV4dCgiRG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJv
bGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3Zlcndy
aXRlKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVu
YW1lKQogewogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVu
YW1lKTsKIApAQCAtMjExNCwyOCArMjEwOSwzMyBAQCBXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLAog
ICAgIGlmICghZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgICphbGxvd092ZXJ3cml0ZSA9IHRydWU7CiAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9
IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKICAgICBpZiAoc3VnZ2VzdGVk
RmlsZW5hbWUuaXNFbXB0eSgpKQogICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9ICJVbmtub3du
IjsKKyAgICAKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0ZW1wb3JhcnlGb2xkZXIgKyAiLyIg
KyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkZXN0
aW5hdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb24pOwog
Ci0gICAgcmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2VzdGVkRmlsZW5h
bWUpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9XSyhkZXN0aW5hdGlvbikubGVha1JlZigpOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYs
IFdLRG93bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChX
S0Rvd25sb2FkUmVmKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQog
ICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBjb21wbGV0
ZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkKK2Jvb2wg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tE
b3dubG9hZFJlZiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7CisgICAgYXV0byB1cmwgPSBh
ZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCkpOwogICAgIGlmIChtX3Nob3VsZExv
Z0Rvd25sb2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRU
ZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVkIHRvIFwiIiwgdG9XVEZTdHJp
bmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkpLCAiXCIuXG4iKSk7CisgICAgICAgIG1f
Y3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJl
ZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwu
Z2V0KCkpKSksICJcIi5cbiIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tF
cnJvclJlZiBlcnJvcikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Rv
d25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25s
b2FkQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQo
IkRvd25sb2FkIGZhaWxlZC5cbiJfcyk7CkBAIC0yMTQ5LDEzICsyMTQ5LDYgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
V0tFcnJvclJlZiBlcnIKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERv
bmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tDb250
ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQotewotICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2Fs
bGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9h
ZCBjYW5jZWxsZWQuXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9h
ZERvbmUoKTsKLX0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENyYXNoKCkKIHsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBj
cmFzaCBsb2dzIGFyZSBiZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBzbwpAQCAtMjQ4NSw4ICsyNDc4
LDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWcKICAgICBhdXRvIGRlY2lzaW9uRnVuY3Rpb24g
PSBbc2hvdWxkSWdub3JlLCByZXRhaW5lZExpc3RlbmVyLCByZXRhaW5lZE5hdmlnYXRpb25BY3Rp
b24sIHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91
bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiwgc2hvdWxkU3dhcFRvRGVm
YXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lv
bk9uTmV4dE5hdmlnYXRpb25dKCkgewogICAgICAgICBpZiAoc2hvdWxkSWdub3JlKQogICAgICAg
ICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkp
OwotICAgICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxv
YWQocmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKLSAgICAgICAgICAgIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lckRvd25sb2FkKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIGlmIChzaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0
TmF2aWdhdGlvbiB8fCBzaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24p
IHsKICAgICAgICAgICAgICAgICBBU1NFUlQoc2hvdWxkU3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9u
TmV4dE5hdmlnYXRpb24gIT0gc2hvdWxkU3dhcFRvRGVmYXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0
aW9uKTsKQEAgLTI1MjMsNiArMjUxNCwxMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbgogICAg
IGF1dG8gZGVjaXNpb25GdW5jdGlvbiA9IFtzaG91bGREb3dubG9hZFVuZGlzcGxheWFibGVNSU1F
VHlwZXMsIHJldGFpbmVkTmF2aWdhdGlvblJlc3BvbnNlLCByZXRhaW5lZExpc3RlbmVyXSgpIHsK
ICAgICAgICAgLy8gRXZlbiB0aG91Z2ggUmVzcG9uc2Ugd2FzIGFscmVhZHkgY2hlY2tlZCBieSBX
S0J1bmRsZVBhZ2VQb2xpY3lDbGllbnQsIHRoZSBjaGVjayBkaWQgbm90IGluY2x1ZGUgcGx1Z2lu
cwogICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIHJlLWNoZWNrIGFnYWluLgorICAgICAgICBpZiAo
V0tOYXZpZ2F0aW9uUmVzcG9uc2VHZXREb3dubG9hZEF0dHJpYnV0ZShyZXRhaW5lZE5hdmlnYXRp
b25SZXNwb25zZS5nZXQoKSkpIHsKKyAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRv
d25sb2FkKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CiAgICAgICAgIGlmIChXS05hdmlnYXRpb25SZXNwb25zZUNhblNob3dNSU1FVHlwZShy
ZXRhaW5lZE5hdmlnYXRpb25SZXNwb25zZS5nZXQoKSkpIHsKICAgICAgICAgICAgIFdLRnJhbWVQ
b2xpY3lMaXN0ZW5lclVzZShyZXRhaW5lZExpc3RlbmVyLmdldCgpKTsKICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCAwOTE1ZWQ4
Y2ZiNWVjNGM1NzhlMjg4YTk5ODk1YTQ4YjA5ZWM0M2RhLi44NWYzZDM1YmIxYTRkYTk3Mzc1ZDFi
ODRhZDNmODI0YjA2MTgwOWJkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5oCkBAIC00MzksMTkgKzQzOSwxNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEZp
bmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VS
ZWYsIFdLTmF2aWdhdGlvblJlZik7CiAKLSAgICAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudAot
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tT
dHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1l
LCBib29sKiYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmlu
aXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQg
ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0
aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9h
ZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAg
ICB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0g
ICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9p
ZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiwgV0tVUkxSZWYpOworICAgIC8vIFdLRG93bmxvYWRDbGllbnQKKyAgICBzdGF0
aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdL
TmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAg
dm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyBXS1N0cmlu
Z1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVm
LCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisgICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpOwor
ICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpOworICAgIHN0
YXRpYyB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBXS0Rh
dGFSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2Fk
UmVmLCBXS0Vycm9yUmVmKTsKKyAgICBzdGF0aWMgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVx
dWVzdFJlZiwgY29uc3Qgdm9pZCopOworICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYpOwogICAgIAogICAg
IHN0YXRpYyB2b2lkIHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTUzODE0ODUzMmU0
MWIzZTkyYzM5NWU1MTE0YzVkNjg0OGIyYmU4Zi4uYmVlMTdjZjNlNDkwNDhiMDZiODhhYTFiYjEw
MDEzYTk5OGY1MDE2NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTExLTE3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZl
cnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3du
bG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgTm93IHRoYXQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUgZG9lc24ndCBzdWdnZXN0ICJ1bmtu
b3duIgorICAgICAgICB0aGUgY2FwaXRhbGl6YXRpb24gaGFzIGNoYW5nZWQgdG8gIlVua25vd24i
IGZyb20gTlNVUkxSZXNwb25zZSdzIHN1Z2dlc3RlZEZpbGVuYW1lLgorICAgICAgICAqIGh0dHAv
dGVzdHMvZG93bmxvYWQvYW5jaG9yLWRvd25sb2FkLXJlZGlyZWN0LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2Rvd25sb2FkL2FuY2hvci1kb3dubG9hZC1yZWRpcmVjdC5odG1s
OgorICAgICAgICBOb3cgdGhhdCBXZWJLaXRUZXN0UnVubmVyIHVzZXMgYSBDIEFQSSB0aGF0IGlz
IHNoYXBlZCBsaWtlIFdLRG93bmxvYWQsCisgICAgICAgIHRoZSByZWRpcmVjdCBoYXBwZW5zIGJl
Zm9yZSBXZWJLaXQgaXMgdG9sZCB0byBtYWtlIHRoZSBuYXZpZ2F0aW9uIHJlc3BvbnNlIGJlY29t
ZSBhIGRvd25sb2FkLgorICAgICAgICBCZWZvcmUgdGhlIGNoYW5nZSwgdGhpcyB0ZXN0IHdvdWxk
IG1ha2UgdGhlIG5hdmlnYXRpb24gYWN0aW9uIGJlY29tZSBhIGRvd25sb2FkLCBzbyB0aGUgcmVk
aXJlY3QKKyAgICAgICAgd291bGQgaGFwcGVuIGFzIGEgZG93bmxvYWQgYW5kIG5vdCBhcyBhIG5h
dmlnYXRpb24uICBUbyBjb250aW51ZSB0byBzZWUgd2hhdCBpcyBnb2luZyBvbiwKKyAgICAgICAg
SSBwcmludCBvdXQgdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGVzIHNvIHRoZSB0ZXN0IHJlc3VsdHMg
Y29udGludWUgdG8gc2hvdyB0aGF0IGEgcmVkaXJlY3QgaXMgaGFwcGVuZGluZy4KKwogMjAyMC0x
MS0xMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBhZHZhbmNlZCBwbHVnLWluIGZlYXR1cmVzOiBzbmFwc2hvdHRpbmcgYW5kIHBsdWctaW4g
bG9hZCBwb2xpY3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDAy
YWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2
ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBV
Ukwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxl
dGVkLgogQmxvYiBVUkwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2st
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQK
aW5kZXggYmVkYzhkZGEwMWM4YzEyMzdlMTA2YzY4NTMzNDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVh
NThjMDhmYmVlMDZjYjM5NDMxY2RjMzFkMGRiNTlhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVk
LXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRp
Yy1jbGljay1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgot
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitE
b3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERv
d25sb2FkIGNvbXBsZXRlZC4KIFRlc3QgdGhhdCB1c2VyIHRyaWdnZXJlZCBzeW50aGV0aWMgY2xp
Y2tzIG9uIGFuIGFuY2hvciB3aXRoIGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBub3QgaWdub3Jl
ZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1m
aWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQK
aW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2Ux
MGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRv
d25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxv
YWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQg
c3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93
biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERv
d25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUt
YmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9h
ZC1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3
YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxv
Yi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxv
YWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25s
b2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5n
IFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRl
ZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1u
b2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKaW5kZXggMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRh
NTZmYmI0YmU2YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3Vn
Z2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9i
IFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3dubG9hZC9hbmNob3It
ZG93bmxvYWQtcmVkaXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9k
b3dubG9hZC9hbmNob3ItZG93bmxvYWQtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CmluZGV4IDczNWIw
MjlmNGRlOTBjMzkzYTVhOGFlZjU0MzFmNjVkMmMzMWE1ODkuLmUyYTUzNmEwZTg5M2YzYjE3Nzgz
MmVjYjhjNzQyZjNjNDJmNTIwNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
ZG93bmxvYWQvYW5jaG9yLWRvd25sb2FkLXJlZGlyZWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2FuY2hvci1kb3dubG9hZC1yZWRpcmVjdC1leHBl
Y3RlZC50eHQKQEAgLTEsNSArMSwxMCBAQAorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUK
K21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkV2l0aEVycm9yCiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWQgd2FzIHJl
ZGlyZWN0ZWQgdG8gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9tZWRpYS9yZXNvdXJjZXMvdGVzdC5w
ZGYiLgogRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJmb28ucGRmIgog
RG93bmxvYWQgY29tcGxldGVkLgogVGVzdHMgdGhhdCBkb3dubG9hZCByZWRpcmVjdHMgYXJlIHJl
cG9ydGVkIHRvIHRoZSBjbGllbnQuIHRoZSBsaW5rLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9kb3dubG9hZC9hbmNob3ItZG93bmxvYWQtcmVkaXJlY3QuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvYW5jaG9yLWRvd25sb2FkLXJlZGlyZWN0Lmh0bWwK
aW5kZXggNGU2NzcxMDhkMGVlYzQzOTk0OWI1MGFhMzBlZmQyMmI0MmJjMDFjYy4uYTIyNDUzZGMw
NTMyMzFhOWY2ZWM4YTZjMTY5ZGM4MjI5MmMzMDYzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9kb3dubG9hZC9hbmNob3ItZG93bmxvYWQtcmVkaXJlY3QuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2FuY2hvci1kb3dubG9hZC1yZWRpcmVjdC5o
dG1sCkBAIC04LDYgKzgsNyBAQAogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcyh0cnVlKTsKICAg
ICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb3dubG9hZEZpbmlzaGVkKCk7CisgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgIH0KIDwvc2NyaXB0PgogPC9o
ZWFkPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414491</attachid>
            <date>2020-11-18 15:09:03 -0800</date>
            <delta_ts>2020-11-18 15:25:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201118150902.patch</filename>
            <type>text/plain</type>
            <size>333324</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5Nzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGViYzQ3NmU0YzcwNWQ2MTA3
ZDM1OGE3N2I3NTg4ODRmNTE4YTVkMWIuLjkyMWZkMWMwNDlkYWUzZjkzZGMwNmJiYzQ1ZThhNzBj
OTk0Y2ZhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX2Rvd25sb2FkRGlk
U3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlvbiBoYW5kbGVycyB0aGF0
IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBUaGVyZSdzIG5vIG5lZWQg
dG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2JqZWN0IGJlZm9yZSB0aGVu
IGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQgInN0YXJ0cyIgd2hpY2gg
aXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAgICAgICAgIHNvIHRoZXJl
IHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bmxv
YWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICA5LiAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNvbnRpbnVpbmcgb3IgY2Fu
Y2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250cm9sIHRoZQorICAgICAg
ICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAxMC4gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVSZXNwb25zZSBoYXZlIGJl
ZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lIGFu
ZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVkRmlsZW5hbWUgQVBJLiAg
YWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVzZWQsIGFuZCBub3QgcmVh
bGx5IG5lZWRlZC4KKyAgICAgICAgMTEuIGRpZENyZWF0ZURlc3RpbmF0aW9uIGlzIGdvbmUuICBU
aGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3NhcnkuICBJZiB5b3UgbmVlZCB0
byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBmaXJzdAorICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9uIGhhcyBkZWZpbml0ZWx5
IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMi4gc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNhbGxlZCBzaW5jZSB3ZSBh
ZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlLgorICAgICAgICAxMy4gb3JpZ2luYXRpbmdGcmFtZSBpcyBnb25lLiAgT24gX1dLRG93
bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUluZm8gdGhhdCBvZnRlbiBj
b250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9uIHdhcyB0aGVyZSwKKyAg
ICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZGlk
QmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlvblJlc3BvbnNlIHdoaWNo
IGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUgQVBJIHRlc3RzIGZvciBl
dmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tEb3dubG9hZEdldFR5cGVJRCk6
CisgICAgICAgIChXS0Rvd25sb2FkQ29weVJlcXVlc3QpOgorICAgICAgICAoV0tEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKToKKyAgICAgICAg
KFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKToKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHA6CisgICAgICAg
IChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZSk6CisgICAgICAgIChXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRG93bmxvYWQgY2Fu
Y2VsOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAg
ICAoLVtXS0Rvd25sb2FkIGRlbGVnYXRlXSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgc2V0RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb24gX3dhc1Vz
ZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVd
KToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9zaG91bGRQZXJmb3JtRG93bmxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0
b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJW
aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhE
b3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
Ol0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBjYW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJl
cXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6Cisg
ICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVE
YXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBk
ZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRE
aWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMjAtMTEtMTIgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQgcGx1Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFu
ZCBwbHVnLWluIGxvYWQgcG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0MGYy
N2MxNjA1YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi4yYzEzN2Y2N2YyYjQwZDc0YjE2YTM4YmYw
YjQwNzliMzUyZmZkMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
dm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgUmVmPE5ldHcKICAgICBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRpb25E
ZWNpZGVkLnNldChkb3dubG9hZElELCBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzaykpOwogfQogCi12
b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25s
b2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ2FsbERvd25s
b2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiB7CiAjaWYgIVBMQVRGT1JNKENPQ09B
KQogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xMDUsNiArMTA1LDExIEBAIHZvaWQgRG93bmxv
YWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvCiAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+KCp0
aGlzLCBkb3dubG9hZElELCBudWxscHRyLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgZG93bmxv
YWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGUpKTsKKworICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGxlZ2FjeSBkb3dubG9h
ZCBBUEksIG9ubHkgc2VuZCBEaWRTdGFydCBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IEFQSS4KKyAg
ICBpZiAoY2FsbERvd25sb2FkRGlkU3RhcnQgPT0gQ2FsbERvd25sb2FkRGlkU3RhcnQ6OlllcykK
KyAgICAgICAgZG93bmxvYWQtPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0YXJ0
KHsgfSwgeyB9KSk7CisKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25sb2Fk
SUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9hZCkp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1YjAx
NjVmMWM3MjY3OGZhNTAuLmM0ODFlYjVmNmQ0MjljYjA5YmJjNTI1OTZmZjU5YTdiZTU3MzI1ZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIGNsYXNzIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93bmxv
YWQ7CiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sIHsgTm8sIFllcyB9
OworCiBjbGFzcyBEb3dubG9hZE1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERv
d25sb2FkTWFuYWdlcik7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY29u
dmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya0xvYWQ+JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQdHI8
V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQg
ZG93bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCwgUmVmPE5ldHdvcmtEYXRhVGFz
az4mJik7CiAKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9h
ZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3du
bG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
PiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmluZGV4
IDk1ZjhkZWMzMDI1MWI4MGJhYTI5Y2U1OTA4NzNhN2FiYWVmZGE5Y2UuLjVmNzk5ZDVjMDViNmIx
ODQ4ZWM1MDMyZDg0MzA1MGJhNWIxZDZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQpA
QCAtNzEsNiArNzEsOCBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgTlNEYXRhICp1cGRh
dGVkRGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0eUxp
c3Q6ZGljdGlvbmFyeSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCBvcHRpb25z
OjAgZXJyb3I6bnVsbHB0cl07CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRhIGlu
c3RlYWQgb2YgdXBkYXRlZERhdGEgb25jZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25sb2Fk
IHRvIFdLRG93bmxvYWQKKyAgICAvLyBiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNldCB0
aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJvbSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEuCiAg
ICAgbV9kb3dubG9hZFRhc2sgPSBbY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxv
YWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07CiAg
ICAgYXV0byB0YXNrSWRlbnRpZmllciA9IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmllcl07
CiAgICAgQVNTRVJUKCFjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5k
b3dubG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOwpAQCAtODMsNyArODUsMjIgQEAg
dm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoLAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxOZXR3
b3JrTG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2Rvd25sb2FkVGFzayk7Ci0g
ICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQ
dHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Rh
dGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVBy
b2R1Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtwYXRoID0gcmV0YWluUHRyKG1fZG93bmxv
YWRUYXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJs
ZSB7CisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBpZiAocmVz
dW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUgdGhlIGRv
d25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4gQWRkIGl0
IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0
YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVy
ZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAgICAgICAg
ICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlv
bmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRo
T2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcg
Y2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwg
W05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2Jq
ZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6cGF0aC5nZXQoKSBm
b3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgICAgICAgICBh
dXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWly
aW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07
CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29kZXIgZW5jb2RlZERhdGFdOworICAgICAg
ICB9CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisjZW5kaWYKICAgICAgICAg
YXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQQzo6RGF0YVJlZmVyZW5j
ZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRhLmJ5dGVzKSwgcmVzdW1l
RGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0pLmdldCgpXTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCmlu
ZGV4IDhkODk3YTQyMzBhZmUyZTk4ZGRkYTljNGE5ZDIxMDE3NDc0YjM3OTIuLmI5MjA2ODJjOWU0
NzNiZjM1ZTAzZmYzYTYyZjcwNWQzZTFhYzIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDQ2LDEwICs0NDYs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0aW9u
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbgogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9zdWdnZXN0ZWRGaWxl
bmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwotCi0g
ICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwog
fQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGE5ZDJmMzkzOWU3
MTg2YjgxZThhN2VmZDRiYmViNTBhNjNiMmY1OS4uYjRlYjEwYTA5ODQzZmZjNjQ1M2EwY2M0YTlj
NzJmNGViZjhlZTc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTIwNTMsOSArMjA1Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93
bmxvCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25s
b2FkSUQsIHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlk
U3RhcnQpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklE
LCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQs
IGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhh
bmRsZSksIGNhbGxEb3dubG9hZERpZFN0YXJ0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6
Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MjA3OSwxMCArMjA3OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxv
YWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiB7CiAgICAgdWludDY0
X3QgZGVzdGluYXRpb25JRCA9IG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgpLnRv
VUludDY0KCk7CiAKLSAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
YXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQtRGlz
cG9zaXRpb24gaGVhZGVyCi0gICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQgZmls
ZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgotICAgIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpID8gcmVzcG9uc2Uu
c3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgp
OwotICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4
dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgp
KTsKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBuZXR3b3JrRGF0YVRhc2suc3VnZ2Vz
dGVkRmlsZW5hbWUoKTsKIAogICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbmV0d29ya0RhdGFUYXNrID0gbWFrZVJlZihuZXR3b3JrRGF0
YVRhc2spXSAoU3RyaW5nJiYgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlKSBt
dXRhYmxlIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5wZW5k
aW5nRG93bmxvYWRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCmluZGV4IGJlNTI2ZWZmMWU4YzkxZDM2ZWE4OWI4N2U3YjU2Nzk1OGE5NTZmYjIu
LjI5ZDRhNjgwMGVjNmFiMGQ4MGRiODMzZDU0ZDI3ZjBkNTc3YjhlOTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwNiw2ICsxMDYsNyBA
QCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdG9yYWdlTWFuYWdlclNldDsK
IGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjsKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51
bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBT
dG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRj
aE9wdGlvbiA6IHVpbnQ4X3Q7CkBAIC00MjEsNyArNDIyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
KTsKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgQ2Fs
bERvd25sb2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhEb3du
bG9hZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCAwZjAxOTA1NmU1YjU3ZjUzMzRiOGNlNzM4MjZlMmZhMDU2ODg5M2JmLi5hOWJi
ZWNlNWFhOGQ4N2IzNDkzMmE2MzkyY2Y1YWRlMjc4NzhlMTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTQ4LDcgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBVUkwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRl
RGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpIEFzeW5jCiAKICAgICBEb3dubG9hZFJl
cXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRpb25h
bDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCi0gICAgUmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
SVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51bTpi
b29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiAg
ICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJUEM6
OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
VVJMIHVybCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA4YThhYjBiOWI4MzFjYWY0OGZhMjI0NTMw
OThhZmIyNGFhYThmNGRlLi5jYjY5NmYzMmE5M2U1ZDY2ZWI3MGNkMDQ4ZmViMTQxNmFiOTU4N2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC03NjgsNiArNzY4LDIwIEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFsdWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNl
c3Npb24sIFNlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorI2lmIFVTRShMRUdBQ1lfQ0ZO
RVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAg
IC8vIE1vamF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUg
cmVzdW1lIGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAg
ICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAg
ICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1
cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBh
ZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRl
Y29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBj
bGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNz
XSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBu
aWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkp
OworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAg
W2RpY3Rpb25hcnkgc2V0T2JqZWN0OnRhc2suX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgZm9yS2V5
OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBl
bmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1Nl
Y3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0
aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAg
ICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQor
I2VuZGlmCisKICAgICAgICAgYXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/
IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVE
YXRhLmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07
CiAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhUmVmZXJlbmNlKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA5NzA4
NzY0OTVmYjFhY2M5MDRjMWVhMjUwNjkwOTNiMjAwZWIyNTVhLi44ZmY2OWNhYmMzYTg5N2MzMjQ2
MTJmNzYwZjIwNzMzMTg5NmM2YjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkKQEAgLTY3MCw2ICs2NzAsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBlKToK
ICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0FyZWFJ
bmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxvYWRJ
RC5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJT
ZXNzaW9uU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQn
OiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxk
SWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0NvbnRl
eHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0aW9u
cy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktp
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IDFmN2Ez
ZGQzYzY5NzNlMTA5OTRmNWRjMTM3ZmFmNDA2YTI1ZWEyOWQuLjQxNWQ5MTY0NjU5NmNlZjI3Zjg3
MTgzZjUyY2RlMTkyMGZiNTA0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2Vi
S2l0LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxlTGlz
dFN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdl
YktpdC9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25s
b2FkLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZENvbmZpZ3VyYXRpb24uaD4K
ICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggNzZlODFiZTZkYjE0OTAyMzE4YmMyMWRlNWE1
ZTRhMDFhZmU5ZTc2Ny4uZTNkY2E4NDBiN2NkYjZjZTU2MTkwMzIzMDNjN2MzNzEzZjdiNDIzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAgLTEy
Nyw2ICsxMjcsMTIgQEAgYXV0byB0b0FQSShUKiB0KSAtPiBBUElUeXBlCiAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAodCkpOwogfQogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJbmZv
PFQ+OjpBUElUeXBlPgorYXV0byB0b0FQSShUJiB0KSAtPiBBUElUeXBlCit7CisgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAoJnQpKTsKK30KKwog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW1wbFR5cGUgPSB0eXBlbmFtZSBBUElUeXBl
SW5mbzxUPjo6SW1wbFR5cGU+CiBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGY4YTAyOGIwNmI1MTA2MTA4
ZGRjM2NiYjY4YTQwMWJmYTM1ZjdkYmUuLjdmMDU4NDU2ZGVlNzY0ODk4MWZkNDZmMWYwMDU3Zjc1
M2ZkNmUxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVj
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTM1
LDYgKzM1LDcgQEAKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0TWVu
dUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2llU3Rv
cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBACiAj
aW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDb250
ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmll
bGRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5k
bGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBAIC0y
MjgsNyArMjI4LDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5cGUg
dHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAgICAg
ICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFsbG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtXS0Rv
d25sb2FkIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVyaW1l
bnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1MTg0MGFhOTA3NWZkYWMwN2E0ZTkxYTIzMDVi
ZDgxYjZkYmYyM2FiLi4xYWQwMGY3MjU5ZGExMjMyZTBjODdhZjYwMzdjZTY1MGE5Mzc2MDk2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKQEAgLTM3MSw3ICszNzEsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCiBVSVBy
b2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVu
dGlhbC5jcHAKLVVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tG
cmFtZUhhbmRsZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA1ZDliOTNkMTdhZjI0
YmVhYTAyMGUyODUyOTg1NjkwOWJjYjZlYWYyLi44ZjM5OTUzZjM0Y2Y5YTFiOWI4ZTExMzM5MzBk
ODUyOGZkMTJiNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMDAsNiArMzAwLDcgQEAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFdvcmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRXJyb3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggZDM3ZjYyODY4YjYxMjk3
YTExYWZmZjM4MDJhODBiYTYxMmE0ZGNlNS4uZGZmNzNmYTY1YmY2ZmIwYWQxN2FmYTk5ZjU4MmY5
NDJmYWY3YTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25s
b2FkQ2xpZW50LmgKQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIGNsYXNzIEFsbG93T3ZlcndyaXRl
IDogYm9vbDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERhdGE7CisKIGNsYXNzIERvd25s
b2FkQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENsaWVu
dCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hh
bGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2Vs
KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRGVz
dGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpE
YXRhKiByZXN1bWVEYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdl
YktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jh
c2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZW5k
UmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGJiYTg1
OWFmMmU0MzVlOWYwOTI0ZjRhMzJlMTE3ZDk2Mzk1ZGJmOTUuLjBjNTY0ZDQ0NTRjODJkODk1N2Fm
ZWFlNzQ3YzBiNmYxNzBmNmJhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjYW5IYW5kbGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5jYW5IYW5kbGVSZXF1ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxTY2hl
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZEFsbG93IHx8IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91
bGRBbGxvd0V4dGVybmFsU2NoZW1lc0J1dE5vdEFwcExpbmtzOyB9CiAgICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5BcHBMaW5rcyAmJiBtX25h
dmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3c7IH0KLSAgICBib29s
IHNob3VsZFBlcmZvcm1Eb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICFtX25hdmlnYXRpb25BY3Rp
b25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpOyB9CisgICAgY29uc3QgV1RGOjpTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5kb3dubG9hZEF0dHJpYnV0ZTsgfQogICAgIGJvb2wgaXNSZWRpcmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdDsgfQogICAgIFdlYkNvcmU6
OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTsgfQogCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVu
c2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbigpIHsgbV9zaG91bGRQZXJmb3JtU09BdXRo
b3JpemF0aW9uID0gZmFsc2U7IH0KICNlbmRpZgogCisgICAgY29uc3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRh
dGE7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBz
b3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6OlN0
cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBS
ZWZQdHI8VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5h
dmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIDogbV9zb3VyY2VGcmFtZShz
b3VyY2VGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkNsaWVudC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFjOWU2
YWUuLmQ4MzY2NGUwODIwNmM3ZmViZjI4MWU5MmNlZTQ5MjVmZjZhZGRmOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNTQs
NiArNTQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBEb3dubG9hZFBy
b3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC05OSw2ICsxMDAsMTAgQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4p
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRC
ZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb25BY3Rpb24mLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hh
bGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9y
bURlZmF1bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dMZWdhY3lU
TFMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5lZ290
aWF0ZU1vZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4
IDdkMmU5MzQ0NjJjZjNiZGMxOWExOWI3ZGQzMWEwYzJhOWNlYmVkNGYuLjI2MTAxODhhOTc1Njlk
YjNlM2M3OGFlYjA0YTg1ODI1MTkzMmQxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBjbGFzcyBQb2xpY3lD
bGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYktp
dDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCop
CisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0
OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikK
ICAgICB7CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmluZyYsIFJl
ZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpP
YmplY3QqKQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBSZWY8QVBJOjpO
YXZpZ2F0aW9uQWN0aW9uPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXVEY6OlN0cmluZyYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmlu
ZGV4IDNhMDgzY2E0ODY0NDNiZDg4MDYzM2E1YzI2MDc0ZTI2MmQxMTM0YmMuLmZmZDA3ZThjY2Q4
YjA0MDY3MTRlZTg3MTBlYzIxMzA4MDlmZWM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNTUsOSArNTUsNiBAQAogI2luY2x1ZGUgIldlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4g
c3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+IHsKLSAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCwgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJh
aXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxl
PFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7CiB9OwpAQCAtMTY4LDkwICsxNjUs
NiBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRleHRT
ZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKLXsKLSAgICBjbGFzcyBMZWdhY3lEb3dubG9hZENs
aWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVudEJh
c2U+LCBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICBl
eHBsaWNpdCBMZWdhY3lEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2UqIGNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1fY29u
dGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7
Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC5kaWRTdGFydChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFBy
b3h5KSwgV2ViS2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZl
UmVzcG9uc2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwgV2Vi
S2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25z
ZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QsIHVpbnQ2NF90KSBm
aW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVEYXRh
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVEYXRhKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0aCwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAot
ICAgICAgICB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWRQcm94eSwg
cmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAgICBib29s
IGFsbG93T3ZlcndyaXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9uID0g
YWRvcHRXSyhtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSht
X2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGZp
bGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6OlllcyA6IFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBXZWJL
aXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
dm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2NvbnRleHQs
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRp
ZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQsIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5hbAot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChtX2NvbnRleHQsIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGxlZ2FjeURpZENh
bmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbChtX2NvbnRleHQsIFdlYktp
dDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5wcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QpCi0gICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2ViS2l0
Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwoKS5z
dHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgICAgIH0KLSAgICAgICAg
V0tDb250ZXh0UmVmIG1fY29udGV4dDsKLSAgICB9OwotICAgIFdlYktpdDo6dG9JbXBsKGNvbnRl
eHQpLT5zZXRMZWdhY3lEb3dubG9hZENsaWVudChhZG9wdFJlZigqbmV3IExlZ2FjeURvd25sb2Fk
Q2xpZW50KHdrQ2xpZW50LCBjb250ZXh0KSkpOwotfQotCiB2b2lkIFdLQ29udGV4dFNldENvbm5l
Y3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENvbm5l
Y3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0
UmVmKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQod2tDbGllbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCBkYzJlMGQxOTIzMTVlZTU3MmQxZDFm
Njc4YWJhNjFkNmMyNGQxMzkxLi40MzE1NjBkNjA3MzQ1YjU1NjdiMjc2MTNiOTdkNTAxMmY2YjAy
MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAtMjgs
NyArMjgsNiBAQAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4
dERvd25sb2FkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dEhpc3RvcnlDbGll
bnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CkBAIC0xMzgsNyArMTM3LDYgQEAgV0tf
RVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmUKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2UqIGNs
aWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogY2xpZW50KTsK
LVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19F
WFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBjb250
ZXh0LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAogV0tf
RVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVDQVRF
RDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERv
d25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRE
b3dubG9hZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2Y5NmFiZWYx
MTQ1ODQ2YjIxMTYxMTg1NWZiNzdiMzJkMWQ4NzcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dERvd25sb2FkQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHREb3dubG9hZENsaWVudF9oCi0jZGVmaW5lIFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50X2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotdHlw
ZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrKShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRl
eHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERp
ZFJlY2VpdmVEYXRhQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlw
ZWRlZiBib29sICgqV0tDb250ZXh0RG93bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRl
ZiBXS1N0cmluZ1JlZiAoKldLQ29udGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWVDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9h
ZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBwYXRoLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2sp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkRmFpbENh
bGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tF
cnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpX
S0NvbnRleHREb3dubG9hZERpZENhbmNlbCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgq
V0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwot
dHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3Qp
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1
cmwsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHRE
b3dubG9hZENsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2
b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsaWVudEluZm87Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZTsKLQotdHlwZWRl
ZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCB7Ci0gICAgV0tDb250ZXh0RG93bmxv
YWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl
OwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAg
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0
RG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWRSZWNlaXZlUmVzcG9uc2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0
YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAg
ICBXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJh
Y2sgICAgICAgICAgIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29u
dGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFj
ayAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250
ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlz
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZEZhaWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9jZXNzRGlkQ3Jhc2g7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjA7Ci0K
LXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEgewotICAgIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS0NvbnRleHREb3dubG9hZERpZFN0
YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0Owot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2Fs
bGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIFdL
Q29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVj
ZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGE7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZUNhbGxiYWNrICAgICAgICAgICBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q2FsbGJhY2sgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAg
IFdLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247Ci0gICAgV0tDb250ZXh0RG93bmxvYWRE
aWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5p
c2g7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkQ2Fu
Y2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2FuY2VsOwot
ICAgIFdLQ29udGV4dERvd25sb2FkUHJvY2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoOwotCi0gICAgLy8gVmVyc2lvbiAxLgotICAg
IFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0OwotfSBXS0NvbnRleHREb3dubG9h
ZENsaWVudFYxOwotCi0jZW5kaWYgLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzBjMjg3YmIzNDcwNDczYWQ1YmM2NGZjZmQ1Mzg4NGM3NTJlYmVjOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV0tE
b3dubG9hZC5oIgotCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElEYXRhLmgi
Ci0jaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKLSNpbmNsdWRlICJBUElVUkxSZXF1ZXN0
LmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgot
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1X
S1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoRG93bmxv
YWRQcm94eTo6QVBJVHlwZSk7Ci19Ci0KLXVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25s
b2FkUmVmKQotewotICAgIHJldHVybiAwOwotfQotCi1XS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9h
ZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJ
KCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwoZG93bmxvYWQpLT5yZXF1ZXN0KCkpLmxl
YWtSZWYoKSk7Ci19Ci0KLVdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5s
ZWdhY3lSZXN1bWVEYXRhKCkpOwotfQotCi12b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+Y2FuY2VsKFtk
b3dubG9hZCA9IG1ha2VSZWYoKnRvSW1wbChkb3dubG9hZCkpXSAoYXV0byopIHsKLSAgICAgICAg
ZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7Ci0gICAg
fSk7Ci19Ci0KLVdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9y
aWdpbmF0aW5nUGFnZSgpKTsKLX0KLQotV0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0
Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICBhdXRvJiByZWRpcmVjdENoYWlu
ID0gIHRvSW1wbChkb3dubG9hZCktPnJlZGlyZWN0Q2hhaW4oKTsKLSAgICBWZWN0b3I8UmVmUHRy
PEFQSTo6T2JqZWN0Pj4gdXJsczsKLSAgICB1cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkocmVk
aXJlY3RDaGFpbi5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcmVkaXJlY3RVUkwgOiByZWRpcmVj
dENoYWluKQotICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlVSTDo6Y3JlYXRlKHJl
ZGlyZWN0VVJMLnN0cmluZygpKSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVh
dGUoV1RGTW92ZSh1cmxzKSkubGVha1JlZigpKTsKLX0KLQotYm9vbCBXS0Rvd25sb2FkR2V0V2Fz
VXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0lt
cGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQz
ZjcyMDI3OTNkNTRmNTQyYTM5MDkyMDRhM2M4MGRhY2E5YWQyMWUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV0tEb3dubG9hZF9oCi0jZGVmaW5lIFdLRG93bmxvYWRfaAotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KLQot
I2lmbmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5cGVJ
RCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB1aW50NjRfdCBXS0Rvd25sb2Fk
R2V0SUQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkgV0tfQ19BUElfREVQUkVDQVRFRDsKLVdLX0VY
UE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShX
S0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRH
ZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tB
cnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCk7Ci1XS19FWFBPUlQgYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2Vu
ZGlmIC8vIFdLRG93bmxvYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5NTdmODYwMTk1OTU1Zjc1OTU3YmRjMDE2
ZmZjZTExMzIyNmRhMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCit0eXBlZGVmIGJv
b2wgKCpXS0Rvd25sb2FkV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiBuZXdS
ZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxv
YWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0Rvd25sb2FkRGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VS
ZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRXcml0ZURhdGEpKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGxvbmcgbG9uZyBieXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZEZpbmlzaCko
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS0Rvd25sb2FkRGlkRmFpbFdpdGhFcnJvcikoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworCit0eXBlZGVmIHN0cnVjdCBXS0Rvd25sb2FkQ2xpZW50QmFzZSB7CisgICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKK30gV0tEb3dubG9hZENsaWVudEJhc2U7CisK
K3R5cGVkZWYgc3RydWN0IFdLRG93bmxvYWRDbGllbnRWMCB7CisgICAgV0tEb3dubG9hZENsaWVu
dEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAg
Ly8gVmVyc2lvbiAwLgorICAgIFdLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAg
ICAgICAgICAgICAgICAgICAgICAgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb247CisgICAgV0tE
b3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAgICAgICAgICAgICAgICBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgV0tEb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZTsKKyAgICBXS0Rvd25sb2FkRGlkV3JpdGVEYXRhICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZFdyaXRlRGF0YTsKKyAgICBXS0Rvd25sb2FkRGlkRmlu
aXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKKyAg
ICBXS0Rvd25sb2FkRGlkRmFpbFdpdGhFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZEZhaWxXaXRoRXJyb3I7Cit9IFdLRG93bmxvYWRDbGllbnRWMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTYw
M2Y4YjY0ZTg4MmE2N2IyM2JkMzQ2Yjc3YzA3ODQyYTA1MWYwNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCkBAIC0wLDAg
KzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldL
RG93bmxvYWRSZWYuaCIKKworI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGF0
YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJVVJMUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisKK25hbWVzcGFjZSBBUEkgewordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdL
RG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLRG93bmxvYWRD
bGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoRG93bmxv
YWRQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJl
cXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6
VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigp
KTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxi
YWNrKQoreworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Z1bmN0aW9uQ29u
dGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3VtZURhdGEpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdW1lRGF0YSksIGZ1bmN0aW9uQ29udGV4
dCk7CisgICAgfSk7Cit9CisKK1dLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdl
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3du
bG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKK30KKworYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNl
ckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVybiB0b0ltcGwo
ZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKK3ZvaWQgV0tEb3dubG9hZFNldENs
aWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KQoreworICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLRG93
bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoY29uc3QgV0tEb3dubG9hZENsaWVu
dEJhc2UqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIG92
ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmxpc3Rl
bmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoY2hhbGxl
bmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0
X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVEYXRhKHRvQVBJKGRvd25sb2FkKSwgYnl0ZXNXcml0
dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBkZXN0aW5hdGlvbiA9
IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSh0b0FQSShkb3du
bG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9u
KSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkoZG93bmxvYWQpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsV2l0aEVycm9yKHRv
QVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3IpLCB0b0FQSShyZXN1bWVEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENy
YXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBX
ZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCku
dXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQiIH0sIG51bGxw
dHIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkocmVxdWVzdCksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbykpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRvSW1wbChkb3dubG9hZCktPnNldENsaWVudChhZG9wdFJlZigqbmV3IERvd25s
b2FkQ2xpZW50KGNsaWVudCkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNDdmZmE4OTVlMmU1NTk1Yzg3Y2FhNDdjN2Ux
ZTE4YzFiZGNiMzhlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tEb3dubG9hZENsaWVudC5oPgorCisjaWZuZGVmIF9fY3BsdXNwbHVzCisjaW5jbHVkZSA8c3Rk
Ym9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5k
aWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKKworV0tfRVhQ
T1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCk7CisKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWRDYW5jZWxDYWxsYmFjaykoV0tE
YXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CitXS19FWFBP
UlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZv
aWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxiYWNrKTsK
K1dLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCBib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5p
dGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JUIHZvaWQgV0tEb3dubG9h
ZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xpZW50QmFzZSog
Y2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCmlu
ZGV4IDhmZjM3ZTVjODdiZTg0NzIxY2IxYTgwODNmM2EyMGYxNTU5YTU1MDEuLmUxMzcwNmRlNTAz
Yzk3YTUzNjI4NzViNWE3NmI0OTA0MTBmYjMxZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcApAQCAtMzYsNyAr
MzYsMTAgQEAgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0VHlwZUlEKCkKICAgICByZXR1
cm4gdG9BUEkoQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpBUElUeXBlKTsKIH0KIAotYm9vbCBXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQoV0tOYXZpZ2F0aW9uQWN0aW9uUmVm
IGFjdGlvbikKK1dLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkFjdGlvbkdldERvd25sb2FkQXR0cmli
dXRlKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChh
Y3Rpb24pLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKTsKKyAgICBhdXRvJiBhdHRyaWJ1dGUgPSB0
b0ltcGwoYWN0aW9uKS0+ZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoYXR0cmlidXRlLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gdG9BUEkoYXR0cmli
dXRlLmltcGwoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCmluZGV4IDlkOGZjZjFlMTk5NzEzYjFmMDliMzI2MjBk
MjE1NzkyNDU0ODZlOWMuLjRjMTNkNjM5YmQ3YWYyNjkxMGMzZDcwMjM3M2Q2NTQ2MTUzYjk1MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFj
dGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkFjdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQg
V0tUeXBlSUQgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBib29s
IFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1Eb3dubG9hZChXS05hdmlnYXRpb25BY3Rp
b25SZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLTmF2aWdhdGlvbkFjdGlvbkdldERvd25s
b2FkQXR0cmlidXRlKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24pOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IGFmNjJhY2FlOWE0ZGFmZmEwMmIyOGRkYWM0NGY2NGI0OGQwZDNiMmMuLjVhZWZhMzI5YjMwMzAy
ODUyNGYwMTU5NTU4YjZlNzRjMGI0YjE3ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQYWdlLmNwcApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVu
ZXIuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisj
aW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeVNlc3Npb25TdGF0ZUNv
ZGluZy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50LmgiCkBAIC0xMjM5LDcgKzEyNDAsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1l
UHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24s
IFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNl
KCk7CkBAIC0xMjUwLDE0ICsxMjUxLDE0IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVu
dChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAg
ICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNy
ZWF0ZShyZXNvdXJjZVJlcXVlc3QpOwogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAg
ICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRv
QVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9B
UEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5u
YXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShyZXF1
ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAgICBlbHNlIGlmIChtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpCi0gICAg
ICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25E
YXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwg
dG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0
ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRh
KCkubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5w
dHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fY2xp
ZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShm
cmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEko
bmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRh
dGEubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkob3JpZ2luYWxS
ZXF1ZXN0LnB0cigpKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigp
KSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAg
ICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0
aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGlu
Z0ZyYW1lKSwgdG9BUEkob3JpZ2luYWxSZXF1ZXN0LnB0cigpKSwgdG9BUEkocmVxdWVzdC5wdHIo
KSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwg
Y29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pIHsKICAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMjY2LDcgKzEyNjcsNyBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNs
aWVudEJhc2UqCiAKICAgICAgICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBB
UEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3QpOwogCi0gICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRv
QVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZyYW1lTmFt
ZS5pbXBsKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG5hdmln
YXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91
c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSks
IHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNw
b25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKQEAgLTIyNTEsNiArMjI1MiwyNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdl
U3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIG5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwg
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24sIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQubmF2
aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCh0
b0FQSSgmcGFnZSksIHRvQVBJKCZhY3Rpb24pLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2UmIHJlc3BvbnNlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KHRvQVBJKCZwYWdlKSwgdG9BUEkoJnJlc3BvbnNlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93
bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBkaWRCZWdpbk5hdmlnYXRpb25HZXN0
dXJlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4
IDM4MDZkMTg2YWE5ZmI5Nzc0N2E3M2Q5NzM2MDZhNThlYjQxODhiNjAuLmE0YWFmZTRhOTM1YjMx
MGEyMjAxYmY3YjRmNzQ1NjVlNTUyYjg0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTcxLDcgKzcxLDEz
IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRpb25XZWJQcm9jZXNzRGlkVGVybWluYXRl
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXCiB0eXBlZGVmIFdLRGF0YVJlZiAoKldLUGFnZU5h
dmlnYXRpb25Db3B5V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFnZU5h
dmlnYXRpb25Db3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICAKKwordHlwZWRlZiB2
b2lkICgqV0tQYWdlTmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYg
dm9pZCAoKldLUGFnZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkQ2FsbGJhY2sp
KFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiBuYXZpZ2F0aW9uUmVzcG9u
c2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9h
ZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisKIHR5cGVkZWYgV0tQbHVnaW5Mb2FkUG9saWN5ICgqV0tQYWdl
TmF2aWdhdGlvbkRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLUGx1Z2luTG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgV0tEaWN0aW9u
YXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBXS1N0cmluZ1JlZiogdW5hdmFpbGFiaWxpdHlE
ZXNjcmlwdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldL
UGFnZU5hdmlnYXRpb25EaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKShXS1BhZ2VSZWYgcGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC0yMTMsNiArMjE5LDkgQEAgdHlwZWRlZiBzdHJ1
Y3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIHsKIAogICAgIC8vIFZlcnNpb24gMy4KICAgICBX
S1BhZ2VOYXZpZ2F0aW9uQ29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxi
YWNrIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc7CisgICAgV0tQYWdlTmF2
aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkQ2FsbGJhY2sgbmF2aWdhdGlvbkFjdGlvbkRp
ZEJlY29tZURvd25sb2FkOworICAgIFdLUGFnZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkQ2FsbGJhY2sgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CisgICAg
V0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFjayBjb250
ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogfSBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjM7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWI2ZjEzMTc3MzE3M2JkMjdkZmE4MTM1NjQ4YTFm
MDc1YjFjNDhlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitAY2xhc3MgV0tGcmFtZUluZm87CitAcHJvdG9jb2wgV0tEb3dubG9hZERlbGVnYXRl
OworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tEb3dubG9hZCA6IE5T
T2JqZWN0CisKKy8qIEBhYnN0cmFjdCBUaGUgcmVxdWVzdCB1c2VkIHRvIGluaXRpYXRlIHRoaXMg
ZG93bmxvYWQuCisgIEBkaXNjdXNzaW9uIElmIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHJlZGlyZWN0
ZWQgdG8gYSBkaWZmZXJlbnQgVVJMLCBvcmlnaW5hbFJlcXVlc3QKKyAgd2lsbCBiZSB1bmNoYW5n
ZWQgYWZ0ZXIgdGhlIGRvd25sb2FkIGZvbGxvd3MgdGhlIHJlZGlyZWN0LgorKi8KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIE5TVVJMUmVxdWVzdCAqb3JpZ2luYWxS
ZXF1ZXN0OworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoYXQgcmVjZWl2ZXMgcHJvZ3Jl
c3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZTsKKworLyogQGFic3RyYWN0IENh
bmNlbCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8g
aW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgorIEBkaXNjdXNzaW9uIFRvIGF0
dGVtcHQgdG8gcmVzdW1lIHRoZSBkb3dubG9hZCwgY2FsbCBXS1dlYlZpZXcgcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTogd2l0aCB0aGUgZGF0YSBnaXZlbiB0byB0aGUgY29tcGxldGlvbkhhbmRsZXIu
CisgSWYgbm8gcmVzdW1lIGF0dGVtcHQgaXMgcG9zc2libGUgd2l0aCB0aGlzIHNlcnZlciwgY29t
cGxldGlvbkhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBuaWwuCisqLworLSAodm9pZCljYW5j
ZWw6KHZvaWQoXiBfTnVsbGFibGUpKE5TRGF0YSAqIF9OdWxsYWJsZSByZXN1bWVEYXRhKSljb21w
bGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzQyYTk5NDU0MTkwNzdiZDk0OTg3ZGEwMmJjYTQyMzlmODE4MTMyMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC0w
LDAgKzEsMjIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJX
S0Rvd25sb2FkSW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNp
bXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIkRvd25sb2Fk
UHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tOU0Rh
dGEuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9y
dCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZp
bmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0
IERvd25sb2FkQ2xpZW50KGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAg
ICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
ZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhh
bmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2Fk
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXSkK
KyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXSkK
KyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEoW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVu
OnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlk
RmluaXNoKFttX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWRE
aWRGaW5pc2g6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcihbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRGYWlsV2l0aEVy
cm9yOnJlc3VtZURhdGE6KV0pCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAg
UmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3Qo
V2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAg
ICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjpzdGF0aWNfY2FzdDxOU0hUVFBVUkxSZXNwb25zZSAqPihyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkpIG5ld1JlcXVlc3Q6bnNSZXF1ZXN0LmdldCgpIGRlY2lzaW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwg
QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6
ZGVjaXNpb25IYW5kbGVyOikpXShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7
CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGNh
c2UgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3c6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCki
LCAobG9uZylwb2xpY3ldOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAg
fQorCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiBjaGFsbGVuZ2UpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwg
IW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAg
ICAgIHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFj
ZUFuZENvbnRpbnVlKTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVu
Z2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihj
aGFsbGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21w
bGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAg
ICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5s
aXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRl
bnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVy
Zm9ybURlZmF1bHRIYW5kbGluZzoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OkNhbmNlbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6CisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5k
Q29udGludWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07CisgICAgICAgICAgICB9CisgICAgICAgIH0p
LmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwg
V1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93
T3ZlcndyaXRlOjpObywgeyB9KTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKSBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VS
TFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlv
bkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9hZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2Vi
S2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQo
KS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
OnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkwgKmRlc3RpbmF0
aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxl
ckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBj
aGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAgaWYgKCFk
ZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2Vi
S2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGlmICghZGVzdGluYXRpb24uaXNGaWxlVVJMKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
ImRlc3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVSTCJdOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFn
ZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl07CisgICAgICAgICAgICBpZiAoIVtm
aWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltkZXN0aW5hdGlvbiBVUkxCeURlbGV0aW5nTGFz
dFBhdGhDb21wb25lbnRdLnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtkb3dubG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlk
RmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJM
RXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092
ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKFtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOmRlc3RpbmF0
aW9uLnBhdGhdKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtk
b3dubG9hZF0geworICAgICAgICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJv
ciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RD
cmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGlu
YXRpb24ucGF0aCk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVz
V3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwg
IW1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0
ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgfQorCisgICAg
dm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmlu
aXNoOndyYXBwZXIoZG93bmxvYWQpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZhaWwoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVz
dW1lRGF0YSldOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFp
bFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2Rl
Ok5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRh
Om5pbF07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbiA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhIDogMTsK
KyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZpbmlzaCA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRz
VG9EaWRGYWlsV2l0aEVycm9yIDogMTsKK307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2Fk
CisKKy0gKHZvaWQpY2FuY2VsOih2b2lkICheKShOU0RhdGEgKnJlc3VtZURhdGEpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRhdGEpIHsKKyAgICAgICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVx
dWVzdAoreworICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworfQorCist
IChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIHJldHVybiBfZGVsZWdh
dGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlkIDxXS0Rvd25sb2Fk
RGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX2Rv
d25sb2FkLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVudChkZWxlZ2F0ZSkp
KTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2Rvd25sb2FkLT5+RG93bmxvYWRQcm94
eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworI3ByYWdtYSBtYXJrIFdLT2JqZWN0IHBy
b3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7Cisg
ICAgcmV0dXJuICpfZG93bmxvYWQ7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
ZTUzMjg0ODA4MWFhODM2YzM0YzBmODMwMDU3ZGIwMzliMzc5YmM2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5o
CkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3Vu
ZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS0Rv
d25sb2FkOworCisvKiBAZW51bSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kKKyBAYWJzdHJhY3Qg
VGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJvbSB0aGUg
ZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhh
bmRsZXI6IG1ldGhvZC4KKyBAY29uc3RhbnQgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2Vs
ICAgQ2FuY2VsIHRoZSByZWRpcmVjdC4KKyBAY29uc3RhbnQgV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5QWxsb3cgICAgQWxsb3cgdGhlIHJlZGlyZWN0LgorKi8KK3R5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkgeworICAgIFdLRG93bmxvYWRSZWRpcmVj
dFBvbGljeUNhbmNlbCwKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdywKK30gV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworQHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZSA8TlNP
YmplY3Q+CitAb3B0aW9uYWwKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxv
YWQgaGFzIHJlY2VpdmVkIGFuIEhUVFAgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisgQHBhcmFtIGRv
d25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSByZWRpcmVjdC4KKyBAcGFyYW0g
cmVzcG9uc2UgVGhlIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBuZXdSZXF1ZXN0IFRo
ZSBuZXcgcmVxdWVzdCB0aGF0IHdpbGwgYmUgc2VudC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRs
ZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gaW5kaWNhdGUgd2hl
dGhlciBvciBub3QKKyB0byBwcm9jZWVkIHdpdGggdGhlIHJlZGlyZWN0aW9uLgorIEBkaXNjdXNz
aW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCBhbGwgc2VydmVyIHN1Z2dl
c3RlZCByZWRpcmVjdHMgd2lsbCBiZSB0YWtlbi4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rv
d25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJl
c3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25I
YW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0
byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxv
YWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2ZWQgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5n
ZS4KKyBAcGFyYW0gY2hhbGxlbmdlIFRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52
b2tlIHRvIHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5nZS4gVGhlCisgZGlzcG9zaXRpb24gYXJndW1l
bnQgaXMgb25lIG9mIHRoZSBjb25zdGFudHMgb2YgdGhlIGVudW1lcmF0ZWQgdHlwZQorIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbi4gV2hlbiBkaXNwb3NpdGlvbiBpcyBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwKKyB0aGUgY3JlZGVudGlhbCBhcmd1
bWVudCBpcyB0aGUgY3JlZGVudGlhbCB0byB1c2UsIG9yIG5pbCB0byBpbmRpY2F0ZSBjb250aW51
aW5nIHdpdGhvdXQgYQorIGNyZWRlbnRpYWwuCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBp
bXBsZW1lbnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIgdmlldyB3aWxsIHJlc3BvbmQgdG8gdGhlIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB3aXRoIHRoZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
UmVqZWN0UHJvdGVjdGlvblNwYWNlIGRpc3Bvc2l0aW9uLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0
IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9uZCB0byBhbiBhdXRoZW50
aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCBmb3Igd2hp
Y2ggd2UgbmVlZCBhIGZpbGUgdG8gd2hpY2ggdG8gd3JpdGUuCisgQHBhcmFtIHJlc3BvbnNlIFRo
ZSBzZXJ2ZXIgcmVzcG9uc2UsIGlmIHRoaXMgZG93bmxvYWQgd2FzIHRoZSByZXN1bHQgb2YgYW4g
SFRUUCByZXF1ZXN0LgorIEBwYXJhbSBzdWdnZXN0ZWRGaWxlbmFtZSBUaGUgc3VnZ2VzdGVkIGZp
bGVuYW1lLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVy
IHlvdSBtdXN0IGludm9rZSB3aXRoCisgZWl0aGVyIGEgZmlsZSBVUkwgdG8gYmVnaW4gdGhlIGRv
d25sb2FkIG9yIG5pbCB0byBjYW5jZWwgdGhlIGRvd25sb2FkLgorIEBkaXNjdXNzaW9uIElmIHRo
aXMgaXMgYSBkb3dubG9hZCBvZiBhIGJsb2IgVVJMLCByZXNwb25zZSB3aWxsIGJlIG51bGwuICBz
dWdnZXN0ZWRGaWxlbmFtZQorIHdpbGwgb2Z0ZW4gYmUgdGhlIHNhbWUgYXMgcmVzcG9uc2Uuc3Vn
Z2VzdGVkRmlsZW5hbWUsIGJ1dCB3ZWIgY29udGVudCBjYW4gc3BlY2lmeSB0aGUKKyBzdWdnZXN0
ZWQgZG93bmxvYWQgZmlsZW5hbWUuICBJZiB0aGUgZGVzdGluYXRpb24gZmlsZSBVUkwgaXMgbm9u
LW51bGwsIGl0IG11c3QgYmUgYSBmaWxlCisgdGhhdCBkb2VzIG5vdCBleGlzdCBpbiBhIGRpcmVj
dG9yeSB0aGF0IGRvZXMgZXhpc3QgYW5kIGNhbiBiZSB3cml0dGVuIHRvLgorKi8KKy0gKHZvaWQp
ZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZToobnVsbGFibGUgTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1l
OihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1VSTCAqIF9OdWxsYWJsZSBkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXI7CisKKy8q
IEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbmQgd3Jp
dHRlbiBkYXRhIHRvIHRoZSBkZXN0aW5hdGlvbi4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25s
b2FkIHRoYXQgaGFzIHdyaXR0ZW4gZGF0YS4KKyBAcGFyYW0gYnl0ZXNXcml0dGVuIFRoZSBudW1i
ZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc1dyaXR0ZW4gVGhlIHRvdGFs
IG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgd3JpdHRlbi4KKyBA
ZGlzY3Vzc2lvbiBJZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIHJlc3VtaW5nIGEg
cHJldmlvdXMgZG93bmxvYWQsIHRoZW4KKyB0b3RhbEJ5dGVzV3JpdHRlbiB3aWxsIGJlIGJ5dGVz
V3JpdHRlbiBwbHVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYWQgYWxyZWFkeSBiZWVuIGRv
d25sb2FkZWQuCisgSWYgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpcyB1bmtub3duLCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIHdpbGwgYmUgLTEuCisqLworLSAodm9pZClkb3dubG9hZDoo
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4g
dG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOworCisvKiBA
YWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgZmluaXNoZWQgc3VjY2Vzc2Z1
bGx5LgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCBmaW5pc2hlZC4KKyovCist
ICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQ7CisKKy8qIEBh
YnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmYWlsZWQuCisgQHBhcmFtIGRv
d25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhhcyBmYWlsZWQuCisgQHBhcmFtIGVycm9yIFRoZSBl
cnJvciBpbmRpY2F0aW5nIHRoZSBmYWlsdXJlIHJlYXNvbi4KKyBAcGFyYW0gcmVzdW1lRGF0YSBU
aGlzIGRhdGEgY2FuIGJlIHBhc3NlZCB0byBXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0
YTogdG8gYXR0ZW1wdCB0byByZXN1bWUgdGhpcyBkb3dubG9hZC4KKyovCistICh2b2lkKWRvd25s
b2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVy
cm9yIHJlc3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJlc3VtZURhdGE7CisKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZjODk0MjBlNmUy
N2IxNDNkYjAyNTQwNWNiMzNiN2E5ZDdjNGFmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAi
V0tEb3dubG9hZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4geworICAg
IHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLRG93bmxvYWQ7Cit9OworCit9CisKK0BpbnRlcmZhY2Ug
V0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9y
YWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworICAgIFdlYWtPYmpDUHRyPGlk
IDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworfQorQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KaW5kZXggNzcwNzVi
ZDY2NGJiMWI5MTU3ZDgwM2E0ZmJhZWIxMzhiNzNiZjM0My4uY2YzNTdkZjBhYTI3MzA1ZDMwNmU0
N2Q5NmQ0OGI2YWQzNGZjNjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCkBAIC00NSw2ICs0NSwxMSBAQAogICAgIHJldHVybiBf
bmF2aWdhdGlvbi0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAorLSAoQk9PTClfd2Fz
VXNlckluaXRpYXRlZAoreworICAgIHJldHVybiBfbmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRl
ZCgpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoV0tDb250ZW50TW9kZSll
ZmZlY3RpdmVDb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDkzNDA3MGUzZGU0NDk4MmY1NzJi
ZDVhMTg4ZDEwY2I0OWNmNzIxMWYuLjkyZWYwZmY0ZTgxNjhmODU3MmQ3Mzg4OGNiNmEwOTc4NDdi
MjJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05h
dmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKIAorLyohIEBhYnN0cmFjdCBUaGUg
ZG93bmxvYWQgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50IHRoYXQgY2F1c2VkIHRoaXMgbmF2aWdh
dGlvbi4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5
KSBOU1N0cmluZyAqZG93bmxvYWRBdHRyaWJ1dGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKIC8q
ISBAYWJzdHJhY3QgVGhlIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3aGVuIHRo
ZSBuYXZpZ2F0aW9uIHdhcyByZXF1ZXN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCA0ZDIwYzgwY2Vj
MjZhN2MyODY5MmFhODZkMzRiNDBhNmI3NTBmMGJlLi5iYmVlOGZlNmJmZWVhOTA4NzM3NjFlYjll
ZWRjNjE5YTM2NmVlMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTExNiw2ICsxMTYsMTQgQEAgc3Rh
dGljIFdLU3ludGhldGljQ2xpY2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoV2ViS2l0OjpX
ZWJNb3VzZUV2ZW50OjpTeW50aGUKICAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnJlcXVl
c3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhU
VFBCb2R5KTsKIH0KIAorLSAoTlNTdHJpbmcgKilkb3dubG9hZEF0dHJpYnV0ZQoreworICAgIGF1
dG8mIGF0dHJpYnV0ZSA9IF9uYXZpZ2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJpYnV0ZSgpOwor
ICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0
dXJuIGF0dHJpYnV0ZTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXS1N5bnRo
ZXRpY0NsaWNrVHlwZSlfc3ludGhldGljQ2xpY2tUeXBlCiB7CkBAIC0xODcsNyArMTk1LDcgQEAg
c3RhdGljIFdLU3ludGhldGljQ2xpY2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoV2ViS2l0
OjpXZWJNb3VzZUV2ZW50OjpTeW50aGUKIAogLSAoQk9PTClfc2hvdWxkUGVyZm9ybURvd25sb2Fk
CiB7Ci0gICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQo
KTsKKyAgICByZXR1cm4gIV9uYXZpZ2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJpYnV0ZSgpLmlz
TnVsbCgpOwogfQogCiAtIChCT09MKV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFj
dGlvblByaXZhdGUuaAppbmRleCA4NWZkOTZlNGRkMGZlZmU2YmNmN2ZlZTlkNzhjNWU5OTJmNWJj
MzcyLi41M2NjNWE5N2M3ZWE5MjU0YTMyNTA0YTRkZTY0ZjZjM2ZmM2U1YTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb25Qcml2YXRlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgV0tTeW50aGV0aWNDbGlja1R5cGUpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBfY2FuSGFuZGxlUmVxdWVzdDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgQk9PTCBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjExKSwgaW9zKDkuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIF9zaG91bGRPcGVuQXBwTGlua3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlv
cyg5LjApKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVy
Zm9ybURvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRQZXJmb3JtRG93bmxv
YWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiZG93bmxvYWRBdHRyaWJ1dGUi
LCBtYWNvcygxMC4xNSwgV0tfTUFDX1RCQSksIGlvcygxMy4wLCBXS19JT1NfVEJBKSk7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkV4dGVybmFsVVJM
cyBXS19BUElfREVQUkVDQVRFRCgidXNlIF9zaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzIGFuZCBf
c2hvdWxkT3BlbkFwcExpbmtzIiwgbWFjb3MoMTAuMTEsIDEwLjExKSwgaW9zKDkuMCwgOS4wKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkRlbGVnYXRlLmgKaW5kZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4
NGEwNTg3OC4uMTY4Yjc5ZWNlMDY4ZjhiY2NmYTZjYWIwYzAxZmU4MWUzZTZiMjU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVn
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkRlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAorQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLTmF2
aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAgLTQwLDIwICs0
MSwyNCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29uc3RhbnQgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogIEBj
b25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdh
dGlvbiB0byBjb250aW51ZS4KKyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVj
b21lRG93bmxvYWQgICAgVHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQuCiAgKi8K
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkgewog
ICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywKKyAgICBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9h
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAog
fSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQGVudW0g
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kKICBAYWJzdHJhY3QgVGhlIHBvbGljeSB0byBwYXNz
IGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJvbSB0aGUgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0
YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0
aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICAgIEFsbG93
IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4gdGhlIG5hdmlnYXRpb24gaW50byBhIGRv
d25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsLAogICAg
IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3csCisgICAgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9z
KDguMCkpOwogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS05hdmlnYXRpb25EZWxl
Z2F0ZSBwcm90b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY0LDYgKzE2OSwyMiBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICovCiAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxsb3dEZXBy
ZWNhdGVkVExTOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyoKKyBAYWJzdHJhY3Qg
Q2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2Fk
LgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhlIGRvd25sb2Fk
LgorIEBwYXJhbSBuYXZpZ2F0aW9uQWN0aW9uIFRoZSBhY3Rpb24gdGhhdCBpcyBiZWluZyB0dXJu
ZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLwor
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6KFdL
RG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOworCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBU
aGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlv
blJlc3BvbnNlIFRoZSByZXNwb25zZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxv
YWQuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyovCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNw
b25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmgKaW5kZXggZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTVi
NS4uOTkxM2QxNmMwYTk3NjA0OTk0NjRjYzQzZWJhM2U0ZjE5ZTdkMGQxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaApAQCAtNTgsMTEgKzU4LDExIEBAIHR5cGVkZWYgTlNfRU5VTShO
U0ludGVnZXIsIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpIHsKICAgICBfV0tTT0F1dGhv
cml6YXRpb25Mb2FkUG9saWN5SWdub3JlLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1
KSwgaW9zKDEzLjApKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBf
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOwotc3RhdGljIGNvbnN0IFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9z
KDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5r
ID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURv
d25sb2FkICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEw
LjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKK3N0YXRpYyBj
b25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5n
QXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSko
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgKyAxKTsK
IAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwg
aW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBXS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCkBAIC04OCw2ICs4OCw4
IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRO
ZWdvdGlhdGVNb2Rlcm5UTFM6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVu
Z2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfd2ViVmlld0RpZEJl
Z2luTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAvLyBJdGVtIGlzIG5p
bCBpZiB0aGUgZ2VzdHVyZSBlbmRlZCB3aXRob3V0IG5hdmlnYXRpb24uCiAtICh2b2lkKV93ZWJW
aWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmln
YXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvblByaXZhdGUuaAppbmRleCA5MTU4OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdiNjFjMTdhMWYx
MzljLi5hN2E3ZDkyOWRmZjg3MDQzZTdmM2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2
YXRlLmgKQEAgLTI3LDQgKzI3LDUgQEAKIAogQGludGVyZmFjZSBXS05hdmlnYXRpb24gKFdLUHJp
dmF0ZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0
ICpfcmVxdWVzdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfd2FzVXNl
ckluaXRpYXRlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbC5tbQppbmRleCA0ZjM2ZTIzMjY0MzcxMDIzZDM4ZjI4MzgxMDc1MWJjYmE5
OTg1OWRjLi5mYWUzMWYzMWI3OTkxMjFkMGUxNzM3Y2QwNzIxMDg1NDk4MDIyMDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpA
QCAtMjgsMTEgKzI4LDEzIEBACiAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQuaCIKICNpbXBv
cnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBvcnQgIkRvd25sb2FkTWFuYWdlci5oIgogI2ltcG9ydCAi
TGVnYWN5RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBs
dWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVzLmgiCiAjaW1w
b3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgi
CiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCkBAIC00ODEsMTIgKzQ4MywxMiBA
QCBzdGF0aWMgV0tQcm9jZXNzUG9vbCAqc2hhcmVkUHJvY2Vzc1Bvb2w7CiAKIC0gKF9XS0Rvd25s
b2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRl
RGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQ
b29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3Bh
Z2VdLCByZXF1ZXN0KSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVE
YXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpXTsKIH0KIAogLSAoX1dLRG93bmxv
YWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRl
RGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5n
ICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBy
ZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93
ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91
dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKKyAgICByZXR1cm4gW19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3du
bG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6
OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoLCBXZWJL
aXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0OjpObykpXTsKIH0KIAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmgKaW5kZXggN2M0ZmU0Y2Q4ZmI5YWZmYThjYTAzMTliOTQ4OTNjMWY0ZTY4
OTY2Yy4uZjI0OTgwYzljZmY2N2VjZDNiZWRlNzNmZTI0MDA4MThhYTUwYzA0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKQEAgLTYyLDcgKzYyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1Z2luTG9hZENsaWVudFBvbGljaWVzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNlbmRpZgogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25sb2FkRGVsZWdh
dGU+IF9kb3dubG9hZERlbGVnYXRlOworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxv
YWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS0Rvd25sb2Fk
LmRvd25sb2FkRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdL
X0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9t
YXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVs
ZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7CiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCkBAIC04Myw4ICs4Myw5IEBACiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJM
U2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilzY2hlbWUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9XS0Rvd25sb2Fk
ICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7Ci0tIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21E
YXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFT
dG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCistIChfV0tEb3dubG9hZCAqKV9kb3dubG9hZFVSTFJlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0
YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcgX2Rvd25sb2Fk
UmVxdWVzdCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkp
OworLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUg
IHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3Ll9yZXN1
bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOiIsIG1hY29zKDEwLjEwLCBXS19N
QUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3VsZCBi
ZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcu
CiAtICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VycyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAppbmRleCA3NjFhMWRhMGY2NWIzNjk5N2JhYjQ5ZTY2YzJjMjhlOWZmMGIw
YzhjLi42Y2M4YTc0ODEwODY1NjM1OGMyZGU4ODJkNjc0ZjFmMzkzMzkxMTA2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0zOCw2ICszOCw3
IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBA
Y2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOwogQGNsYXNzIFdLQ29udGVudFdvcmxkOworQGNs
YXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGaW5kQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS0Zp
bmRSZXN1bHQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CkBAIC00NTAsNiArNDUxLDE4IEBAIFRoZSB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQg
dGhlIHJlbGF0ZWQgcGFzdGViCiAgKi8KICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJp
bmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4wKSk7
CiAKKy8qIEBhYnN0cmFjdCBCZWdpbnMgYSBkb3dubG9hZCBpbiB0aGUgY29udGV4dCBvZiB0aGUg
Y3VycmVudGx5IGRpc3BsYXllZCB3ZWJwYWdlIGFzIGlmIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0
ZSB0dXJuZWQgYSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZCBpbnN0ZWFkCisgQHBhcmFtIHJl
cXVlc3QgVGhlIHJlcXVlc3Qgc3BlY2lmeWluZyB0aGUgVVJMIHRvIGRvd25sb2FkLgorIEBwYXJh
bSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMg
c3RhcnRlZC4KKyAqLworLSAodm9pZClzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVx
dWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSlj
b21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworCisvKiBAYWJzdHJhY3QgUmVzdW1lcyBhIGRvd25sb2FkIHRoYXQgZmFp
bGVkIG9yIHdhcyBjYW5jZWxsZWQuCisgQHBhcmFtIHJlc3VtZURhdGEgRGF0YSBmcm9tIGEgV0tE
b3dubG9hZERlbGVnYXRlJ3MgZGlkRmFpbFdpdGhFcnJvciBvciBhIFdLRG93bmxvYWQncyBjYW5j
ZWwgY29tcGxldGlvbkhhbmRsZXIuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sg
Y2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZXN1bWVkLgorICovCistICh2b2lkKXJlc3Vt
ZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiBAYWJzdHJhY3QgVGhl
IG1lZGlhIHR5cGUgZm9yIHRoZSBXS1dlYlZpZXcKICBAZGlzY3Vzc2lvbiBUaGUgdmFsdWUgb2Yg
bWVkaWFUeXBlIHdpbGwgb3ZlcnJpZGUgdGhlIG5vcm1hbCB2YWx1ZSBvZiB0aGUgQ1NTIG1lZGlh
IHByb3BlcnR5LgogIFNldHRpbmcgdGhlIHZhbHVlIHRvIG5pbCB3aWxsIHJlc3RvcmUgdGhlIG5v
cm1hbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDJkZDdlYTVlYTljMTEzOTdiNzI3NDgxODI3NmE3NDhlMzBkOWM2NzQuLjFi
NDQ0NGE1NjIyN2E4MjM3ZjRhYWQ5MDIyZjUzYzJhMmFhMjNjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTgsOSArNTgsMTEgQEAK
ICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZElu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRXJy
b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGaW5kQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAi
V0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRnJhbWVJbmZvUHJpdmF0ZS5oIgog
I2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS0xheW91dE1v
ZGUuaCIKICNpbXBvcnQgIldLTWVkaWFQbGF5YmFja1N0YXRlLmgiCkBAIC03MDgsNiArNzEwLDQy
IEBAIHN0YXRpYyB2b2lkIGhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFuZ2VkQ2FsbGJh
Y2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsCiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxv
YWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxl
bmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJMLmFic29sdXRl
U3RyaW5nKSk7CiB9CiAKKy0gKHZvaWQpc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+ZG93bmxvYWRSZXF1ZXN0KHJlcXVlc3Qs
IFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChh
dXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCistICh2b2lkKXJlc3VtZURv
d25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gdW5hcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdG
cm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgIFt1bmFyY2hpdmVyIHNldERlY29k
aW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsK
KyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RP
ZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNB
cnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEg
Y2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6
QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisKKyAgICBpZiAoIXBhdGgpCisg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJJbnZhbGlkIHJlc3VtZSBkYXRhIl07CisKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19E
T1dOTE9BRFMpCisgICAgLy8gTW9qYXZlIENGTmV0d29yayBmYWlscyB0byByZXN1bWUgYSBkb3du
bG9hZCBpZiB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3QuCisgICAgLy8gSWYgc29tZW9u
ZSBoYXMgcmVtb3ZlZCB0aGUgZGVzdGluYXRpb24gZmlsZSwgbWFrZSBhbiBlbXB0eSBmaWxlIGF0
IHRoYXQgbG9jYXRpb24uCisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6cGF0aF0pCisgICAgICAgIFtbTlNEYXRhIGRhdGFdIHdyaXRlVG9G
aWxlOnBhdGggYXRvbWljYWxseTpZRVNdOworI2VuZGlmCisKKyAgICBfcGFnZS0+cmVzdW1lRG93
bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKSwgcGF0aCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3dubG9hZCkKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cit9CisKIC0gKFdLTmF2aWdhdGlvbiAq
KWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7
CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRl
bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdkYWRlZTY0OTNlZjc2M2ExNjE4MDc1ZDBk
Yy4uNTBhNjJiNTczMjQwOWVlZGFlZDc4MGFiZWY3YTM4NzlmNzQ4YjhmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0xMDksNiArMTA5LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOworQGNsYXNz
IFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVy
ZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggYjRkODI2YjlhNzI0Nzhm
ZDBjMDNlNmI0YjAxODlmMDcyOTljZWM3My4uZWE4MjAzMmExY2RhY2E2YjQ2ZTliYzFmY2EwNWQ4
ZGU5MDA0NWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogCiBAY2xhc3MgV0tGcmFtZUluZm87CiBA
Y2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKLVdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBX
S19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLRG93bmxvYWQgOiBOU09iamVjdCA8TlNDb3B5aW5n
PgogCi0tICh2b2lkKWNhbmNlbDsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpY2FuY2VsOwogLSAodm9pZClwdWJsaXNo
UHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40
KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KaW5kZXggZGZlZmUwZjE2NmE1NDlkZGU2NWJlMTAyMmViNWMxZmZkZWNj
MmRiYy4uZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMyZTA4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtMjgs
NjYgKzI4LDg3IEBACiAKICNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJE
b3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLUBpbXBs
ZW1lbnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6
RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KK3N0YXRpYyBOU01hcFRhYmxlPFdLRG93bmxvYWQgKiwgX1dLRG93bmxvYWQgKj4gKmRv
d25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQoKSkKKyAgICAgICAgdGFi
bGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRhYmxlXTsKKyAgICBy
ZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9u
cyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9XQVJOSU5HU19FTkQKIAot
LSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZDI6KFdLRG93
bmxvYWQgKilkb3dubG9hZAogewotICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBf
ZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4gc2VsZjsKK30KIAotICAgIFtzdXBlciBk
ZWFsbG9jXTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW2Rvd25sb2Fk
V3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9hZF0pCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxvYWQgYWxsb2NdIGlu
aXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07CisgICAgW2Rvd25sb2FkV3Jh
cHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07CisgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7Ci0gICAgX2Rvd25sb2FkLT5jYW5jZWwo
W2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7CisgICAgX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxvYWQtPl9kb3du
bG9hZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlkQ2Fu
Y2VsKGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0KIAogLSAodm9pZClwdWJsaXNoUHJvZ3Jl
c3NBdFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhV
UkwpOworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKIH0K
IAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfZG93bmxvYWQtPnJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+cmVxdWVz
dCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2ViVmlldwogewot
ICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFn
ZSgpKQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9h
ZC0+b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHko
Km9yaWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIG5pbDsK
IH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgogewotICAgIHJldHVybiBj
cmVhdGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAt
PiBOU1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPl9kb3dubG9h
ZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAqIHsKICAgICAgICAg
cmV0dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKXdhc1VzZXJJ
bml0aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7Cisg
ICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7CiB9CiAK
IC0gKE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9k
b3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVy
KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwogfQogCiAtIChXS0Zy
YW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVy
KCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZf
ZG93bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwogfQogCiAtIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3IEBACiAKIC0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQ7CisgICAgcmV0dXJuICpfZG93bmxv
YWQtPl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggYTgzZjkwMjliNWM3
M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0
NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBACiAKIEBwcm90
b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dL
RG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykp
OwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBh
bGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJ
VEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4
LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5h
bC5oCmluZGV4IGUxMjkwYjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDkyZDQwMTIuLmNhOTRj
MjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaApAQCAt
MjUsMTYgKzI1LDEyIEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAKLSNpbXBvcnQgIkRv
d25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPERvd25sb2FkUHJveHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tEb3du
bG9hZDsKLX07CitAY2xhc3MgV0tEb3dubG9hZDsKIAorQGludGVyZmFjZSBfV0tEb3dubG9hZCAo
KSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgUmV0YWluUHRyPFdLRG93bmxvYWQ+IF9kb3du
bG9hZDsKIH0KLQotQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3du
bG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRhMWZjOGNkYWZlOTIx
MTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
KyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3RpbmF0aW9uQ3JlYXRl
ZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93
bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmluZGV4IDc1ZDUxMjIx
ZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0ODg0ZjkyZjUxNjVk
MGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoK
ICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50Ci0gICAgdm9p
ZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBsZWdhY3lEaWRTdGFy
dChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2
NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goRG93bmxv
YWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSopIGZpbmFs
OwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggM2QzMWJkYmY0M2Ez
NmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjA3NTYyYWVlODhlNzY2OWY4ZDkxODZmZGQ4
MjRiNjM1OTU1YzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkRv
d25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlN5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtNDcsNiArNDgsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKwog
TGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9h
ZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CkBAIC03
Niw3ICs3OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lzdGVtUHJldmll
d0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5kaWYKIAotdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChk
b3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTkwLDcgKzkzLDcg
QEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIo
ZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpb
X1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1d
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnMK
ICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNV
UkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEsOSBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdAogI2Vu
ZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3Rh
bEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCi0gICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRlRGF0YTpieXRlc1dy
aXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVu
OnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
aWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwogfQogCiB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyArMTM0LDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25s
b2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0
aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChjaGVj
a2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcs
NyArMTcwLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRp
b24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY28KICNlbmRpZgogCiAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3Rp
bmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRD
cmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAt
MTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFz
aChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBOTzsKICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxs
b3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0
aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwogICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVy
d3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0
cmluZyAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25s
b2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5k
bGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
Qk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2LDEwIEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlm
CiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsK
KyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKLXZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKQogewogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
KSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFp
bChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjoKICNlbmRpZgog
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhFcnJv
cjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZEZh
aWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0y
NjMsMTMgKzI2NiwxMyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5j
ZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZERpZENhbmNlbDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsK
KyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhE
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCld
XTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQpAQCAtMzAx
LDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRv
a2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB9CiAjZW5kaWYKIAorQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCAw
NDJlNzg4NTQxMWQ0MTc3ZmNlOWM2NzVlZDhkNDhmMTJiYjNkNGQ2Li45Njc4MzdhZmUxNGJkODM1
NGM1NmQ2YmVmZTVkMjkxMzc2YWI4N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2LDYgKzEyNiwxMCBAQCBwcml2YXRlOgog
CiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRy
PEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAor
ICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAg
ICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAg
ICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBEb3du
bG9hZFByb3h5JikgZmluYWw7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzUsNiArMjM5LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZl
IDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3IDogMTsKKyAg
ICAgICAgYm9vbCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgOiAxOworICAgICAg
ICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkIDogMTsKKyAgICAgICAg
Ym9vbCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgICAgICBib29sIHdlYlZpZXdE
aWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0
aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBlN2NiMDgzYzRmZjJiMzM5MDkzZDcx
OTQ4M2I1OTRjODA1ZmQ1NGVjLi5iMzhmY2ZmZTIyZDdiY2I5OWI4ZjBlMGY3MGZlOWY2ZGJmMmNk
NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25Db29yZGlu
YXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIaXN0
b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpAQCAtMTg3
LDYgKzE4OCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUo
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVj
b21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6
KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3RlcktleUZv
cldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5
cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uQWN0aW9uOmRpZEJlY29tZURv
d25sb2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25sb2FkOildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6
KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdh
dGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25H
ZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRo
TmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmln
YXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC00NzIsMTEgKzQ3NiwxMCBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBOU1VSTFJl
cXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2
aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVj
dGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1l
SGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewotICAgICAgICAg
ICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAg
ICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9s
aWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxl
UmVxdWVzdDpuc1VSTFJlcXVlc3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJsU2No
ZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAgICAg
ICAgICAgIHx8IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9i
Il0pIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNp
ZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAt
NTU1LDkgKzU1OCwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAg
ICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAg
ICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAgICAgICAgIGNh
c2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5k
b3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAgICAgICAgIHRy
eVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQYWdlUHJveHks
IFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVz
ID0gV1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTY3MSw3ICs2NzcsNyBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKFdlYlBhZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3Jl
KCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3du
bG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwODUsNiArMTA5MSw0
MiBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3Jl
YXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5k
ZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25s
b2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlv
biwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIGlmICgh
bmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbbmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRp
b25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKV07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlvblJlc3BvbnNlLCBEb3dubG9hZFByb3h5
JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxl
Z2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSB3
ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uUmVzcG9uc2U6d3Jh
cHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIoZG93bmxv
YWQpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQcm94eSYgZG93
bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmln
YXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpICBfd2ViVmlldzptX25hdmlnYXRpb25T
dGF0ZS5tX3dlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQppbmRleCA4NjYyMzhiYWZlOGYwNWMxN2EyM2Q2ZjljYzk5YTIxMDE0ZGQ5MzEwLi43YTU4M2My
ZTFlN2U4ZGIzMGExYjcwNTFhYzlhOWZkYzRhN2I0YTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIK
IAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBvcnQgIkhpZ2hQZXJm
b3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNP
YmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0
Y2QwNzdmMzYuLmRjMTAxYjY2Y2IwY2UzZGFlZDhjYmIzMTFmNzcyMjQzZWEzODkxMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJveHkoRG93bmxv
YWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7CiB9CiAKLURv
d25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxvYWRQcm94eTo6
fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAg
IG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0cjxBUEk6OkRh
dGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewpAQCAtMTE3
LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RD
aGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1ZXN0LnVybCgp
KQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkpOwogCi0gICAg
bV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQor
ICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQtPmxlZ2FjeURp
ZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNDUsOCArMTUxLDE2IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1
aW50NjRfdCB0b3RhbEJ5dGVzV3JpCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCp0aGlz
LCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKTsKIH0KIAotdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Y29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jYXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQt
RGlzcG9zaXRpb24gaGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQg
ZmlsZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIGlmIChyZXNwb25zZS5p
c0F0dGFjaG1lbnRXaXRoRmlsZW5hbWUoKSB8fCAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgp
ICYmIG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgc3VnZ2VzdGVkRmls
ZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIGVsc2UgaWYgKCFtX3N1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBt
X3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdp
c3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCBy
ZXNwb25zZS5taW1lVHlwZSgpKTsKKwogICAgIG1fY2xpZW50LT5kZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNlUmVzcG9uc2VCYXNl
OjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChBbGxvd092ZXJ3cml0ZSBh
bGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlm
ICghZGVzdGluYXRpb24uaXNOdWxsKCkpCkBAIC0xNzMsMTEgKzE4NywxNiBAQCB2b2lkIERvd25s
b2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVz
dW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3IpOworICAgIG1f
Y2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRhLmdldCgpKTsK
IAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBk
ZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsK
IH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGll
bnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2EzNWRmN2VkYTlj
MzI5MmMxZjcxOGE0Yy4uMzE4OTVmNTY1OTk5NzllZjMyY2RjMTZiYjg5NDM0NTBkMTVhOTFiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5oCkBAIC0xMDIsMTIgKzEwMiw5IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1lSW5mbyYgZnJh
bWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQSTo6RG93bmxv
YWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURh
dGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0KLSAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDbGllbnQoUmVm
PEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRDYWxsYmFjayhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFjaykgeyBtX2Rp
ZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZvaWQgc2V0U3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkgeyBtX3N1Z2dlc3Rl
ZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7IH0KIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxl
cnMuCiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTExOCw3ICsxMTUsMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
KTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiBy
ZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0
UmVzcG9uc2UpOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vi
c2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7CisKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICBEb3dubG9hZFBy
b3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+
IG1fZGF0YVN0b3JlOwpAQCAtMTM0LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVS
TD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9
OwogICAgIFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggN2IyNDVlM2MwNDg1YzUzY2I3
OTNmM2Y0YzJiNzBhYjNkZDAxYjg1MS4uYmEzN2E4YzE3OWEwMDIxZGVlMGIxZTUzOTE1NWU5YmUz
NGEzZjcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEu
aCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUg
IkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5
Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMTFhOGVjYTlhNGYwYmFhNDQzN2E1NDA4ZDY1ZmRm
OWM4MjVlYmIzZi4uM2MyMjU2MDJmZjExZWRiZjIzYWUzYjk1NmU0Yjg4ZTk2NzhjMTQxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBA
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0z
MTI4LDcgKzMxMjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50
aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogI2VuZGlmCiB9CiAKLXZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+
JiYgbmF2aWdhdGlvbkFjdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVk
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0aW9uSUQ6ICVs
bHUsIHBvbGljeUFjdGlvbjogJXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdh
dGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFj
dGlvbik7CiAKQEAgLTMxNjgsNyArMzE2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZl
ZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAg
ICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFjdGlvbjo6RG93bmxvYWQ7CiAKICAgICBpZiAo
cG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlvbjo6VXNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgp
IHx8ICFuYXZpZ2F0aW9uKSB7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsK
KyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24s
IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNl
bmRlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTgxLDExICszMTgyLDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24s
IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5h
dmlnYXRpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCisgICAg
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZp
Z2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtl
UmVmKCpuYXZpZ2F0aW9uKSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAgICAgICAg
cG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRl
ZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhl
IG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4K
ICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRp
b24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xp
Y2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMSwxMSArMzIyMiwxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nl
c3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdU
Rk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsK
KyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24u
cHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBX
VEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9u
YWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQ
STo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0
aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNlbmRlci0+
c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDEsNiArMzI0MiwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmln
YXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAg
ICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURh
dGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRp
b24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7
IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UgPSBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlKV0gKGF1dG8qIGRvd25sb2FkUHJveHkpIHsK
KyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRvd25sb2FkUHJveHkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihuYXZpZ2F0aW9uQWN0aW9u
T3JSZXNwb25zZSwKKyAgICAgICAgICAgICAgICBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZT4mIHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9u
c2UtPmRvd25sb2FkQXR0cmlidXRlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb3dubG9hZFByb3h5LT5zZXRTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZS0+ZG93bmxvYWRB
dHRyaWJ1dGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIHJlc3BvbnNlLmdldCgpLCAq
ZG93bmxvYWRQcm94eSk7CisgICAgICAgICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8QVBJOjpO
YXZpZ2F0aW9uQWN0aW9uPiYgYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKCp0aGlzLCBhY3Rp
b24uZ2V0KCksICpkb3dubG9hZFByb3h5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICApOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAg
IGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRl
ZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+
dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDkxLDEwICs1MTA1LDI5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAgICAgbmF2aWdhdGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFtZUluZm8ob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhKTsKICAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZy
YW1lU2VjdXJpdHlPcmlnaW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKIAorICAgIEFQSTo6
TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBu
YXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKKyAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGlu
Z0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJG
cmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBh
dXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KGZyYW1lSW5mbyksIHRoaXMpOworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJh
bWVJbmZvOworICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkK
KyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigp
OworICAgIGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgIGF1dG8qIG9yaWdpbmF0aW5nUGFn
ZSA9IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdl
SUQpIDogbnVsbHB0cjsKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFn
ZSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBw
cmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCisgICAgICAgICYmIGRl
c3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpCisgICAgICAgICYmIChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpKQor
ICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3Jl
OjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYXV0byBuYXZpZ2F0aW9uQWN0
aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRy
KCksIFdURjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVl
c3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZp
dHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKKwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklO
RykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9u
KHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
cywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBp
dCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUt
Pm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUs
IG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlm
CiAKQEAgLTUxMDYsMTEgKzUxMzksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5S
ZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6WWVzOwogI2VuZGlmCi0g
ICAgCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFr
ZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgZnJhbWVJ
bmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5n
PiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKworICAgIGF1dG8gbGlzdGVuZXIgPSBt
YWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZN
b3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNl
ckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNB
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxl
ZDogZnJhbWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lBY3Rpb246ICV1LCBz
YWZlQnJvd3NpbmdXYXJuaW5nOiAlZCwgaXNBcHBCb3VuZERvbWFpbjogJWQiLCBmcmFtZS0+ZnJh
bWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFp
c0FwcEJvdW5kRG9tYWluKTsKIAotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmln
YXRpb24sIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0
cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwg
c2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0g
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
cG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFwb2xpY2llcykgewogICAgICAgICAgICAgICAgICAgICBpZiAo
YXV0byogZGVmYXVsdFBvbGljaWVzID0gbV9jb25maWd1cmF0aW9uLT5kZWZhdWx0V2Vic2l0ZVBv
bGljaWVzKCkpCkBAIC01MTE5LDcgKzUxNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
ICAgICAgICAgICAgICAgIGlmIChwb2xpY2llcykKICAgICAgICAgICAgICAgICAgICAgbmF2aWdh
dGlvbi0+c2V0RWZmZWN0aXZlQ29udGVudE1vZGUoZWZmZWN0aXZlQ29udGVudE1vZGVBZnRlckFk
anVzdGluZ1BvbGljaWVzKCpwb2xpY2llcywgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSkp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7Cisg
ICAgICAgICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24s
IG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5k
ZXIpKTsKICAgICAgICAgfTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUx
ODYsMTAgKzUyMTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGF1dG8gcHJvdG9j
b2wgPSBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID8gZnJhbWVJbmZvLnNlY3VyaXR5T3Jp
Z2luLnByb3RvY29sIDogcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpOwogICAgIG1fd2Vic2l0ZURh
dGFTdG9yZS0+YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGhvc3QudG9TdHJpbmcoKSwgcHJvdG9j
b2wudG9TdHJpbmcoKSwgbGlzdGVuZXIpOwogI2VuZGlmCi0gICAgQVBJOjpOYXZpZ2F0aW9uKiBt
YWluRnJhbWVOYXZpZ2F0aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0
KCkgOiBudWxscHRyOwotICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgOiBudWxscHRyOwogCi0gICAgYXV0byB1c2VySW5p
dGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlv
bkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5
VXNlciA9IG5hdmlnYXRpb24tPmlzTG9hZGVkV2l0aE5hdmlnYXRpb25TaGFyZWQoKSB8fCB1c2Vy
SW5pdGlhdGVkQWN0aXZpdHk7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQpA
QCAtNTE5NywyNCArNTIyNyw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjZW5kaWYKIAog
ICAgIGlmIChtX3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9wb2xpY3lDbGllbnQt
PmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAg
ICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKGZyYW1lSW5mbyksIHRoaXMpOwotICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNv
dXJjZUZyYW1lSW5mbzsKLSAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUg
PT0gJmZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFt
ZUluZm8uY29weVJlZigpOwotICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkgewotICAgICAgICAg
ICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53
ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOwotICAgICAgICAgICAgc291cmNl
RnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29s
IHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24KLSAgICAgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZv
LT5pc01haW5GcmFtZSgpCi0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJh
bWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKLSAgICAgICAgICAgICYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRp
b25UeXBlOjpCYWNrRm9yd2FyZDsKLQotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBB
UEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRh
KSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RG
OjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3Vs
ZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVO
YXZpZ2F0aW9uKTsKLQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAgaWYgKG1fc2hvdWxkU3Vw
cHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gfHwgbV9z
aG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluQWxsTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
KQogICAgICAgICAgICAgbmF2aWdhdGlvbkFjdGlvbi0+dW5zZXRTaG91bGRQZXJmb3JtU09BdXRo
b3JpemF0aW9uKCk7CkBAIC01MzE2LDcgKzUzMzAsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJh
bWUKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hF
Q0tfVVJMKG1fcHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0g
bWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURdIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRy
PFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11
dGFibGUgeworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAg
IGlmIChmcmFtZSkKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOworCisgICAgYXV0byB1c2VySW5pdGlhdGVk
QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJl
cXVlc3QudXJsKCkuaG9zdCgpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2
aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3Vy
Y2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwg
VVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSkpOworICAgIAorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGlj
eUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRl
bnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJy
b3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBu
dWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQ
b2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2Fybmlu
Zyk7CkBAIC01MzI1LDI0ICs1MzQ3LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAg
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAg
ICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxw
dHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBX
VEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6
Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogCiAgICAgaWYgKG1f
cG9saWN5Q2xpZW50KQotICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0
LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRs
ZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAg
ICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Ci0gICAgICAgIGlmIChm
cmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKLQotICAgICAgICBhdXRvIHVzZXJJbml0aWF0
ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgp
ICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24g
PSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25E
YXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUo
cmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlh
dGVkQWN0aXZpdHkpKTsKLQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCksIHJl
cXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
Ci0KLSAgICB9Ci0gICAgICAgIAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLApAQCAtNTM2Myw4ICs1Mzc0
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJv
Y2VzcywgcmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVz
cG9uc2UudXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBu
YXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQp
IDogbnVsbHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5m
byksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3du
bG9hZEF0dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0
VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlv
biA9IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2lu
Z1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAg
ICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+
JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBG
SVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9u
Y2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdh
eS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9
PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVT
RUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM3Mywx
NCArNTM4NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1l
SUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7
CiAgICAgICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxw
dHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9
LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3Vu
ZERvbWFpblJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNw
b25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwot
ICAgIGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdh
dGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1l
SW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBk
b3dubG9hZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
PmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0
aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQpAQCAtNjAxOSw2ICs2MDMwLDE4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9h
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRs
ZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1
bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5y
ZXN1bWVEb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgs
IENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2Fs
bGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94
eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxv
YWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2Fk
LnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CkBAIC02
NTg4LDE4ICs2NjExLDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgICAgICByZXR1cm47
CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVt
VGFnRG93bmxvYWRJbWFnZVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZl
Q29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1h
Z2VVUkwpKTsKLSAgICAgICAgcmV0dXJuOyAgICAKLSAgICB9CisgICAgc3RydWN0IERvd25sb2Fk
SW5mbyB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZTsKKyAgICB9OworICAgIE9wdGlvbmFsPERvd25sb2FkSW5mbz4gZG93bmxvYWRJbmZvOwor
ICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VU
b0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7IG1fYWN0aXZlQ29udGV4dE1lbnVDb250
ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwgfX07CiAgICAg
aWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNr
KSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RSZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBo
aXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3Rl
ZEZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXRlbS5hY3Rpb24o
KSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0gICAgICAgIG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMs
IFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1
bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGRv
d25sb2FkSW5mbyA9IHt7IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLCBoaXRUZXN0UmVz
dWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSB9fTsKKyAgICB9CisgICAgaWYgKGl0ZW0uYWN0aW9u
KCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykKKyAgICAgICAgZG93
bmxvYWRJbmZvID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RS
ZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCB9fTsKKyAgICBpZiAoZG93bmxvYWRJbmZvKSB7
CisgICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25s
b2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBkb3dubG9hZEluZm8tPnVy
bCksIGRvd25sb2FkSW5mby0+c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBkb3dubG9hZC5z
ZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0g
KGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9h
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoKnRoaXMsICpkb3dubG9hZCk7CisgICAg
ICAgIH0pOwogICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1U
YWdDaGVja1NwZWxsaW5nV2hpbGVUeXBpbmcpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldENv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA5ZmNiZDU4OTBjYWViNmFkMTA1NzdjYzA1ZGY4M2NjYjg1NmRhMWVlLi45
YTYwMTFkNWYxYTk1OThkZjAyNmJkZmRlZDZlMTE5M2U2ZDE0YTA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTE2Miw4ICsxMTYyLDggQEAgcHVibGljOgogCiAg
ICAgY2xhc3MgUG9saWN5RGVjaXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBS
ZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4m
JiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVl
TG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKLSAg
ICB2b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2Vi
RnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURl
Y2lzaW9uU2VuZGVyPiYmKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29y
ZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9s
aWNpZXM+JiYsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6
TmF2aWdhdGlvbkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0Zv
cndhcmRSZW1vdmVkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
Jik7CiAKQEAgLTEyNzcsNiArMTI3Nyw4IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJl
YVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CiAKICAg
ICB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCBy
ZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOworICAgIHZv
aWQgZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05l
eHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5n
ZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYWEyNzhlYWMyMjlmMDg3MTA0MWJhMzNmNzkw
OTljZWU2Njg2Y2VlNi4uODg1NDE3ZDIxMGY3NmM2OTlkYzU2ZWIwYTc0YjhlNjI0YTIzNTFmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE0Nyw3
ICsxMTQ3LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3gKICAgICByZXR1cm4gZG93bmxvYWRQ
cm94eTsKIH0KIAotRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3du
bG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRh
dGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQg
Y2FsbERvd25sb2FkRGlkU3RhcnQpCiB7CiAgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0
ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCBSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1Bh
Z2UsIHsgfSk7CiAKQEAgLTExNTUsNyArMTE1NSw3IEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nl
c3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBh
CiAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSk7CiAKLSAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNlc3Np
b25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJl
bmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICBkYXRhU3RvcmUu
bmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93
bmxvYWQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwg
cmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IGNhbGxEb3dubG9hZERpZFN0YXJ0KSwgMCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDQ3ODVhNTQy
MDZiY2Y2YzM4ZGIzM2FjNjVkYmE1YTRhMDU5NjU4MjAuLjMyN2ZlY2U0NzkxNmMzNGE1MDQ2ZDY0
ZjIwMjk0YTEzYmFmNWMxNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaApAQCAtMTE2LDYgKzExNiw3IEBAIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50
IHdlYlByb2Nlc3NUaHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKIAorZW51bSBjbGFzcyBDYWxsRG93
bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgOiBib29sOwogCiBjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sPiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFdlYlByb2Nlc3NQb29sPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7
CkBAIC0yMDQsNyArMjA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBEb3dubG9hZFByb3h5
JiBkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFn
ZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vi
c2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6
RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBEb3dubG9hZFByb3h5
JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0
aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhKFJlZlB0cjxBUEk6Ok9iamVjdD4mJiB1c2VyRGF0YSkgeyBtX2lu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IFdURk1vdmUodXNlckRhdGEpOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDdlN2YxNjkwOGQyMmVjYzVhOTE2YTQzZDVjYmRlYmViZTFmOTVhMDkuLjVjYzZmNzdkM2Fl
YzQ1ODMyOTMyZWUwNmQ4MzAwYmQwMjJmY2E1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4LDcgKzIxOCw2IEBACiAJCTFBNDNF
ODJBMTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDNFODI4MTg4RjND
REMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0
QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAv
KiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDQ1QkExMTg0RDVGQzEwMDRCMzQxNCAvKiBX
S0NvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9y
eUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTFBNDQ1QkEzMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTIx
ODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTUxODRENUZEQTAw
NEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0ODMyQ0MxQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0
ZURhdGFSZWNvcmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBNDgzMkNBMUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTQ4MzJDRTFB
OUJDNDg0MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDRDFBOUJDNDg0MDA4
QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggKi87IH07CkBAIC0zMzEsNyAr
MzMwLDcgQEAKIAkJMUFCN0Q0Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM4MTI4
OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggKi87IH07CiAJCTFBQjdENjE5MTI4OEI5
RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCN0Q2
MUExMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZE
MDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oICovOyB9OwotCQkxQUI3RDc4RDEyODhDRDlB
MDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUI3RDc4
RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdL
RG93bmxvYWRSZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkxQUI4QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFQjE4
NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUUxODQwMEFDQjAwRTlBRTY5
IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUFCOEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFBQjhBMUYwMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRjE4NDAwQjAwMDBF
OUFFNjkgLyogV0tQYWdlRm9ybUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMTc4LDYgKzExNzcsNyBAQAogCQk1QzIwQ0JBMDFCQjFF
Q0Q4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3Jr
U2Vzc2lvbi5oICovOyB9OwogCQk1QzI2OTU4NTIwMDQzMjEyMDA1QzQzOUIgLyogV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMyNjk1ODQyMDA0MkYxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1l
dGVyc1ByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzI5OERBMDFDM0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RF
RjI5MDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi87IH07CisJCTVDMkVCREZBMjU2NDM4
MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3du
bG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTVDMzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1NDczMjEw
MDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1QzQ2MDlFNzIyNDMxN0I0MDA5OTQzQzIgLyogX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NUM0NjA5RTgyMjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQ2
MDlFNDIyNDMwRTREMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwu
aCAqLzsgfTsKQEAgLTE4MTQsNiArMTgxNCw5IEBACiAJCUNFRTRBRTJCMUE1RENGNDMwMDAyRjQ5
QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0VFNEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07CiAJCUQz
Qjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAv
KiBXZWJQb3B1cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5o
ICovOyB9OworCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjQyNTJFQ0I4
RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CisJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJCMjUyRUQ0
NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rv
d25sb2FkSW50ZXJuYWwuaCAqLzsgfTsKIAkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdL
SFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0
b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTEx
MjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjg0Q0VFNDI0OUFBMjREMDA5
MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gREY4NENFRTIyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5t
bSAqLzsgfTsKQEAgLTI0NDMsNyArMjQ0Niw2IEBACiAJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQz
MCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRIaXN0b3J5Q2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAv
KiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0NvbnRleHREb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkMxMUE5NjVBM0Mw
MDhCNERGRSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkM5MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVE
YXRhUmVjb3JkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tX
ZWJzaXRlRGF0YVJlY29yZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2Mzks
OCArMjY0MSw4IEBACiAJCTFBQjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHkubWVzc2Fn
ZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENjE3MTI4OEI5RDkwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVy
LmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCN0Q2MTgxMjg4
QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZFByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdL
RG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tEb3du
bG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhCMTI4OENEOUEw
MENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLRG93bmxvYWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3
OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tEb3dubG9hZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZGVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVEMTg0MDBBQ0IwMEU5QUU2
OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tQYWdlUG9saWN5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QjhBMUVGMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUZvcm1DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQwOTAsNiArNDA5Miw3IEBACiAJCTVDMkIxQUYzMjIzQUI3MjgwMEI5
MUNGNyAvKiBEb3dubG9hZE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG93bmxvYWRNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMyQjFBRjQyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERvd25sb2FkUHJv
eHlNYXBDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERv
d25sb2FkUHJveHlNYXBDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMy
RUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0
ZVBvbGljaWVzRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0
NjA5RTIyMjQzMEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzNTAsNiArNTM1MywxMCBAQAogCQlEM0I5
NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEM0I5NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViU2VhcmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURG
MEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBE
OTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLRG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFEMDBFRkYz
NUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NDg4LDYgKzc0OTUsMTAgQEAKIAkJCQk1Q0Uw
QzM2ODIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAog
CQkJCTVDRTBDMzZCMjI5RjJENEIwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9J
bnRlcm5hbC5oICovLAogCQkJCTVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRN
ZW51RWxlbWVudEluZm9Qcml2YXRlLmggKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURC
IC8qIFdLRG93bmxvYWQuaCAqLywKKwkJCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tE
b3dubG9hZC5tbSAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9h
ZERlbGVnYXRlLmggKi8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxv
YWRJbnRlcm5hbC5oICovLAogCQkJCTFBRjQ1OTJEMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9y
LmggKi8sCiAJCQkJMUFGNDU5MkMxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gKi8sCiAJ
CQkJMUEyRDI1MkExOTQ2ODhGRDAwNDUzN0IwIC8qIFdLRXJyb3JJbnRlcm5hbC5oICovLApAQCAt
OTQ1MCw3ICs5NDYxLDYgQEAKIAkJCQkxQUU1MkY5MzE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJMUFFNTJGOTQxOTIwMUY2QjAwQTFGQTM3
IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCAqLywKIAkJCQkxQTQ0NUJBNDE4NEQ1RkRB
MDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovLAotCQkJCTFBNDQ1QkEy
MTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovLAogCQkJCTFB
NDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJ
CQkJMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmggKi8sCiAJCQkJQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVM
aXN0ZW5lci5jcHAgKi8sCkBAIC05NDYxLDggKzk0NzEsOSBAQAogCQkJCTUxMkY1OEYxMTJBODhB
NTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQw
MDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAqLywKIAkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRC
ODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCAqLywKLQkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQw
OEMgLyogV0tEb3dubG9hZC5jcHAgKi8sCi0JCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWQuaCAqLywKKwkJCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3du
bG9hZENsaWVudC5oICovLAorCQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkUmVmLmNwcCAqLywKKwkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9h
ZFJlZi5oICovLAogCQkJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNz
aW9uTGlzdGVuZXIuY3BwICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zv
cm1TdWJtaXNzaW9uTGlzdGVuZXIuaCAqLywKIAkJCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcg
LyogV0tGcmFtZS5jcHAgKi8sCkBAIC0xMTc3Myw3ICsxMTc4NCw2IEBACiAJCQkJQkNCOUUyNEIx
MTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJG
OTgxOTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkEx
MTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5k
bGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFDNCAv
KiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMTE4MDYsOCAr
MTE4MTYsMTIgQEAKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEgLyogV0tET01SYW5nZVBy
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBX
S0RPTVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRGNSAv
KiBXS0RPTVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCN0Q3OEQxMjg4Q0Q5
QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUy
RUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJFQkRG
QTI1NjQzODBCMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREYwQzVGMkEyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdL
RG93bmxvYWRQcm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAw
Q0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MDlCQTE4MUU2
RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkVDRjY2Q0UyMUQ2Qjc3RTAwOUU1QzNGIC8qIFdLRWRpdENvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBRjQ1OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBmMzc1MzA0NDM2MzM2Zjg0YTVjMzZkMzIxMWQ4MTljZWJiNzQxODExLi4wMWU1MTM5Y2Y1
ZWQ3NzhjMzM1ZmJiN2ZjODk4ZDFiNzA4MDIyMTRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMjAtMTEtMTggIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRy
b2R1Y2UgbmV3IGRvd25sb2FkIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0
aW5hdGlvbkNyYXNoLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpzZXRQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250ZXh0RG93bmxvYWRD
bGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21h
Yy9Db250ZXh0TWVudURvd25sb2FkLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRh
aW5pbmdTbGFzaGVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgICgtW0JlY29tZURvd25sb2FkRGVsZWdhdGUg
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW06CisgICAgICAgICgtW0NvbnZlcnRSZXNwb25zZVRvRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVt
b3J5Q2FjaGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0
aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9t
TWVtb3J5Q2FjaGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAg
ICAgIChURVNUKToKKyAgICAgICAgKGRvd25sb2FkVGVzdFNlcnZlcik6CisgICAgICAgIChjaGVj
a1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKToKKyAgICAgICAgKHNpbXBsZURvd25sb2FkVGVzdFNl
cnZlcik6CisgICAgICAgIChjaGVja0ZpbGVDb250ZW50cyk6CisgICAgICAgICh0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QpOgorICAgICAgICAoLVtEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6
XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdXRhdGVGaWxlKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAg
ICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAg
ICAoLVtQU09OTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVk
RmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3du
bG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOl0p
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRGYWlsV2l0aEVy
cm9yOnJlc3VtZURhdGE6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZp
ZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25sb2FkOl0pOgorICAgICAgICAoLVtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxl
Z2F0ZSB0YWtlQ2FsbGJhY2tSZWNvcmRdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9h
ZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVSZXNwb25zZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZERpZEZpbmlzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0p
OiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUuaDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5oLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0uCisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6
XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRS
ZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rv
d25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6Om5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZCk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZpbmlzaCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZFN0YXJ0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRDYW5jZWwpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKwogMjAyMC0xMS0xMyAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2J1aWxkLndlYmtpdC5vcmddIFVwZGF0ZSBSdW5BUElUZXN0cyBzdGVw
IGZvciBuZXcgYnVpbGRib3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNl
c0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAppbmRleCBk
OTdmMjY2ZTQwNWVjZmFhNDE0MTk0NTk5MDg4YWQ1NDBiZDRkMDllLi5mNWE5ZDIxNzY1ZjY4YWYy
MmZmYjk0ZTM4NTIzZDdkNjQ5ZTQ1MWZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMubW0KIGNv
Y29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rlc3RDb2NvYS5tbQogY29jb2Ev
VGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2NvYS9UZXN0UHJvdG9jb2wu
bW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDlm
OTY1MzE0ODA5NzBjNTMzNGM3NjMzOTc0YmJlMWUyN2QzMDM1M2EuLmVmNGU1ODNhNTM3YTE3MmRm
MTk5MDFiNTE0OWY2ZWVmYWI5ZWIxMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjA5
LDggKzIyMDksOCBAQAogCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1
cmluZ05hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM2RTI3QTYyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRpb24ubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDYW5vbmljYWxpemF0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzcxNDg5NDIxMjNBNDA3MDBG
REUzQzUgLyogV0tXZWJzaXRlRGF0YXN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YXN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdh
dGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RE
b3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAv
KiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3
MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3M0E4MUEyMzIzMDU5ODAwREVBODVBIC8q
IFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzU3
MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIwMjY5QjAwNzVENzRD
IC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI3
OTMsNiArMjc5Myw4IEBACiAJCUQzQkU1RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dlYlZpZXdH
ZXRDb250ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
V2ViVmlld0dldENvbnRlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzY5
QUE2MjFDRjc3QzY1MDBDNjI3MkYgLyogU2NvcGVkTGFtYmRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZExhbWJkYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVt
cHR5RGljdGlvbmFyeUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9h
ZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUu
bW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBj
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlERkI4RkYzMTI0OTJGNTFBMDBGMDBCMEQgLyogUHJlY29ubmVjdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWNvbm5lY3QubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURp
c2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIyODdE
MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0zMTEzLDggKzMxMTUsMTAgQEAKIAkJCQlDRTY0MENBNjIzNzBBNEYzMDBDNUNBQTQgLyogVGVz
dENvY29hLm1tICovLAogCQkJCTVDRTc1OTQ4MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4
dE1lbnVEcml2ZXIuaCAqLywKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENv
bnRleHRNZW51RHJpdmVyLm1tICovLAotCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAotCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAv
KiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYz
Q0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjZCQzQ2RjI1MzRFMTIwMDA4
RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJNUM3MkU4Q0QyNDRGRkNF
MzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJNUM3MkU4
Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tICovLAog
CQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgg
Ki8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUubW0gKi8sCiAJCQkJNTE2MjgxMjMyMzI1QzE3QTAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVu
dC5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKaW5kZXggY2E2OTdh
YzM1YTlhYTUyMGE1YjE5ZjVjN2I3NDNjMTdjODQ0YzUzOC4uYzQ1NzU4NjUwNWRiM2U0ZGJhYmRi
MDcxMmEwZTY2M2JkYjI5Yzc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gu
Y3BwCkBAIC0yOSw0MiArMjksNDEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxv
YWQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogCiBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKIHN0YXRpYyBib29sIGRpZERlY2lkZURlc3RpbmF0aW9uOwogCi1zdGF0
aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tOYXZp
Z2F0aW9uQWN0aW9uUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIFdL
RnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIFdLU3Ry
aW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lk
KikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1Jl
ZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOwotICAg
IFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxv
YWQsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktp
dEFQSVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigpOwogfQog
Ci1zdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCitzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1Bh
Z2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdhdGlvblJlc3BvbnNlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGllbnRWMCBj
bGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQogICAgIGNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
OwotCi0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwgJmNsaWVudC5iYXNl
KTsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRv
d25sb2FkLCAmY2xpZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xp
ZW50KFdLUGFnZVJlZiBwYWdlKQogewotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBuYXZp
Z2F0aW9uQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBuYXZpZ2F0aW9uQ2xp
ZW50OwogICAgIG1lbXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6ZW9mKG5hdmlnYXRpb25D
bGllbnQpKTsKIAotICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBu
YXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJz
aW9uID0gMzsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZSA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTsKKyAgICBuYXZpZ2F0
aW9uQ2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gbmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlv
bkNsaWVudChwYWdlLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIH0KQEAgLTcyLDcgKzcxLDYg
QEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKIFRFU1Qo
V2ViS2l0LCBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29u
ZmlndXJhdGlvbihudWxscHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KGNvbnRl
eHQuZ2V0KCkpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CiAgICAgc2V0UGFnZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25s
b2FkLm1tCmluZGV4IDE1OTMwZTU0NmRiYWEzZGE5ZDVlZDIxNWI2YzhiOWNjNjEwOWFmMGYuLjc1
NTZmNjEyZDVlM2I5YmE0ZjRjZDZmNTI2Yzk1OGMxN2YzZjFmMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25s
b2FkLm1tCkBAIC0yOCw3ICsyOCw4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgog
I2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0TWVu
dUl0ZW0uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tEb3dubG9hZENsaWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVu
dUNsaWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC02
MiwxMiArNjMsMTIgQEAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51
KFdLUGFnZVJlZiBwYWdlLCBXS0FycmF5UmVmIHByb3Bvc2VkTWUKICAgICB9CiB9CiAKLXN0YXRp
YyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tV
UkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQq
KQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVk
IGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBI
VE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBz
dWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAg
ICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICBkaWRE
ZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIEVYUEVDVF9FUShleHBlY3Rl
ZE9yaWdpbmF0aW5nUGFnZSwgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShkb3dubG9hZCkp
OwpAQCAtNzYsMjUgKzc3LDI5IEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvCiAgICAgcmV0dXJu
IFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVudURvd25sb2FkIikubGVh
a1JlZigpOwogfQogCitzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdL
UGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGll
bnQsIDAsIHNpemVvZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAg
ICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2Fk
LCAmY2xpZW50LmJhc2UpOworfQorCiAvLyBDaGVja3MgdGhhdCB0aGUgSFRNTCBkb3dubG9hZCBh
dHRyaWJ1dGUgaXMgdXNlZCBhcyBzdWdnZXN0ZWQgZmlsZW5hbWUgd2hlbiBzZWxlY3RpbmcKIC8v
IHRoZSAiRG93bmxvYWQgTGlua2VkIEZpbGUiIGl0ZW0gaW4gdGhlIGNvbnRleHQgbWVudS4KIFRF
U1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlKQogewog
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50VjAgY2xpZW50OwotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
Ci0gICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSwg
JmNsaWVudC5iYXNlKTsKLQogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3Jv
dXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygi
TXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBs
b2FkZXJDbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsK
ICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLnZl
cnNpb24gPSAzOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmlu
aXNoTmF2aWdhdGlvbjsKKyAgICBsb2FkZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZCA9IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiAgICAgV0tQYWdlU2V0UGFnZU5h
dmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKICAg
ICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xpZW50OwpAQCAtMTE0LDM0
ICsxMTksMzggQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRB
dHRyaWJ1dGUpCiAgICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTsK
IH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25s
b2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQor
c3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q29udGFpbmluZ1NsYXNoZXMoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJl
ZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqKQogewogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFuZCBtYXRjaGVz
IHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1MLCBhZnRlciBz
YW5pdGl6YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0Ml9kb3dubG9hZEF0
dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93bmxvYWRD
YW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51bGxwdHIs
IG51bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVlOwogCiAg
ICAgcmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVudURvd25s
b2FkIikubGVha1JlZigpOwogfQogCi1URVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhU
TUxEb3dubG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQorc3RhdGljIHZvaWQgY29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdL
UGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0so
VXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKLQotICAgIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7
CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKICAgICBjbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5p
bmdTbGFzaGVzOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCks
ICZjbGllbnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hl
czsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOworfQor
CitURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZVdp
dGhTbGFzaGVzKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAogICAgIFdL
UmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3Vw
Q3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsK
IAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgV0tQYWdl
TmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVu
dCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNp
b24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwogICAgIGxvYWRlckNs
aWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKKyAgICBsb2Fk
ZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IGNvbnRleHRNZW51RGlkQ3Jl
YXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKICAgICBX
S1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVu
dC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1lbnVDbGll
bnQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Nv
bnRlbnRGaWx0ZXJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbnRlbnRGaWx0ZXJpbmcubW0KaW5kZXggNDMzOTEzMTEwMWYyY2RkOTUwOTg2N2VmZTk0NGY2
ZTc3ZWYzOWVkYi4uZDE5NmMyYzkzYzkyY2FhYmQ3MzIzOTNiMzRjYWVlZTBhZTdiMzM5MiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZy5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIFRFU1QoQ29udGVudEZpbHRlcmlu
ZywgVVJMQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNp
b25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbQppbmRleCAzYWVmZWI4ZWMzMzVlMTAyMzJmZjhlNWM4MGM2Zjc5YmQz
NWVmYzA4Li4xOGRiMTJiYWM5NDQ5YjI0MjVhMTI3NTAwYmNhZWNlYzczYmQxNzM1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAg
LTMzLDExICszMywxNSBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
CiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNp
bXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCA8Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9h
ZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Lmg+CkBAIC0xNzQsNyArMTc4LDcgQEAgVEVTVChfV0tEb3dubG9hZCwg
RG93bmxvYWRSZXF1ZXN0KQogQGltcGxlbWVudGF0aW9uIENvbnZlcnRSZXNwb25zZVRvRG93bmxv
YWROYXZpZ2F0aW9uRGVsZWdhdGUKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNl
ICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxl
cihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogfQog
QGVuZAogCkBAIC05NzcsNyArOTgxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRNb25p
dG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNoTmF2aWdh
dGlvbik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKF9XS0xlZ2FjeUVycm9yRG9tYWluLCBlcnJvci5k
b21haW4pOwogICAgIF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlm
IChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93
bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25s
b2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC05ODUsNyArOTg5LDcgQEAgVEVT
VChfV0tEb3dubG9hZCwgRG93bmxvYWRNb25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogewogICAg
IEVYUEVDVF9GQUxTRShfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CiAgICAgX2RpZEZp
bmlzaE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkK
KyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7
CiB9CiAKQEAgLTEwMjQsNyArMTAyOCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRp
b25SZXNwb25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwu
YWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCiAgICAgTlNV
UkwgKnNlY29uZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2J1bmRsZS1maWxl
L3NpbXBsZTIuaHRtbCJdOwotICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJl
c3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOwog
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vj
b25kVVJMXV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZpc0RvbmUpOwpAQCAtMTA1MSw3ICsxMDU1LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2Fk
TmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9UUlVFKFtkZWxl
Z2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJM
LmFic29sdXRlU3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAotICAgIFtk
ZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMXV07CiAgICAgaXNEb25lID0g
ZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMTE4OSwy
NCArMTE5MywzMCBAQCBTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBjKQogICAgIHJldHVybiBTdHJp
bmcodmVjdG9yLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAotVEVTVChfV0tEb3dubG9hZCwgUmVzdW1l
KQorZW51bSBjbGFzcyBJbmNsdWRlRVRhZyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNz
IFRlcm1pbmF0ZUFmdGVyRmlyc3RSZXBseSA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0YXRpYyBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZyBp
bmNsdWRlRVRhZyA9IEluY2x1ZGVFVGFnOjpZZXMsIEZ1bmN0aW9uPHZvaWQoVGVzdFdlYktpdEFQ
STo6Q29ubmVjdGlvbik+JiYgdGVybWluYXRvciA9IG51bGxwdHIpCiB7Ci0gICAgdXNpbmcgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25D
b3VudCA9IDBdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgcmV0dXJuIHsg
W2luY2x1ZGVFVGFnLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKSwgY29ubmVjdGlv
bkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxl
IHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6
Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0o
VmVjdG9yPGNoYXI+JiYpIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0
cmluZygKLSAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAg
ICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFtpbmNsdWRlRVRhZywgY29ubmVjdGlvbiwgdGVybWluYXRvciA9IFdU
Rk1vdmUodGVybWluYXRvcildIChWZWN0b3I8Y2hhcj4mJikgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgYXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJI
VFRQLzEuMSAyMDAgT0tcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcgPT0g
SW5jbHVkZUVUYWc6OlllcyA/ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJD
b250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJc
clxuIgogICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQot
ICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgdGVybWluYXRv
ciA9IFdURk1vdmUodGVybWluYXRvcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAg
ICBpZiAodGVybWluYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0b3IoY29u
bmVjdGlvbik7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAg
ICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYm
IHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Qu
ZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CiAgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAg
ICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKQEAgLTEyMjAsMTYgKzEyMzAs
NjQgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICB9KTsKKyAgICB9fTsK
K30KKworc3RhdGljIHZvaWQgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhOU1VSTCAqZmls
ZSkKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUp
OworICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7CisgICAgaWYgKGZpbGVDb250
ZW50cy5ieXRlcyAmJiBmaWxlQ29udGVudHMubGVuZ3RoID09IDEwMDAwdSkgeworICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQorICAgICAgICAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ld
LCAnYicpOworICAgIH0KK30KKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2lt
cGxlRG93bmxvYWRUZXN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4geyBbXShUZXN0V2ViS2l0QVBJ
OjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRU
UFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25u
ZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9L
XHJcbiIKKyAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNw
b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAg
ICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgKSk7
CisgICAgICAgIH0pOworICAgIH19OworfQogCi0gICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5n
UGF0aENvbXBvbmVudDpAIkRvd25sb2FkUmVzdW1lVGVzdCJdIGlzRGlyZWN0b3J5OllFU107Citz
dGF0aWMgdm9pZCBjaGVja0ZpbGVDb250ZW50cyhOU1VSTCAqZmlsZSwgY29uc3QgU3RyaW5nJiBl
eHBlY3RlZENvbnRlbnRzKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBk
YXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5s
ZW5ndGgsIGV4cGVjdGVkQ29udGVudHMubGVuZ3RoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZmlsZUNvbnRlbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sIGV4cGVjdGVkQ29udGVu
dHNbaV0pOworfQorCitzdGF0aWMgTlNVUkwgKnRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpCit7
CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFy
eURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVz
dCJdIGlzRGlyZWN0b3J5OllFU107CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp0ZW1wRGlyIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3Rvcmll
czpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxl
LnR4dCJdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0
VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOm5pbF07CisgICAgTlNVUkwgKmZpbGUgPSBb
dGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOworICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmZpbGUgZXJy
b3I6bmlsXTsKKyAgICByZXR1cm4gZmlsZTsKK30KKworVEVTVChfV0tEb3dubG9hZCwgUmVzdW1l
KQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIGF1dG8gc2VydmVy
ID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0g
XihXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAg
IH07CiAKICAgICBlbnVtIGNsYXNzIENhbGxiYWNrIDogdWludDhfdCB7IFN0YXJ0LCBXcml0ZURh
dGEsIERlY2lkZURlc3RpbmF0aW9uLCBDcmVhdGVEZXN0aW5hdGlvbiwgQ2FuY2VsLCBGaW5pc2gg
fTsKQEAgLTEyNDAsMTAgKzEyOTgsMTEgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAg
IF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rvd25sb2FkPiBkb3dubG9hZDsKICAgICBfX2Jsb2NrIFJl
dGFpblB0cjxOU0RhdGE+IHJlc3VtZURhdGE7CiAKLSAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIGRvd25sb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAg
ICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikpIHsKICAgICAgICAgY2Fs
bGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpz
dWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZXhhbXBs
ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlF
UywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVn
YXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRf
dCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJh
Y2s6OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcgKzEzMTcsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBS
ZXN1bWUpCiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0ZURlc3Rp
bmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAg
ICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwotICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBk
b3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsK
QEAgLTEyOTYsMTUgKzEzNTUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgVXRp
bDo6c3BpblJ1bkxvb3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAKLSAgICBOU0RhdGEgKmZp
bGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmV4cGVjdGVkRG93bmxv
YWRGaWxlXTsKLSAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKLSAg
ICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlmIChmaWxlQ29udGVudHMu
Ynl0ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCi0gICAg
ICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5i
eXRlcylbaV0sICdhJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7
IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmls
ZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hlY2tSZXN1bWVkRG93bmxv
YWRDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBpbnRlcmZhY2UgRG93bmxv
YWRUZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkBA
IC0xMzE0LDcgKzEzNjUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRs
ZXIKIHsKICAgICBpZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVT
dHJpbmcgaGFzU3VmZml4OkAiL2Rvd25sb2FkIl0pCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lz
aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAg
ICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93KTsKIH0KQEAgLTEzNzMsNCArMTQyNCwxMTkwIEBAIFRFU1QoX1dLRG93bmxvYWQsIFN1
YmZyYW1lU2VjdXJpdHlPcmlnaW4pCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keT48aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAu
MTolZC9wYWdlJz48L2lmcmFtZT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpuaWxd
OwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBjaGVja0NhbGxiYWNrUmVjb3JkKFRlc3RE
b3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSwgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IGV4cGVj
dGVkQ2FsbGJhY2tzKQoreworICAgIGF1dG8gYWN0dWFsQ2FsbGJhY2tzID0gZGVsZWdhdGUudGFr
ZUNhbGxiYWNrUmVjb3JkOworICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBl
eHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3Rk
OjptaW4oYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsg
aSsrKQorICAgICAgICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzW2ldLCBleHBlY3RlZENhbGxi
YWNrc1tpXSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmluaXNoU3VjY2Vzc2Z1bGx5KQorewor
ICAgIGF1dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVs
ZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgcmVzdW1lQW5k
RmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCit7
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KSk7CisKKyAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxv
YWQ7CisKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3VtZURhdGEgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5l
ZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVn
YXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0
aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNv
bmQ1ayA9IGZhbHNlOworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVs
ZWdhdGUpOworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAg
ICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWlu
ZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4gKyA1MDAw
LCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAg
ICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2Nr
IGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2gg
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERv
d25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBudWxs
cHRyOworICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICBk
aWRGaW5pc2ggPSB0cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisK
KyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERlbGVnYXRlICpk
ZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsgPSBmYWxzZTsK
KyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdhdGUuZGlkV3Jp
dGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRv
dGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAg
ICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAg
ICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBp
ZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVkRmlyc3Q1ayA9
IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVrKTsKK30KKwor
VEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBk
b3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0
ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWlu
ZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAg
IH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSBy
ZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisg
ICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQo
cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgRmFpbEFuZFJlc3VtZSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6WWVzLCBbJl0gKFRlc3RXZWJLaXRBUEk6
OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0
ZSk7CisgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRy
PFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNE
YXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihX
S0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERvd25sb2FkLmdldCgp
KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3
b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVz
dW1lRGF0YTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAg
ICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChy
ZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgQ2FuY2VsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0
U2VydmVyKEluY2x1ZGVFVGFnOjpObyk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJl
dGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29u
dGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNl
cnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktp
dEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRl
bGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVy
cm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEp
IHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JE
b21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3
b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7
CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7
Cit9CisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBpbiBDRk5ldHdvcmsuCisjaWYgSEFWRShD
Rk5FVF9SRVNQT05TRV9DQUxMQkFDS19XSVRIX05PX0NPTlRFTlQpCisKK1RFU1QoV0tEb3dubG9h
ZCwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKK3sKKyAgICBPcHRpb25hbDxUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOworICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlvbl0oVGVzdFdlYktpdEFQ
STo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nv
bm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzZXJ2ZXJDb25u
ZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBS
ZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24u
c2VuZCgKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJcclxuIgorICAgICAgICAgICAgICAgICk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVz
dCkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCks
ICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhU
VFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8MTAwPigneCcpCisgICAgICAgICAgICAgICAg
KSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsK
KworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IFsmXShXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnRlcm1pbmF0ZSgpOworICAgIH07CisgICAgX19ibG9j
ayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUuZGlk
RmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpy
ZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJM
RXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5l
dHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3Vt
ZURhdGE7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRGaW5pc2hlZCA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAg
ICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVE
YXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZXhwZWN0
ZWREb3dubG9hZEZpbGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShkb3dubG9hZEZpbmlzaGVk
KTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0
YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVu
KCZkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25s
b2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9
KTsKK30KKworI2VuZGlmCisKK3ZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJM
UmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlLCB2b2lk
KF5tdXRhdGVGaWxlKSh2b2lkKSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWRE
b3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3RdOworICAg
IHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBu
aWw7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsK
KyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAg
ICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdo
aWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSk7CisKKyAgICBtdXRhdGVGaWxlKCk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlk
RmluaXNoID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRh
aW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBk
ZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgICAg
ICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigm
ZGlkRmluaXNoKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBI
VFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rp
b25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIw
MCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUu
dHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAg
ICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg
Y29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qp
IHsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAg
IC8vIE1vamF2ZSBDRk5ldHdvcmsgc2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcg
YSBkb3dubG9hZCBhZnRlciByZW1vdmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwg
cmVxdWVzdC5zaXplKCkpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2Vu
ZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4i
LAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAg
ICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICAKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVy
LnJlcXVlc3QoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92
ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tE
b3dubG9hZCwgUmVzdW1lV2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rp
b24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291
bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRU
UFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tc
clxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAi
Q29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwi
XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBs
b25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7Cisg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdl
OiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0
XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5
OS8xMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxy
XG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9u
Z1N0cmluZzwxMDAwMD4oJ2QnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVz
dFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxv
YWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9h
ZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAg
ICBFWFBFQ1RfVFJVRShbWyhOU1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPign
YicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVT
XSk7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgbWFrZVN0cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2Mn
KSwgbG9uZ1N0cmluZzw1MDAwPignZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1l
V2l0aEludmFsaWRSZXN1bWVEYXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0
aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
IHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNh
dWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1
bWVEb3dubG9hZFdpdGhEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
fV07CisgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0
RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9u
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1
dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93
bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7
CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAg
ICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAg
ICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAo
IXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAg
IHNlcnZlci5jYW5jZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAg
IFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0
YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5k
ZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAg
ICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVs
ZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21h
aW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVz
dW1lRGF0YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZk
b25lKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKwor
VEVTVChXS0Rvd25sb2FkLCBVbmtub3duQ29udGVudExlbmd0aCkKK3sKKyAgICBIVFRQU2VydmVy
IHNlcnZlcihbXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25u
ZWN0aW9uLnNlbmQobWFrZVN0cmluZygiSFRUUC8xLjEgMjAwIE9LXHJcblxyXG4iLCBsb25nU3Ry
aW5nPDUwMDA+KCdhJykpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihX
S0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0
dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgICAgIGlm
IChieXRlc1dyaXR0ZW4gIT0gNTAwMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc1dyaXR0ZW4sIDUwMDApOworICAgICAgICAgICAgRVhQ
RUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIC0xKTsKKyAgICAgICAgICAgIGRvbmUg
PSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250
ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VC
ZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIEludmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGNhdWdo
dEV4Y2VwdGlvbiA9IGZhbHNlOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVy
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIEB0cnkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdKTsKKyAgICAgICAgICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShlLm5hbWUsIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBj
YXVnaHRFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH1d
OworICAgIFV0aWw6OnJ1bigmY2F1Z2h0RXhjZXB0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uLAorICAgIH0pOworfQorCitzdGF0aWMgSFRUUFNlcnZlciByZWRpcmVjdFNlcnZlcigpCit7
CisgICAgcmV0dXJuIHt7CisgICAgICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9y
ZWRpcmVjdFRhcmdldCIgfSwgeyAiQ3VzdG9tLU5hbWUiLCAiQ3VzdG9tLVZhbHVlIiB9fSB9IH0s
CisgICAgICAgIHsgIi9yZWRpcmVjdFRhcmdldCIsIHsgImhpIiB9IH0sCisgICAgfX07Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgUmVkaXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJl
ZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3Nl
cnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBzZXJ2ZXJSZXF1
ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2Us
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhU
VFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxs
LgorICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmlu
Zywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNU
X0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1
ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3Ry
aW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVk
aXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyk7CisgICAgICAgIH07CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICpk
b3dubG9hZCwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxl
bmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAicmVkaXJlY3RUYXJnZXQudHh0Iik7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnBhdGgsICIvcmVkaXJl
Y3RUYXJnZXQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5h
bFJlcXVlc3QuVVJMLnBhdGgsICIvIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93
bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5V
UkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgICAgICBmaW5pc2hlZERvd25sb2Fk
ID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkRG93
bmxvYWQpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJo
aSIpOworICAgIAorICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAydSk7CisK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgUmVkaXJlY3RDYW5jZWwpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZl
cigpOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxv
Y2sgYm9vbCBjYW5jZWxsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0
aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ICAgIGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICos
IE5TSFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZl
clJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNw
b25zZS5zdGF0dXNDb2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3Bv
bnNlLmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3Nl
cnZlclJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFy
Z2V0Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tE
b3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdh
dGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21h
aW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxs
ZWQpOworICAgICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJmNhbmNlbGxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKKyAgICBFWFBFQ1Rf
RVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMXUpOworfQorCitURVNUKFdLRG93bmxvYWQsIERv
d25sb2FkUmVxdWVzdEZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAg
ICBOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNl
cnZlci5jYW5jZWwoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0
RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93
bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0
KTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAg
VXRpbDo6cnVuKCZmYWlsZWQpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOwor
fQorCitURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdDQwNCkKK3sKKyAgICBIVFRQU2Vy
dmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0K
KyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRv
d25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAg
ZGlkRmluaXNoID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRp
ZEZpbmlzaCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwg
Imh0dHAgYm9keSIpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRG
aW5pc2gsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFz
aCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJM
ICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2Fp
dEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVk
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgdGVybWluYXRl
ZCA9IHRydWU7CisgICAgfTsKKyAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRh
U3RvcmUgX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0
ZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9Cisg
ICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIFJlcXVlc3RIVFRQQm9keSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNl
cnZlcigpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2Vd
OworICAgIHJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0
OnJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBG
SVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV0tE
b3dubG9hZCwgUGF0aE11c3RFeGlzdCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9y
Om5pbF07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlB
cHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKworICAgIGF1dG8gc2VydmVy
ID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9
OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgZmFpbGVk
ID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxv
YWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgRmlsZU11c3ROb3RFeGlzdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25s
b2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIF9fYmxvY2sgYXV0byByZXRhaW5lZERlbGVnYXRl
ID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgRVhQRUNUX1RSVUUoW1tA
ImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOwor
CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIHJldGFpbmVkRGVsZWdhdGUu
Z2V0KCkubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIHJl
dGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdL
RG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKworICAgICAgICAgICAgcmV0YWluZWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgICAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgICAgICAg
ICByZXRhaW5lZERlbGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQg
KiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRp
bDo6cnVuKCZmYWlsZWQpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChyZXRhaW5lZERlbGVn
YXRlLmdldCgpLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3Is
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQor
eworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5u
YXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQg
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICos
IE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShO
U1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAg
fTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBO
U0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
cnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2ZSBk
b3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0
cnVzdCBldmFsdWF0aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCitU
RVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoe3sgIi8iLCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29s
OjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAg
ZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZl
ZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Qs
IE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxD
cmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNl
cnZlclRydXN0XSk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9Owor
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgfTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRp
bDo6cnVuKCZmaW5pc2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29u
dGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0p
OworfQorI2VuZGlmCisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAg
ICBIVFRQU2VydmVyIHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRo
RXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpy
ZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJM
RXJyb3JEb21haW4pOworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAg
ICAgLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5n
ZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAg
ICAgZmFpbGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxs
ZW5nZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFs
bGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJM
QXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwgbmlsKTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAg
W3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNp
ZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2Vp
dmVkQ2hhbGxlbmdlKTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2ph
dmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2
ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFp
bFdpdGhFcnJvcgorICAgIH0pOworfQorCit2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9t
TmF2aWdhdGlvbkFjdGlvbiwgc3RkOjppbml0aWFsaXplcl9saXN0PERvd25sb2FkQ2FsbGJhY2s+
IGV4cGVjdGVkQ2FsbGJhY2tzKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIK
KyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwz
XSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAg
ICBhLmRvd25sb2FkID0gJ2Rvd25sb2FkRmlsZW5hbWUnOyIKKyAgICAiICAgIGEuY2xpY2soKTsi
CisgICAgIn0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwv
Ym9keT4iOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpuaWxdOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVs
ZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0
aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5KSkgeworICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
ZyBpc0VxdWFsVG9TdHJpbmc6QCJhYm91dDpibGFuayJdKQorICAgICAgICAgICAgRVhQRUNUX05V
TEwoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoYWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUsICJkb3du
bG9hZEZpbGVuYW1lIik7CisgICAgICAgICAgICBpZiAoZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFj
dGlvbikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkFj
dGlvbkRpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9u
ICphY3Rpb24sIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShhY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNj
aGVtZSwgImJsb2IiKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rv
d25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmls
ZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlz
aCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxv
YWRGaWxlLCAiMTIzIik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgZXhwZWN0
ZWRDYWxsYmFja3MpOworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAg
ICBibG9iVGVzdChmYWxzZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
QWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
KyAgICB9KTsKKworICAgIGJsb2JUZXN0KHRydWUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9i
UmVzcG9uc2VOb0ZpbGVuYW1lKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIK
KyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwz
XSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAg
ICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25s
b2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rp
b24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkg
eworICAgICAgICBFWFBFQ1RfTlVMTChhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAg
fTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVS
TC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJh
bWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIndlYmtpdC5vcmciKTsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxl
bmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6
OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRv
cikKK3sKKyAgICBjb25zdCBjaGFyKiBncmFuZGNoaWxkRnJhbWVIVE1MID0gIjxzY3JpcHQ+Igor
ICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNd
KTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAg
IGEuY2xpY2soKTsiCisgICAgIn0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxv
YWRCbG9iKCknPjwvYm9keT4iOworICAgIEhUVFBTZXJ2ZXIgZ3JhbmRjaGlsZEZyYW1lU2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgZ3JhbmRjaGlsZEZyYW1lSFRNTCB9IH0KKyAgICB9KTsKKyAg
ICBIVFRQU2VydmVyIGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+
PC9pZnJhbWU+IiwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV0gfSB9CisgICAgfSk7Cisg
ICAgTlNVUkxSZXF1ZXN0ICpncmFuZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gZ3JhbmRjaGls
ZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsKKyAgICBOU1VSTFJlcXVlc3QgKmNoaWxkRnJhbWVTZXJ2
ZXJSZXF1ZXN0ID0gY2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgdWludDE2X3QgZ3Jh
bmRjaGlsZEZyYW1lU2VydmVyUG9ydCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCk7CisK
KyAgICBOU1N0cmluZyAqbWFpbkhUTUwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxp
ZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgY2hpbGRGcmFtZVNl
cnZlci5wb3J0KCldOworCisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkhUTUwgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdXTsKKworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAq
cmVzcG9uc2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKSB7CisgICAgICAgIGlmIChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3Ry
aW5nIGlzRXF1YWxUb1N0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdCisgICAgICAgICAgICB8
fCBbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpj
aGlsZEZyYW1lU2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddCisgICAgICAgICAgICB8
fCBbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpn
cmFuZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9z
dCwgIjEyNy4wLjAuMSIpOworICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3Vy
aXR5T3JpZ2luLnBvcnQsIGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQpOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3Rl
ZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJVbmtub3duIik7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQ
TEFURk9STShNQUMpIHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAz
YWMyOGNlMWU4OTY3ZjVkYWIwZDg4OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMy
YTJiYTE2ZDI2ODBlMjZjOTk0NjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2
LDcgQEAgc3RhdGljIHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09i
c2VydmluZ0NvbnRleHQ7CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5h
dmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0g
RG93bmxvYWRTdGFydFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNp
b25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93
bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QWxsb3cpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5k
ZXggYTdkNGU1M2EzNTE3OTI0NWQxZTkwNDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAw
MGY4OTVhOThkMzA5NTE3ODllOWY5NmNkNmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50
UmVkaXJlY3REZXN0aW5hdGlvblVSTDsKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25I
YW5kbGVyKHNob3VsZENvbnZlcnRUb0Rvd25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvdyk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAq
KW5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUXVpY2tMb29rLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9RdWlja0xvb2subW0KaW5kZXggYWUyYmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4
MDFiZi4uZGZlMWQzOGM2NmM0OGZmY2M4ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAg
LTM2NCw3ICszNjQsNyBAQCBURVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRp
bmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRp
bmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVz
cG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVj
aWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVM
b2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0u
Y29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7
CkBAIC0zNzksNyArMzc5LDcgQEAgVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZv
cmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25z
ZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tR
dWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1
bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNw
b25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBh
Z2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRp
bmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1
bWVudFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVk
QnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVY
UEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2Mz
ZWM1YjQyMTc1MWVkYzg0MDBjMGEwZWE2MGI4YzQ4NWIuLjMwOTM3NTAzOTczM2VjYjk2MDdhNWIw
MjgyNDA1OTVjODhmNTU0ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdERvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3REb3dubG9hZERlbGVnYXRlLmgKQEAgLTI0LDE3ICsyNCwzNSBAQAogICovCiAKICNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KLSNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+
CiAKLUBpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9h
ZERlbGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERp
ZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICop
OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2Up
KF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2
NF90LCB1aW50NjRfdCk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQg
KiwgTlNFcnJvciAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxv
YWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICos
IE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAq
LCBOU1N0cmluZyAqKTsKK2VudW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3Qgewor
ICAgIFdpbGxSZWRpcmVjdCwKKyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERp
ZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAorICAg
IE5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25BY3Rpb24s
CisgICAgTmF2aWdhdGlvblJlc3BvbnNlLAorfTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxvYWREZWxlZ2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdh
dGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1
ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
KFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdy
aXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxv
YWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJy
b3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKShX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLRG93bmxvYWQgKik7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAq
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbikoV0tOYXZpZ2F0aW9uQWN0aW9uICosIHZvaWQgKF4pKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZv
aWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRv
d25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFj
a1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJh
ODAxZmRkMy4uMDUzMDkzNzM1MTYwMzQxMmRlYWI0MmM2OGZkYzcxY2FmMGVkYjk0YyAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBA
IC0yNiw2OCArMjYsMTEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3REb3du
bG9hZERlbGVnYXRlLmgiCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZQor
I2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogCi0tICh2b2lk
KV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAgaWYgKF9k
b3dubG9hZERpZFN0YXJ0KQotICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CitA
aW1wbGVtZW50YXRpb24gVGVzdERvd25sb2FkRGVsZWdhdGUgeworICAgIFZlY3RvcjxEb3dubG9h
ZENhbGxiYWNrPiBfY2FsbGJhY2tSZWNvcmQ7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAq
KXVybAorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTChkb3dubG9hZCwgdXJsKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2Fk
Q2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisKKyAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQsIHJl
c3BvbnNlLCByZXF1ZXN0LCBkZWNpc2lvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZQorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3Vn
Z2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKIHsK
LSAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25z
ZShkb3dubG9hZCwgcmVzcG9uc2UpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOworCisgICAgQVNTRVJUKF9kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSk7CisgICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
KGRvd25sb2FkLCByZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVy
KTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3Jp
dGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90
KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0
dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6
KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQogeworICAgIC8vIGRpZFdyaXRlRGF0
YSBpcyBjYWxsZWQgYSBub25kZXRlcm1pbmlzdGljIG51bWJlciBvZiB0aW1lcywgc28gb25seSBy
ZWNvcmQgb25jZSBpbiBhIHNlcmllcy4KKyAgICBpZiAoX2NhbGxiYWNrUmVjb3JkLmlzRW1wdHko
KSB8fCBfY2FsbGJhY2tSZWNvcmQubGFzdCgpICE9IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSkKKyAgICAgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEpOworCiAgICAgaWYgKF9kaWRXcml0ZURhdGEpCiAgICAgICAgIF9kaWRXcml0
ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJp
bmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3
cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClk
b3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIEFTU0VSVChfZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIF9kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVm
YXVsdEhhbmRsaW5nLCBuaWwpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dL
RG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkCiB7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxi
YWNrOjpEaWRGaW5pc2gpOworCiAgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKICAgICAgICAg
X2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCist
ICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKKyAgICBf
Y2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3Ip
OworCiAgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQotICAgICAgICBfZGlkRmFpbFdpdGhFcnJv
cihkb3dubG9hZCwgZXJyb3IpOworICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwg
ZXJyb3IsIHJlc3VtZURhdGEpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dL
RG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IG5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24g
ZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGlmIChfZG93
bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7Cisg
ICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uQmVjYW1lRG93bmxvYWQpOworCisgICAgaWYgKF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpCisgICAgICAgIF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQod2Vi
VmlldywgbmF2aWdhdGlvbkFjdGlvbiwgZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICop
bmF2aWdhdGlvblJlc3BvbnNlIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxv
YWQKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAg
ICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdl
LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAo
X25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBk
b3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2
aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBl
bmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlmIChfZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsK
ICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIK
K3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24pOworCisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQor
ICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
LCBkZWNpc2lvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKK30KKworLSAodm9pZCl3YWl0Rm9yRG93bmxv
YWREaWRGaW5pc2gKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBB
U1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7CisgICAgX2Rvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAq
KWRlc3RpbmF0aW9uCistIChWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVj
b3JkCiB7Ci0gICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0
ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6ZXhj
aGFuZ2UoX2NhbGxiYWNrUmVjb3JkLCB7IH0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUxMjQ2MWVhMTJjOWNhZGE2MTVkMWUyYzRhNTczMWYxZDE1ZDEzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKworQGludGVy
ZmFjZSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVs
ZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3Rh
cnQpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3Qs
IHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICos
IHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBO
U0Vycm9yICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERp
ZENhbmNlbCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGluYXRpb24pKF9XS0Rvd25sb2FkICosIE5T
U3RyaW5nICopOworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc3YTkyNGJkZmU2OTVl
MGI3OTE1Yjk1ZWZlOWYwNWRiZjFjYTA4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUuaCIKKworQGltcGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlCisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCisgICAgICAgIF9kb3dubG9hZERp
ZFN0YXJ0KGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCit7Cisg
ICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKKyAgICAgICAgX2RpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOworfQorCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZQoreworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAg
ICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3Qp
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlCit7CisgICAgaWYgKF9kaWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEo
ZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGUpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEFTU0VSVChf
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRp
b25IYW5kbGVyKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93
bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAg
ICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25s
b2FkLCBlcnJvcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKKyAgICAgICAgX2Rv
d25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9u
Cit7CisgICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgX2RpZENyZWF0ZURl
c3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMTZhZDE3ZTI0YmEzZWIxZGU3NzM3
OWVmYjg1MjRiODY2ZTNjN2I2Ny4uYzFkODMzM2RjOWU4Y2VkZDMzNTc5MzBhOTAyYmI2MWM4ZjM1
NGU2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQw
LDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFt
ZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZVJlZi5oPgpAQCAtNzksNiArODEsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtMTMxLDYgKzEzNCwzMyBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgY29weVNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogICAg
IHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTUlIRk1IRXdYREFOQmdrcWhr
aUc5dzBCQVFFRkFBTkxBREJJQWtFQW5YMFRJTEpyT01VdWUlMkJQdHdCUkU2WGZWJTBBV3RLUWJz
c2h4azVaaGNVd2N3eXZjbklxOWI4MlFoSmRvQUNkRDM0cnFmQ0FJTkQ0NmZYS1FVbmIwbXZLelFJ
RCUwQUFRQUJGaEZOYjNwcGJHeGhTWE5OZVVaeWFXVnVaREFOQmdrcWhraUc5dzBCQVFRRkFBTkJB
QUt2MkVleDJuJTJGUyUwQXIlMkY3aUpOcm9XbFN6U010VGlRVEVCJTJCQURXSEdqOXUxeHJVck9p
bHElMkZvMmN1UXhJZlpjTlprWUFrV1A0RHVicVclMEFpMCUyRiUyRnJnQnZtY28lM0QiKTsKIH0K
IAordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVk
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworCisgICAgV0tEb3dubG9hZENsaWVudFYw
IGNsaWVudCB7CisgICAgICAgIHsgMCwgY2xpZW50SW5mbyB9LAorICAgICAgICBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCwKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkV3JpdGVEYXRhCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZpbmlzaCwKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbAor
ICAgIH07CisKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2Up
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93
bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbmF2aWdhdGlvbkRpZEJlY29t
ZURvd25sb2FkU2hhcmVkKGRvd25sb2FkLCBjbGllbnRJbmZvKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBX
S05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQo
ZG93bmxvYWQsIGNsaWVudEluZm8pOworfQorCiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJy
ZW50VGFzazsKIAogYm9vbCBBc3luY1Rhc2s6OnJ1bigpCkBAIC0zMjAsNzIgKzM1MCw3MiBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgV0tQYWdlVUlDbGllbnRWOCBvdGhlclBhZ2VV
SUNsaWVudCA9IHsKICAgICAgICAgeyA4LCB2aWV3IH0sCi0gICAgICAgIDAsIC8vIGNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzaG93UGFnZQorICAg
ICAgICBudWxscHRyLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAg
ICAgICAgbnVsbHB0ciwgLy8gc2hvd1BhZ2UKICAgICAgICAgY2xvc2VPdGhlclBhZ2UsCi0gICAg
ICAgIDAsIC8vIHRha2VGb2N1cworICAgICAgICBudWxscHRyLCAvLyB0YWtlRm9jdXMKICAgICAg
ICAgZm9jdXMsCiAgICAgICAgIHVuZm9jdXMsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c1RleHQK
LSAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMAotICAgICAgICAwLCAvLyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAw
LCAvLyBkaWROb3RIYW5kbGVLZXlFdmVudAotICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVXaGVl
bEV2ZW50Ci0gICAgICAgIDAsIC8vIHRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBz
ZXRUb29sYmFyc0FyZVZpc2libGUKLSAgICAgICAgMCwgLy8gbWVudUJhcklzVmlzaWJsZQotICAg
ICAgICAwLCAvLyBzZXRNZW51QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHN0YXR1c0Jhcklz
VmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRTdGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwg
Ly8gaXNSZXNpemFibGUKLSAgICAgICAgMCwgLy8gc2V0SXNSZXNpemFibGUKKyAgICAgICAgbnVs
bHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAg
ICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
KyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICBudWxscHRy
LCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAg
ICAgIG51bGxwdHIsIC8vIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxw
dHIsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50CisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhh
bmRsZVdoZWVsRXZlbnQKKyAgICAgICAgbnVsbHB0ciwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCisg
ICAgICAgIG51bGxwdHIsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRy
LCAvLyBtZW51QmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldE1lbnVCYXJJc1Zp
c2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIG51
bGxwdHIsIC8vIHNldFN0YXR1c0JhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBpc1Jl
c2l6YWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRJc1Jlc2l6YWJsZQogICAgICAgICBnZXRX
aW5kb3dGcmFtZSwKICAgICAgICAgc2V0V2luZG93RnJhbWUsCiAgICAgICAgIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCwKLSAgICAgICAgMCwgLy8gZGlkRHJhdwotICAgICAgICAwLCAvLyBw
YWdlRGlkU2Nyb2xsCi0gICAgICAgIDAsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAg
ICBudWxscHRyLCAvLyBkaWREcmF3CisgICAgICAgIG51bGxwdHIsIC8vIHBhZ2VEaWRTY3JvbGwK
KyAgICAgICAgbnVsbHB0ciwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAgICAgIHJ1bk9w
ZW5QYW5lbCwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCwKLSAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGZvb3Rlckhl
aWdodAotICAgICAgICAwLCAvLyBkcmF3SGVhZGVyCi0gICAgICAgIDAsIC8vIGRyYXdGb290ZXIK
KyAgICAgICAgbnVsbHB0ciwgLy8gaGVhZGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGZv
b3RlckhlaWdodAorICAgICAgICBudWxscHRyLCAvLyBkcmF3SGVhZGVyCisgICAgICAgIG51bGxw
dHIsIC8vIGRyYXdGb290ZXIKICAgICAgICAgcHJpbnRGcmFtZSwKICAgICAgICAgcnVuTW9kYWws
Ci0gICAgICAgIDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQotICAgICAg
ICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCi0gICAgICAgIDAsIC8vIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQKLSAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Ci0gICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Ci0gICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNh
dGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAw
LCAvLyBoaWRlQ29sb3JQaWNrZXIKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkCi0gICAgICAgIDAsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCi0gICAgICAgIDAs
IC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAv
LyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAvLyBkaWRDYW5jZWxUcmFj
a2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCi0gICAgICAgIDAsIC8vIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1h
aW5GcmFtZQorICAgICAgICBudWxscHRyLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAg
ICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAg
ICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CisgICAgICAgIG51bGxwdHIs
IC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAg
IG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIHNob3dDb2xvclBpY2tlcgorICAgICAgICBu
dWxscHRyLCAvLyBoaWRlQ29sb3JQaWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxwdHIsIC8vIHBpbm5lZFN0YXRlRGlk
Q2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcworICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVz
cworICAgICAgICBudWxscHRyLCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3Vz
ZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAw
LCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIDAsIC8vIHVudXNlZDUKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRvbgorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnQKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAg
ICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBudWxscHRyLCAv
LyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0LAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAv
LyBydW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRD
b25maXJtCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKICAgICAgICAg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLAotICAgICAgICAwLCAvLyBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwKLSAgICAgICAgMCwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAor
ICAgICAgICBudWxscHRyLCAvLyBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKICAgICAgICAg
cmVxdWVzdFBvaW50ZXJMb2NrLAotICAgICAgICAwLAorICAgICAgICBudWxscHRyLCAvLyBkaWRM
b3NlUG9pbnRlckxvY2sKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdl
LCAmb3RoZXJQYWdlVUlDbGllbnQuYmFzZSk7CiAgICAgCkBAIC0zOTQsMTYgKzQyNCwxNiBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbgogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9u
YWxOYXZpZ2F0aW9uCiAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bgotICAgICAgICAwLCAvLyBkaWRDb21taXROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZp
bmlzaE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAg
MCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlk
RmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b24KLSAgICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAv
LyBkaWRDb21taXROYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaE5hdmln
YXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2UKICAgICAgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwK
ICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9j
ZXNzRGlkQ3Jhc2gsCkBAIC00MTIsOSArNDQyLDEyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29u
CiAgICAgICAgIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdh
dGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3Qs
Ci0gICAgICAgIDAsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0
ZQorICAgICAgICBudWxscHRyLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAg
ICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChuZXdQ
YWdlLCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiAKQEAgLTY1Miw3NyArNjg1LDc3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKICAgICBwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoY29uZmlndXJhdGlv
bi5nZXQoKSwgb3B0aW9ucyk7CiAgICAgV0tQYWdlVUlDbGllbnRWMTQgcGFnZVVJQ2xpZW50ID0g
ewogICAgICAgICB7IDE0LCBtX21haW5XZWJWaWV3LmdldCgpIH0sCi0gICAgICAgIDAsIC8vIGNy
ZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzaG93UGFn
ZQotICAgICAgICAwLCAvLyBjbG9zZQotICAgICAgICAwLCAvLyB0YWtlRm9jdXMKKyAgICAgICAg
bnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAg
IG51bGxwdHIsIC8vIHNob3dQYWdlCisgICAgICAgIG51bGxwdHIsIC8vIGNsb3NlCisgICAgICAg
IG51bGxwdHIsIC8vIHRha2VGb2N1cwogICAgICAgICBmb2N1cywKICAgICAgICAgdW5mb2N1cywK
LSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
LSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
LSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
LSAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4dAotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIG1pc3NpbmdQ
bHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50Ci0g
ICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKLSAgICAgICAgMCwgLy8gdG9vbGJh
cnNBcmVWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAg
ICAwLCAvLyBtZW51QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldE1lbnVCYXJJc1Zpc2li
bGUKLSAgICAgICAgMCwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFN0
YXR1c0JhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBpc1Jlc2l6YWJsZQotICAgICAgICAwLCAv
LyBzZXRJc1Jlc2l6YWJsZQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0
QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBz
ZXRTdGF0dXNUZXh0CisgICAgICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gbWlzc2luZ1BsdWdp
bkJ1dHRvbkNsaWNrZWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQK
KyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVudAorICAgICAgICBudWxs
cHRyLCAvLyB0b29sYmFyc0FyZVZpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0VG9vbGJh
cnNBcmVWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIG1lbnVCYXJJc1Zpc2libGUKKyAgICAg
ICAgbnVsbHB0ciwgLy8gc2V0TWVudUJhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBz
dGF0dXNCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0U3RhdHVzQmFySXNWaXNp
YmxlCisgICAgICAgIG51bGxwdHIsIC8vIGlzUmVzaXphYmxlCisgICAgICAgIG51bGxwdHIsIC8v
IHNldElzUmVzaXphYmxlCiAgICAgICAgIGdldFdpbmRvd0ZyYW1lLAogICAgICAgICBzZXRXaW5k
b3dGcmFtZSwKICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAotICAgICAgICAw
LCAvLyBkaWREcmF3Ci0gICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKLSAgICAgICAgMCwgLy8g
ZXhjZWVkZWREYXRhYmFzZVF1b3RhLAotICAgICAgICBvcHRpb25zLnNob3VsZEhhbmRsZVJ1bk9w
ZW5QYW5lbCgpID8gcnVuT3BlblBhbmVsIDogMCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRHJh
dworICAgICAgICBudWxscHRyLCAvLyBwYWdlRGlkU2Nyb2xsCisgICAgICAgIG51bGxwdHIsIC8v
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YSwKKyAgICAgICAgb3B0aW9ucy5zaG91bGRIYW5kbGVSdW5P
cGVuUGFuZWwoKSA/IHJ1bk9wZW5QYW5lbCA6IG51bGxwdHIsCiAgICAgICAgIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCi0gICAgICAgIDAsIC8vIGhlYWRlckhl
aWdodAotICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZHJhd0hlYWRl
cgotICAgICAgICAwLCAvLyBkcmF3Rm9vdGVyCisgICAgICAgIG51bGxwdHIsIC8vIGhlYWRlckhl
aWdodAorICAgICAgICBudWxscHRyLCAvLyBmb290ZXJIZWlnaHQKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZHJhd0hlYWRlcgorICAgICAgICBudWxscHRyLCAvLyBkcmF3Rm9vdGVyCiAgICAgICAgIHBy
aW50RnJhbWUsCiAgICAgICAgIHJ1bk1vZGFsLAotICAgICAgICAwLCAvLyBkaWRDb21wbGV0ZVJ1
YmJlckJhbmRGb3JNYWluRnJhbWUKLSAgICAgICAgMCwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcgotICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Ci0gICAg
ICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQotICAgICAgICAw
LCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAorICAgICAgICBudWxscHRyLCAvLyBkaWRDb21w
bGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgorICAgICAgICBudWxscHRyLCAvLyBzaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0CisgICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRyLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwg
Ly8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKLSAgICAgICAg
MCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjEKLSAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCi0gICAgICAgIDAsIC8vIGhpZGVDb2xv
clBpY2tlcgorICAgICAgICBudWxscHRyLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNr
ZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRyLCAvLyBzaG93Q29sb3JQ
aWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gaGlkZUNvbG9yUGlja2VyCiAgICAgICAgIHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCwKLSAgICAgICAgMCwgLy8gcGlubmVkU3RhdGVEaWRD
aGFuZ2UKLSAgICAgICAgMCwgLy8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVBy
ZXNzCi0gICAgICAgIDAsIC8vIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzCi0gICAgICAgIDAs
IC8vIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwg
Ly8gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gcGlubmVkU3Rh
dGVEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlh
bExvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY29nbml6ZUxvbmdNb3Vz
ZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9u
Z01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UK
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsCi0gICAg
ICAgIDAsIC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0b24KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNj
cmlwdEFsZXJ0Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAgIDAs
IC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gdW51c2VkNQorICAgICAgICBu
dWxscHRyLCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCisgICAgICAgIG51bGxwdHIsIC8vIHJ1
bkphdmFTY3JpcHRBbGVydAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmly
bQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIG51bGxw
dHIsIC8vIHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICBydW5KYXZh
U2NyaXB0QWxlcnQsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAg
IDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNj
cmlwdENvbmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAogICAg
ICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCi0gICAgICAgIDAsIC8vIHJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAotICAgICAgICAwLCAvLyBmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsCisgICAgICAgIG51bGxwdHIsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZQogICAg
ICAgICByZXF1ZXN0UG9pbnRlckxvY2ssCi0gICAgICAgIDAsIC8vIGRpZExvc2VQb2ludGVyTG9j
awotICAgICAgICAwLCAvLyBoYW5kbGVBdXRvcGxheUV2ZW50Ci0gICAgICAgIDAsIC8vIGhhc1Zp
ZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlCi0gICAgICAgIDAsIC8vIGRpZEV4Y2VlZEJh
Y2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQKLSAgICAgICAgMCwgLy8gZGlk
UmVzaWduSW5wdXRFbGVtZW50U3Ryb25nUGFzc3dvcmRBcHBlYXJhbmNlCi0gICAgICAgIDAsIC8v
IHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybQorICAgICAgICBudWxscHRyLCAvLyBkaWRMb3Nl
UG9pbnRlckxvY2sKKyAgICAgICAgbnVsbHB0ciwgLy8gaGFuZGxlQXV0b3BsYXlFdmVudAorICAg
ICAgICBudWxscHRyLCAvLyBoYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZQorICAg
ICAgICBudWxscHRyLCAvLyBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5G
b3JlZ3JvdW5kCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlc2lnbklucHV0RWxlbWVudFN0cm9u
Z1Bhc3N3b3JkQXBwZWFyYW5jZQorICAgICAgICBudWxscHRyLCAvLyByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0NvbmZpcm0KICAgICAgICAgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlv
bkFjY2VzcywKICAgICAgICAgcnVuV2ViQXV0aGVudGljYXRpb25QYW5lbAogICAgIH07CkBAIC03
MzMsMTYgKzc2NiwxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwKLSAgICAgICAgMCwgLy8g
ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmln
YXRpb24KICAgICAgICAgZGlkQ29tbWl0TmF2aWdhdGlvbiwKICAgICAgICAgZGlkRmluaXNoTmF2
aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8g
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlkRmluaXNo
RG9jdW1lbnRMb2FkCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KLSAg
ICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRM
b2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KKyAgICAg
ICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKICAgICAgICAgY2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jhc2gsCkBAIC03NTEsMjgg
Kzc4NCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMo
Y29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIHdpbGxFbmROYXZpZ2F0aW9uR2Vz
dHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZFJlbW92
ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIDAsIC8vIHdlYlByb2Nlc3NEaWRU
ZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCi0gICAg
ICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcKKyAgICAgICAgbnVsbHB0
ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAgICAgICBudWxscHRyLCAvLyBjb250ZW50
UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkLAor
ICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbnVs
bHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCiAgICAgfTsKICAgICBXS1BhZ2VT
ZXRQYWdlTmF2aWdhdGlvbkNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlTmF2aWdh
dGlvbkNsaWVudC5iYXNlKTsKLQotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEgZG93bmxv
YWRDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICBkb3dubG9hZERpZFN0
YXJ0LAotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKLSAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVE
YXRhCi0gICAgICAgIDAsIC8vIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlCi0gICAg
ICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lLAotICAgICAgICAwLCAv
LyBkaWRDcmVhdGVEZXN0aW5hdGlvbgotICAgICAgICBkb3dubG9hZERpZEZpbmlzaCwKLSAgICAg
ICAgZG93bmxvYWREaWRGYWlsLAotICAgICAgICBkb3dubG9hZERpZENhbmNlbCwKLSAgICAgICAg
MCwgLy8gcHJvY2Vzc0RpZENyYXNoOwotICAgICAgICBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMCi0gICAgfTsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250
ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAvLyB0aGlzIHNob3VsZCBq
dXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRW
MSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKQEAgLTIwNjAsNDUgKzIwNzksMzUgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJl
ZiBwYWdlLCBXS0F1dGhlbnQKIH0KIAogCi0vLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotCi12
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRleHQsIGRvd25sb2FkKTsKLX0KKy8vIFdLRG93bmxv
YWRDbGllbnQKICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4dCwgZG93bmxvYWQsIGZpbGVuYW1lLCBh
bGxvd092ZXJ3cml0ZSk7Ci19Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmlu
aXNoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJM
UmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4o
Y29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChjb250ZXh0
LCBkb3dubG9hZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShkb3dubG9hZCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZh
aWwoY29udGV4dCwgZG93bmxvYWQsIGVycm9yKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJv
bGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2go
ZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQsIGRvd25s
b2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGRvd25sb2FkLCBlcnJvcik7CiB9CiAKLXZv
aWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVy
bCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tV
UkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCBuZXdSZXF1ZXN0KTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
U3RhcnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3du
bG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgi
RG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKQor
V0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lKQog
ewogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsK
IApAQCAtMjExNCwyOCArMjEyMywzMyBAQCBXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLAogICAgIGlm
ICghZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICph
bGxvd092ZXJ3cml0ZSA9IHRydWU7CiAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmlu
Zzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKICAgICBpZiAoc3VnZ2VzdGVkRmlsZW5h
bWUuaXNFbXB0eSgpKQogICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9ICJVbmtub3duIjsKKyAg
ICAKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0ZW1wb3JhcnlGb2xkZXIgKyAiLyIgKyBzdWdn
ZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkZXN0aW5hdGlv
bikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb24pOwogCi0gICAg
cmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2VzdGVkRmlsZW5hbWUpLmxl
YWtSZWYoKTsKKyAgICByZXR1cm4gdG9XSyhkZXN0aW5hdGlvbikubGVha1JlZigpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Rvd25s
b2FkUmVmKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBjb21wbGV0ZWQuXG4i
KTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkKK2Jvb2wgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9h
ZFJlZiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7CisgICAgYXV0byB1cmwgPSBhZG9wdFdL
KFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25s
b2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1h
a2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVkIHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRv
cHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkpLCAiXCIuXG4iKSk7CisgICAgICAgIG1fY3VycmVu
dEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0
ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkp
KSksICJcIi5cbiIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJl
ZiBlcnJvcikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2Fk
UmVmLCBXS0Vycm9yUmVmIGVycm9yKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2Fs
bGJhY2tzKSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRvd25s
b2FkIGZhaWxlZC5cbiJfcyk7CkBAIC0yMTQ5LDEzICsyMTYzLDYgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJv
clJlZiBlcnIKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmKQotewotICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tz
KQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBjYW5j
ZWxsZWQuXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUo
KTsKLX0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICAv
LyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBjcmFzaCBs
b2dzIGFyZSBiZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBzbwpAQCAtMjQ4NSw3ICsyNDkyLDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS05h
dmlnYXRpb25BY3Rpb25SZWYgbmF2aWcKICAgICBhdXRvIGRlY2lzaW9uRnVuY3Rpb24gPSBbc2hv
dWxkSWdub3JlLCByZXRhaW5lZExpc3RlbmVyLCByZXRhaW5lZE5hdmlnYXRpb25BY3Rpb24sIHNo
b3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2Fw
VG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiwgc2hvdWxkU3dhcFRvRGVmYXVsdFNl
c3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4
dE5hdmlnYXRpb25dKCkgewogICAgICAgICBpZiAoc2hvdWxkSWdub3JlKQogICAgICAgICAgICAg
V0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwotICAg
ICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQocmV0
YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKKyAgICAgICAgZWxzZSBpZiAoV0tOYXZpZ2F0
aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUocmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdl
dCgpKSkKICAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKHJldGFpbmVk
TGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChzaG91bGRT
d2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiB8fCBzaG91bGRTd2FwVG9EZWZh
dWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24pIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaAppbmRleCAwOTE1ZWQ4Y2ZiNWVjNGM1NzhlMjg4YTk5ODk1YTQ4YjA5ZWM0M2Rh
Li45YTFmN2UzMjczYjRjNzI4M2U2YWQxY2FhNzNkMDczYTllMmZkOWMwIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC00MzksMTkgKzQzOSwxOSBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmln
YXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlk
RmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZik7CiAKLSAgICAvLyBX
S0NvbnRleHREb3dubG9hZENsaWVudAotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQo
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3du
bG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIFdL
U3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3Zl
cndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLSAgICBXS1N0cmluZ1JlZiBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHN0
YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwg
Y29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBk
b3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsK
LSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxv
YWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVm
LCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYpOworICAgIC8vIFdL
RG93bmxvYWRDbGllbnQKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYs
IGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkRpZEJlY29tZURv
d25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25s
b2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVz
cG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKKyAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSk7CisgICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAg
IHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIHZvaWQg
ZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIFdLRGF0YVJlZiwgY29u
c3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJy
b3JSZWYpOworICAgIHN0YXRpYyBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBj
b25zdCB2b2lkKik7CisgICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJlZik7CiAgICAgCiAgICAgc3RhdGljIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAg
ICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNTM4MTQ4NTMyZTQxYjNlOTJjMzk1
ZTUxMTRjNWQ2ODQ4YjJiZThmLi4wYzlmNTg1Y2U0ODVkZTUzMjMzMDJlMjkxYTU1MGY3ODVlNjZh
NWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTEtMTcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IGRvd25s
b2FkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11
c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3du
bG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9k
b3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICBOb3cgdGhhdCBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBkb2Vzbid0IHN1Z2dlc3QgInVua25vd24iCisgICAg
ICAgIHRoZSBjYXBpdGFsaXphdGlvbiBoYXMgY2hhbmdlZCB0byAiVW5rbm93biIgZnJvbSBOU1VS
TFJlc3BvbnNlJ3Mgc3VnZ2VzdGVkRmlsZW5hbWUuCisKIDIwMjAtMTEtMTIgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgYWR2YW5jZWQgcGx1
Zy1pbiBmZWF0dXJlczogc25hcHNob3R0aW5nIGFuZCBwbHVnLWluIGxvYWQgcG9saWN5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93
bmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dAppbmRleCAwMmFmMmRlOWIxYzRiY2FjNTg2
MmMxZGE1NmZiYjRiZTZhMTZkMmE5Li4zNzVjMTkxMjlhZTYxYmEwNmU3ZDU0OGE4M2EzYjg2YTc2
OTBiNjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNCAr
MSw0IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVk
IGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQg
ZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2Vy
LXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0CmluZGV4IGJlZGM4ZGRhMDFj
OGMxMjM3ZTEwNmM2ODUzMzQwZjM3OTZmN2NlZTcuLmM1MTE3Nzk1YTU4YzA4ZmJlZTA2Y2IzOTQz
MWNkYzMxZDBkYjU5YTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2st
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQu
dHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3
aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdp
dGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQu
CiBUZXN0IHRoYXQgdXNlciB0cmlnZ2VyZWQgc3ludGhldGljIGNsaWNrcyBvbiBhbiBhbmNob3Ig
d2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUgbm90IGlnbm9yZWQuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2It
Y29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQt
dG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CmluZGV4IDExMTQwZmQyMTg4
N2I4NTEyMGRhYjE4M2Y5ZmQ5YjNkMGY0N2FjNWUuLjEyMDI3YzNlMTBhZDhiMGMwMWJmYTdhNjEx
Mjg2ZTg1NjI4YmU5MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxl
Z2F0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRl
LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9h
ZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24iCitEb3dubG9hZGluZyBV
Ukwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24iCiBEb3dubG9hZCBjb21wbGV0ZWQu
CiBUaGUgZG93bmxvYWQgc2hvdWxkIHN1Y2NlZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1k
b3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDExMTQwZmQyMTg4N2I4NTEyMGRhYjE4M2Y5ZmQ5YjNkMGY0N2FjNWUuLjEyMDI3YzNlMTBh
ZDhiMGMwMWJmYTdhNjExMjg2ZTg1NjI4YmU5MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3du
bG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dApA
QCAtMSw1ICsxLDUgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBz
dWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24iCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0
ZWQgZmlsZW5hbWUgIlVua25vd24iCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUaGUgZG93bmxvYWQg
c2hvdWxkIHN1Y2NlZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhw
ZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTku
LjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNl
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERv
d25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUg
InVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAi
VW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBVUkwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414497</attachid>
            <date>2020-11-18 15:25:44 -0800</date>
            <delta_ts>2020-11-18 16:02:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201118152541.patch</filename>
            <type>text/plain</type>
            <size>328724</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjNWZkNGY1ZjVjNmExYWFj
YTM3YzNmNThmOWRlMTkwYTEzYTI0ODMuLjU1ZTM1NmZiZmMwZWZhN2VhMmRkOGJhYzY2NGVmY2I1
Mzc4YTIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX2Rvd25sb2FkRGlk
U3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlvbiBoYW5kbGVycyB0aGF0
IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBUaGVyZSdzIG5vIG5lZWQg
dG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2JqZWN0IGJlZm9yZSB0aGVu
IGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQgInN0YXJ0cyIgd2hpY2gg
aXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAgICAgICAgIHNvIHRoZXJl
IHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bmxv
YWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICA5LiAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNvbnRpbnVpbmcgb3IgY2Fu
Y2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250cm9sIHRoZQorICAgICAg
ICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAxMC4gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVSZXNwb25zZSBoYXZlIGJl
ZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lIGFu
ZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVkRmlsZW5hbWUgQVBJLiAg
YWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVzZWQsIGFuZCBub3QgcmVh
bGx5IG5lZWRlZC4KKyAgICAgICAgMTEuIGRpZENyZWF0ZURlc3RpbmF0aW9uIGlzIGdvbmUuICBU
aGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3NhcnkuICBJZiB5b3UgbmVlZCB0
byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBmaXJzdAorICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9uIGhhcyBkZWZpbml0ZWx5
IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMi4gc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNhbGxlZCBzaW5jZSB3ZSBh
ZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlLgorICAgICAgICAxMy4gb3JpZ2luYXRpbmdGcmFtZSBpcyBnb25lLiAgT24gX1dLRG93
bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUluZm8gdGhhdCBvZnRlbiBj
b250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9uIHdhcyB0aGVyZSwKKyAg
ICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZGlk
QmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlvblJlc3BvbnNlIHdoaWNo
IGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUgQVBJIHRlc3RzIGZvciBl
dmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tEb3dubG9hZEdldFR5cGVJRCk6
CisgICAgICAgIChXS0Rvd25sb2FkQ29weVJlcXVlc3QpOgorICAgICAgICAoV0tEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKToKKyAgICAgICAg
KFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKToKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHA6CisgICAgICAg
IChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZSk6CisgICAgICAgIChXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRG93bmxvYWQgY2Fu
Y2VsOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAg
ICAoLVtXS0Rvd25sb2FkIGRlbGVnYXRlXSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgc2V0RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb24gX3dhc1Vz
ZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVd
KToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9zaG91bGRQZXJmb3JtRG93bmxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0
b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJW
aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhE
b3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
Ol0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBjYW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJl
cXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6Cisg
ICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVE
YXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBk
ZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRE
aWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMjAtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIHJlZHVuZGFudCBjb2RlIHRoYXQgdHJpZXMgdG8gYnVtcCB0aGUgUW9TIG9mIHRoZSBX
ZWJDb250ZW50IG1haW4gdGhyZWFkIG9mIFVzZXJJbnRlcmFjdGl2ZSB3aGVuIGhhbmRsaW5nIGEg
c3luYyBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCAzZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFi
ZWMzZmZhMjEzOWEyLi45OGVhMDdkYWIxM2Q2ODk2NGZhNmEzZWYxYmFlYzJiN2UxYTA0NDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCkBAIC00MCwxNCArNDAsMTQgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHREb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEhpc3Rv
cnlDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRl
bnRpYWwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCi0gICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3
NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQyZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxv
YWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZWY8TmV0dwogICAg
IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2FkSUQsIFdURk1v
dmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBhdXRvIGRvd25s
b2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsICpu
ZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAgLy8gRm9yIGNvbXBhdGli
aWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBzZW5kIERpZFN0YXJ0IGlm
IHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93bmxvYWREaWRTdGFydCA9
PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3dubG9hZC0+c2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsKKwogICAgIEFTU0VSVCgh
bV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5k
ZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uYzQ4MWViNWY2ZDQy
OWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTYwLDYg
KzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3
b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBjbGFzcyBDYWxsRG93bmxv
YWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERvd25sb2FkTWFuYWdlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2VyKTsKIApAQCAtODYsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERv
d25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChE
b3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAK
ICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggOTVmOGRlYzMwMjUxYjgwYmFhMjljZTU5MDg3
M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgRG93bmxv
YWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0U2Vy
aWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1Byb3Bl
cnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICNlbmRpZgog
CisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRhdGVkRGF0YSBvbmNlIHdl
J3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gV0tEb3dubG9hZAorICAgIC8vIGJlY2F1
c2UgdGhlcmUncyBubyByZWFzb24gdG8gc2V0IHRoZSBsb2NhbCBwYXRoIHdlIGdvdCBmcm9tIHRo
ZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0YS4KICAgICBtX2Rvd25sb2FkVGFzayA9IFtjb2NvYVNl
c3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5zZXNzaW9uIGRvd25sb2FkVGFza1dp
dGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gW21f
ZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5z
ZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5zKHRhc2tJZGVu
dGlmaWVyKSk7CkBAIC04Myw3ICs4NSwyMiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRUYXNrKTsKLSAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQ
cm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7Cisg
ICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQ
dHIoW3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2Fk
VGFza0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09S
S19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBN
b2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3Vt
ZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAg
IGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5p
dEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAg
W3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9s
aWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRO
UyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3Nd
LCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtO
U0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAg
ICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0
aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUlu
Zm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAg
ICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBb
ZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKKyNlbmRpZgogICAgICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSBy
ZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgfTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YVJlZmVyZW5j
ZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggOGQ4OTdhNDIzMGFmZTJlOThkZGRhOWM0
YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4MmM5ZTQ3M2JmMzVlMDNmZjNhNjJmNzA1ZDNlMWFjMjE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCkBAIC00NDYsMTAgKzQ0Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2Fu
CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICByZXR1cm4gInVua25vd24iX3M7CisgICAg
cmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA4YTlkMmYzOTM5ZTcxODZiODFlOGE3ZWZkNGJiZWI1MGE2M2IyZjU5
Li5iNGViMTBhMDk4NDNmZmM2NDUzYTBjYzRhOWM3MmY0ZWJmOGVlNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5ICsy
MDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93
bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBh
dGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0
aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3RhcnQp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDc5LDEwICsyMDc5LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYg
bmV0d29ya0RhdGFUYXMKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gbmV0d29ya0Rh
dGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkudG9VSW50NjQoKTsKIAotICAgIC8vIEFzIHBlciBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUg
ZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91
bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0d29y
a0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVk
RmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogCiAgICAgZG93bmxv
YWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZSwg
c3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBuZXR3b3Jr
RGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdvcmtEYXRhVGFzayldIChTdHJpbmcmJiBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQWxs
b3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAgICAgICBhdXRvIGRvd25s
b2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmU1MjZlZmYxZThj
OTFkMzZlYTg5Yjg3ZTdiNTY3OTU4YTk1NmZiMi4uMjlkNGE2ODAwZWM2YWIwZDgwZGI4MzNkNTRk
MjdmMGQ1NzdiOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBDYWxs
RG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQyMSw3
ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZG93
bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAgdm9p
ZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmMDE5MDU2ZTViNTdmNTMz
NGI4Y2U3MzgyNmUyZmEwNTY4ODkzYmYuLmE5YmJlY2U1YWE4ZDg3YjM0OTMyYTYzOTJjZjVhZGUy
Nzg3OGUxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdEb21h
aW4sIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykg
LT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSkKLSAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0
YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRT
dGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKSBB
c3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDhhOGFiMGI5YjgzMWNhZjQ4ZmEyMjQ1MzA5OGFmYjI0YWFhOGY0ZGUuLmNiNjk2ZjMyYTkz
ZTVkNjZlYjcwY2QwNDhmZWIxNDE2YWI5NTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc2
OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2UKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBp
ZiAocmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUg
dGhlIGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4g
QWRkIGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVz
dW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5n
RmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAg
ICAgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxl
RGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNT
dHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNs
YXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBm
aW5pc2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dGFzay5f
cGF0aFRvRG93bmxvYWRUYXNrRmlsZSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9j
YWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29k
ZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBhdXRvIHJlc3Vt
ZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0
aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwo
ZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRi
ZGI5Yjg2OTUuLmUyODcwYTBhZmRjOWY4NTE4ZTFkMjk0NzNjM2M1YjYzMjc1OTM4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6
QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAn
V2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdvcmxk
U2hhcmVkLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1
ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpG
aW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3M2UxMDk5NGY1ZGMxMzdmYWY0MDZh
MjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJjZGUxOTIwZmI1MDRjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzAsNiArMzAsOCBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJlc3Vs
dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAppbmRl
eCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3M2M1MmFjMTFlYjIyMjBhY2Y2Li40YTExMzY0NjExY2Zi
YzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBhdXRvIHRvQVBJKFQq
IHQpIC0+IEFQSVR5cGUKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihBUEk6
Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFQ
SVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88VD46OkFQSVR5cGU+CithdXRvIHRvQVBJKFQm
IHQpIC0+IEFQSVR5cGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihB
UEk6Ok9iamVjdDo6d3JhcCgmdCkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZT4KIGF1dG8gdG9J
bXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KaW5kZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4uN2Yw
NTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tDb250
ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tG
cmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmplY3Q6
Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQgYWxs
b2NdOworICAgICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjRlYTRhZmJkNjlmMTgw
ZDc4ZTU5YmZhZTMyNWM0ZWY2NGY0NDkyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzc0LDcgKzM3NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tG
cmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEu
LjI0ODA1MzJlZWNlMWE0OTA0YmVkYzhjZGQ0ZTk3ZjFiYzk1NWI4NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1Li5k
ZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDksMTggKzQ5LDIw
IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsK
IAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxl
Z2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu
dDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYmJhODU5YWYyZTQzNWU5ZjA5MjRmNGEzMmUxMTdkOTYz
OTVkYmY5NS4uMGM1NjRkNDQ1NGM4MmQ4OTU3YWZlYWU3NDdjMGI2ZjE3MGY2YmFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0KICAg
ICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmln
YXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzQnV0Tm90
QXBwTGlua3M7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGRBbGxvdzsgfQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybURvd25sb2FkKCkgY29u
c3QgeyByZXR1cm4gIW1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNO
dWxsKCk7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9CiAg
ICAgYm9vbCBpc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5pc1JlZGlyZWN0OyB9CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0
aW9uKCkgeyBtX3Nob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVS
TCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYm
IHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlv
bikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRi
ZTg4NmEwNzQyMmJmODNiN2FmY2ZjYmM2YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgxZTky
Y2VlNDkyNWZmNmFkZGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJh
bWVQcm94eTsKQEAgLTk5LDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBO
YXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgTmF2aWdhdGlvbkFjdGlvbiYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5YjdkZDMx
YTBjMmE5Y2ViZWQ0Zi4uMjYxMDE4OGE5NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAt
NTAsMTEgKzUwLDExIEBAIGNsYXNzIFBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVz
ZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAg
ICAgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMzYTVj
MjYwNzRlMjYyZDExMzRiYy4uZmZkMDdlOGNjZDhiMDQwNjcxNGVlODcxMGVjMjEzMDgwOWZlYzRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC01
NSw5ICs1NSw2IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAK
IG5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRE
b3dubG9hZENsaWVudFYwLCBXS0NvbnRleHREb3dubG9hZENsaWVudFYxPiBWZXJzaW9uczsKLX07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYwPiBW
ZXJzaW9uczsKIH07CkBAIC0xNjgsOTAgKzE2NSw2IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNs
CiAgICAgfQogfQogCi12b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQot
ewotICAgIGNsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xp
ZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50
KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYg
Y29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRl
eHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNw
b25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwg
V2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3Qg
bGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEobV9jb250ZXh0LCBXZWJLaXQ6OnRv
QVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShkb3dubG9hZFByb3h5LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
OjpObywgeyB9KTsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3Zlcndy
aXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDogV2Vi
S2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb24u
Z2V0KCkpKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBm
aW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3Rp
bmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94
eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRGaW5pc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRGYWlsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0gICAgICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDYW5jZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2FuY2VsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2go
bV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKLSAgICAgICAgfQotICAgICAgICBXS0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAg
IH07Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldExlZ2FjeURvd25sb2FkQ2xpZW50
KGFkb3B0UmVmKCpuZXcgTGVnYWN5RG93bmxvYWRDbGllbnQod2tDbGllbnQsIGNvbnRleHQpKSk7
Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNs
aWVudCh3a0NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CmluZGV4IGRjMmUwZDE5MjMxNWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLjQzMTU2MGQ2
MDczNDViNTU2N2IyNzYxM2I5N2Q1MDEyZjZiMDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQu
aD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0
ZWQuaD4KQEAgLTEzOCw3ICsxMzcsNiBAQCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4
dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25s
b2FkQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5l
Y3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRl
eHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZjZjk2YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2IzMmQxZDg3
NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQ29udGV4dERv
d25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9h
ZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVk
ZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wgKCpXS0NvbnRleHREb3dubG9h
ZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tDb250ZXh0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrKShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5
cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFj
aykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5n
UmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250
ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsKShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRD
cmFzaENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSB7Ci0gICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tDb250ZXh0
RG93bmxvYWRDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENs
aWVudFYwIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAg
V0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRTdGFydDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOwotICAgIFdLQ29udGV4dERvd25sb2FkU2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9uOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmFpbENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbDsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZENhbmNlbDsKLSAgICBXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRDcmFz
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsKLX0g
V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMSB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAw
LgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVz
cG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9hZFNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVE
ZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0aW5h
dGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9hZERp
ZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWw7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9jZXNz
RGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlkQ3Jh
c2g7Ci0KLSAgICAvLyBWZXJzaW9uIDEuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3Q7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjE7Ci0KLSNlbmRpZiAvLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGMyODdiYjM0NzA0
NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmViZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJBUElB
cnJheS5oIgotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBUElEb3dubG9hZENsaWVu
dC5oIgotI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KQotewotICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKLX0KLQotdWlu
dDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRv
SW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQotV0tEYXRhUmVmIFdL
RG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPmxlZ2FjeVJlc3VtZURhdGEoKSk7Ci19Ci0KLXZv
aWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVy
biB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqdG9JbXBsKGRv
d25sb2FkKSldIChhdXRvKikgewotICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlk
Q2FuY2VsKGRvd25sb2FkLmdldCgpKTsKLSAgICB9KTsKLX0KLQotV0tQYWdlUmVmIFdLRG93bmxv
YWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwotfQotCi1XS0Fy
cmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQotewotICAgIGF1dG8mIHJlZGlyZWN0Q2hhaW4gPSAgdG9JbXBsKGRvd25sb2FkKS0+cmVkaXJl
Y3RDaGFpbigpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAgIHVy
bHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWRpcmVjdENoYWluLnNpemUoKSk7Ci0gICAgZm9y
IChhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0Q2hhaW4pCi0gICAgICAgIHVybHMudW5jaGVj
a2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUocmVkaXJlY3RVUkwuc3RyaW5nKCkpKTsKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMpKS5sZWFrUmVmKCkp
OwotfQotCi1ib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0
ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmNzIwMjc5M2Q1NGY1NDJhMzkwOTIwNGEzYzgw
ZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0Rvd25sb2FkX2gKLSNk
ZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVk
ZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKLQot
V0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KSBXS19DX0FQSV9ERVBSRUNBVEVEOwotV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25s
b2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tEYXRh
UmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tf
RVhQT1JUIHZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdL
X0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJl
Y3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93bmxv
YWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV0tEb3dubG9hZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjk1N2Y4NjAxOTU5NTVmNzU5NTdiZGMwMTZmZmNlMTEzMjI2ZGEyMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgYm9vbCAoKldLRG93bmxvYWRXaWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmlu
Z1JlZiAoKldLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tEb3dubG9hZERpZFdyaXRlRGF0YSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgbG9uZyBsb25n
IGJ5dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS0Rvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRGYWlsV2l0
aEVycm9yKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFS
ZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0
IFdLRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OworfSBXS0Rvd25sb2FkQ2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tEb3dubG9hZENs
aWVudFYwIHsKKyAgICBXS0Rvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tEb3dubG9h
ZFdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbjsKKyAgICBXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKKyAgICBXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgICAgICAg
ICAgICAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOworICAgIFdLRG93bmxv
YWREaWRXcml0ZURhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3Jp
dGVEYXRhOworICAgIFdLRG93bmxvYWREaWRGaW5pc2ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLRG93bmxvYWREaWRGYWlsV2l0aEVycm9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbFdpdGhFcnJvcjsKK30gV0tE
b3dubG9hZENsaWVudFYwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZFJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkUmVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjAzZjhiNjRlODgyYTY3YjIzYmQzNDZiNzdjMDc4
NDJhMDUxZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZFJlZi5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tEb3dubG9hZFJlZi5oIgorCisjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRG93bmxvYWRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tEb3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tEb3dubG9hZENsaWVudFYwPiBWZXJzaW9uczsKK307Cit9CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KQoreworICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKK30KKworV0tV
UkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQoreworICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUodG9JbXBsKGRv
d25sb2FkKS0+cmVxdWVzdCgpKS5sZWFrUmVmKCkpOworfQorCit2b2lkIFdLRG93bmxvYWRDYW5j
ZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBX
S0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIHRvSW1wbChk
b3dubG9hZCktPmNhbmNlbChbZnVuY3Rpb25Db250ZXh0LCBjYWxsYmFja10oYXV0byogcmVzdW1l
RGF0YSkgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayh0b0FQ
SShyZXN1bWVEYXRhKSwgZnVuY3Rpb25Db250ZXh0KTsKKyAgICB9KTsKK30KKworV0tQYWdlUmVm
IFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwor
fQorCitib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0ZWQo
KTsKK30KKwordm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tEb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJ
OjpEb3dubG9hZENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBEb3dubG9h
ZENsaWVudChjb25zdCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25T
cGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dG9BUEkoZG93bmxvYWQpLCB0b0FQSShjaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFdyaXRlRGF0YSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRXcml0ZURh
dGEodG9BUEkoZG93bmxvYWQpLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVBJOjpTdHJpbmcqIGRlc3RpbmF0aW9uID0gdG9JbXBsKG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVzcG9uc2UpLCB0b0FQ
SShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
KyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24tPnN0cmluZygpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmluaXNoKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZpbmlzaCh0b0FQSShkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSog
cmVzdW1lRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxXaXRoRXJyb3IodG9BUEkoZG93bmxvYWQpLCB0b0FQSShlcnJvciks
IHRvQVBJKHJlc3VtZURhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgZGlkRmFpbChkb3dubG9h
ZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3QoKS51cmwoKSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFz
aGVkIGR1cmluZyBkb3dubG9hZCIgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVz
cG9uc2UpLCB0b0FQSShyZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKGRvd25sb2FkKS0+
c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoY2xpZW50KSkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0N2ZmYTg5NWUyZTU1OTVjODdjYWE0N2M3ZTFlMThjMWJkY2IzOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisKKyNpZm5k
ZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tE
b3dubG9hZEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxv
YWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKKwordHlwZWRlZiB2b2lkICgq
V0tEb3dubG9hZENhbmNlbENhbGxiYWNrKShXS0RhdGFSZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Rvd25s
b2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spOworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25s
b2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JU
IGJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKaW5kZXggOGZmMzdlNWM4N2JlODQ3MjFjYjFhODA4
M2YzYTIwZjE1NTlhNTUwMS4uZTEzNzA2ZGU1MDNjOTdhNTM2Mjg3NWI1YTc2YjQ5MDQxMGZiMzFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
QWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25BY3Rpb25SZWYuY3BwCkBAIC0zNiw3ICszNiwxMCBAQCBXS1R5cGVJRCBXS05hdmlnYXRp
b25BY3Rpb25HZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OkFQSVR5cGUpOwogfQogCi1ib29sIFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1E
b3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQorV0tTdHJpbmdSZWYgV0tOYXZp
Z2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIGFj
dGlvbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGFjdGlvbiktPnNob3VsZFBlcmZvcm1Eb3dubG9h
ZCgpOworICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHRvSW1wbChhY3Rpb24pLT5kb3dubG9hZEF0dHJp
YnV0ZSgpOworICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiB0b0FQSShhdHRyaWJ1dGUuaW1wbCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKaW5k
ZXggOWQ4ZmNmMWUxOTk3MTNiMWYwOWIzMjYyMGQyMTU3OTI0NTQ4NmU5Yy4uNGMxM2Q2MzliZDdh
ZjI2OTEwYzNkNzAyMzczZDY1NDYxNTNiOTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKQEAgLTM0LDcgKzM0LDcg
QEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05hdmlnYXRpb25BY3Rpb25H
ZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVy
Zm9ybURvd25sb2FkKFdLTmF2aWdhdGlvbkFjdGlvblJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUoV0tOYXZpZ2F0aW9uQWN0
aW9uUmVmIGFjdGlvbik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMDY0ODI2Y2IyNWUzNTY0YTEzMDVkNDM0YjM4
NDBhYTM0ZWZmYzk2ZC4uYzllOGIzMjYzNGRhOGU4MDg4YzkyM2ExNmQ5YWI0MmE2ODViODg5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01NSw2ICs1NSw3
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAj
aW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTEyNDAsNyArMTI0MSw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291cmNlUmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdG
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291cmNlUmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgJiYg
IW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikgewog
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEyNTEsMTQgKzEyNTIsMTQgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICAgICAgUmVmPEFQSTo6VVJMUmVxdWVzdD4g
cmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlw
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxp
c3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRh
dGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5w
dHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25U
eXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9B
UEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQ
SSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5h
dmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyks
IHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdp
bmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmll
cnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdp
bmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVlc3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0
LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5t
b3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVl
c3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEy
NjcsNyArMTI2OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKIAogICAgICAgICAgICAgUmVm
PEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291
cmNlUmVxdWVzdCk7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9k
aWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShy
ZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksIHRvQVBJKGxpc3RlbmVyLnB0
cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKCZwYWdl
KSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRp
b25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRy
KCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291
cmNlUmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQpAQCAtMjI1OSw2
ICsyMjYwLDI3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICByZXR1cm4g
QVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwpKTsKICAg
ICAgICAgfQogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQubmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmFjdGlvbiks
IHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYktp
dDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgcmVzcG9uc2Us
IFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmcmVzcG9u
c2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9j
bGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRvQVBJKCZk
b3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKwogICAgICAg
ICB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEJlZ2luTmF2aWdh
dGlvbkdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMzgwNmQxODZhYTlmYjk3NzQ3YTczZDk3MzYw
NmE1OGViNDE4OGI2MC4uYTRhYWZlNGE5MzViMzEwYTIyMDFiZjdiNGY3NDU2NWU1NTJiODRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmln
YXRpb25DbGllbnQuaApAQCAtNzEsNyArNzEsMTMgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2
aWdhdGlvbldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFcK
IHR5cGVkZWYgV0tEYXRhUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlXZWJDcnlwdG9NYXN0ZXJL
ZXlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0
eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwotICAgIAorCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRp
b25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwogdHlwZWRl
ZiBXS1BsdWdpbkxvYWRQb2xpY3kgKCpXS1BhZ2VOYXZpZ2F0aW9uRGVjaWRlUG9saWN5Rm9yUGx1
Z2luTG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5Mb2FkUG9saWN5IGN1cnJl
bnRQbHVnaW5Mb2FkUG9saWN5LCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0RpY3Rpb25hcnks
IFdLU3RyaW5nUmVmKiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkRpZEJlZ2luTmF2aWdh
dGlvbkdlc3R1cmUpKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAg
LTIxMyw2ICsyMTksOSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMg
ewogCiAgICAgLy8gVmVyc2lvbiAzLgogICAgIFdLUGFnZU5hdmlnYXRpb25Db3B5U2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2sgY29weVNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZzsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWRDYWxsYmFjayBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQ7CisgICAgV0tQYWdl
TmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjayBuYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZENhbGxiYWNrIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiB9
IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMzsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjZmMTMxNzczMTczYmQyN2RmYTgxMzU2NDhhMWYwNzViMWM0OGU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS0ZyYW1lSW5mbzsK
K0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KQorQGludGVyZmFjZSBXS0Rvd25sb2FkIDogTlNPYmplY3QKKworLyogQGFic3RyYWN0IFRoZSBy
ZXF1ZXN0IHVzZWQgdG8gaW5pdGlhdGUgdGhpcyBkb3dubG9hZC4KKyAgQGRpc2N1c3Npb24gSWYg
dGhlIG9yaWdpbmFsIHJlcXVlc3QgcmVkaXJlY3RlZCB0byBhIGRpZmZlcmVudCBVUkwsIG9yaWdp
bmFsUmVxdWVzdAorICB3aWxsIGJlIHVuY2hhbmdlZCBhZnRlciB0aGUgZG93bmxvYWQgZm9sbG93
cyB0aGUgcmVkaXJlY3QuCisqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxs
YWJsZSkgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CisKKy8qIEBhYnN0cmFjdCBUaGUg
ZGVsZWdhdGUgdGhhdCByZWNlaXZlcyBwcm9ncmVzcyB1cGRhdGVzIGZvciB0aGlzIGRvd25sb2Fk
LiAqLworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+
IGRlbGVnYXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMg
ZmluaXNoZWQuCisgQGRpc2N1c3Npb24gVG8gYXR0ZW1wdCB0byByZXN1bWUgdGhlIGRvd25sb2Fk
LCBjYWxsIFdLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB3aXRoIHRoZSBkYXRhIGdp
dmVuIHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4KKyBJZiBubyByZXN1bWUgYXR0ZW1wdCBpcyBw
b3NzaWJsZSB3aXRoIHRoaXMgc2VydmVyLCBjb21wbGV0aW9uSGFuZGxlciB3aWxsIGJlIGNhbGxl
ZCB3aXRoIG5pbC4KKyovCistICh2b2lkKWNhbmNlbDoodm9pZCheIF9OdWxsYWJsZSkoTlNEYXRh
ICogX051bGxhYmxlIHJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tEb3dubG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDJhOTk0NTQxOTA3N2JkOTQ5ODdkYTAyYmNh
NDIzOWY4MTgxMzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWQubW0KQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgorCisjaW1w
b3J0ICJBUElEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlci5oIgorI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXS05TRGF0YS5oIgorI2ltcG9ydCAiV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIu
aD4KKworY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENs
aWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQgPFdLRG93bmxv
YWREZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAg
ICAgICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3Bv
bmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZp
bGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdy
aXRlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpk
aWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTop
XSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKKyAgICAgICAgLCBtX3Jl
c3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkKKyAgICB7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1Jl
cXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndy
YXBwZXIoZG93bmxvYWQpIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnN0YXRpY19jYXN0PE5T
SFRUUFVSTFJlc3BvbnNlICo+KHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkgbmV3UmVxdWVzdDpu
c1JlcXVlc3QuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSldKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICAgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICAgICAgICAgIGNhc2UgV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5Q2FuY2VsOgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lB
bGxvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeSAoJWxkKSIsIChsb25nKXBvbGljeV07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNoYWxsZW5nZS5saXN0ZW5l
cigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworCisgICAgICAgIFtt
X2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTp3cmFwcGVyKGNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtjaGFsbGVuZ2UgPSBtYWtlUmVmKGNoYWxsZW5nZSksIGNoZWNrZXIgPSBXZWJLaXQ6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdl
dCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewor
ICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2Uo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
LCBjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6
OkNyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6CisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVj
dFByb3RlY3Rpb25TcGFjZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCku
Y29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9u
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKQorICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCisgICAg
ICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFt
ZTpzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25s
b2FkID0gbWFrZVJlZihkb3dubG9hZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVVUkwp
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBiZSBhIGZpbGUg
VVJMIl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXTsKKyAgICAgICAgICAgIGlmICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6
W2Rlc3RpbmF0aW9uIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0ucGF0aF0pIHsKKyAg
ICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAg
ICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlcklu
Zm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6ZGVzdGluYXRpb24ucGF0aF0pIHsKKyAgICAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAg
ICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9y
RG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi5wYXRoKTsKKyAgICAgICAgfSkuZ2V0
KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVz
V3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9EaWRGaW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZCldOworICAg
IH0KKworICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRh
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9E
aWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVn
YXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNF
cnJvcigpIHJlc3VtZURhdGE6d3JhcHBlcihyZXN1bWVEYXRhKV07CisgICAgfQorCisgICAgdm9p
ZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdp
dGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9u
TG9zdCB1c2VySW5mbzpuaWxdIHJlc3VtZURhdGE6bmlsXTsKKyAgICB9CisKKyAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1f
cmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmlu
aXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsK
KworQGltcGxlbWVudGF0aW9uIFdLRG93bmxvYWQKKworLSAodm9pZCljYW5jZWw6KHZvaWQgKF4p
KE5TRGF0YSAqcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZG93bmxvYWQt
PmNhbmNlbChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYXV0byogZGF0YSkgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpKTsKKyAgICB9KTsKK30KKwor
LSAoTlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0Cit7CisgICAgcmV0dXJuIF9kb3dubG9h
ZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cit9CisKKy0gKGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRl
bGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKK30KKworLSAodm9p
ZClzZXREZWxlZ2F0ZTooaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfZG93bmxvYWQtPnNldENsaWVudChhZG9wdFJlZigq
bmV3IERvd25sb2FkQ2xpZW50KGRlbGVnYXRlKSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAo
QVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9kb3dubG9hZDsKK30KKwor
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNTMyODQ4MDgxYWE4MzZjMzRjMGY4MzAwNTdk
YjAzOWIzNzliYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRG93bmxvYWQ7CisKKy8qIEBlbnVtIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeQorIEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0
aGUgZGVjaXNpb24gaGFuZGxlciBmcm9tIHRoZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgorIEBjb25zdGFudCBX
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwgICBDYW5jZWwgdGhlIHJlZGlyZWN0LgorIEBj
b25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgcmVkaXJl
Y3QuCisqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSB7CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJv
dG9jb2wgV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCisvKiBAYWJz
dHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRUUCByZWRp
cmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVj
ZWl2ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rpb24gcmVz
cG9uc2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2lsbCBiZSBz
ZW50LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlv
dSBtdXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2NlZWQgd2l0
aCB0aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQg
dGhpcyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJlIHRha2Vu
LgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZv
a2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZl
ZCB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNv
bXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0byB0aGUgY2hhbGxl
bmdlLiBUaGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBv
ZiB0aGUgZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLiBXaGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVz
ZSwgb3IgbmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisgY3JlZGVudGlhbC4K
KyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdl
YiB2aWV3IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHdpdGgg
dGhlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9z
aXRpb24uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBs
ZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBu
ZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0g
ZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVkIGEgZmlsZSB0byB3aGljaCB0
byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciByZXNwb25zZSwgaWYgdGhpcyBk
b3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QuCisgQHBhcmFtIHN1Z2dl
c3RlZEZpbGVuYW1lIFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRo
ZXIgYSBmaWxlIFVSTCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUg
ZG93bmxvYWQuCisgQGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBV
UkwsIHJlc3BvbnNlIHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRl
biBiZSB0aGUgc2FtZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250
ZW50IGNhbiBzcGVjaWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRo
ZSBkZXN0aW5hdGlvbiBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0
aGF0IGRvZXMgbm90IGV4aXN0IGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2Fu
IGJlIHdyaXR0ZW4gdG8uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihudWxsYWJsZSBOU1VSTFJlc3BvbnNl
ICopcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5h
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICogX051bGxhYmxlIGRlc3RpbmF0
aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUg
ZG93bmxvYWQgaGFzIHJlY2VpdmVkIGFuZCB3cml0dGVuIGRhdGEgdG8gdGhlIGRlc3RpbmF0aW9u
LgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCBoYXMgd3JpdHRlbiBkYXRhLgor
IEBwYXJhbSBieXRlc1dyaXR0ZW4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJh
bSB0b3RhbEJ5dGVzV3JpdHRlbiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisg
QHBhcmFtIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgVGhlIHRvdGFsIG51bWJlciBvZiBieXRl
cyBleHBlY3RlZCB0byBiZSB3cml0dGVuLgorIEBkaXNjdXNzaW9uIElmIHRoaXMgZG93bmxvYWQg
d2FzIHRoZSByZXN1bHQgb2YgcmVzdW1pbmcgYSBwcmV2aW91cyBkb3dubG9hZCwgdGhlbgorIHRv
dGFsQnl0ZXNXcml0dGVuIHdpbGwgYmUgYnl0ZXNXcml0dGVuIHBsdXMgdGhlIG51bWJlciBvZiBi
eXRlcyB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZC4KKyBJZiB0aGUgdG90YWwgbnVt
YmVyIG9mIGJ5dGVzIGlzIHVua25vd24sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgd2lsbCBi
ZSAtMS4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3Jp
dGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRv
d25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBk
b3dubG9hZCB0aGF0IGZpbmlzaGVkLgorKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdL
RG93bmxvYWQgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgaGFz
IGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUg
cmVhc29uLgorIEBwYXJhbSByZXN1bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdL
V2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlz
IGRvd25sb2FkLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YToobnVsbGFibGUgTlNE
YXRhICopcmVzdW1lRGF0YTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNmM4OTQyMGU2ZTI3YjE0M2RiMDI1NDA1Y2IzM2I3YTlkN2M0YWY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkLmgiCisjaW1wb3J0ICJXS09i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBl
clRyYWl0czxEb3dubG9hZFByb3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tEb3du
bG9hZDsKK307CisKK30KKworQGludGVyZmFjZSBXS0Rvd25sb2FkICgpIDxXS09iamVjdD4gewor
QHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBf
ZG93bmxvYWQ7CisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gPiBfZGVs
ZWdhdGU7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbi5tbQppbmRleCA3NzA3NWJkNjY0YmIxYjkxNTdkODAzYTRmYmFlYjEzOGI3
M2JmMzQzLi5jZjM1N2RmMGFhMjczMDVkMzA2ZTQ3ZDk2ZDQ4YjZhZDM0ZmM2MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KQEAg
LTQ1LDYgKzQ1LDExIEBACiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3Qo
KS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCistIChCT09MKV93YXNVc2VySW5pdGlhdGVkCit7CisgICAgcmV0dXJu
IF9uYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAtIChXS0NvbnRlbnRNb2RlKWVmZmVjdGl2ZUNvbnRlbnRNb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
LmgKaW5kZXggOTM0MDcwZTNkZTQ0OTgyZjU3MmJkNWExODhkMTBjYjQ5Y2Y3MjExZi4uOTJlZjBm
ZjRlODE2OGY4NTcyZDczODg4Y2I2YTA5Nzg0N2IyMmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaApAQCAtNzYs
NiArNzYsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAg
Ki8KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0OwogCisvKiEgQGFic3RyYWN0IFRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgb2YgdGhlIGVs
ZW1lbnQgdGhhdCBjYXVzZWQgdGhpcyBuYXZpZ2F0aW9uLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpkb3dubG9hZEF0dHJpYnV0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIAogLyohIEBhYnN0cmFjdCBUaGUgbW9kaWZpZXIga2V5
cyB0aGF0IHdlcmUgaW4gZWZmZWN0IHdoZW4gdGhlIG5hdmlnYXRpb24gd2FzIHJlcXVlc3RlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uLm1tCmluZGV4IDRkMjBjODBjZWMyNmE3YzI4NjkyYWE4NmQzNGI0MGE2Yjc1MGYw
YmUuLmJiZWU4ZmU2YmZlZWE5MDg3Mzc2MWViOWVlZGM2MTlhMzY2ZWUzODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlv
bi5tbQpAQCAtMTE2LDYgKzExNiwxNCBAQCBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUgdG9X
S1N5bnRoZXRpY0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZQogICAgIHJl
dHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwogfQogCistIChOU1N0cmluZyAq
KWRvd25sb2FkQXR0cmlidXRlCit7CisgICAgYXV0byYgYXR0cmlidXRlID0gX25hdmlnYXRpb25B
Y3Rpb24tPmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gYXR0cmlidXRlOworfQorCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlj
a1R5cGUKIHsKQEAgLTE4Nyw3ICsxOTUsNyBAQCBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUg
dG9XS1N5bnRoZXRpY0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZQogCiAt
IChCT09MKV9zaG91bGRQZXJmb3JtRG93bmxvYWQKIHsKLSAgICByZXR1cm4gX25hdmlnYXRpb25B
Y3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpOworICAgIHJldHVybiAhX25hdmlnYXRpb25B
Y3Rpb24tPmRvd25sb2FkQXR0cmlidXRlKCkuaXNOdWxsKCk7CiB9CiAKIC0gKEJPT0wpX3Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCmluZGV4IDg1ZmQ5NmU0
ZGQwZmVmZTZiY2Y3ZmVlOWQ3OGM1ZTk5MmY1YmMzNzIuLjUzY2M1YTk3YzdlYTkyNTRhMzI1MDRh
NGRlNjRmNmMzZmYzZTVhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaApAQCAtNDUsNyAr
NDUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1N5bnRoZXRpY0NsaWNrVHlwZSkg
ewogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9jYW5IYW5kbGVSZXF1ZXN0
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVuRXh0ZXJu
YWxTY2hlbWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5BcHBMaW5rcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJkb3dubG9hZEF0dHJpYnV0ZSIsIG1hY29zKDEwLjE1LCBXS19NQUNfVEJBKSwg
aW9zKDEzLjAsIFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIF9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzIFdLX0FQSV9ERVBSRUNBVEVEKCJ1c2UgX3No
b3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMgYW5kIF9zaG91bGRPcGVuQXBwTGlua3MiLCBtYWNvcygx
MC4xMSwgMTAuMTEpLCBpb3MoOS4wLCA5LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAppbmRleCBjZjIx
MGFlOTFiNjI5ZjJmYWNlNzdlMWJlMzUxMGViODg0YTA1ODc4Li4xNjhiNzllY2UwNjhmOGJjY2Zh
NmNhYjBjMDFmZTgxZTNlNmIyNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaApAQCAtMjksNiArMjksNyBA
QAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFz
cyBXS05hdmlnYXRpb247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwogQGNsYXNzIFdLTmF2
aWdhdGlvblJlc3BvbnNlOwpAQCAtNDAsMjAgKzQxLDI0IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFu
ZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwg
ICBDYW5jZWwgdGhlIG5hdmlnYXRpb24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBjb25zdGFu
dCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCAgICBUdXJuIHRoZSBuYXZp
Z2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSB7CiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LAorICAgIFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTApLCBpb3MoOC4wKSk7CiAKIC8qISBAZW51bSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeQog
IEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0aGUgZGVjaXNpb24gaGFuZGxl
ciBmcm9tIHRoZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lDYW5jZWwgICBDYW5jZWwgdGhlIG5hdmlnYXRpb24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gY29udGludWUu
CisgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgICAg
VHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQuCiAgKi8KIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSB7CiAgICAgV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvdywKKyAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qISBBIGNsYXNzIGNvbmZv
cm1pbmcgdG8gdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHByb3RvY29sIGNhbiBwcm92aWRlCkBA
IC0xNjQsNiArMTY5LDIyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5KSB7CiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0RlcHJlY2F0ZWRUTFM6KHZvaWQgKF4pKEJPT0wpKWRl
Y2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2
aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25BY3Rpb24g
VGhlIGFjdGlvbiB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxvYWQuCisgQHBhcmFt
IGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyovCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qCisgQGFi
c3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhl
IGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uUmVzcG9uc2UgVGhlIHJlc3BvbnNlIHRoYXQg
aXMgYmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRv
d25sb2FkLgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRp
ZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmMDljMmE4ZTZh
NWI3ODU1YmZmOWVhNWZjMzIxMzJhMTUzZWIxNWI1Li45OTEzZDE2YzBhOTc2MDQ5OTQ2NGNjNDNl
YmEzZTRmMTllN2QwZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC01OCwx
MSArNTgsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeSkgewogICAgIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUsCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCi1zdGF0aWMgY29u
c3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3du
bG9hZCA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgKyAxKTsKK3N0YXRpYyBjb25zdCBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2Fk
IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUJlY29tZURvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBX
S19JT1NfVEJBKSkgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAyKTsKIHN0YXRpYyBjb25z
dCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40
KSwgaW9zKDEyLjIpKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dJbk5ld1Byb2Nlc3Mg
PSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dXaXRob3V0VHJ5aW5nQXBwTGluayArIDEpOwogCi1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
PSAoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkgPSAoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cg
KyAxKTsKIAogQHByb3RvY29sIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CiAKQEAgLTg4LDYgKzg4LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2EK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxs
b3dMZWdhY3lUTFM6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5lZ290aWF0ZU1vZGVyblRMUzooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiAtICh2b2lkKV93ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTooV0tXZWJW
aWV3ICopd2ViVmlldzsKIC8vIEl0ZW0gaXMgbmlsIGlmIHRoZSBnZXN0dXJlIGVuZGVkIHdpdGhv
dXQgbmF2aWdhdGlvbi4KIC0gKHZvaWQpX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZToo
V0tXZWJWaWV3ICopd2ViVmlldyB3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbToo
V0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCmluZGV4IDkxNTg5ZDEy
YTQyMzdjZDczYmI3M2VkNWM5N2I2MWMxN2ExZjEzOWMuLmE3YTdkOTI5ZGZmODcwNDNlN2YzYTYw
M2Y2OGRlNDA3ZDBkMzBhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaApAQCAtMjcsNCArMjcsNSBAQAogCiBA
aW50ZXJmYWNlIFdLTmF2aWdhdGlvbiAoV0tQcml2YXRlKQogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKl9yZXF1ZXN0OworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF93YXNVc2VySW5pdGlhdGVkIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDRmMzZl
MjMyNjQzNzEwMjNkMzhmMjgzODEwNzUxYmNiYTk5ODU5ZGMuLmZhZTMxZjMxYjc5OTEyMWQwZTE3
MzdjZDA3MjEwODU0OTgwMjIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2ltcG9y
dCAiQXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgorI2ltcG9ydCAi
RG93bmxvYWRNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBv
cnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisj
aW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50
ZXJuYWwuaCIKQEAgLTQ4MSwxMiArNDgzLDEyIEBAIHN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFy
ZWRQcm9jZXNzUG9vbDsKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsK
LSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93
ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKKyAgICByZXR1cm4g
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5k
b3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBy
ZXF1ZXN0KSldOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+
cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9w
YWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwg
cGF0aCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
cmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQ6Ok5v
KSldOwogfQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JU
ZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0
cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3YzRmZTRj
ZDhmYjlhZmZhOGNhMDMxOWI5NDg5M2MxZjRlNjg5NjZjLi5mMjQ5ODBjOWNmZjY3ZWNkM2JlZGU3
M2ZlMjQwMDgxOGFhNTBjMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNjIsNyArNjIsNyBAQAog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMykpOwogI2Vu
ZGlmCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVs
ZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlIFdLX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxvYWREZWxlZ2F0ZSIsIG1hY29zKDEw
LjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXV0b21hdGlvbkRlbGVnYXRlOikgaWQgPF9XS0F1dG9t
YXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKQEAgLTgzLDggKzgz
LDkgQEAKIAogLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0OihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwg
aW9zKDEyLjApKTsKIAotLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKF9XS0Rv
d25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vi
c2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0
cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKF9X
S0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3
ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRp
bmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoIldLV2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0IiwgbWFjb3MoMTAuMTAsIFdLX01B
Q19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVE
b3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdL
V2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdp
bmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcuX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6Y29tcGxldGlv
bkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJB
KSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBj
b250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDc2MWExZGEw
ZjY1YjM2OTk3YmFiNDllNjZjMmMyOGU5ZmYwYjBjOGMuLjZjYzhhNzQ4MTA4NjU2MzU4YzJkZTg4
MmQ2NzRmMWYzOTMzOTExMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW07
CiBAY2xhc3MgV0tDb250ZW50V29ybGQ7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0Zp
bmRDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLRmluZFJlc3VsdDsKIEBjbGFzcyBXS0ZyYW1lSW5m
bzsKQEAgLTQ1MCw2ICs0NTEsMTggQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5
cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICAqLwogKyAo
Qk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAorLyogQGFic3RyYWN0IEJlZ2lucyBhIGRv
d25sb2FkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHdlYnBhZ2Ug
YXMgaWYgdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHR1cm5lZCBhIG5hdmlnYXRpb24gaW50byBh
IGRvd25sb2FkIGluc3RlYWQKKyBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCBzcGVjaWZ5aW5n
IHRoZSBVUkwgdG8gZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sg
Y2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBzdGFydGVkLgorICovCistICh2b2lkKXN0YXJ0
RG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFj
dCBSZXN1bWVzIGEgZG93bmxvYWQgdGhhdCBmYWlsZWQgb3Igd2FzIGNhbmNlbGxlZC4KKyBAcGFy
YW0gcmVzdW1lRGF0YSBEYXRhIGZyb20gYSBXS0Rvd25sb2FkRGVsZWdhdGUncyBkaWRGYWlsV2l0
aEVycm9yIG9yIGEgV0tEb3dubG9hZCdzIGNhbmNlbCBjb21wbGV0aW9uSGFuZGxlci4KKyBAcGFy
YW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFz
IHJlc3VtZWQuCisgKi8KKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIC8qIEBhYnN0cmFjdCBUaGUgbWVkaWEgdHlwZSBmb3IgdGhlIFdLV2ViVmll
dwogIEBkaXNjdXNzaW9uIFRoZSB2YWx1ZSBvZiBtZWRpYVR5cGUgd2lsbCBvdmVycmlkZSB0aGUg
bm9ybWFsIHZhbHVlIG9mIHRoZSBDU1MgbWVkaWEgcHJvcGVydHkuCiAgU2V0dGluZyB0aGUgdmFs
dWUgdG8gbmlsIHdpbGwgcmVzdG9yZSB0aGUgbm9ybWFsIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmRkN2VhNWVhOWMxMTM5
N2I3Mjc0ODE4Mjc2YTc0OGUzMGQ5YzY3NC4uMWI0NDQ0YTU2MjI3YTgyMzdmNGFhZDkwMjJmNTNj
MmEyYWEyM2NmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC01OCw5ICs1OCwxMSBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJ
dGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxv
YWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Zp
bmRDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tGcmFtZUluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVBy
aXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tNZWRpYVBsYXli
YWNrU3RhdGUuaCIKQEAgLTcwOCw2ICs3MTAsNDIgQEAgc3RhdGljIHZvaWQgaGFyZHdhcmVLZXli
b2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwK
ICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIAorLSAodm9pZClzdGFy
dERvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9w
YWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlm
IChkb3dubG9hZCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxv
YWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmls
XSk7CisgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdG
YWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVj
dHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNz
XSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VS
TFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtl
eSJdOworICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBOU1N0cmluZyAqcGF0
aCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2Nh
bFBhdGgiXTsKKworICAgIGlmICghcGF0aCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgcmVzdW1lIGRhdGEiXTsK
KworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAvLyBNb2phdmUgQ0ZO
ZXR3b3JrIGZhaWxzIHRvIHJlc3VtZSBhIGRvd25sb2FkIGlmIHRoZSBkZXN0aW5hdGlvbiBkb2Vz
IG5vdCBleGlzdC4KKyAgICAvLyBJZiBzb21lb25lIGhhcyByZW1vdmVkIHRoZSBkZXN0aW5hdGlv
biBmaWxlLCBtYWtlIGFuIGVtcHR5IGZpbGUgYXQgdGhhdCBsb2NhdGlvbi4KKyAgICBpZiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpwYXRoXSkKKyAg
ICAgICAgW1tOU0RhdGEgZGF0YV0gd3JpdGVUb0ZpbGU6cGF0aCBhdG9taWNhbGx5OllFU107Cisj
ZW5kaWYKKworICAgIF9wYWdlLT5yZXN1bWVEb3dubG9hZChBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLCBwYXRoLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYg
KGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9h
ZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9KTsKK30KKwogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA4NTRiMjMzMTAx
MzJlN2RhZGVlNjQ5M2VmNzYzYTE2MTgwNzVkMGRjLi41MGE2MmI1NzMyNDA5ZWVkYWVkNzgwYWJl
ZjdhMzg3OWY3NDhiOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEwOSw2ICsxMDksNyBAQCB0eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKICNlbmRpZgogCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0ZyYW1l
SW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaAppbmRleCBiNGQ4MjZiOWE3MjQ3OGZkMGMwM2U2YjRiMDE4OWYwNzI5OWNlYzczLi5l
YTgyMDMyYTFjZGFjYTZiNDZlOWJjMWZjYTA1ZDhkZTkwMDQ1ZjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAtMjgsMTIgKzI4LDE0
IEBACiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgV0tE
b3dubG9hZDsKIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCitX
S19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQiLCBtYWNvcygx
MC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tE
b3dubG9hZCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CiAKLS0gKHZvaWQpY2FuY2VsOworKyAoaW5z
dGFuY2V0eXBlKWRvd25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAo
dm9pZCljYW5jZWw7CiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkZmVmZTBm
MTY2YTU0OWRkZTY1YmUxMDIyZWI1YzFmZmRlY2MyZGJjLi5kNWUxMWFkNjk0NTRlZDhkZWFiMzU1
NmIwOTI3ZjUwZDhiMzJlMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC0yOCw2NiArMjgsODcgQEAKIAogI2ltcG9ydCAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkIHsKLSAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBfZG93bmxvYWQ7CitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorc3RhdGljIE5TTWFwVGFibGU8V0tE
b3dubG9hZCAqLCBfV0tEb3dubG9hZCAqPiAqZG93bmxvYWRXcmFwcGVyTWFwKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTWFwVGFibGU+PiB0YWJsZTsKKyAgICBp
ZiAoIXRhYmxlLmdldCgpKQorICAgICAgICB0YWJsZS5nZXQoKSA9IFtOU01hcFRhYmxlIHdlYWtU
b1dlYWtPYmplY3RzTWFwVGFibGVdOworICAgIHJldHVybiB0YWJsZS5nZXQoKS5nZXQoKTsKIH0K
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKK0BpbXBsZW1lbnRhdGlvbiBfV0tEb3du
bG9hZAorSUdOT1JFX1dBUk5JTkdTX0VORAogCi0tICh2b2lkKWRlYWxsb2MKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERvd25sb2FkMjooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgX2Rv
d25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOworICAgIHJl
dHVybiBzZWxmOworfQogCi0gICAgW3N1cGVyIGRlYWxsb2NdOworKyAoaW5zdGFuY2V0eXBlKWRv
d25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX1dL
RG93bmxvYWQgKndyYXBwZXIgPSBbZG93bmxvYWRXcmFwcGVyTWFwKCkgb2JqZWN0Rm9yS2V5OmRv
d25sb2FkXSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgX1dLRG93bmxvYWQgKndyYXBw
ZXIgPSBbW1tfV0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDI6ZG93bmxvYWRdIGF1
dG9yZWxlYXNlXTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkgc2V0T2JqZWN0OndyYXBwZXIg
Zm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogLSAodm9pZCljYW5j
ZWwKIHsKLSAgICBfZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxv
YWQpXSAoYXV0byopIHsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9h
ZCA9IG1ha2VSZWYoKl9kb3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1dG8qKSB7CiAgICAgICAgIGRv
d25sb2FkLT5jbGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwogICAgIH0p
OwogfQogCiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTAogewotICAg
IF9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CisgICAgX2Rvd25sb2FkLT5fZG93bmxv
YWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
CiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3Jl
OjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJu
IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoV0tXZWJW
aWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFn
ZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCisgICAgaWYgKGF1dG8qIG9yaWdpbmF0
aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKICAgICAg
ICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKily
ZWRpcmVjdENoYWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5yZWRp
cmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICogeworICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRv
JiB1cmwpIC0+IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAogewotICAgIHJldHVybiBfZG93
bmxvYWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxv
YWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRhICopcmVzdW1lRGF0YQogewot
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5fZG93bmxvYWQtPmxlZ2Fj
eVJlc3VtZURhdGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICopb3JpZ2luYXRpbmdGcmFtZQog
ewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+X2Rvd25sb2FkLT5mcmFtZUlu
Zm8oKSk7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtOTksNyAr
MTIwLDcgQEAKIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKl9k
b3dubG9hZDsKKyAgICByZXR1cm4gKl9kb3dubG9hZC0+X2Rvd25sb2FkOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
RGVsZWdhdGUuaAppbmRleCBhODNmOTAyOWI1YzczZWM1ZjlkYjc0ZjE0MDdjMjg2NGUyNTExMzU4
Li42NWVhY2NhY2I1ZjcwZTE0YWUzYjk3Mzg3ZjQ2OGE4M2E3YmI3YzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRl
LmgKQEAgLTMxLDYgKzMxLDggQEAKIAogQHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGUgPE5T
T2JqZWN0PgogQG9wdGlvbmFsCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAt
ICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkOwogLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlv
cygxMS4zKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKQEAgLTQ2LDQgKzQ4LDUg
QEAKIC0gKEJPT0wpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIHNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKE5TU3RyaW5nICopX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dP
dmVyd3JpdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX2Rvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOiIs
IG1hY29zKDEwLjEwLCAxMC4xMy40KSwgaW9zKDguMCwgMTEuMykpOworI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKaW5kZXggZTEyOTBiM2U1NTNhZWNlZDIy
ZDRmYzZkOTA4NjM0MzcwOTJkNDAxMi4uY2E5NGMyMTczNzU3YTU0YTBjNzU1Y2JmMzBmOGUwNWEw
Yjc1YzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yNSwxNiArMjUsMTIgQEAKIAogI2ltcG9ydCAi
X1dLRG93bmxvYWQuaCIKIAotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiV0tP
YmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4gewotICAg
IHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rvd25sb2FkOwotfTsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAg
ICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gX2Rvd25sb2FkOwogfQotCi1AaW50ZXJmYWNlIF9XS0Rv
d25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlMmZhNWM1
YzVkOWM5ZTVkOTY1NTZlNGExZmM4Y2RhZmU5MjExM2ZlLi5lYWRjZDQzZGIzZDliYjU5NmVkZTk4
MDNhMzg2YzI3MDFiMTQ2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZFN0YXJ0ZWQo
ZG93bmxvYWQuZ2V0KCkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdl
YmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2FkLmdldCgpLCBwYXRoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50LmgKaW5kZXggNzVkNTEyMjFkMmMzNTE4MmY4OTRkYTk4NjEzZDFjYzQwZDBm
MDE1ZS4uYjdmNjQ5MzEwYTQ4ODRmOTJmNTE2NWQwY2JmNzU2NTM4ZTE0MDZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5o
CkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAvLyBGcm9t
IEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94
eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpEYXRhKikgZmluYWw7CiAgICAgdm9pZCBsZWdhY3lEaWRDYW5jZWwo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb3dubG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxv
YWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5tbQppbmRleCAzZDMxYmRiZjQzYTM2ZWViY2QyMzY5ODVmYTY4YjQ5ZDE2MWU0ZGI0
Li42MDc1NjJhZWU4OGU3NjY5ZjhkOTE4NmZkZDgyNGI2MzU5NTVjNmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpA
QCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDcmVkZW50aWFs
LmgiCkBAIC00Nyw2ICs0OCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorCiBMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5
RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIDog
bV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RhdGljIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKiBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihEb3dubG9hZFByb3h5JiBk
b3dubG9hZFAKIH0KICNlbmRpZgogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6bGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgewpAQCAtOTAsNyArOTMsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwNCw3ICsxMDcs
NyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29ucwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRp
ZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCiB2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQpAQCAtMTE4LDkgKzEyMSw5IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGVdOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRv
d25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFdyaXRlRGF0YTpi
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKICAgICBlbHNlIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpi
eXRlc1dyaXR0ZW5dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVE
YXRhOmJ5dGVzV3JpdHRlbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
QEAgLTEzMSw3ICsxMzQsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CisgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNzAsNyBAQCB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjbwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOworICAgICAg
ICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9u
XTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NE
aWRDcmFzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndy
YXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9j
ZXNzRGlkQ3Jhc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDQsMTEgKzIwNywxMSBAQCB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShE
b3dubG9hZFByb3h5JgogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsKICAgICAgICAg
Qk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5POwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVd
OworICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSld
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3Zl
cndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFs
bG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUu
Z2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmlu
ZyAqZGVzdGluYXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBs
ZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjMzLDEw
ICsyMzYsMTAgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmlu
aXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6RGF0YSopCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OgogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRGYWlsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCld
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTI2MywxMyArMjY2LDEzIEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5j
ZWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJp
bmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZT
dHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0zMDEsNCArMzA0LDYgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShEb3dubG9hZFByb3h5
JiBkb3dubG8KIH0KICNlbmRpZgogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVkOGQ0
OGYxMmJiM2Q0ZDYuLjk2NzgzN2FmZTE0YmQ4MzU0YzU2ZDZiZWZlNWQyOTEzNzZhYjg3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBA
IC0xMjYsNiArMTI2LDEwIEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5n
PiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWdu
ZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKwogI2lmIFVT
RShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgdXRpKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKQEAgLTIzNSw2ICsyMzksOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdX
ZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dl
YlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYkNyeXB0
b01hc3RlcktleUZvcldlYlZpZXcgOiAxOworICAgICAgICBib29sIG5hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgOiAxOworICAgICAgICBib29sIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93
bmxvYWQ7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CmluZGV4IGU3Y2IwODNjNGZmMmIzMzkwOTNkNzE5NDgzYjU5NGM4MDVmZDU0ZWMuLmIzOGZjZmZl
MjJkN2JjYjk5YjhmMGUwZjcwZmU5ZjZkYmYyY2Q1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNp
bXBvcnQgIlNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3
YXJkTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5m
b0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBv
cnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBAIC0xODcsNiArMTg4LDkgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlKQogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOildOwogICAgIG1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2Vi
UHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
Om5hdmlnYXRpb25BY3Rpb246ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uUmVz
cG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOild
OwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0
aW9uR2VzdHVyZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJ
dGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRF
bmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTop
XTsKQEAgLTQ3MiwxMSArNDc2LDEwIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0ID0gd3JhcHBl
cihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpKTsK
LSAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxS
ZXF1ZXN0XSB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVl
c3QgVVJMXS5zY2hlbWUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24t
PnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpKQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
ZG93bmxvYWQoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CisgICAgICAgICAgICBp
ZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0KKyAgICAg
ICAgICAgICAgICB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJl
cXVlc3QgVVJMXS5zY2hlbWUpCisgICAgICAgICAgICAgICAgfHwgW25zVVJMUmVxdWVzdC5VUkwu
c2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImJsb2IiXSkgeworICAgICAgICAgICAgICAgIGxpc3Rl
bmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC01NTUsOSArNTU4LDEyIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3Jl
KCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
RG93bmxvYWQ6CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRU
cnlpbmdBcHBMaW5rOgogICAgICAgICAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwgW2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxv
Y2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2ll
cyldIChib29sIG9wdGltaXplZExvYWQpIHsKICAgICAgICAgICAgICAgICBpZiAob3B0aW1pemVk
TG9hZCkgewpAQCAtNjcxLDcgKzY3Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnCiAgICAg
ICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6Cisg
ICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZDoKICAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTA4NSw2ICsxMDkxLDQyIEBAIFJlZlB0cjxBUEk6OlN0cmluZz4gTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
CiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmco
KSwgdXJsKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpu
YXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkK
K3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAg
IHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25B
Y3Rpb24pIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwordm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZp
Z2F0aW9uUmVzcG9uc2UsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmlnYXRpb25SZXNwb25zZSkgZGlk
QmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQ
YWdlUHJveHkmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIGlm
ICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwogI2lmIFVTRShRVUlDS19M
T09LKQogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDNmNzdjYzk5ZjZjOGZhOWZjMjkw
ODViYzg1ZTA4YjI3ZWY2MDI1Y2YuLjU5OThjZTUxYTU3Nzk0YTE5ZGNhOWZiYWJlM2U3MjllNGE3
NzA0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIgogI2ltcG9ydCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggMjlj
MTdiZWIzM2VkNjc2YzljNDQ0YTRkNzJhNjAxZjRjZDA3N2YzNi4uZGMxMDFiNjZjYjBjZTNkYWVk
OGNiYjMxMWY3NzIyNDNlYTM4OTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNTksNyArNTksMTEgQEAgRG93bmxv
YWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFw
LCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHko
KSA9IGRlZmF1bHQ7CitEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCit7CisgICAgaWYg
KG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKG51bGxwdHIp
OworfQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7CkBAIC0xMTcsNyArMTIxLDkgQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjpkaWRTdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2UKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0
Q2hhaW4ubGFzdCgpICE9IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5h
cHBlbmQocmVxdWVzdC51cmwoKSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOwor
ICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayh0
aGlzKTsKKyAgICBtX2NsaWVudC0+bGVnYWN5RGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVu
Z2VJRCkKQEAgLTE0NSw4ICsxNTEsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcmkKICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi12b2lkIERvd25sb2FkUHJv
eHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2Fk
UHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSwgQWxsb3dPdmVyd3JpdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIC8vIEFzIHBl
ciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0
aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKKyAgICAvLyBz
aG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBh
dHRyaWJ1dGUuCisgICAgaWYgKHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpIHx8
IChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkgJiYgbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0Vt
cHR5KCkpKQorICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZp
bGVuYW1lKCk7CisgICAgZWxzZSBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IG1fc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZO
ZWNlc3Nhcnkoc3VnZ2VzdGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworCiAgICAg
bV9jbGllbnQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCBy
ZXNwb25zZSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUo
c3VnZ2VzdGVkRmlsZW5hbWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGlu
YXRpb24pIG11dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKQEAg
LTE3MywxMSArMTg3LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdh
Y3lSZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5k
aWRGYWlsKCp0aGlzLCBlcnJvcik7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9y
LCBtX2xlZ2FjeVJlc3VtZURhdGEuZ2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNl
dENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRl
eCAwNzE4ZTg5M2FiMjU1YmIzYTM1ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi4zMTg5NWY1NjU5OTk3
OWVmMzJjZGMxNmJiODk0MzQ1MGQxNWE5MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTEwMiwxMiArMTAyLDkgQEAgcHVi
bGljOgogICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFtZUluZm8oKSB7IHJldHVybiBtX2ZyYW1lSW5m
by5nZXQoKTsgfQogCiAgICAgQVBJOjpEb3dubG9hZENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5
KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCBXZWJQYWdlUHJveHkqKTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7Cisg
ICAgdm9pZCBzZXREaWRTdGFydENhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxv
YWRQcm94eSopPiYmIGNhbGxiYWNrKSB7IG1fZGlkU3RhcnRDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOyB9CisgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKSB7IG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZTsgfQogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpOwpAQCAtMTE4LDcgKzExNSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoKCk7
CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUp
PiYmKTsKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9h
ZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9h
ZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsK
ICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CkBAIC0xMzQsNiArMTM3
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBt
X2ZyYW1lSW5mbzsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4g
bV9kaWRTdGFydENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAzNDg3ZDRlMzQ0ZTE4YTIwMjNkMjliZWM0NjBjYWNhZTA1NTI1N2VkLi4wNDZh
NmI1MDJmMGY2YTQ3Nzg5ZGQ5MTRhZjE0ZmY2MWVlMTZjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAz
ODJkMWZlMThjMDRjMTA4YjEzOTVjN2ZjY2I2MDg3YzAwZTlhOWRlLi40MGU3ZGY0ZjU3NzZhYjgx
MWY1NTE0M2EyY2M5Njg0NjU2OTJjODc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTMxMzAsNyArMzEzMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZy
YW1lSUQ6ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSIsIGZyYW1l
LmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKIApAQCAtMzE3MCw3ICszMTcxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5
QWN0aW9uOjpEb3dubG9hZDsKIAogICAgIGlmIChwb2xpY3lBY3Rpb24gIT0gUG9saWN5QWN0aW9u
OjpVc2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgIW5hdmlnYXRpb24pIHsKLSAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUo
cG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTMxODMsMTEgKzMxODQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JO
YXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNv
dXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0
YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0
aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBz
b3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9j
ZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJl
ZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUod2Vi
c2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBuYXZpZ2F0aW9u
QWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJj
ZVByb2Nlc3MuY29weVJlZigpLAogICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRd
IChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQ
YWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
IG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95
ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAh
bmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSkpIHsKLSAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjIz
LDExICszMjI0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShw
b2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3Vs
ZFByb2Nlc3NTd2FwID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBu
dWxscHRyIDogV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdU
Rk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2Vzczo6Tm8pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5h
dmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZp
Z2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzLCBWYXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6
Ok5hdmlnYXRpb25BY3Rpb24+PiYmIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLCBSZWY8UG9s
aWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVy
LT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwpAQCAtMzI0Myw2
ICszMjQ0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09IFBv
bGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJv
eHkuCiAgICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNy
ZWF0ZURvd25sb2FkUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZvclJl
c3BvbnNlUmVxdWVzdCwgdGhpcywgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0aW5n
RnJhbWVJbmZvKCkgOiBGcmFtZUluZm9EYXRhIHsgfSk7CisgICAgICAgIGRvd25sb2FkLnNldERp
ZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBuYXZp
Z2F0aW9uQWN0aW9uT3JSZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9u
c2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBX
VEY6OnN3aXRjaE9uKG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLAorICAgICAgICAgICAgICAg
IFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkUHJveHktPnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKHJlc3BvbnNlLT5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCgqdGhpcywgcmVzcG9uc2UuZ2V0KCksICpkb3dubG9hZFByb3h5KTsKKyAgICAgICAgICAg
ICAgICB9LCBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiBhY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIGFjdGlvbi5nZXQoKSwgKmRvd25sb2FkUHJveHkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOwogICAgICAgICBp
ZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRpYXRl
ZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQu
c2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTUw
OTUsMTAgKzUxMDksMjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBuYXZpZ2F0aW9u
LT5zZXRPcmlnaW5hdGluZ0ZyYW1lSW5mbyhvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpOwogICAg
IG5hdmlnYXRpb24tPnNldERlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbihmcmFtZUluZm8u
c2VjdXJpdHlPcmlnaW4pOwogCisgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0
aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwor
ICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuZnJhbWVJRCkgOiBudWxscHRyOworICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7CisgICAgUmVm
UHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CisgICAgaWYgKCFmcm9tQVBJICYm
IG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQorICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBk
ZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CisgICAgZWxzZSBpZiAoIWZyb21BUEkpIHsK
KyAgICAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9j
ZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOworICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlKTsKKyAgICB9CisKKyAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24KKyAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZy
YW1lKCkKKyAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0
KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCisgICAgICAgICYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2Fy
ZDsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRp
YXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdl
dCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtz
LCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwor
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVD
b250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2Fk
IHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQgZmls
dGVyIik7Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
bjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBu
dWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRp
b24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTExMCwxMSArNTE0MywxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCA9IFNob3VsZEV4cGVjdEFwcEJvdW5k
RG9tYWluUmVzdWx0OjpZZXM7CiAjZW5kaWYKLSAgICAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92
ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFi
bGUgeworCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0g
bWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2
aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0
cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0aW9u
SUQ6ICVsbHUsIHBvbGljeUFjdGlvbjogJXUsIHNhZmVCcm93c2luZ1dhcm5pbmc6ICVkLCBpc0Fw
cEJvdW5kRG9tYWluOiAlZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlv
biA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlv
biwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4pOwogCi0gICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNl
bmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5h
dmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNp
ZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBvbGljaWVz
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkZWZhdWx0UG9saWNpZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPmRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSkKQEAgLTUxMjMsNyArNTE1Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICAgICAgaWYgKHBvbGljaWVz
KQogICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRFZmZlY3RpdmVDb250ZW50TW9k
ZShlZmZlY3RpdmVDb250ZW50TW9kZUFmdGVyQWRqdXN0aW5nUG9saWNpZXMoKnBvbGljaWVzLCBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24uZ2V0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBv
bGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIFdU
Rk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICB9OwogCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTE5MCwxMCArNTIyMyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAgICAgYXV0byBwcm90b2NvbCA9IHNob3VsZFNlbmRTZWN1cml0eU9yaWdp
bkRhdGEgPyBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wgOiByZXF1ZXN0LnVybCgp
LnByb3RvY29sKCk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5iZWdpbkFwcEJvdW5kRG9tYWlu
Q2hlY2soaG9zdC50b1N0cmluZygpLCBwcm90b2NvbC50b1N0cmluZygpLCBsaXN0ZW5lcik7CiAj
ZW5kaWYKLSAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5p
c01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7Ci0gICAgV2ViRnJhbWVQ
cm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6
IG51bGxwdHI7CiAKLSAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBh
dXRvIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyID0gbmF2aWdhdGlvbi0+aXNMb2FkZWRX
aXRoTmF2aWdhdGlvblNoYXJlZCgpIHx8IHVzZXJJbml0aWF0ZWRBY3Rpdml0eTsKICAgICBpZiAo
IXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC01MjAxLDI0ICs1MjMxLDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKICNlbmRpZgogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQotICAg
ICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhp
cywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFt
ZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBvcmlnaW5hdGlu
Z0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVu
ZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7Ci0gICAg
ICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAo
IWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCi0gICAgICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7Ci0gICAgICAgIGVs
c2UgaWYgKCFmcm9tQVBJKSB7Ci0gICAgICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBv
cmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6
IG51bGxwdHI7Ci0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hv
dWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgotICAgICAg
ICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAg
ICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3Qu
dXJsKCkuaG9zdCgpKQotICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdh
dGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOwotCi0gICAg
ICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRl
c3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCks
IG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwotCiAjaWYgSEFWRShBUFBf
U1NPKQogICAgICAgICBpZiAobV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB8fCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9u
SW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uQWN0
aW9uLT51bnNldFNob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24oKTsKQEAgLTUzMjAsNyArNTMz
NCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCByZXF1ZXN0LnVy
bCgpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRp
ZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgUmVmUHRyPEFQSTo6RnJh
bWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CisgICAgaWYgKGZyYW1lKQorICAgICAgICBzb3VyY2VG
cmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhp
cyk7CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlcklu
aXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyKTsKKyAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1f
bWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CisgICAgYXV0
byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwg
ZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3Ms
IFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgCisgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlE
LCBuYXZpZ2F0aW9uQWN0aW9uXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0
aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2Yg
V0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2lu
Z1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzMjksMjQgKzUzNTEsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lE
ZWNpc2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAg
ICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIs
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hv
dWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21h
aW5SZXN1bHQ6Ok5vKSk7CiAKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1fcG9s
aWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5l
ciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNv
dXJjZUZyYW1lSW5mbzsKLSAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJh
bWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMp
OwotCi0gICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwotICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1l
ICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0g
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3Bl
bkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwotCisgICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24uZ2V0
KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLQotICAgIH0KLSAgICAgICAgCiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsCkBAIC01MzY3LDggKzUzNzgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKICAgICBN
RVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAgICAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0
YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOworICAgIGF1dG8gbmF2aWdh
dGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJl
c3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKwogICAgIGF1dG8g
bGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBpZGVu
dGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKLSAg
ICAgICAgcHJvY2Vzc10gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNw
b25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2Fm
ZUJyb3dzaW5nV2FybmluZyk7CkBAIC01Mzc3LDE0ICs1MzkwLDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNp
b24pLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBX
VEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jl
c3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogICAgIGlm
IChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5
cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbmF2
aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3Qs
IHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICBlbHNl
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVu
ZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC02MDIzLDYgKzYwMzQsMTggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3du
bG9hZCkKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERv
d25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkb3dubG9h
ZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlc3VtZURvd25sb2FkKHdlYnNpdGVEYXRhU3Rv
cmUoKSwgdGhpcywgcmVzdW1lRGF0YSwgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQ6Olllcyk7
CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMs
IHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VD
b250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRD
aGFuZ2VDb250ZW50U2l6ZShzaXplKTsKQEAgLTY1OTIsMTggKzY2MTUsMjYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwotICAgICAgICByZXR1cm47ICAg
IAotICAgIH0KKyAgICBzdHJ1Y3QgRG93bmxvYWRJbmZvIHsKKyAgICAgICAgU3RyaW5nIHVybDsK
KyAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIH07CisgICAgT3B0aW9uYWw8
RG93bmxvYWRJbmZvPiBkb3dubG9hZEluZm87CisgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykKKyAgICAgICAgZG93bmxvYWRJbmZv
ID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRh
KCkuYWJzb2x1dGVJbWFnZVVSTCB9fTsKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0
TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVzdFJl
c3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0
YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRl
RGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJM
KSwgaGl0VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25s
b2FkTWVkaWFUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25s
b2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZG93bmxvYWRJbmZvID0ge3sgaGl0VGVzdFJlc3Vs
dC5hYnNvbHV0ZUxpbmtVUkwsIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1lIH19
OworICAgIH0KKyAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3du
bG9hZE1lZGlhVG9EaXNrKQorICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRl
eHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJM
IH19OworICAgIGlmIChkb3dubG9hZEluZm8pIHsKKyAgICAgICAgYXV0byYgZG93bmxvYWQgPSBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlz
LCBVUkwoVVJMKCksIGRvd25sb2FkSW5mby0+dXJsKSwgZG93bmxvYWRJbmZvLT5zdWdnZXN0ZWRG
aWxlbmFtZSk7CisgICAgICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMgfHwgIWRvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+Y29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZCgqdGhpcywgKmRvd25sb2FkKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIGlmIChpdGVt
LmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZykg
ewogICAgICAgICBUZXh0Q2hlY2tlcjo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KCFUZXh0Q2hlY2tlcjo6c3RhdGUoKS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3OWY3MzJiMTFjYjEy
Mzk3Mzg2NThlOGU1OGZiODdjNTAzNGYyYjguLjkyMzIzZTY3MTQ2YWQxOWNlMGY0MjZlYzBkZWZl
M2ZhNmQ5ZmI0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
MTY0LDggKzExNjQsOCBAQCBwdWJsaWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRl
cjsKICAgICBlbnVtIGNsYXNzIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsg
Tm8sIFllcyB9OwotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwotICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOworICAgIHZvaWQg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgVmFyaWFudDxSZWY8QVBJOjpO
YXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiwgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVBy
b3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKIApAQCAtMTI3OSw2ICsxMjc5LDggQEAg
cHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJz
KFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0
YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KERvd25sb2FkUHJveHkqKT4mJik7CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSop
PiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZv
cmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5n
JiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRl
eCAzNmIyZDZmN2E3NWE1NmI4NTRjNjllNjIwYWI3OThmNzZlNjBhNTE2Li4wZGNjY2E2ODQyOTEz
MzhkYzljZTJiNGFiMDI2YjVlMTE5ZTgwMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQ4LDcgKzExNDgsNyBAQCBEb3dubG9hZFByb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
YWdlUHJveAogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBX
ZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpy
ZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSog
aW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKICAg
ICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJl
c291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAtMTE1Niw3ICsxMTU2
LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGEKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGRh
dGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxv
YWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSksIDApOworICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwg
cGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgY2FsbERvd25sb2FkRGlkU3RhcnQpLCAwKTsK
ICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmgKaW5kZXggYTNjMmRiZjk0ZjU1ZWY3MGM3ZTc2NzAxYWUzZmMxODg3MjQ0
ZGMwOC4uNjVkNGY5OGYxNTE1NjBkNTYwNDg1YzVkMTVjOWI3YmM2NGUwNWI2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xMTYsNiArMTE2LDcgQEAgaW50
IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsK
ICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0g
Y2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAKIGNsYXNzIFdlYlBy
b2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Bvb2w+LCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKQEAgLTIwNCw3ICsyMDUsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
LCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSAgICBEb3du
bG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5
KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgpOworICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRh
U3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJl
c3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAg
ICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQ
STo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVz
ZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDc2MWQ4MzUxZWZjYjU2MTEwOWM1M2Yw
MGU1MDA5NzA2NmUyM2FlNy4uYjg5NTJmYzAyZTM0NGE4NjE5MThiYTlkOGI3M2FjZmQzZWViNWY1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0yMTgsNyArMjE4LDYgQEAKIAkJMUE0M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEwMTg0RDVG
QzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0
IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0
RG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkxQTQ0NUJBNTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ4MzJD
QzFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0ODMyQ0ExQTlCQzQ2NTAwOEI0REZF
IC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTFBNDgzMkNFMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVE
YXRhUmVjb3JkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNDgzMkNEMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3Jk
SW50ZXJuYWwuaCAqLzsgfTsKQEAgLTMzMSw3ICszMzAsNyBAQAogCQkxQUI3RDRDQTEyODhBQUE3
MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0QzgxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHkuaCAqLzsgfTsKIAkJMUFCN0Q2MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQUI3RDYxQTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxv
YWRQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmggKi87IH07Ci0JCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEyODhD
RDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkUmVmLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUVDMTg0MDA4MDkwMEU5
QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2Fk
ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkxQUI4QTFFRTE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRDE4NDAw
QUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8q
IFdLUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBQjhBMUVGMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODUs
NiArMTE4NCw3IEBACiAJCTVDMjBDQkEwMUJCMUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENC
OUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9uLmggKi87IH07CiAJCTVDMjY5NTg1
MjAwNDMyMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEy
MDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3
MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxv
YWQuaCAqLzsgfTsKKwkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVC
REY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3
OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU3
MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDYwOUUyMjI0MzBFNEMwMDk5
NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyog
X1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oICovOyB9OwpAQCAtMTgyNSw2ICsxODI1LDkg
QEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0
OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdl
YlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlE
M0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAw
MzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJCURGMEM1RjI4MjUyRUNCOEUw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVGMkEy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8q
IFdLRG93bmxvYWREZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKKwkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYw
QzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwogCQlE
RjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIy
RjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZG
MzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVu
dFdvcmxkUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCURGODRDRUU0MjQ5QUEyNEQwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFB
MjFGMDA5MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tICovOyB9OwpAQCAtMjQ1NCw3ICsyNDU3LDYg
QEAKIAkJMUE0M0U4MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCOUUxODRE
NUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAv
KiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQx
NCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUE0ODMyQzExQTk2NUEzQzAwOEI0REZFIC8qIFdlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYnNpdGVE
YXRhU3RvcmVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzkx
QTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1MCw4ICsyNjUyLDggQEAKIAkJMUFCN0Q1RTkxMjg4
QjhDMDAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCN0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxv
YWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQy
L0Rvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQkxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkUHJv
eHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5
TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUFCN0Q3
OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
QUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZFJlZi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3du
bG9hZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25s
b2FkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgw
OTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1BhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFCOEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VQb2xpY3lDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdL
UGFnZUZvcm1DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdl
Rm9ybUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEyMiw2ICs0MTI0
LDcgQEAKIAkJNUMyQjFBRjMyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcg
LyogRG93bmxvYWRNb25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERv
d25sb2FkTW9uaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIy
M0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tE
b3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDcz
MjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tEZXByZWNhdGVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FF
QThFMUZFMUYxREYwMDIzMThEMyAvKiBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNTM4OCw2ICs1MzkxLDEwIEBACiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQ
b3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIz
OSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdL
RG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rv
d25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNDI1MkVDQjhE
MDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI1MjUy
RUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZERlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAv
KiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURGNDYyRTExMjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZW50V29ybGRQcml2YXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3
QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc1MzgsNiArNzU0NSwxMCBAQAogCQkJCTVDRTBDMzY4MjI5RjJENEEwMDM2OTVGMCAvKiBXS0Nv
bnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJNUNFMEMzNkIyMjlGMkQ0QjAwMzY5NUYw
IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb0ludGVybmFsLmggKi8sCiAJCQkJNUNFMEMzNkEy
MjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCAqLywK
KwkJCQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovLAorCQkJCURG
MEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovLAorCQkJCURGMEM1RjI2
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjBDNUYy
NTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggKi8sCiAJCQkJMUFGNDU5
MkQxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCAqLywKIAkJCQkxQUY0NTkyQzE5NDY0QjIw
MDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywKIAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAg
LyogV0tFcnJvckludGVybmFsLmggKi8sCkBAIC05NTA0LDcgKzk1MTUsNiBAQAogCQkJCTFBRTUy
RjkzMTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLywK
IAkJCQkxQUU1MkY5NDE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5oICovLAogCQkJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggKi8sCi0JCQkJMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8qIFdL
Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQg
LyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQlBMUVBMDIzNTFEQUJG
RjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVudUxpc3RlbmVyLmNwcCAqLywKQEAgLTk1MTUsOCAr
OTUyNSw5IEBACiAJCQkJNTEyRjU4RjExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5j
cHAgKi8sCiAJCQkJNTEyRjU4RjIxMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICov
LAogCQkJCTUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICov
LAotCQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLywKLQkJ
CQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovLAorCQkJCTVDMkVC
REY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi8sCisJCQkJMUFCN0Q3
OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuY3BwICovLAorCQkJCTFBQjdENzhC
MTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi8sCiAJCQkJQkNFNDY5NTcxMjE0
RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkNF
NDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovLAog
CQkJCUJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLywKQEAgLTExODQ1
LDcgKzExODU2LDYgQEAKIAkJCQlCQ0I5RTI0QjExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU1MkY5ODE5MjAyNjcyMDBBMUZBMzcgLyogV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTUxODRENUZE
QTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAot
CQkJCTFBNDQ1QkEzMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4
dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRC
MzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xMTg3OCw4ICsxMTg4OCwxMiBAQAogCQkJCUJDNUQyNEM1MTZD
RDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMwMTdEMjExNjI2MzMwODAwNzA1NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25s
b2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIg
LyogV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVE
NDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3Rp
bmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVD
M0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIy
MDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhiZGQwYzg0MGRhOWQ3ZTY1MmMyNWNi
NTQyM2U2ZmRiYzIxOWY2YjEuLjk4NmI0OTdjYzk4ZTBiNjQxNjQxYjA3N2U3MDcyNGUxOTc5ZjY4
MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw5NSBAQAorMjAyMC0xMS0xOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VQb2xpY3lDbGllbnQpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnNldENvbnRleHREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW06Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xh
c2hlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAg
ICAgKC1bQmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3Bv
bnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3du
bG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3RE
b3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6
ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxv
YWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgor
ICAgICAgICAoc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNv
bnRlbnRzKToKKyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgt
W0Rvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om11dGF0ZUZpbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5u
ZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5k
bGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vz
c1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25s
b2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpd
KToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkV3JpdGVEYXRh
OnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTpdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpuYXZpZ2F0aW9uUmVzcG9uc2U6ZGlkQmVj
b21lRG93bmxvYWQ6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXSk6
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHRha2VDYWxsYmFja1JlY29yZF0pOgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOiBEZWxldGVkLgorICAg
ICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOiBEZWxldGVk
LgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhF
cnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkRGlkQ2FuY2VsOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25I
YW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93
bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmguCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTogQ29w
aWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5t
bS4KKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3Rh
cnQ6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAg
KC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3Rh
bEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtU
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1b
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6
CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNl
bDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURl
c3RpbmF0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURv
d25sb2FkU2hhcmVkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25B
Y3Rpb25EaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6IERlbGV0ZWQuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCiAyMDIwLTExLTE4ICBBYWth
c2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbZXdzXSBBZGQgdGlt
ZW91dCB0byBuZXR3b3JrIHJlcXVlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2
NWY2OGFmMjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNl
c0NvY29hLnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFz
Lm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0K
IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFBy
b3RvY29sLm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBiMTA5ZTYwYTEzNGVmOWFlMjAzYTEzOWYxY2ZiMTgwZjU5NTEwMjk4Li4wYjJjNzU4YWFi
OGM1ZTU1NTQyNTY0MDNhMjQ0ZmE1MjAwZmZjZDhmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjIxNCw4ICsyMjE0LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFT
Y3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25p
Y2FsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIz
QTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9h
ZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9h
ZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERv
d25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUg
PSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAz
ODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29h
L1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERF
QTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQ
bHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIw
MDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODAwLDYgKzI4MDAsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tX
ZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rp
b25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERl
bGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93
bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBw
YXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkx
NTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERl
bGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2Fi
bGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzEyMCw4ICszMTIyLDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0
IC8qIFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVz
dENvbnRleHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8q
IFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFF
QjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAz
ODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEy
MDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0
RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENE
MjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJ
CTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5t
bSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERG
RG9jdW1lbnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCmluZGV4
IGNhNjk3YWMzNWE5YWE1MjBhNWIxOWY1YzdiNzQzYzE3Yzg0NGM1MzguLmM0NTc1ODY1MDVkYjNl
NGRiYWJkYjA3MTJhMGU2NjNiZGIyOWM3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bkNyYXNoLmNwcApAQCAtMjksNDIgKzI5LDQxIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxp
dGllcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYktpdC9X
S0Rvd25sb2FkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgYm9vbCBkaWREZWNpZGVEZXN0aW5hdGlvbjsK
IAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYs
IFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVy
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKIHsK
ICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChsaXN0ZW5lcik7CiB9CiAKLXN0YXRp
YyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwgY29u
c3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tT
dHJpbmdSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1
ZTsKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2Vs
KGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3Rt
cC9XZWJLaXRBUElUZXN0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYo
KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0KQorc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNw
b25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xp
ZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0K
ICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTsKLQotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGll
bnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENs
aWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZVBv
bGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50
VjAgbmF2aWdhdGlvbkNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbmF2aWdh
dGlvbkNsaWVudDsKICAgICBtZW1zZXQoJm5hdmlnYXRpb25DbGllbnQsIDAsIHNpemVvZihuYXZp
Z2F0aW9uQ2xpZW50KSk7CiAKLSAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
Ci0gICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJh
c2UudmVyc2lvbiA9IDM7CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UgPSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U7CisgICAg
bmF2aWdhdGlvbkNsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkOwogCiAgICAgV0tQYWdlU2V0UGFnZU5h
dmlnYXRpb25DbGllbnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiB9CkBAIC03Miw3
ICs3MSw2IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2Up
CiBURVNUKFdlYktpdCwgRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoKQogewogICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRl
V2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikpOwotICAgIHNldENvbnRleHREb3dubG9hZENsaWVu
dChjb250ZXh0LmdldCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQu
Z2V0KCkpOwogICAgIHNldFBhZ2VQb2xpY3lDbGllbnQod2ViVmlldy5wYWdlKCkpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93
bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1l
bnVEb3dubG9hZC5tbQppbmRleCAxNTkzMGU1NDZkYmFhM2RhOWQ1ZWQyMTViNmM4YjljYzYxMDlh
ZjBmLi43NTU2ZjYxMmQ1ZTNiOWJhNGY0Y2Q2ZjUyNmM5NThjMTdmM2YxZjI2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9h
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1l
bnVEb3dubG9hZC5tbQpAQCAtMjgsNyArMjgsOCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLQ29u
dGV4dE1lbnVJdGVtLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLRG93bmxvYWRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkUmVm
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdlQ29u
dGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
PgpAQCAtNjIsMTIgKzYzLDEyIEBAIHN0YXRpYyB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bv
c2VkTWVudShXS1BhZ2VSZWYgcGFnZSwgV0tBcnJheVJlZiBwcm9wb3NlZE1lCiAgICAgfQogfQog
Ci1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25z
dCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBw
cm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBp
biB0aGUgSFRNTC4KICAgICBFWFBFQ1RfV0tfU1RSRVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUu
dHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogCi0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9h
ZCk7CisgICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbiA9IHRydWU7CiAKICAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRPcmlnaW5hdGluZ1BhZ2UsIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoZG93
bmxvYWQpKTsKQEAgLTc2LDI1ICs3NywyOSBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sbwogICAg
IHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9h
ZCIpLmxlYWtSZWYoKTsKIH0KIAorc3RhdGljIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIG1lbXNl
dCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9
IDA7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChk
b3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKwogLy8gQ2hlY2tzIHRoYXQgdGhlIEhUTUwgZG93
bmxvYWQgYXR0cmlidXRlIGlzIHVzZWQgYXMgc3VnZ2VzdGVkIGZpbGVuYW1lIHdoZW4gc2VsZWN0
aW5nCiAvLyB0aGUgIkRvd25sb2FkIExpbmtlZCBGaWxlIiBpdGVtIGluIHRoZSBjb250ZXh0IG1l
bnUuCiBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0
ZSkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0
aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHRE
b3dubG9hZENsaWVudFYwIGNsaWVudDsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNs
aWVudCkpOwotICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQu
Z2V0KCksICZjbGllbnQuYmFzZSk7Ci0KICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4g
cGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6
OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNv
bnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xp
ZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2FkZXJD
bGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQu
YmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9
IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9hZGVyQ2xpZW50LmNvbnRleHRNZW51RGlkQ3Jl
YXRlRG93bmxvYWQgPSBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgIFdLUGFnZVNl
dFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2Up
OwogCiAgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKQEAg
LTExNCwzNCArMTE5LDM4IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERv
d25sb2FkQXR0cmlidXRlKQogICAgIFV0aWw6OnJ1bigmZGlkRGVjaWRlRG93bmxvYWREZXN0aW5h
dGlvbik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2
b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVz
cG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQg
bWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCwg
YWZ0ZXIgc2FuaXRpemF0aW9uLgogICAgIEVYUEVDVF9XS19TVFJFUSgidGVzdDFfdGVzdDJfZG93
bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rv
d25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBu
dWxscHRyLCBudWxscHRyKTsKICAgICBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1
ZTsKIAogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1l
bnVEb3dubG9hZCIpLmxlYWtSZWYoKTsKIH0KIAotVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93
bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3N0YXRpYyB2b2lkIGNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xh
c2hlcyhXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7Ci0KLSAgICBX
S0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAg
Y2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xp
ZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVD
b250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0
LmdldCgpLCAmY2xpZW50LmJhc2UpOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmlu
Z1NsYXNoZXM7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNl
KTsKK30KKworVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRy
aWJ1dGVXaXRoU2xhc2hlcykKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAK
ICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1Bh
Z2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkp
OwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5n
ZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAg
IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2Fk
ZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBs
b2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247Cisg
ICAgbG9hZGVyQ2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBjb250ZXh0TWVu
dURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7
CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2Fk
ZXJDbGllbnQuYmFzZSk7CiAKICAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRN
ZW51Q2xpZW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCmluZGV4IDQzMzkxMzExMDFmMmNkZDk1MDk4Njdl
ZmU5NDRmNmU3N2VmMzllZGIuLmQxOTZjMmM5M2M5MmNhYWJkNzMyMzkzYjM0Y2FlZWUwYWU3YjMz
OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29u
dGVudEZpbHRlcmluZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBURVNUKENvbnRlbnRG
aWx0ZXJpbmcsIFVSTEFmdGVyU2VydmVyUmVkaXJlY3QpCiAKIC0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2
aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAg
IGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggM2FlZmViOGVjMzM1ZTEwMjMyZmY4ZTVjODBj
NmY3OWJkMzVlZmMwOC4uMThkYjEyYmFjOTQ0OWIyNDI1YTEyNzUwMGJjYWVjZWM3M2JkMTczNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCkBAIC0zMywxMSArMzMsMTUgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAi
VGVzdC5oIgogI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
KyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
RG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
TmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgpAQCAtMTc0LDcgKzE3OCw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIERvd25sb2FkUmVxdWVzdCkKIEBpbXBsZW1lbnRhdGlvbiBDb252ZXJ0UmVzcG9uc2VU
b0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25S
ZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lv
bkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKIH0KIEBlbmQKIApAQCAtOTc3LDcgKzk4MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZpbmlz
aE5hdmlnYXRpb24pOwogICAgIEVYUEVDVF9XS19TVFJFUShfV0tMZWdhY3lFcnJvckRvbWFpbiwg
ZXJyb3IuZG9tYWluKTsKICAgICBfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IFlFUzsK
LSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xp
Y3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3Rh
cnREb3dubG9hZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtOTg1LDcgKzk4OSw3
IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkK
IHsKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOwogICAg
IF9kaWRGaW5pc2hOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0g
X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93
bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUg
PSB0cnVlOwogfQogCkBAIC0xMDI0LDcgKzEwMjgsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWRO
YXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGZp
cnN0VVJMLmFic29sdXRlU3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAog
ICAgIE5TVVJMICpzZWNvbmRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5k
bGUtZmlsZS9zaW1wbGUyLmh0bWwiXTsKLSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6
X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOworICAgIFtkZWxlZ2F0
ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTEwNTEsNyArMTA1NSw3IEBAIFRFU1QoV2ViS2l0LCBE
b3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfVFJV
RShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShm
aXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAK
LSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWRdOworICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlz
RG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAg
LTExODksMjQgKzExOTMsMzAgQEAgU3RyaW5nIGxvbmdTdHJpbmcoTENoYXIgYykKICAgICByZXR1
cm4gU3RyaW5nKHZlY3Rvci5kYXRhKCksIGxlbmd0aCk7CiB9CiAKLVRFU1QoX1dLRG93bmxvYWQs
IFJlc3VtZSkKK2VudW0gY2xhc3MgSW5jbHVkZUVUYWcgOiBib29sIHsgTm8sIFllcyB9OworZW51
bSBjbGFzcyBUZXJtaW5hdGVBZnRlckZpcnN0UmVwbHkgOiBib29sIHsgTm8sIFllcyB9OworCitz
dGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVk
ZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRlRVRhZzo6WWVzLCBGdW5jdGlvbjx2b2lkKFRlc3RX
ZWJLaXRBUEk6OkNvbm5lY3Rpb24pPiYmIHRlcm1pbmF0b3IgPSBudWxscHRyKQogewotICAgIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOwotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25u
ZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIHJl
dHVybiB7IFtpbmNsdWRlRVRhZywgdGVybWluYXRvciA9IFdURk1vdmUodGVybWluYXRvciksIGNv
bm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikg
bXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKICAgICAgICAg
Y2FzZSAxOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5l
Y3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgot
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbaW5jbHVkZUVUYWcsIGNvbm5lY3Rpb24sIHRlcm1pbmF0
b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAoVmVjdG9yPGNoYXI+JiYpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVF
VGFnID09IEluY2x1ZGVFVGFnOjpZZXMgPyAiRVRhZzogdGVzdFxyXG4iIDogIiIsCiAgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAg
ICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxl
LnR4dFwiXHJcbiIKICAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+
KCdhJykKLSAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgICAgICApOworICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sIHRl
cm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHRlcm1pbmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5h
dG9yKGNvbm5lY3Rpb24pOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3Qp
IHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8
Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihy
ZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkp
OwogICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAg
ICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDE2
ICsxMjMwLDY0IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7Cisg
ICAgfX07Cit9CisKK3N0YXRpYyB2b2lkIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNV
UkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRo
Q29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwg
MTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChm
aWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNvbnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdh
Jyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5
dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgIkhUVFAvMS4x
IDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAg
ICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRl
bnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4i
CisgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAg
ICAgICkpOworICAgICAgICB9KTsKKyAgICB9fTsKK30KIAotICAgIE5TVVJMICp0ZW1wRGlyID0g
W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFJlc3VtZVRlc3QiXSBpc0RpcmVjdG9yeTpZ
RVNdOworc3RhdGljIHZvaWQgY2hlY2tGaWxlQ29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0
cmluZyYgZXhwZWN0ZWRDb250ZW50cykKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtO
U0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29u
dGVudHMubGVuZ3RoLCBleHBlY3RlZENvbnRlbnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpbGVDb250ZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3Rl
ZENvbnRlbnRzW2ldKTsKK30KKworc3RhdGljIE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3du
bG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRVUkw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGly
ZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAi
ZXhhbXBsZS50eHQiXTsKLSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92
ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpm
aWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQi
XTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpm
aWxlIGVycm9yOm5pbF07CisgICAgcmV0dXJuIGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQs
IFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAg
ICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBDYWxsYmFjayA6IHVpbnQ4X3QgeyBTdGFydCwg
V3JpdGVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwg
RmluaXNoIH07CkBAIC0xMjQwLDEwICsxMjk4LDExIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3Vt
ZSkKICAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3dubG9hZD4gZG93bmxvYWQ7CiAgICAgX19i
bG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bWVEYXRhOwogCi0gICAgYXV0byBkb3dubG9hZERl
bGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBk
b3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgbmV3
XSk7CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZSA9IF4oX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVu
YW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKEJPT0wsIE5TU3RyaW5nICopKSB7CiAgICAg
ICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6c3VnZ2VzdGVkRmlsZW5hbWVdLnBhdGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ImV4YW1wbGUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihZRVMsIGV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCwg
dWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0
X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5k
KENhbGxiYWNrOjpXcml0ZURhdGEpOwpAQCAtMTI1OCw3ICsxMzE3LDcgQEAgVEVTVChfV0tEb3du
bG9hZCwgUmVzdW1lKQogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRDcmVh
dGVEZXN0aW5hdGlvbiA9IF4oX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7
CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNyZWF0ZURlc3RpbmF0aW9uKTsK
LSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBbdGVtcERpciBVUkxCeUFwcGVu
ZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdLnBhdGgpOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZGVzdGluYXRpb24sIGV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGgpOwogICAgIH07
CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZENhbmNlbCA9IF4oX1dLRG93
bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNh
bmNlbCk7CkBAIC0xMjk2LDE1ICsxMzU1LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQog
ICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKICAgICB1c2xlZXAoMTAwMDApOwogCi0gICAgTlNE
YXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpleHBlY3Rl
ZERvd25sb2FkRmlsZV07Ci0gICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEwMDAw
dSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKLSAgICBpZiAoZmlsZUNv
bnRlbnRzLmJ5dGVzKSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsr
KQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29u
dGVudHMuYnl0ZXMpW2ldLCAnYScpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8
IDEwMDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7Ci0gICAgfQorICAgIGNoZWNrUmVzdW1l
ZERvd25sb2FkQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogfQogCiBAaW50ZXJmYWNl
IERvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlPgpAQCAtMTMxNCw3ICsxMzY1LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNp
b25IYW5kbGVyCiB7CiAgICAgaWYgKFtuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuVVJMLmFi
c29sdXRlU3RyaW5nIGhhc1N1ZmZpeDpAIi9kb3dubG9hZCJdKQotICAgICAgICBkZWNpc2lvbkhh
bmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvdyk7CiB9CkBAIC0xMzczLDQgKzE0MjQsMTE5MCBAQCBURVNUKF9XS0Rvd25s
b2FkLCBTdWJmcmFtZVNlY3VyaXR5T3JpZ2luKQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHk+PGlmcmFtZSBzcmM9J2h0dHA6Ly8x
MjcuMC4wLjE6JWQvcGFnZSc+PC9pZnJhbWU+PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VV
Ukw6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQgY2hlY2tDYWxsYmFja1JlY29y
ZChUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUsIFZlY3RvcjxEb3dubG9hZENhbGxiYWNr
PiBleHBlY3RlZENhbGxiYWNrcykKK3sKKyAgICBhdXRvIGFjdHVhbENhbGxiYWNrcyA9IGRlbGVn
YXRlLnRha2VDYWxsYmFja1JlY29yZDsKKyAgICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzLnNp
emUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0ZDo6bWluKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNp
emUoKSk7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrc1tpXSwgZXhwZWN0
ZWRDYWxsYmFja3NbaV0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxs
eSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9
OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07Cisg
ICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVD
b250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKwor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHJl
c3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0
aW9uKQoreworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGRlc3RpbmF0aW9uLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykpOworCisgICAgYXV0byAqZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gKndlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5l
ZERvd25sb2FkOworCisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXN1bWVE
YXRhIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9h
ZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAg
ICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb3dubG9h
ZGVkU2Vjb25kNWsgPSBmYWxzZTsKKyAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdl
dCgpLmRlbGVnYXRlKTsKKyAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH07CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwg
aW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3Qg
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQs
IHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVu
ICsgNTAwMCwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUw
MDApCisgICAgICAgICAgICBkb3dubG9hZGVkU2Vjb25kNWsgPSB0cnVlOworICAgIH07CisgICAg
X19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfRVEocmV0
YWluZWREb3dubG9hZC5nZXQoKSwgZG93bmxvYWQpOworICAgICAgICByZXRhaW5lZERvd25sb2Fk
ID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNUX1RSVUUoZG93bmxvYWRlZFNlY29uZDVrKTsKKyAg
ICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICB9OworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5p
c2gpOworCisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAor
ICAgIH0pOworfQorCitzdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxvYWREZWxl
Z2F0ZSAqZGVsZWdhdGUpCit7CisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRGaXJzdDVrID0g
ZmFsc2U7CisgICAgQVNTRVJUKCFkZWxlZ2F0ZS5kaWRXcml0ZURhdGEpOworICAgIGRlbGVnYXRl
LmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50
NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
KSB7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuKTsK
KyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAg
ICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxvYWRlZEZp
cnN0NWsgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZGVkRmlyc3Q1ayk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQoreworICAgIGF1dG8gc2Vy
dmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+
IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIFJl
dGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9h
ZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVE
YXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVE
YXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERv
d25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOwor
fQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWso
ZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJl
dGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9h
ZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0
YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURh
dGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93
bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdL
RG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25s
b2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8pOworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25s
b2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25s
b2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRh
ICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0p
OworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vLCBbJl0gKFRl
c3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmly
c3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VS
TEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vt
ZURhdGEpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgor
ICAgIH0pOworfQorCisvLyBGSVhNRTogTWFrZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lm
IEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJBQ0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKFdL
RG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5dGVzUmVjZWl2ZWQpCit7CisgICAgT3B0aW9uYWw8
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbjsKKyAgICBIVFRQU2Vy
dmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMCwgJnNlcnZlckNvbm5lY3Rpb25dKFRlc3RX
ZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRj
aCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2Vy
dmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25u
ZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0
XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIKKyAgICAgICAgICAgICAgICApOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAg
ICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYm
IHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3Qu
ZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CisgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAg
ICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVz
dFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwXHJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDEwMD4oJ3gnKQorICAgICAgICAg
ICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAg
IF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWlu
LCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJM
RXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEg
PSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvd25sb2FkRmluaXNoZWQg
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAq
KSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOworICAgIH07CisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAoIXJldGFpbmVk
UmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBFWFBF
Q1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRG
aW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJl
c3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0
aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0
ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcpKTsKKworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKKyNlbmRpZgorCit2b2lkIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlz
ayhOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QsIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSwgdm9pZChebXV0YXRlRmlsZSkodm9pZCkpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJl
dGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0
XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVE
YXRhID0gbmlsOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3Vt
ZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRh
KSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisK
KyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgbXV0YXRlRmlsZSgpOworCisgICAgX19ibG9jayBi
b29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERh
dGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAg
ICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGls
OjpydW4oJmRpZEZpbmlzaCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgewor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7
CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRB
UEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytj
b25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQ
LzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJl
eGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAg
ICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAg
ICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiBy
ZXF1ZXN0KSB7CisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAg
ICAgICAgICAvLyBNb2phdmUgQ0ZOZXR3b3JrIHNlbmRzIGEgcmFuZ2UgcmVxdWVzdCB3aGVuIHJl
c3VtaW5nIGEgZG93bmxvYWQgYWZ0ZXIgcmVtb3ZpbmcgYWxyZWFkeS1kb3dubG9hZGVkIGRhdGEu
CisgICAgICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJS
YW5nZSIsIHJlcXVlc3Quc2l6ZSgpKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKQorICAg
ICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNr
KHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vy
cm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAg
ICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVu
dHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykpOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhFeHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpD
b25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVj
dGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBs
ZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAg
ICAgICAgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVz
dCkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCks
ICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhU
VFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRh
ZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1
MDAwLTk5OTkvMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6
IDUwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAg
ICAgIGxvbmdTdHJpbmc8MTAwMDA+KCdkJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3Rl
ZERvd25sb2FkRmlsZSwgXnsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVk
RG93bmxvYWRGaWxlIGVycm9yOiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW1soTlNTdHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8
MzAwMD4oJ2InKSwgbG9uZ1N0cmluZzwzMDAwPignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNh
bGx5OllFU10pOworICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3du
bG9hZEZpbGUsIG1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMw
MDA+KCdjJyksIGxvbmdTdHJpbmc8NTAwMD4oJ2QnKSkpOworfQorCitURVNUKFdLRG93bmxvYWQs
IFJlc3VtZVdpdGhJbnZhbGlkUmVzdW1lRGF0YSkKK3sKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBFWFBFQ1RfVFJVRShb
W0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
Ym9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZp
ZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpbQCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH1dOworICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZS5uYW1lLCBOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAg
IGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGNhdWdodEV4
Y2VwdGlvbik7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKK3sK
KyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAg
IGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+
KCdhJykpOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURh
dGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisgICAg
d2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7
CisKKyAgICBzZXJ2ZXIuY2FuY2VsKCk7CisgICAgCisgICAgcmV0YWluZWREb3dubG9hZCA9IG5p
bDsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0
YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93
bmxvYWQuZGVsZWdhdGUpOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWREb3dubG9hZCkK
KyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0
KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX05PVF9O
VUxMKHJlc3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6
OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRU
UFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwg
bG9uZ1N0cmluZzw1MDAwPignYScpKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJM
ICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJv
b2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0
YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAg
ICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUwMDApCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7
CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURl
c3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBJbnZhbGlkQXJndW1lbnRzKQoreworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9v
bCBjYXVnaHRFeGNlcHRpb24gPSBmYWxzZTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBAdHJ5IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSk7CisgICAgICAg
ICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZS5uYW1lLCBOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgICAg
ICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNhdWdodEV4Y2VwdGlvbik7CisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICB9KTsKK30KKworc3RhdGljIEhUVFBTZXJ2ZXIgcmVkaXJlY3RTZXJ2
ZXIoKQoreworICAgIHJldHVybiB7eworICAgICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlv
biIsICIvcmVkaXJlY3RUYXJnZXQiIH0sIHsgIkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1WYWx1ZSIg
fX0gfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH19
OworfQorCitURVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0QWxsb3cpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0
ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgc2Vy
dmVyUmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWREb3dubG9hZCA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXJSZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJl
c3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
V0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVx
dWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBu
b24tbnVsbC4KKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1
dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXNDb2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0
b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9Owor
ICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2Vz
dGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInJlZGlyZWN0VGFyZ2V0
LnR4dCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5wYXRoLCAi
L3JlZGlyZWN0VGFyZ2V0Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQu
b3JpZ2luYWxSZXF1ZXN0LlVSTC5wYXRoLCAiLyIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICAgICAgZmluaXNoZWRE
b3dubG9hZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5p
c2hlZERvd25sb2FkKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRG
aWxlLCAiaGkiKTsKKyAgICAKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwg
MnUpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIFJlZGlyZWN0Q2FuY2VsKQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJl
Y3RTZXJ2ZXIoKTsKKyAgICBOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVx
dWVzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3du
bG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3du
bG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5n
LCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1Rf
RVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVl
Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJp
bmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRp
cmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCk7CisgICAgICAgIH07CisgICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1l
RGF0YSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVy
cm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9y
Q2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGNhbmNlbGxlZCA9IHRydWU7CisgICAgICAgIH07Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZjYW5jZWxsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7CisgICAg
RVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDF1KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBEb3dubG9hZFJlcXVlc3RGYWlsdXJlKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsg
fSk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsK
KyAgICBzZXJ2ZXIuY2FuY2VsKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxl
cjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVj
dFRvSG9zdCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1d
OworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3Q0MDQpCit7CisgICAg
SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyA0MDQsIHsgfSwgImh0dHAgYm9k
eSIgfSB9CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2Vi
VmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxl
Z2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsICJodHRwIGJvZHkiKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmluaXNoLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIE5ldHdvcmtQcm9j
ZXNzQ3Jhc2gpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgdGVy
bWluYXRlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93
bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRl
cm1pbmF0ZWQgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0
ZXJtaW5hdGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQoreworICAg
IEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQi
IH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICos
IE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50
eHQiKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisg
ICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250
ZW50Iik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9h
ZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVS
TFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9y
ZWxlYXNlXTsKKyAgICByZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRo
UmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5
KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitU
RVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107Cisg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERp
ciBlcnJvcjpuaWxdOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGly
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9h
ZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNU
X0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIEZpbGVNdXN0Tm90RXhpc3QpCit7CisgICAgYXV0byBzZXJ2ZXIg
PSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGF1dG8gcmV0YWluZWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIEVYUEVDVF9U
UlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3Ry
aW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZ
RVNdKTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICByZXRhaW5lZERl
bGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworICAg
ICAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisKKyAgICAgICAgICAgIHJldGFp
bmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICAg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAg
ICAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rv
d25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAg
ICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7
CisgICAgICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQocmV0YWlu
ZWREZWxlZ2F0ZS5nZXQoKSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0
aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0
cmluZykKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wg
ZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7Cisg
ICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxv
YWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBN
b2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBz
ZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxP
QURTKQorVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VTdWNjZXNzKQoreworICAgIEhUVFBTZXJ2
ZXIgc2VydmVyKHt7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfX19LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBG
aWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wg
cmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7Cisg
ICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgIH07CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOworICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxl
bmdlKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25s
b2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
KyAgICB9KTsKK30KKyNlbmRpZgorCitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUp
Cit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0
cHMpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWlu
LCBOU1VSTEVycm9yRG9tYWluKTsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CisgICAgICAgIC8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVD
aGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvclNlY3VyZUNvbm5lY3Rpb25GYWlsZWQpOworI2Vsc2UKKyAg
ICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworI2VuZGlm
CisgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2
ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9k
LCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIG5pbCk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9
OworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxl
ZCk7CisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICBFWFBFQ1RfVFJV
RShyZWNlaXZlZENoYWxsZW5nZSk7CisjZW5kaWYKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAg
Ly8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBm
b3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorI2VuZGlmCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKwordm9pZCBibG9iVGVzdChib29sIGRvd25s
b2FkRnJvbU5hdmlnYXRpb25BY3Rpb24sIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxEb3dubG9hZENh
bGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNj
cmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9i
KFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7Igor
ICAgICIgICAgYS5kb3dubG9hZCA9ICdkb3dubG9hZEZpbGVuYW1lJzsiCisgICAgIiAgICBhLmNs
aWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxv
YigpJz48L2JvZHk+IjsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6
bmlsXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdh
dGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAgaWYgKFthY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXSkKKyAgICAgICAgICAgIEVY
UEVDVF9OVUxMKGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9i
Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRl
LCAiZG93bmxvYWRGaWxlbmFtZSIpOworICAgICAgICAgICAgaWYgKGRvd25sb2FkRnJvbU5hdmln
YXRpb25BY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
bkFjdGlvbiAqYWN0aW9uLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoYWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIp
OworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAi
YmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dl
c3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJkb3dubG9hZEZpbGVuYW1lIik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9
OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWRE
aWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgIjEyMyIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IGV4cGVjdGVkQ2FsbGJhY2tzKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2Up
Cit7CisgICAgYmxvYlRlc3QoZmFsc2UsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
RmluaXNoCisgICAgfSk7CisKKyAgICBibG9iVGVzdCh0cnVlLCB7CisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgQmxvYlJlc3BvbnNlTm9GaWxlbmFtZSkKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNj
cmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9i
KFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7Igor
ICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2Fk
PSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBi
YXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVn
YXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlv
biAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSkpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cp
OworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNw
b25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9u
c2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2Vz
dGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24iKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAg
ICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24KKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBTdWJmcmFtZU9y
aWdpbmF0b3IpCit7CisgICAgY29uc3QgY2hhciogZ3JhbmRjaGlsZEZyYW1lSFRNTCA9ICI8c2Ny
aXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2Io
WzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisg
ICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9
J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBIVFRQU2VydmVyIGdyYW5kY2hpbGRGcmFt
ZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IGdyYW5kY2hpbGRGcmFtZUhUTUwgfSB9CisgICAg
fSk7CisgICAgSFRUUFNlcnZlciBjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsg
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAu
MTolZC8nPjwvaWZyYW1lPiIsIGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCldIH0gfQorICAg
IH0pOworICAgIE5TVVJMUmVxdWVzdCAqZ3JhbmRjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGdy
YW5kY2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpjaGlsZEZy
YW1lU2VydmVyUmVxdWVzdCA9IGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIHVpbnQx
Nl90IGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9y
dCgpOworCisgICAgTlNTdHJpbmcgKm1haW5IVE1MID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGNoaWxk
RnJhbWVTZXJ2ZXIucG9ydCgpXTsKKworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5IVE1MIGJh
c2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8iXV07CisKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVn
YXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKnJlc3BvbnNlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5KSkgeworICAgICAgICBpZiAoW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNv
bHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8iXQorICAgICAg
ICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6Y2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXQorICAgICAg
ICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6Z3JhbmRjaGlsZEZyYW1lU2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddKQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvdyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIH07CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxv
YiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3Jp
Z2luLmhvc3QsICIxMjcuMC4wLjEiKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLl9mcmFt
ZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0KTsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpz
dWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOworICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24KKyAgICB9KTsKK30KKworfQorCiAjZW5k
aWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5k
ZXggZjAwM2FjMjhjZTFlODk2N2Y1ZGFiMGQ4ODhjYzc4Njg3NTExNjU2OS4uYjFiMTQ0ZmVhYzlj
N2FhZDJjMmEyYmExNmQyNjgwZTI2Yzk5NDYwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzI2
LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkKiBwcm9ncmVzc09ic2VydmluZ0NvbnRleHQgPSAmcHJv
Z3Jlc3NPYnNlcnZpbmdDb250ZXh0OwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKG1fc3RhcnRU
eXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQpCi0gICAgICAg
IGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkKTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tCmluZGV4IGE3ZDRlNTNhMzUxNzkyNDVkMWU5MDQwYzNlYTU2ZTNhMDgyMjNmY2QuLjRlZTE5
MjY3YjMwMDBmODk1YTk4ZDMwOTUxNzg5ZTlmOTZjZDZhYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkw7CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdh
dGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRl
Y2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3dubG9hZCA/IF9XS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxv
dyk7CisgICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rvd25sb2FkID8gV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmln
YXRpb24gKiluYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IGFlMmJjN2ZlNjY1MzRkNjc5YTQ4ZmI0MWY2MTNm
M2UwOGEwODAxYmYuLmRmZTFkMzhjNjZjNDhmZmNjODg1ZjgzMWZjMzAyZmI5NDk3YjUzNzMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29r
Lm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0
ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZv
cmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNr
TG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50
VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBv
bGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CiAgICAgcnVu
VGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9u
RXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdh
dGlvbl0pOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIERvd25sb2Fk
UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBh
Z2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1F
VHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQWZ0
ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBh
Z2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRl
cnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsK
ICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAppbmRleCA3
YWFkMjNjM2VjNWI0MjE3NTFlZGM4NDAwYzBhMGVhNjBiOGM0ODViLi4zMDkzNzUwMzk3MzNlY2I5
NjA3YTViMDI4MjQwNTk1Yzg4ZjU1NGU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0yNCwxNyArMjQsMzUgQEAKICAqLwogCiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oPgogCi1AaW50ZXJmYWNlIFRlc3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8X1dL
RG93bmxvYWREZWxlZ2F0ZT4KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93
bmxvYWREaWRTdGFydCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBO
U1VSTCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJl
c3BvbnNlKShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICosIHVpbnQ2NF90
LCB1aW50NjRfdCwgdWludDY0X3QpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93bmxvYWQgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQgKik7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKF9XS0Rv
d25sb2FkICosIE5TRXJyb3IgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEb3du
bG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOwotQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlvbikoX1dLRG93
bmxvYWQgKiwgTlNTdHJpbmcgKik7CitlbnVtIGNsYXNzIERvd25sb2FkQ2FsbGJhY2sgOiB1aW50
OF90IHsKKyAgICBXaWxsUmVkaXJlY3QsCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisg
ICAgRGVjaWRlRGVzdGluYXRpb24sCisgICAgRGlkV3JpdGVEYXRhLAorICAgIERpZEZpbmlzaCwK
KyAgICBEaWRGYWlsV2l0aEVycm9yLAorICAgIE5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9h
ZCwKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICBOYXZpZ2F0aW9u
QWN0aW9uLAorICAgIE5hdmlnYXRpb25SZXNwb25zZSwKK307CisKK0BpbnRlcmZhY2UgVGVzdERv
d25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxXS0Rvd25sb2FkRGVsZWdhdGUsIFdLTmF2aWdhdGlv
bkRlbGVnYXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5T
VVJMUmVxdWVzdCAqLCB2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKShXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXikoTlNVUkwgKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kaWRXcml0ZURhdGEpKFdLRG93bmxvYWQgKiwgaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShX
S0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWls
V2l0aEVycm9yKShXS0Rvd25sb2FkICosIE5TRXJyb3IgKiwgTlNEYXRhICopOworCitAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqLCBXS0Rvd25sb2FkICopOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pKFdLTmF2aWdhdGlvbkFjdGlvbiAqLCB2b2lkICheKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKShXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCB2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpOworCistICh2b2lkKXdh
aXRGb3JEb3dubG9hZERpZEZpbmlzaDsKKy0gKFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPil0YWtl
Q2FsbGJhY2tSZWNvcmQ7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCmluZGV4IDFkYjVjZDgxMWFiNmY1ZDk5YjQxM2U2ZDIx
YWFhMzAyYTgwMWZkZDMuLjA1MzA5MzczNTE2MDM0MTJkZWFiNDJjNjhmZGM3MWNhZjBlZGI5NGMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0
ZS5tbQpAQCAtMjYsNjggKzI2LDExMyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgogCi1AaW1wbGVtZW50YXRpb24gVGVzdERvd25sb2FkRGVs
ZWdhdGUKKyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KIAot
LSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZAotewotICAg
IGlmIChfZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxv
YWQpOworQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRlIHsKKyAgICBWZWN0b3I8
RG93bmxvYWRDYWxsYmFjaz4gX2NhbGxiYWNrUmVjb3JkOwogfQogCi0tICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDoo
TlNVUkwgKil1cmwKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdS
ZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBpZiAoX2Rp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBfZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVybCk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChE
b3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QpOworCisgICAgQVNTRVJUKF93aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbik7CisgICAgX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGRvd25s
b2FkLCByZXNwb25zZSwgcmVxdWVzdCwgZGVjaXNpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2UKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3Bv
bnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIF9kaWRSZWNlaXZl
UmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5k
KERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKKworICAgIEFTU0VSVChfZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb21wbGV0aW9u
SGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1
aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50
NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKIHsKKyAgICAvLyBkaWRX
cml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5pc3RpYyBudW1iZXIgb2YgdGltZXMsIHNv
IG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCisgICAgaWYgKF9jYWxsYmFja1JlY29yZC5p
c0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3QoKSAhPSBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEpCisgICAgICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhKTsKKwogICAgIGlmIChfZGlkV3JpdGVEYXRhKQogICAgICAgICBf
ZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxs
b3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKKy0g
KHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ug
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBBU1NF
UlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICBfZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxi
YWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CisKKyAgICBpZiAoX2RpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxz
ZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVy
Zm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRGaW5p
c2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdL
RG93bmxvYWQgKilkb3dubG9hZAogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6RGlkRmluaXNoKTsKKwogICAgIGlmIChfZG93bmxvYWREaWRGaW5pc2gpCiAg
ICAgICAgIF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvcgorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhCiB7
CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0
aEVycm9yKTsKKwogICAgIGlmIChfZGlkRmFpbFdpdGhFcnJvcikKLSAgICAgICAgX2RpZEZhaWxX
aXRoRXJyb3IoZG93bmxvYWQsIGVycm9yKTsKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93
bmxvYWQsIGVycm9yLCByZXN1bWVEYXRhKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRDYW5j
ZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9u
QWN0aW9uIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBp
ZiAoX2Rvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBfZG93bmxvYWREaWRDYW5jZWwoZG93bmxv
YWQpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkFjdGlvbkJlY2FtZURvd25sb2FkKTsKKworICAgIGlmIChfbmF2aWdhdGlvbkFjdGlvbkRp
ZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25s
b2FkKHdlYlZpZXcsIG5hdmlnYXRpb25BY3Rpb24sIGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNw
b25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
Ci0gICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNo
YWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQo
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQpOworCisg
ICAgaWYgKF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25SZXNw
b25zZSwgZG93bmxvYWQpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25z
ZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNv
cmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSk7CisKKyAgICBp
ZiAoX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkKKyAgICAgICAgX2RlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25SZXNwb25zZShuYXZpZ2F0aW9uUmVzcG9uc2UsIGRlY2lzaW9uSGFu
ZGxlcik7CiAgICAgZWxzZQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKKyAgICAgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpZGVjaXNpb25I
YW5kbGVyCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uKTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbikKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlv
bkFjdGlvbiwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFu
ZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7
CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlz
aCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9Owor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwogfQogCi0tICh2b2lkKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNT
dHJpbmcgKilkZXN0aW5hdGlvbgorLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxs
YmFja1JlY29yZAogewotICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIF9k
aWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworICAgIHJldHVybiBz
dGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwgeyB9KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEyYzljYWRhNjE1ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdl
YktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CisK
K0BpbnRlcmZhY2UgVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3du
bG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9h
ZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJM
ICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9u
c2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVp
bnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0
cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxv
YWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93
bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2Fk
ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9h
ZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRi
ZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVkYmYxY2EwODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZQorCistICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZFN0YXJ0KQorICAgICAgICBfZG93
bmxvYWREaWRTdGFydChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVy
bAoreworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCisgICAgICAgIF9k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKK30KKworLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihO
U1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkK
KyAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworfQorCist
ICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVp
bnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRl
c1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZQoreworICAgIGlmIChfZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3Jp
dGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3Ry
aW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVy
d3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBB
U1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBj
b21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tE
b3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAg
ICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJv
cihkb3dubG9hZCwgZXJyb3IpOworfQorCistICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dL
RG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCisgICAg
ICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBl
bHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0
aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIF9kaWRD
cmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGluYXRpb24pOworfQorCitAZW5kCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDdiYTY3MmFjOWY5MjVm
NjMyNWFhMDdmYTZmMTYxYTUwMjM1ZmJiOGMuLjk5NmYxOTRmN2M0Mjk5MWJmYjczOGJhMDM4NzNh
MmJmODc2YzRkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
CkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRp
b25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUg
PFdlYktpdC9XS0NyZWRlbnRpYWwuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVu
dC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tIVFRQQ29va2llU3RvcmVSZWYuaD4KQEAgLTgwLDYgKzgyLDcg
QEAKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVt
YmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KQEAgLTEzMiw2ICsxMzUsMzMgQEAgc3RhdGljIFdLU3RyaW5nUmVmIGNv
cHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV0tQYWdlUmVmLCBjb25zdCB2b2lk
KikKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIk1JSEZNSEV3WERB
TkJna3Foa2lHOXcwQkFRRUZBQU5MQURCSUFrRUFuWDBUSUxKck9NVXVlJTJCUHR3QlJFNlhmViUw
QVd0S1Fic3NoeGs1WmhjVXdjd3l2Y25JcTliODJRaEpkb0FDZEQzNHJxZkNBSU5ENDZmWEtRVW5i
MG12S3pRSUQlMEFBUUFCRmhGTmIzcHBiR3hoU1hOTmVVWnlhV1Z1WkRBTkJna3Foa2lHOXcwQkFR
UUZBQU5CQUFLdjJFZXgybiUyRlMlMEFyJTJGN2lKTnJvV2xTelNNdFRpUVRFQiUyQkFEV0hHajl1
MXhyVXJPaWxxJTJGbzJjdVF4SWZaY05aa1lBa1dQNER1YnFXJTBBaTAlMkYlMkZyZ0J2bWNvJTNE
Iik7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9h
ZFNoYXJlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKKworICAgIFdLRG93bmxvYWRD
bGllbnRWMCBjbGllbnQgeworICAgICAgICB7IDAsIGNsaWVudEluZm8gfSwKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwsCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQorICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUs
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZFdyaXRlRGF0YQorICAgICAgICBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRGaW5pc2gsCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZhaWwKKyAgICB9OworCisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVu
dC5iYXNlKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIG5hdmlnYXRpb25E
aWRCZWNvbWVEb3dubG9hZFNoYXJlZChkb3dubG9hZCwgY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFn
ZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2Fk
U2hhcmVkKGRvd25sb2FkLCBjbGllbnRJbmZvKTsKK30KKwogQXN5bmNUYXNrKiBBc3luY1Rhc2s6
Om1fY3VycmVudFRhc2s7CiAKIGJvb2wgQXN5bmNUYXNrOjpydW4oKQpAQCAtMzM2LDcyICszNjYs
NzIgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1X
ZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAogICAgIFdLUGFnZVVJQ2xpZW50Vjggb3Ro
ZXJQYWdlVUlDbGllbnQgPSB7CiAgICAgICAgIHsgOCwgdmlldyB9LAotICAgICAgICAwLCAvLyBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gc2hvd1Bh
Z2UKKyAgICAgICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHNob3dQYWdlCiAgICAgICAgIGNsb3NlT3RoZXJQYWdl
LAotICAgICAgICAwLCAvLyB0YWtlRm9jdXMKKyAgICAgICAgbnVsbHB0ciwgLy8gdGFrZUZvY3Vz
CiAgICAgICAgIGZvY3VzLAogICAgICAgICB1bmZvY3VzLAotICAgICAgICAwLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzZXRTdGF0
dXNUZXh0Ci0gICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWQKLSAg
ICAgICAgMCwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQKLSAgICAgICAgMCwgLy8gZGlkTm90SGFu
ZGxlV2hlZWxFdmVudAotICAgICAgICAwLCAvLyB0b29sYmFyc0FyZVZpc2libGUKLSAgICAgICAg
MCwgLy8gc2V0VG9vbGJhcnNBcmVWaXNpYmxlCi0gICAgICAgIDAsIC8vIG1lbnVCYXJJc1Zpc2li
bGUKLSAgICAgICAgMCwgLy8gc2V0TWVudUJhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBzdGF0
dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc2V0U3RhdHVzQmFySXNWaXNpYmxlCi0gICAg
ICAgIDAsIC8vIGlzUmVzaXphYmxlCi0gICAgICAgIDAsIC8vIHNldElzUmVzaXphYmxlCisgICAg
ICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
CisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHNldFN0YXR1c1RleHQKKyAgICAgICAg
bnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAorICAgICAgICBudWxscHRyLCAvLyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAgICAg
ICBudWxscHRyLCAvLyBkaWROb3RIYW5kbGVLZXlFdmVudAorICAgICAgICBudWxscHRyLCAvLyBk
aWROb3RIYW5kbGVXaGVlbEV2ZW50CisgICAgICAgIG51bGxwdHIsIC8vIHRvb2xiYXJzQXJlVmlz
aWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRUb29sYmFyc0FyZVZpc2libGUKKyAgICAgICAg
bnVsbHB0ciwgLy8gbWVudUJhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRNZW51
QmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHN0YXR1c0JhcklzVmlzaWJsZQorICAg
ICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwg
Ly8gaXNSZXNpemFibGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0SXNSZXNpemFibGUKICAgICAg
ICAgZ2V0V2luZG93RnJhbWUsCiAgICAgICAgIHNldFdpbmRvd0ZyYW1lLAogICAgICAgICBydW5C
ZWZvcmVVbmxvYWRDb25maXJtUGFuZWwsCi0gICAgICAgIDAsIC8vIGRpZERyYXcKLSAgICAgICAg
MCwgLy8gcGFnZURpZFNjcm9sbAotICAgICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEK
KyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRHJhdworICAgICAgICBudWxscHRyLCAvLyBwYWdlRGlk
U2Nyb2xsCisgICAgICAgIG51bGxwdHIsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQogICAgICAg
ICBydW5PcGVuUGFuZWwsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QsCi0gICAgICAgIDAsIC8vIGhlYWRlckhlaWdodAotICAgICAgICAwLCAvLyBm
b290ZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZHJhd0hlYWRlcgotICAgICAgICAwLCAvLyBkcmF3
Rm9vdGVyCisgICAgICAgIG51bGxwdHIsIC8vIGhlYWRlckhlaWdodAorICAgICAgICBudWxscHRy
LCAvLyBmb290ZXJIZWlnaHQKKyAgICAgICAgbnVsbHB0ciwgLy8gZHJhd0hlYWRlcgorICAgICAg
ICBudWxscHRyLCAvLyBkcmF3Rm9vdGVyCiAgICAgICAgIHByaW50RnJhbWUsCiAgICAgICAgIHJ1
bk1vZGFsLAotICAgICAgICAwLCAvLyBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUK
LSAgICAgICAgMCwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgotICAgICAgICAw
LCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Ci0gICAgICAgIDAsIC8vIGNyZWF0ZU5ld1Bh
Z2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudAotICAgICAgICAwLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdAotICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMQotICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKLSAg
ICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCi0gICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAwLCAvLyBwaW5uZWRTdGF0ZURpZENoYW5nZQotICAg
ICAgICAwLCAvLyBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAg
ICAgMCwgLy8gZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwgLy8gZGlkQ2Fu
Y2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAvLyBpc1BsYXlp
bmdBdWRpb0RpZENoYW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRDb21wbGV0ZVJ1YmJlckJh
bmRGb3JNYWluRnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcgorICAgICAgICBudWxscHRyLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0
CisgICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MQorICAgICAgICBudWxscHRyLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAorICAgICAgICBu
dWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAor
ICAgICAgICBudWxscHRyLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRyLCAvLyBzaG93Q29sb3JQaWNrZXIKKyAg
ICAgICAgbnVsbHB0ciwgLy8gaGlkZUNvbG9yUGlja2VyCisgICAgICAgIG51bGxwdHIsIC8vIHVu
YXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICBudWxscHRyLCAvLyBwaW5uZWRT
dGF0ZURpZENoYW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRCZWdpblRyYWNraW5nUG90ZW50
aWFsTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjb2duaXplTG9uZ01v
dXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxM
b25nTW91c2VQcmVzcworICAgICAgICBudWxscHRyLCAvLyBpc1BsYXlpbmdBdWRpb0RpZENoYW5n
ZQogICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKLSAg
ICAgICAgMCwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRvbgotICAgICAgICAwLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnQKLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAotICAgICAgICAwLCAvLyB1bnVzZWQ1CisgICAgICAg
IG51bGxwdHIsIC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0b24KKyAgICAgICAgbnVsbHB0ciwgLy8g
cnVuSmF2YVNjcmlwdEFsZXJ0CisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRDb25m
aXJtCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVs
bHB0ciwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkph
dmFTY3JpcHRBbGVydCwKLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KLSAgICAg
ICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0Q29uZmlybQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0CiAg
ICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZvck9yaWdpbiwKLSAgICAgICAgMCwgLy8g
cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsCi0gICAgICAgIDAsIC8vIGZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZQorICAgICAgICBudWxscHRyLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwKKyAgICAgICAgbnVsbHB0ciwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lCiAg
ICAgICAgIHJlcXVlc3RQb2ludGVyTG9jaywKLSAgICAgICAgMCwKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkTG9zZVBvaW50ZXJMb2NrCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQo
bmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50LmJhc2UpOwogICAgIApAQCAtNDEwLDE2ICs0NDAs
MTYgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1X
ZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
LAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkLAotICAgICAgICAwLCAvLyBkaWRT
dGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRTdGFydFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbE5hdmlnYXRpb24sCi0gICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkQ29tbWl0TmF2aWdhdGlvbgotICAgICAgICAwLCAv
LyBkaWRGaW5pc2hOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0g
ICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lCi0gICAgICAgIDAs
IC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZAotICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkQ29tbWl0TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5p
c2hOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZAorICAgICAgICBudWxscHRyLCAvLyBk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIHJlbmRlcmluZ1By
b2dyZXNzRGlkQ2hhbmdlCiAgICAgICAgIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9u
U3BhY2UsCiAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAg
ICAgcHJvY2Vzc0RpZENyYXNoLApAQCAtNDI4LDkgKzQ1OCwxMiBAQCBXS1BhZ2VSZWYgVGVzdENv
bnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdL
UGFnZUNvbgogICAgICAgICB3aWxsRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNu
YXBzaG90LAotICAgICAgICAwLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRlCi0gICAgICAgIDAs
IC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgotICAgICAgICBjb3B5U2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisgICAgICAgIG51bGxwdHIsIC8vIHdlYlByb2Nlc3NEaWRU
ZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0ciwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9u
CisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcsCisgICAgICAg
IG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG51bGxwdHIgLy8gY29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGll
bnQobmV3UGFnZSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwogCkBAIC03NTAsMTYgKzc4
MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSwKICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwKLSAgICAgICAgMCwgLy8gZGlkU3RhcnRQ
cm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KICAg
ICAgICAgZGlkQ29tbWl0TmF2aWdhdGlvbiwKICAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiwK
LSAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlkRmluaXNoRG9jdW1lbnRM
b2FkCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KLSAgICAgICAgMCwg
Ly8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFp
bE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZElu
U3ViZnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0
ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKICAgICAgICAgY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jhc2gsCkBAIC03NjgsMjggKzgwMSwxNCBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVz
dE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAg
ICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZFJlbW92ZU5hdmlnYXRp
b25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIDAsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUK
LSAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCi0gICAgICAgIGNvcHlT
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gd2Vi
UHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAgICAgICBudWxscHRyLCAvLyBjb250ZW50UnVsZUxpc3RO
b3RpZmljYXRpb24KKyAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkLAorICAgICAgICBu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbnVsbHB0ciAvLyBj
b250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChtX21haW5XZWJWaWV3LT5wYWdlKCksICZwYWdlTmF2aWdhdGlvbkNsaWVu
dC5iYXNlKTsKLQotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEgZG93bmxvYWRDbGllbnQg
PSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAgICBkb3dubG9hZERpZFN0YXJ0LAotICAg
ICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKLSAgICAgICAgMCwg
Ly8gZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVEYXRhCi0gICAg
ICAgIDAsIC8vIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlCi0gICAgICAgIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lLAotICAgICAgICAwLCAvLyBkaWRDcmVh
dGVEZXN0aW5hdGlvbgotICAgICAgICBkb3dubG9hZERpZEZpbmlzaCwKLSAgICAgICAgZG93bmxv
YWREaWRGYWlsLAotICAgICAgICBkb3dubG9hZERpZENhbmNlbCwKLSAgICAgICAgMCwgLy8gcHJv
Y2Vzc0RpZENyYXNoOwotICAgICAgICBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMCi0gICAgfTsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0KCksICZk
b3dubG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAvLyB0aGlzIHNob3VsZCBqdXN0IGJlIGRv
bmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBpbmplY3Rl
ZEJ1bmRsZUNsaWVudCA9IHsKQEAgLTIwNzksNDUgKzIwOTgsMzUgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiBwYWdlLCBX
S0F1dGhlbnQKIH0KIAogCi0vLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHN0YXRpY19j
YXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3du
bG9hZERpZFN0YXJ0KGNvbnRleHQsIGRvd25sb2FkKTsKLX0KKy8vIFdLRG93bmxvYWRDbGllbnQK
ICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4dCwgZG93bmxvYWQsIGZpbGVuYW1lLCBhbGxvd092ZXJ3
cml0ZSk7Ci19Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VS
ZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChjb250ZXh0LCBkb3dubG9h
ZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShkb3dubG9hZCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZhaWwoY29udGV4
dCwgZG93bmxvYWQsIGVycm9yKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQp
OwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2VsKGNvbnRleHQsIGRvd25sb2FkKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRGYWlsKGRvd25sb2FkLCBlcnJvcik7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0
UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25z
ZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoY29udGV4
dCwgZG93bmxvYWQsIHVybCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCBuZXdSZXF1ZXN0KTsKIH0KIAotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxi
YWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQg
c3RhcnRlZC5cbiIpOwogfQogCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
LCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKQorV0tTdHJpbmdS
ZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lKQogewogICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIApAQCAtMjEz
MywyOCArMjE0MiwzMyBAQCBXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLAogICAgIGlmICghZHVtcFJl
bmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgICphbGxvd092ZXJ3
cml0ZSA9IHRydWU7CiAgICAgU3RyaW5nIHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVU
RjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKICAgICBpZiAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0
eSgpKQogICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9ICJVbmtub3duIjsKKyAgICAKKyAgICBT
dHJpbmcgZGVzdGluYXRpb24gPSB0ZW1wb3JhcnlGb2xkZXIgKyAiLyIgKyBzdWdnZXN0ZWRGaWxl
bmFtZTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhkZXN0aW5hdGlvbikpCisgICAg
ICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGluYXRpb24pOwogCi0gICAgcmV0dXJuIHRv
V0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2VzdGVkRmlsZW5hbWUpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gdG9XSyhkZXN0aW5hdGlvbikubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYp
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmKQog
ewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBjb21wbGV0ZWQuXG4iKTsKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVybCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tV
UkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7CisgICAgYXV0byB1cmwgPSBhZG9wdFdLKFdLVVJMUmVx
dWVzdENvcHlVUkwocmVxdWVzdCkpOwogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJh
Y2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1ha2VTdHJpbmco
IkRvd25sb2FkIHdhcyByZWRpcmVjdGVkIHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VS
TENvcHlTdHJpbmcodXJsKSkpLCAiXCIuXG4iKSk7CisgICAgICAgIG1fY3VycmVudEludm9jYXRp
b24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIi
LCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKSksICJcIi5c
biIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnJvcikK
K3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmIGVycm9yKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKSB7
CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRvd25sb2FkIGZhaWxl
ZC5cbiJfcyk7CkBAIC0yMTY4LDEzICsyMTgyLDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnIK
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmKQotewotICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQotICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBjYW5jZWxsZWQuXG4i
KTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKLX0KLQog
dm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBjcmFzaCBsb2dzIGFyZSBi
ZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBzbwpAQCAtMjUwNCw3ICsyNTExLDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS05hdmlnYXRpb25B
Y3Rpb25SZWYgbmF2aWcKICAgICBhdXRvIGRlY2lzaW9uRnVuY3Rpb24gPSBbc2hvdWxkSWdub3Jl
LCByZXRhaW5lZExpc3RlbmVyLCByZXRhaW5lZE5hdmlnYXRpb25BY3Rpb24sIHNob3VsZFN3YXBU
b0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9FcGhlbWVy
YWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiwgc2hvdWxkU3dhcFRvRGVmYXVsdFNlc3Npb25Pbk5l
eHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRp
b25dKCkgewogICAgICAgICBpZiAoc2hvdWxkSWdub3JlKQogICAgICAgICAgICAgV0tGcmFtZVBv
bGljeUxpc3RlbmVySWdub3JlKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwotICAgICAgICBlbHNl
IGlmIChXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQocmV0YWluZWROYXZp
Z2F0aW9uQWN0aW9uLmdldCgpKSkKKyAgICAgICAgZWxzZSBpZiAoV0tOYXZpZ2F0aW9uQWN0aW9u
R2V0RG93bmxvYWRBdHRyaWJ1dGUocmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKICAg
ICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKHJldGFpbmVkTGlzdGVuZXIu
Z2V0KCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmIChzaG91bGRTd2FwVG9FcGhl
bWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiB8fCBzaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lv
bk9uTmV4dE5hdmlnYXRpb24pIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
aAppbmRleCBiNTdiOGY3YTA1OTUyM2VjZjg3N2FiMDE5NzIwZDRkYmU1OGZjYjVmLi43NjgxZTFl
NDE5YmE4OTdkMTI1MWU5OGUyYjFmYWQzOWZhZjZmMjI1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oCkBAIC00NDIsMTkgKzQ0MiwxOSBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkRmluaXNoTmF2
aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZik7CiAKLSAgICAvLyBXS0NvbnRleHRE
b3dubG9hZENsaWVudAotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0
UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVm
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBj
b25zdCB2b2lkICpjbGllbnRJbmZvKTsKLSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3Ry
aW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lk
IGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9p
ZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERp
ZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0
aWMgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNv
bnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2
b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdL
Q29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYpOworICAgIC8vIFdLRG93bmxvYWRD
bGllbnQKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQo
V0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZv
aWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hh
cmVkKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkU3Rh
cnQoV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYs
IFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
KyAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZG93
bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93
bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWRE
aWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIFdLRGF0YVJlZiwgY29uc3Qgdm9pZCop
OworICAgIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwor
ICAgIHN0YXRpYyBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tE
b3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lk
Kik7CisgICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93
bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJlZik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcHJvY2Vz
c0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgdm9pZCBw
cm9jZXNzRGlkQ3Jhc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MzRlOThmNjEwNTNhYTBjMTMzNmJmNDIzMTRkYTlk
Mjk4ZjQyODc4Li5iZTFiMWI2ODE3MTM2NDUzZGQ3ODA2OWY3NzVkN2RiYmM4MDY1NmEzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IGRvd25sb2FkIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdn
ZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3lu
Yy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1z
ZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICBOb3cgdGhhdCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpz
dWdnZXN0ZWRGaWxlbmFtZSBkb2Vzbid0IHN1Z2dlc3QgInVua25vd24iCisgICAgICAgIHRoZSBj
YXBpdGFsaXphdGlvbiBoYXMgY2hhbmdlZCB0byAiVW5rbm93biIgZnJvbSBOU1VSTFJlc3BvbnNl
J3Mgc3VnZ2VzdGVkRmlsZW5hbWUuCisKIDIwMjAtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjY5NTk4KTogWyBNYWMgXSBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRl
bnQvdGhlLWlmcmFtZS1lbGVtZW50L2lmcmFtZS1uZXR3b3JrLWVycm9yLnN1Yi5odG1sIGlzIGZs
YWt5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDAy
YWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2
ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBV
Ukwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxl
dGVkLgogQmxvYiBVUkwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2st
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQK
aW5kZXggYmVkYzhkZGEwMWM4YzEyMzdlMTA2YzY4NTMzNDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVh
NThjMDhmYmVlMDZjYjM5NDMxY2RjMzFkMGRiNTlhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVk
LXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRp
Yy1jbGljay1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgot
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitE
b3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERv
d25sb2FkIGNvbXBsZXRlZC4KIFRlc3QgdGhhdCB1c2VyIHRyaWdnZXJlZCBzeW50aGV0aWMgY2xp
Y2tzIG9uIGFuIGFuY2hvciB3aXRoIGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBub3QgaWdub3Jl
ZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1m
aWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQK
aW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2Ux
MGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRv
d25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxv
YWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQg
c3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93
biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERv
d25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUt
YmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9h
ZC1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3
YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxv
Yi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxv
YWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25s
b2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5n
IFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRl
ZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1u
b2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKaW5kZXggMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRh
NTZmYmI0YmU2YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3Vn
Z2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9i
IFVSTAo=
</data>
<flag name="commit-queue"
          id="431423"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414502</attachid>
            <date>2020-11-18 15:47:15 -0800</date>
            <delta_ts>2020-11-18 20:00:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201118154714.patch</filename>
            <type>text/plain</type>
            <size>328734</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjNWZkNGY1ZjVjNmExYWFj
YTM3YzNmNThmOWRlMTkwYTEzYTI0ODMuLjU1ZTM1NmZiZmMwZWZhN2VhMmRkOGJhYzY2NGVmY2I1
Mzc4YTIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX2Rvd25sb2FkRGlk
U3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlvbiBoYW5kbGVycyB0aGF0
IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBUaGVyZSdzIG5vIG5lZWQg
dG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2JqZWN0IGJlZm9yZSB0aGVu
IGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQgInN0YXJ0cyIgd2hpY2gg
aXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAgICAgICAgIHNvIHRoZXJl
IHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bmxv
YWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICA5LiAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNvbnRpbnVpbmcgb3IgY2Fu
Y2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250cm9sIHRoZQorICAgICAg
ICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAxMC4gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVSZXNwb25zZSBoYXZlIGJl
ZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lIGFu
ZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVkRmlsZW5hbWUgQVBJLiAg
YWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVzZWQsIGFuZCBub3QgcmVh
bGx5IG5lZWRlZC4KKyAgICAgICAgMTEuIGRpZENyZWF0ZURlc3RpbmF0aW9uIGlzIGdvbmUuICBU
aGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3NhcnkuICBJZiB5b3UgbmVlZCB0
byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBmaXJzdAorICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9uIGhhcyBkZWZpbml0ZWx5
IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMi4gc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNhbGxlZCBzaW5jZSB3ZSBh
ZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlLgorICAgICAgICAxMy4gb3JpZ2luYXRpbmdGcmFtZSBpcyBnb25lLiAgT24gX1dLRG93
bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUluZm8gdGhhdCBvZnRlbiBj
b250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9uIHdhcyB0aGVyZSwKKyAg
ICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZGlk
QmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlvblJlc3BvbnNlIHdoaWNo
IGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUgQVBJIHRlc3RzIGZvciBl
dmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tEb3dubG9hZEdldFR5cGVJRCk6
CisgICAgICAgIChXS0Rvd25sb2FkQ29weVJlcXVlc3QpOgorICAgICAgICAoV0tEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKToKKyAgICAgICAg
KFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKToKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHA6CisgICAgICAg
IChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZSk6CisgICAgICAgIChXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRG93bmxvYWQgY2Fu
Y2VsOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAg
ICAoLVtXS0Rvd25sb2FkIGRlbGVnYXRlXSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgc2V0RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb24gX3dhc1Vz
ZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVd
KToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9zaG91bGRQZXJmb3JtRG93bmxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0
b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJW
aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhE
b3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
Ol0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBjYW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJl
cXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6Cisg
ICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVE
YXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBk
ZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRE
aWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMjAtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIHJlZHVuZGFudCBjb2RlIHRoYXQgdHJpZXMgdG8gYnVtcCB0aGUgUW9TIG9mIHRoZSBX
ZWJDb250ZW50IG1haW4gdGhyZWFkIG9mIFVzZXJJbnRlcmFjdGl2ZSB3aGVuIGhhbmRsaW5nIGEg
c3luYyBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCAzZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFi
ZWMzZmZhMjEzOWEyLi45OGVhMDdkYWIxM2Q2ODk2NGZhNmEzZWYxYmFlYzJiN2UxYTA0NDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCkBAIC00MCwxNCArNDAsMTQgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHREb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEhpc3Rv
cnlDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRl
bnRpYWwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCi0gICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3
NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQyZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxv
YWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZWY8TmV0dwogICAg
IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2FkSUQsIFdURk1v
dmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBhdXRvIGRvd25s
b2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsICpu
ZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAgLy8gRm9yIGNvbXBhdGli
aWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBzZW5kIERpZFN0YXJ0IGlm
IHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93bmxvYWREaWRTdGFydCA9
PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3dubG9hZC0+c2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsKKwogICAgIEFTU0VSVCgh
bV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5k
ZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uYzQ4MWViNWY2ZDQy
OWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTYwLDYg
KzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3
b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBjbGFzcyBDYWxsRG93bmxv
YWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERvd25sb2FkTWFuYWdlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2VyKTsKIApAQCAtODYsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERv
d25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChE
b3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAK
ICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggOTVmOGRlYzMwMjUxYjgwYmFhMjljZTU5MDg3
M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgRG93bmxv
YWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0U2Vy
aWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1Byb3Bl
cnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICNlbmRpZgog
CisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRhdGVkRGF0YSBvbmNlIHdl
J3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gV0tEb3dubG9hZAorICAgIC8vIGJlY2F1
c2UgdGhlcmUncyBubyByZWFzb24gdG8gc2V0IHRoZSBsb2NhbCBwYXRoIHdlIGdvdCBmcm9tIHRo
ZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0YS4KICAgICBtX2Rvd25sb2FkVGFzayA9IFtjb2NvYVNl
c3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5zZXNzaW9uIGRvd25sb2FkVGFza1dp
dGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gW21f
ZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5z
ZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5zKHRhc2tJZGVu
dGlmaWVyKSk7CkBAIC04Myw3ICs4NSwyMiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRUYXNrKTsKLSAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQ
cm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7Cisg
ICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQ
dHIoW3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2Fk
VGFza0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09S
S19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBN
b2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3Vt
ZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAg
IGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5p
dEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAg
W3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9s
aWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRO
UyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3Nd
LCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtO
U0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAg
ICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0
aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUlu
Zm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAg
ICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBb
ZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKKyNlbmRpZgogICAgICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSBy
ZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgfTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YVJlZmVyZW5j
ZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggOGQ4OTdhNDIzMGFmZTJlOThkZGRhOWM0
YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4MmM5ZTQ3M2JmMzVlMDNmZjNhNjJmNzA1ZDNlMWFjMjE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCkBAIC00NDYsMTAgKzQ0Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2Fu
CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICByZXR1cm4gInVua25vd24iX3M7CisgICAg
cmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA4YTlkMmYzOTM5ZTcxODZiODFlOGE3ZWZkNGJiZWI1MGE2M2IyZjU5
Li5iNGViMTBhMDk4NDNmZmM2NDUzYTBjYzRhOWM3MmY0ZWJmOGVlNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5ICsy
MDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93
bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBh
dGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0
aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3RhcnQp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDc5LDEwICsyMDc5LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYg
bmV0d29ya0RhdGFUYXMKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gbmV0d29ya0Rh
dGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkudG9VSW50NjQoKTsKIAotICAgIC8vIEFzIHBlciBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUg
ZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91
bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0d29y
a0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVk
RmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogCiAgICAgZG93bmxv
YWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZSwg
c3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBuZXR3b3Jr
RGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdvcmtEYXRhVGFzayldIChTdHJpbmcmJiBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQWxs
b3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAgICAgICBhdXRvIGRvd25s
b2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmU1MjZlZmYxZThj
OTFkMzZlYTg5Yjg3ZTdiNTY3OTU4YTk1NmZiMi4uMjlkNGE2ODAwZWM2YWIwZDgwZGI4MzNkNTRk
MjdmMGQ1NzdiOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBDYWxs
RG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQyMSw3
ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZG93
bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAgdm9p
ZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmMDE5MDU2ZTViNTdmNTMz
NGI4Y2U3MzgyNmUyZmEwNTY4ODkzYmYuLmE5YmJlY2U1YWE4ZDg3YjM0OTMyYTYzOTJjZjVhZGUy
Nzg3OGUxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdEb21h
aW4sIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykg
LT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSkKLSAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0
YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRT
dGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKSBB
c3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDhhOGFiMGI5YjgzMWNhZjQ4ZmEyMjQ1MzA5OGFmYjI0YWFhOGY0ZGUuLmNiNjk2ZjMyYTkz
ZTVkNjZlYjcwY2QwNDhmZWIxNDE2YWI5NTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc2
OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2UKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBp
ZiAocmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUg
dGhlIGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4g
QWRkIGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVz
dW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5n
RmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAg
ICAgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxl
RGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNT
dHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNs
YXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBm
aW5pc2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dGFzay5f
cGF0aFRvRG93bmxvYWRUYXNrRmlsZSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9j
YWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29k
ZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBhdXRvIHJlc3Vt
ZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0
aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwo
ZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRi
ZGI5Yjg2OTUuLmUyODcwYTBhZmRjOWY4NTE4ZTFkMjk0NzNjM2M1YjYzMjc1OTM4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6
QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAn
V2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdvcmxk
U2hhcmVkLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1
ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpG
aW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3M2UxMDk5NGY1ZGMxMzdmYWY0MDZh
MjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJjZGUxOTIwZmI1MDRjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzAsNiArMzAsOCBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJlc3Vs
dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAppbmRl
eCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3M2M1MmFjMTFlYjIyMjBhY2Y2Li40YTExMzY0NjExY2Zi
YzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBhdXRvIHRvQVBJKFQq
IHQpIC0+IEFQSVR5cGUKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihBUEk6
Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFQ
SVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88VD46OkFQSVR5cGU+CithdXRvIHRvQVBJKFQm
IHQpIC0+IEFQSVR5cGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihB
UEk6Ok9iamVjdDo6d3JhcCgmdCkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZT4KIGF1dG8gdG9J
bXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KaW5kZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4uN2Yw
NTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tDb250
ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tG
cmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmplY3Q6
Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQgYWxs
b2NdOworICAgICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjRlYTRhZmJkNjlmMTgw
ZDc4ZTU5YmZhZTMyNWM0ZWY2NGY0NDkyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzc0LDcgKzM3NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tG
cmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEu
LjI0ODA1MzJlZWNlMWE0OTA0YmVkYzhjZGQ0ZTk3ZjFiYzk1NWI4NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1Li5k
ZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDksMTggKzQ5LDIw
IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsK
IAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxl
Z2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu
dDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYmJhODU5YWYyZTQzNWU5ZjA5MjRmNGEzMmUxMTdkOTYz
OTVkYmY5NS4uMGM1NjRkNDQ1NGM4MmQ4OTU3YWZlYWU3NDdjMGI2ZjE3MGY2YmFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0KICAg
ICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmln
YXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzQnV0Tm90
QXBwTGlua3M7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGRBbGxvdzsgfQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybURvd25sb2FkKCkgY29u
c3QgeyByZXR1cm4gIW1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNO
dWxsKCk7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9CiAg
ICAgYm9vbCBpc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5pc1JlZGlyZWN0OyB9CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0
aW9uKCkgeyBtX3Nob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVS
TCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYm
IHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlv
bikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRi
ZTg4NmEwNzQyMmJmODNiN2FmY2ZjYmM2YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgxZTky
Y2VlNDkyNWZmNmFkZGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJh
bWVQcm94eTsKQEAgLTk5LDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBO
YXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgTmF2aWdhdGlvbkFjdGlvbiYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5YjdkZDMx
YTBjMmE5Y2ViZWQ0Zi4uMjYxMDE4OGE5NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAt
NTAsMTEgKzUwLDExIEBAIGNsYXNzIFBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVz
ZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAg
ICAgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMzYTVj
MjYwNzRlMjYyZDExMzRiYy4uZmZkMDdlOGNjZDhiMDQwNjcxNGVlODcxMGVjMjEzMDgwOWZlYzRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC01
NSw5ICs1NSw2IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAK
IG5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRE
b3dubG9hZENsaWVudFYwLCBXS0NvbnRleHREb3dubG9hZENsaWVudFYxPiBWZXJzaW9uczsKLX07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYwPiBW
ZXJzaW9uczsKIH07CkBAIC0xNjgsOTAgKzE2NSw2IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNs
CiAgICAgfQogfQogCi12b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQot
ewotICAgIGNsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xp
ZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50
KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYg
Y29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRl
eHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNw
b25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwg
V2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3Qg
bGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEobV9jb250ZXh0LCBXZWJLaXQ6OnRv
QVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShkb3dubG9hZFByb3h5LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
OjpObywgeyB9KTsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3Zlcndy
aXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDogV2Vi
S2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb24u
Z2V0KCkpKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBm
aW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3Rp
bmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94
eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRGaW5pc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRGYWlsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0gICAgICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDYW5jZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2FuY2VsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2go
bV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKLSAgICAgICAgfQotICAgICAgICBXS0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAg
IH07Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldExlZ2FjeURvd25sb2FkQ2xpZW50
KGFkb3B0UmVmKCpuZXcgTGVnYWN5RG93bmxvYWRDbGllbnQod2tDbGllbnQsIGNvbnRleHQpKSk7
Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNs
aWVudCh3a0NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CmluZGV4IGRjMmUwZDE5MjMxNWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLjQzMTU2MGQ2
MDczNDViNTU2N2IyNzYxM2I5N2Q1MDEyZjZiMDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQu
aD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0
ZWQuaD4KQEAgLTEzOCw3ICsxMzcsNiBAQCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4
dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25s
b2FkQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5l
Y3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRl
eHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZjZjk2YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2IzMmQxZDg3
NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQ29udGV4dERv
d25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9h
ZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVk
ZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wgKCpXS0NvbnRleHREb3dubG9h
ZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tDb250ZXh0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrKShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5
cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFj
aykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5n
UmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250
ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsKShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRD
cmFzaENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSB7Ci0gICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tDb250ZXh0
RG93bmxvYWRDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENs
aWVudFYwIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAg
V0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRTdGFydDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOwotICAgIFdLQ29udGV4dERvd25sb2FkU2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9uOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmFpbENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbDsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZENhbmNlbDsKLSAgICBXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRDcmFz
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsKLX0g
V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMSB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAw
LgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVz
cG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9hZFNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVE
ZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0aW5h
dGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9hZERp
ZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWw7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9jZXNz
RGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlkQ3Jh
c2g7Ci0KLSAgICAvLyBWZXJzaW9uIDEuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3Q7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjE7Ci0KLSNlbmRpZiAvLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGMyODdiYjM0NzA0
NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmViZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJBUElB
cnJheS5oIgotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBUElEb3dubG9hZENsaWVu
dC5oIgotI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KQotewotICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKLX0KLQotdWlu
dDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRv
SW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQotV0tEYXRhUmVmIFdL
RG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPmxlZ2FjeVJlc3VtZURhdGEoKSk7Ci19Ci0KLXZv
aWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVy
biB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqdG9JbXBsKGRv
d25sb2FkKSldIChhdXRvKikgewotICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlk
Q2FuY2VsKGRvd25sb2FkLmdldCgpKTsKLSAgICB9KTsKLX0KLQotV0tQYWdlUmVmIFdLRG93bmxv
YWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwotfQotCi1XS0Fy
cmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQotewotICAgIGF1dG8mIHJlZGlyZWN0Q2hhaW4gPSAgdG9JbXBsKGRvd25sb2FkKS0+cmVkaXJl
Y3RDaGFpbigpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAgIHVy
bHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWRpcmVjdENoYWluLnNpemUoKSk7Ci0gICAgZm9y
IChhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0Q2hhaW4pCi0gICAgICAgIHVybHMudW5jaGVj
a2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUocmVkaXJlY3RVUkwuc3RyaW5nKCkpKTsKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMpKS5sZWFrUmVmKCkp
OwotfQotCi1ib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0
ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmNzIwMjc5M2Q1NGY1NDJhMzkwOTIwNGEzYzgw
ZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0Rvd25sb2FkX2gKLSNk
ZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVk
ZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKLQot
V0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KSBXS19DX0FQSV9ERVBSRUNBVEVEOwotV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25s
b2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tEYXRh
UmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tf
RVhQT1JUIHZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdL
X0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJl
Y3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93bmxv
YWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV0tEb3dubG9hZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjk1N2Y4NjAxOTU5NTVmNzU5NTdiZGMwMTZmZmNlMTEzMjI2ZGEyMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaApA
QCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgYm9vbCAoKldLRG93bmxvYWRXaWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmlu
Z1JlZiAoKldLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgq
V0tEb3dubG9hZERpZFdyaXRlRGF0YSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgbG9uZyBsb25n
IGJ5dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVm
IHZvaWQgKCpXS0Rvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRGYWlsV2l0
aEVycm9yKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFS
ZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0
IFdLRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OworfSBXS0Rvd25sb2FkQ2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tEb3dubG9hZENs
aWVudFYwIHsKKyAgICBXS0Rvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tEb3dubG9h
ZFdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbjsKKyAgICBXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTsKKyAgICBXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgICAgICAg
ICAgICAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOworICAgIFdLRG93bmxv
YWREaWRXcml0ZURhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3Jp
dGVEYXRhOworICAgIFdLRG93bmxvYWREaWRGaW5pc2ggICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLRG93bmxvYWREaWRGYWlsV2l0aEVycm9y
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbFdpdGhFcnJvcjsKK30gV0tE
b3dubG9hZENsaWVudFYwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZFJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rv
d25sb2FkUmVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNjAzZjhiNjRlODgyYTY3YjIzYmQzNDZiNzdjMDc4
NDJhMDUxZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZFJlZi5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tEb3dubG9hZFJlZi5oIgorCisjaW5jbHVkZSAi
QVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJRG93bmxvYWRD
bGllbnQuaCIKKyNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRG93bmxvYWRQ
cm94eS5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRG93bmxvYWRDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tEb3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0
eXBlZGVmIHN0ZDo6dHVwbGU8V0tEb3dubG9hZENsaWVudFYwPiBWZXJzaW9uczsKK307Cit9CisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KQoreworICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKK30KKworV0tV
UkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQoreworICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUodG9JbXBsKGRv
d25sb2FkKS0+cmVxdWVzdCgpKS5sZWFrUmVmKCkpOworfQorCit2b2lkIFdLRG93bmxvYWRDYW5j
ZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBX
S0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIHRvSW1wbChk
b3dubG9hZCktPmNhbmNlbChbZnVuY3Rpb25Db250ZXh0LCBjYWxsYmFja10oYXV0byogcmVzdW1l
RGF0YSkgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayh0b0FQ
SShyZXN1bWVEYXRhKSwgZnVuY3Rpb25Db250ZXh0KTsKKyAgICB9KTsKK30KKworV0tQYWdlUmVm
IFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sK
KyAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwor
fQorCitib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpCit7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0ZWQo
KTsKK30KKwordm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGll
bnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tEb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJ
OjpEb3dubG9hZENsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBEb3dubG9h
ZENsaWVudChjb25zdCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIAorICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHsKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25T
cGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dG9BUEkoZG93bmxvYWQpLCB0b0FQSShjaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFdyaXRlRGF0YSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRXcml0ZURh
dGEodG9BUEkoZG93bmxvYWQpLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisgICAg
ICAgIH0KKworICAgICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpT
dHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVBJOjpTdHJpbmcqIGRlc3RpbmF0aW9uID0gdG9JbXBsKG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVzcG9uc2UpLCB0b0FQ
SShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsK
KyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24pIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24tPnN0cmluZygpKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmluaXNoKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZpbmlzaCh0b0FQSShkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSog
cmVzdW1lRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZEZhaWxXaXRoRXJyb3IodG9BUEkoZG93bmxvYWQpLCB0b0FQSShlcnJvciks
IHRvQVBJKHJlc3VtZURhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgZGlkRmFpbChkb3dubG9h
ZCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIGRvd25sb2FkLnJlcXVlc3QoKS51cmwoKSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFz
aGVkIGR1cmluZyBkb3dubG9hZCIgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVz
cG9uc2UpLCB0b0FQSShyZXF1ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKGRvd25sb2FkKS0+
c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoY2xpZW50KSkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA0N2ZmYTg5NWUyZTU1OTVjODdjYWE0N2M3ZTFlMThjMWJkY2IzOGUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0
L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisKKyNpZm5k
ZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tE
b3dubG9hZEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxv
YWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKKwordHlwZWRlZiB2b2lkICgq
V0tEb3dubG9hZENhbmNlbENhbGxiYWNrKShXS0RhdGFSZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9p
ZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Rvd25s
b2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spOworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25s
b2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JU
IGJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3Bs
dXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKaW5kZXggOGZmMzdlNWM4N2JlODQ3MjFjYjFhODA4
M2YzYTIwZjE1NTlhNTUwMS4uZTEzNzA2ZGU1MDNjOTdhNTM2Mjg3NWI1YTc2YjQ5MDQxMGZiMzFl
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
QWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25BY3Rpb25SZWYuY3BwCkBAIC0zNiw3ICszNiwxMCBAQCBXS1R5cGVJRCBXS05hdmlnYXRp
b25BY3Rpb25HZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShBUEk6Ok5hdmlnYXRpb25BY3Rp
b246OkFQSVR5cGUpOwogfQogCi1ib29sIFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1E
b3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQorV0tTdHJpbmdSZWYgV0tOYXZp
Z2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIGFj
dGlvbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGFjdGlvbiktPnNob3VsZFBlcmZvcm1Eb3dubG9h
ZCgpOworICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHRvSW1wbChhY3Rpb24pLT5kb3dubG9hZEF0dHJp
YnV0ZSgpOworICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIHJldHVybiB0b0FQSShhdHRyaWJ1dGUuaW1wbCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKaW5k
ZXggOWQ4ZmNmMWUxOTk3MTNiMWYwOWIzMjYyMGQyMTU3OTI0NTQ4NmU5Yy4uNGMxM2Q2MzliZDdh
ZjI2OTEwYzNkNzAyMzczZDY1NDYxNTNiOTUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKQEAgLTM0LDcgKzM0LDcg
QEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05hdmlnYXRpb25BY3Rpb25H
ZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVy
Zm9ybURvd25sb2FkKFdLTmF2aWdhdGlvbkFjdGlvblJlZik7CitXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUoV0tOYXZpZ2F0aW9uQWN0
aW9uUmVmIGFjdGlvbik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMDY0ODI2Y2IyNWUzNTY0YTEzMDVkNDM0YjM4
NDBhYTM0ZWZmYzk2ZC4uYzllOGIzMjYzNGRhOGU4MDg4YzkyM2ExNmQ5YWI0MmE2ODViODg5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC01NSw2ICs1NSw3
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1ZGUgIkNvbnRlbnRBc1N0
cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCiAj
aW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAgLTEyNDAsNyArMTI0MSw3
IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291cmNlUmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdG
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291cmNlUmVx
dWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgJiYg
IW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikgewog
ICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEyNTEsMTQgKzEyNTIsMTQgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBX
S1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICAgICAgUmVmPEFQSTo6VVJMUmVxdWVzdD4g
cmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAKICAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlw
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxp
c3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRh
dGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5w
dHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25U
eXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9B
UEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQ
SSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5h
dmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyks
IHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdp
bmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmll
cnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdp
bmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVlc3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0
LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5t
b3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVl
c3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0
b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAot
ICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJv
eHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEy
NjcsNyArMTI2OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKIAogICAgICAgICAgICAgUmVm
PEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291
cmNlUmVxdWVzdCk7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9k
aWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShy
ZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksIHRvQVBJKGxpc3RlbmVyLnB0
cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKCZwYWdl
KSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRp
b25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRy
KCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc291
cmNlUmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQpAQCAtMjI1OSw2
ICsyMjYwLDI3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAgICAgICAgICByZXR1cm4g
QVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwpKTsKICAg
ICAgICAgfQogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
KFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mIGFjdGlv
biwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQubmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmFjdGlvbiks
IHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYktp
dDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgcmVzcG9uc2Us
IFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmcmVzcG9u
c2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6
V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9j
bGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRvQVBJKCZk
b3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKwogICAgICAg
ICB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoV2ViUGFnZVByb3h5JiBwYWdlKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEJlZ2luTmF2aWdh
dGlvbkdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMzgwNmQxODZhYTlmYjk3NzQ3YTczZDk3MzYw
NmE1OGViNDE4OGI2MC4uYTRhYWZlNGE5MzViMzEwYTIyMDFiZjdiNGY3NDU2NWU1NTJiODRhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlv
bkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmln
YXRpb25DbGllbnQuaApAQCAtNzEsNyArNzEsMTMgQEAgdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2
aWdhdGlvbldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFcK
IHR5cGVkZWYgV0tEYXRhUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlXZWJDcnlwdG9NYXN0ZXJL
ZXlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0
eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwotICAgIAorCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRp
b25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwogdHlwZWRl
ZiBXS1BsdWdpbkxvYWRQb2xpY3kgKCpXS1BhZ2VOYXZpZ2F0aW9uRGVjaWRlUG9saWN5Rm9yUGx1
Z2luTG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5Mb2FkUG9saWN5IGN1cnJl
bnRQbHVnaW5Mb2FkUG9saWN5LCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2luSW5mb0RpY3Rpb25hcnks
IFdLU3RyaW5nUmVmKiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkRpZEJlZ2luTmF2aWdh
dGlvbkdlc3R1cmUpKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAg
LTIxMyw2ICsyMTksOSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMg
ewogCiAgICAgLy8gVmVyc2lvbiAzLgogICAgIFdLUGFnZU5hdmlnYXRpb25Db3B5U2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2sgY29weVNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZzsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWRDYWxsYmFjayBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQ7CisgICAgV0tQYWdl
TmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjayBuYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZENhbGxiYWNrIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiB9
IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMzsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
YjZmMTMxNzczMTczYmQyN2RmYTgxMzU2NDhhMWYwNzViMWM0OGU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+
CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFzcyBXS0ZyYW1lSW5mbzsK
K0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGU7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KQorQGludGVyZmFjZSBXS0Rvd25sb2FkIDogTlNPYmplY3QKKworLyogQGFic3RyYWN0IFRoZSBy
ZXF1ZXN0IHVzZWQgdG8gaW5pdGlhdGUgdGhpcyBkb3dubG9hZC4KKyAgQGRpc2N1c3Npb24gSWYg
dGhlIG9yaWdpbmFsIHJlcXVlc3QgcmVkaXJlY3RlZCB0byBhIGRpZmZlcmVudCBVUkwsIG9yaWdp
bmFsUmVxdWVzdAorICB3aWxsIGJlIHVuY2hhbmdlZCBhZnRlciB0aGUgZG93bmxvYWQgZm9sbG93
cyB0aGUgcmVkaXJlY3QuCisqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxs
YWJsZSkgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CisKKy8qIEBhYnN0cmFjdCBUaGUg
ZGVsZWdhdGUgdGhhdCByZWNlaXZlcyBwcm9ncmVzcyB1cGRhdGVzIGZvciB0aGlzIGRvd25sb2Fk
LiAqLworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+
IGRlbGVnYXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0g
Y29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMg
ZmluaXNoZWQuCisgQGRpc2N1c3Npb24gVG8gYXR0ZW1wdCB0byByZXN1bWUgdGhlIGRvd25sb2Fk
LCBjYWxsIFdLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB3aXRoIHRoZSBkYXRhIGdp
dmVuIHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4KKyBJZiBubyByZXN1bWUgYXR0ZW1wdCBpcyBw
b3NzaWJsZSB3aXRoIHRoaXMgc2VydmVyLCBjb21wbGV0aW9uSGFuZGxlciB3aWxsIGJlIGNhbGxl
ZCB3aXRoIG5pbC4KKyovCistICh2b2lkKWNhbmNlbDoodm9pZCheIF9OdWxsYWJsZSkoTlNEYXRh
ICogX051bGxhYmxlIHJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyOworCitAZW5kCisKK05T
X0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tEb3dubG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDJhOTk0NTQxOTA3N2JkOTQ5ODdkYTAyYmNh
NDIzOWY4MTgxMzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRG93bmxvYWQubW0KQEAgLTAsMCArMSwyMjIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgorCisjaW1w
b3J0ICJBUElEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlci5oIgorI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXS05TRGF0YS5oIgorI2ltcG9ydCAiV0tOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIu
aD4KKworY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpEb3dubG9hZENs
aWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoaWQgPFdLRG93bmxv
YWREZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAg
ICAgICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3Bv
bmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZp
bGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFdy
aXRlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpk
aWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTop
XSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21fZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDopXSkKKyAgICAgICAgLCBtX3Jl
c3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTopXSkKKyAgICB7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvV2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1Jl
cXVlc3QgPSByZXF1ZXN0Lm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGlj
eTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndy
YXBwZXIoZG93bmxvYWQpIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnN0YXRpY19jYXN0PE5T
SFRUUFVSTFJlc3BvbnNlICo+KHJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkgbmV3UmVxdWVzdDpu
c1JlcXVlc3QuZ2V0KCkgZGVjaXNpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSldKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSBwb2xpY3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICAgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICAgICAgICAgIGNhc2UgV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5Q2FuY2VsOgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcih7IH0pOworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lB
bGxvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShy
ZXF1ZXN0KSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeSAoJWxkKSIsIChsb25nKXBvbGljeV07CisgICAgICAgICAg
ICB9CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICAgICAgcmV0dXJuIGNoYWxsZW5nZS5saXN0ZW5l
cigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworCisgICAgICAgIFtt
X2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTp3cmFwcGVyKGNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtjaGFsbGVuZ2UgPSBtYWtlUmVmKGNoYWxsZW5nZSksIGNoZWNrZXIgPSBXZWJLaXQ6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdl
dCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgewor
ICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoK
KyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2Uo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFs
LCBjcmVkZW50aWFsID8gV2ViQ29yZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6
OkNyZWRlbnRpYWwoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAg
ICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6CisgICAgICAgICAg
ICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVj
dFByb3RlY3Rpb25TcGFjZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCku
Y29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlv
biByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9u
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKQorICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCisgICAg
ICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFt
ZTpzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25s
b2FkID0gbWFrZVJlZihkb3dubG9hZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFu
ZGxlcigpOworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVVUkwp
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBiZSBhIGZpbGUg
VVJMIl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXTsKKyAgICAgICAgICAgIGlmICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6
W2Rlc3RpbmF0aW9uIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0ucGF0aF0pIHsKKyAg
ICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAg
ICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFp
bjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlcklu
Zm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoW2ZpbGVNYW5h
Z2VyIGZpbGVFeGlzdHNBdFBhdGg6ZGVzdGluYXRpb24ucGF0aF0pIHsKKyAgICAgICAgICAgICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAg
ICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9y
RG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi5wYXRoKTsKKyAgICAgICAgfSkuZ2V0
KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVz
V3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgZmluYWwKKyAgICB7
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9EaWRGaW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZCldOworICAg
IH0KKworICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRh
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9E
aWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVn
YXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNF
cnJvcigpIHJlc3VtZURhdGE6d3JhcHBlcihyZXN1bWVEYXRhKV07CisgICAgfQorCisgICAgdm9p
ZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdp
dGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9u
TG9zdCB1c2VySW5mbzpuaWxdIHJlc3VtZURhdGE6bmlsXTsKKyAgICB9CisKKyAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1f
cmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmlu
aXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsK
KworQGltcGxlbWVudGF0aW9uIFdLRG93bmxvYWQKKworLSAodm9pZCljYW5jZWw6KHZvaWQgKF4p
KE5TRGF0YSAqcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZG93bmxvYWQt
PmNhbmNlbChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYXV0byogZGF0YSkgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpKTsKKyAgICB9KTsKK30KKwor
LSAoTlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0Cit7CisgICAgcmV0dXJuIF9kb3dubG9h
ZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cit9CisKKy0gKGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRl
bGVnYXRlCit7CisgICAgcmV0dXJuIF9kZWxlZ2F0ZS5nZXQoKS5nZXQoKTsKK30KKworLSAodm9p
ZClzZXREZWxlZ2F0ZTooaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBfZG93bmxvYWQtPnNldENsaWVudChhZG9wdFJlZigq
bmV3IERvd25sb2FkQ2xpZW50KGRlbGVnYXRlKSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sK
KyAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOwor
fQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAo
QVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9kb3dubG9hZDsKK30KKwor
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlNTMyODQ4MDgxYWE4MzZjMzRjMGY4MzAwNTdk
YjAzOWIzNzliYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRG93bmxvYWQ7CisKKy8qIEBlbnVtIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeQorIEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0
aGUgZGVjaXNpb24gaGFuZGxlciBmcm9tIHRoZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgorIEBjb25zdGFudCBX
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwgICBDYW5jZWwgdGhlIHJlZGlyZWN0LgorIEBj
b25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgcmVkaXJl
Y3QuCisqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSB7CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJv
dG9jb2wgV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCisvKiBAYWJz
dHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRUUCByZWRp
cmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVj
ZWl2ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rpb24gcmVz
cG9uc2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2lsbCBiZSBz
ZW50LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlv
dSBtdXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2NlZWQgd2l0
aCB0aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQg
dGhpcyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJlIHRha2Vu
LgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZv
a2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRp
b24gY2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZl
ZCB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNv
bXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0byB0aGUgY2hhbGxl
bmdlLiBUaGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBv
ZiB0aGUgZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLiBXaGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVz
ZSwgb3IgbmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisgY3JlZGVudGlhbC4K
KyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdl
YiB2aWV3IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHdpdGgg
dGhlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9z
aXRpb24uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBfTnVsbGFibGUpKWNvbXBs
ZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBu
ZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0g
ZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVkIGEgZmlsZSB0byB3aGljaCB0
byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciByZXNwb25zZSwgaWYgdGhpcyBk
b3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QuCisgQHBhcmFtIHN1Z2dl
c3RlZEZpbGVuYW1lIFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25I
YW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRo
ZXIgYSBmaWxlIFVSTCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUg
ZG93bmxvYWQuCisgQGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBV
UkwsIHJlc3BvbnNlIHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRl
biBiZSB0aGUgc2FtZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250
ZW50IGNhbiBzcGVjaWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRo
ZSBkZXN0aW5hdGlvbiBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0
aGF0IGRvZXMgbm90IGV4aXN0IGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2Fu
IGJlIHdyaXR0ZW4gdG8uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOihudWxsYWJsZSBOU1VSTFJlc3BvbnNl
ICopcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5h
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICogX051bGxhYmxlIGRlc3RpbmF0
aW9uKSljb21wbGV0aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUg
ZG93bmxvYWQgaGFzIHJlY2VpdmVkIGFuZCB3cml0dGVuIGRhdGEgdG8gdGhlIGRlc3RpbmF0aW9u
LgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCBoYXMgd3JpdHRlbiBkYXRhLgor
IEBwYXJhbSBieXRlc1dyaXR0ZW4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJh
bSB0b3RhbEJ5dGVzV3JpdHRlbiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisg
QHBhcmFtIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgVGhlIHRvdGFsIG51bWJlciBvZiBieXRl
cyBleHBlY3RlZCB0byBiZSB3cml0dGVuLgorIEBkaXNjdXNzaW9uIElmIHRoaXMgZG93bmxvYWQg
d2FzIHRoZSByZXN1bHQgb2YgcmVzdW1pbmcgYSBwcmV2aW91cyBkb3dubG9hZCwgdGhlbgorIHRv
dGFsQnl0ZXNXcml0dGVuIHdpbGwgYmUgYnl0ZXNXcml0dGVuIHBsdXMgdGhlIG51bWJlciBvZiBi
eXRlcyB0aGF0IGhhZCBhbHJlYWR5IGJlZW4gZG93bmxvYWRlZC4KKyBJZiB0aGUgdG90YWwgbnVt
YmVyIG9mIGJ5dGVzIGlzIHVua25vd24sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgd2lsbCBi
ZSAtMS4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3Jp
dGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0
b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRv
d25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBk
b3dubG9hZCB0aGF0IGZpbmlzaGVkLgorKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdL
RG93bmxvYWQgKilkb3dubG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgaGFz
IGZhaWxlZC4KKyBAcGFyYW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUg
cmVhc29uLgorIEBwYXJhbSByZXN1bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdL
V2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlz
IGRvd25sb2FkLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YToobnVsbGFibGUgTlNE
YXRhICopcmVzdW1lRGF0YTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNmM4OTQyMGU2ZTI3YjE0M2RiMDI1NDA1Y2IzM2I3YTlkN2M0YWY5
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWRJbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkLmgiCisjaW1wb3J0ICJXS09i
amVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBl
clRyYWl0czxEb3dubG9hZFByb3h5PiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gV0tEb3du
bG9hZDsKK307CisKK30KKworQGludGVyZmFjZSBXS0Rvd25sb2FkICgpIDxXS09iamVjdD4gewor
QHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBf
ZG93bmxvYWQ7CisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gPiBfZGVs
ZWdhdGU7Cit9CitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbi5tbQppbmRleCA3NzA3NWJkNjY0YmIxYjkxNTdkODAzYTRmYmFlYjEzOGI3
M2JmMzQzLi5jZjM1N2RmMGFhMjczMDVkMzA2ZTQ3ZDk2ZDQ4YjZhZDM0ZmM2MTUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KQEAg
LTQ1LDYgKzQ1LDExIEBACiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uLT5vcmlnaW5hbFJlcXVlc3Qo
KS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRl
SFRUUEJvZHkpOwogfQogCistIChCT09MKV93YXNVc2VySW5pdGlhdGVkCit7CisgICAgcmV0dXJu
IF9uYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogCiAtIChXS0NvbnRlbnRNb2RlKWVmZmVjdGl2ZUNvbnRlbnRNb2RlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
LmgKaW5kZXggOTM0MDcwZTNkZTQ0OTgyZjU3MmJkNWExODhkMTBjYjQ5Y2Y3MjExZi4uOTJlZjBm
ZjRlODE2OGY4NTcyZDczODg4Y2I2YTA5Nzg0N2IyMmRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaApAQCAtNzYs
NiArNzYsMTAgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCiAg
Ki8KIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0OwogCisvKiEgQGFic3RyYWN0IFRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgb2YgdGhlIGVs
ZW1lbnQgdGhhdCBjYXVzZWQgdGhpcyBuYXZpZ2F0aW9uLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSwgbnVsbGFibGUsIGNvcHkpIE5TU3RyaW5nICpkb3dubG9hZEF0dHJpYnV0
ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIAogLyohIEBhYnN0cmFjdCBUaGUgbW9kaWZpZXIga2V5
cyB0aGF0IHdlcmUgaW4gZWZmZWN0IHdoZW4gdGhlIG5hdmlnYXRpb24gd2FzIHJlcXVlc3RlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uLm1tCmluZGV4IDRkMjBjODBjZWMyNmE3YzI4NjkyYWE4NmQzNGI0MGE2Yjc1MGYw
YmUuLmJiZWU4ZmU2YmZlZWE5MDg3Mzc2MWViOWVlZGM2MTlhMzY2ZWUzODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlv
bi5tbQpAQCAtMTE2LDYgKzExNiwxNCBAQCBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUgdG9X
S1N5bnRoZXRpY0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZQogICAgIHJl
dHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpI
VFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwogfQogCistIChOU1N0cmluZyAq
KWRvd25sb2FkQXR0cmlidXRlCit7CisgICAgYXV0byYgYXR0cmlidXRlID0gX25hdmlnYXRpb25B
Y3Rpb24tPmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gYXR0cmlidXRlOworfQorCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIC0gKFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlj
a1R5cGUKIHsKQEAgLTE4Nyw3ICsxOTUsNyBAQCBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUg
dG9XS1N5bnRoZXRpY0NsaWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZQogCiAt
IChCT09MKV9zaG91bGRQZXJmb3JtRG93bmxvYWQKIHsKLSAgICByZXR1cm4gX25hdmlnYXRpb25B
Y3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpOworICAgIHJldHVybiAhX25hdmlnYXRpb25B
Y3Rpb24tPmRvd25sb2FkQXR0cmlidXRlKCkuaXNOdWxsKCk7CiB9CiAKIC0gKEJPT0wpX3Nob3Vs
ZE9wZW5FeHRlcm5hbFVSTHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCmluZGV4IDg1ZmQ5NmU0
ZGQwZmVmZTZiY2Y3ZmVlOWQ3OGM1ZTk5MmY1YmMzNzIuLjUzY2M1YTk3YzdlYTkyNTRhMzI1MDRh
NGRlNjRmNmMzZmYzZTVhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaApAQCAtNDUsNyAr
NDUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS1N5bnRoZXRpY0NsaWNrVHlwZSkg
ewogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9jYW5IYW5kbGVSZXF1ZXN0
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVuRXh0ZXJu
YWxTY2hlbWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5BcHBMaW5rcyBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwotQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJkb3dubG9hZEF0dHJpYnV0ZSIsIG1hY29zKDEwLjE1LCBXS19NQUNfVEJBKSwg
aW9zKDEzLjAsIFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBCT09MIF9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzIFdLX0FQSV9ERVBSRUNBVEVEKCJ1c2UgX3No
b3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMgYW5kIF9zaG91bGRPcGVuQXBwTGlua3MiLCBtYWNvcygx
MC4xMSwgMTAuMTEpLCBpb3MoOS4wLCA5LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAppbmRleCBjZjIx
MGFlOTFiNjI5ZjJmYWNlNzdlMWJlMzUxMGViODg0YTA1ODc4Li4xNjhiNzllY2UwNjhmOGJjY2Zh
NmNhYjBjMDFmZTgxZTNlNmIyNTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaApAQCAtMjksNiArMjksNyBA
QAogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFz
cyBXS05hdmlnYXRpb247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwogQGNsYXNzIFdLTmF2
aWdhdGlvblJlc3BvbnNlOwpAQCAtNDAsMjAgKzQxLDI0IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFu
ZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwg
ICBDYW5jZWwgdGhlIG5hdmlnYXRpb24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBjb25zdGFu
dCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCAgICBUdXJuIHRoZSBuYXZp
Z2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSB7CiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93LAorICAgIFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAu
MTApLCBpb3MoOC4wKSk7CiAKIC8qISBAZW51bSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeQog
IEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0aGUgZGVjaXNpb24gaGFuZGxl
ciBmcm9tIHRoZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lDYW5jZWwgICBDYW5jZWwgdGhlIG5hdmlnYXRpb24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gY29udGludWUu
CisgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgICAg
VHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQuCiAgKi8KIHR5cGVkZWYgTlNfRU5V
TShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSB7CiAgICAgV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvdywKKyAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qISBBIGNsYXNzIGNvbmZv
cm1pbmcgdG8gdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHByb3RvY29sIGNhbiBwcm92aWRlCkBA
IC0xNjQsNiArMTY5LDIyIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5KSB7CiAgKi8KIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0RlcHJlY2F0ZWRUTFM6KHZvaWQgKF4pKEJPT0wpKWRl
Y2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2
aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25BY3Rpb24g
VGhlIGFjdGlvbiB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxvYWQuCisgQHBhcmFt
IGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyovCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlv
bkFjdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qCisgQGFi
c3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhl
IGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uUmVzcG9uc2UgVGhlIHJlc3BvbnNlIHRoYXQg
aXMgYmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRv
d25sb2FkLgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRp
ZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVf
Tk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmMDljMmE4ZTZh
NWI3ODU1YmZmOWVhNWZjMzIxMzJhMTUzZWIxNWI1Li45OTEzZDE2YzBhOTc2MDQ5OTQ2NGNjNDNl
YmEzZTRmMTllN2QwZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC01OCwx
MSArNTgsMTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeSkgewogICAgIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUsCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCi1zdGF0aWMgY29u
c3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3du
bG9hZCA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUFsbG93ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgKyAxKTsKK3N0YXRpYyBjb25zdCBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2Fk
IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUJlY29tZURvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBX
S19JT1NfVEJBKSkgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAyKTsKIHN0YXRpYyBjb25z
dCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40
KSwgaW9zKDEyLjIpKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dJbk5ld1Byb2Nlc3Mg
PSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dXaXRob3V0VHJ5aW5nQXBwTGluayArIDEpOwogCi1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
PSAoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkgPSAoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cg
KyAxKTsKIAogQHByb3RvY29sIFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGU+CiAKQEAgLTg4LDYgKzg4LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2EK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxs
b3dMZWdhY3lUTFM6KHZvaWQgKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZE5lZ290aWF0ZU1vZGVyblRMUzooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiAtICh2b2lkKV93ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTooV0tXZWJW
aWV3ICopd2ViVmlldzsKIC8vIEl0ZW0gaXMgbmlsIGlmIHRoZSBnZXN0dXJlIGVuZGVkIHdpdGhv
dXQgbmF2aWdhdGlvbi4KIC0gKHZvaWQpX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZToo
V0tXZWJWaWV3ICopd2ViVmlldyB3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbToo
V0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCmluZGV4IDkxNTg5ZDEy
YTQyMzdjZDczYmI3M2VkNWM5N2I2MWMxN2ExZjEzOWMuLmE3YTdkOTI5ZGZmODcwNDNlN2YzYTYw
M2Y2OGRlNDA3ZDBkMzBhY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaApAQCAtMjcsNCArMjcsNSBAQAogCiBA
aW50ZXJmYWNlIFdLTmF2aWdhdGlvbiAoV0tQcml2YXRlKQogQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKl9yZXF1ZXN0OworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF93YXNVc2VySW5pdGlhdGVkIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDRmMzZl
MjMyNjQzNzEwMjNkMzhmMjgzODEwNzUxYmNiYTk5ODU5ZGMuLmZhZTMxZjMxYjc5OTEyMWQwZTE3
MzdjZDA3MjEwODU0OTgwMjIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2ltcG9y
dCAiQXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgorI2ltcG9ydCAi
RG93bmxvYWRNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2lt
cG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBv
cnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisj
aW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50
ZXJuYWwuaCIKQEAgLTQ4MSwxMiArNDgzLDEyIEBAIHN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFy
ZWRQcm9jZXNzUG9vbDsKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsK
LSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93
ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKKyAgICByZXR1cm4g
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5k
b3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBy
ZXF1ZXN0KSldOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+
cmVzdW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9w
YWdlXSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwg
cGF0aCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmco
cmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQ6Ok5v
KSldOwogfQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JU
ZXN0aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0
cmluZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3YzRmZTRj
ZDhmYjlhZmZhOGNhMDMxOWI5NDg5M2MxZjRlNjg5NjZjLi5mMjQ5ODBjOWNmZjY3ZWNkM2JlZGU3
M2ZlMjQwMDgxOGFhNTBjMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNjIsNyArNjIsNyBAQAog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVn
aW5Mb2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMykpOwogI2Vu
ZGlmCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVs
ZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQg
PF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlIFdLX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxvYWREZWxlZ2F0ZSIsIG1hY29zKDEw
LjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXV0b21hdGlvbkRlbGVnYXRlOikgaWQgPF9XS0F1dG9t
YXRpb25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEyKSwgaW9zKDEwLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKQEAgLTgzLDggKzgz
LDkgQEAKIAogLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0OihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwg
aW9zKDEyLjApKTsKIAotLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKF9XS0Rv
d25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vi
c2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0
cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKF9X
S0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3
ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRp
bmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQ
TEFDRU1FTlQoIldLV2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0IiwgbWFjb3MoMTAuMTAsIFdLX01B
Q19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVE
b3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdL
V2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdp
bmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcuX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6Y29tcGxldGlv
bkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJB
KSk7CiAKIC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBj
b250ZW50IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VX
b3JrZXJzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDc2MWExZGEw
ZjY1YjM2OTk3YmFiNDllNjZjMmMyOGU5ZmYwYjBjOGMuLjZjYzhhNzQ4MTA4NjU2MzU4YzJkZTg4
MmQ2NzRmMWYzOTMzOTExMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW07
CiBAY2xhc3MgV0tDb250ZW50V29ybGQ7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0Zp
bmRDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLRmluZFJlc3VsdDsKIEBjbGFzcyBXS0ZyYW1lSW5m
bzsKQEAgLTQ1MCw2ICs0NTEsMTggQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5
cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICAqLwogKyAo
Qk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAorLyogQGFic3RyYWN0IEJlZ2lucyBhIGRv
d25sb2FkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHdlYnBhZ2Ug
YXMgaWYgdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHR1cm5lZCBhIG5hdmlnYXRpb24gaW50byBh
IGRvd25sb2FkIGluc3RlYWQKKyBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCBzcGVjaWZ5aW5n
IHRoZSBVUkwgdG8gZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sg
Y2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBzdGFydGVkLgorICovCistICh2b2lkKXN0YXJ0
RG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFj
dCBSZXN1bWVzIGEgZG93bmxvYWQgdGhhdCBmYWlsZWQgb3Igd2FzIGNhbmNlbGxlZC4KKyBAcGFy
YW0gcmVzdW1lRGF0YSBEYXRhIGZyb20gYSBXS0Rvd25sb2FkRGVsZWdhdGUncyBkaWRGYWlsV2l0
aEVycm9yIG9yIGEgV0tEb3dubG9hZCdzIGNhbmNlbCBjb21wbGV0aW9uSGFuZGxlci4KKyBAcGFy
YW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFz
IHJlc3VtZWQuCisgKi8KKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CisKIC8qIEBhYnN0cmFjdCBUaGUgbWVkaWEgdHlwZSBmb3IgdGhlIFdLV2ViVmll
dwogIEBkaXNjdXNzaW9uIFRoZSB2YWx1ZSBvZiBtZWRpYVR5cGUgd2lsbCBvdmVycmlkZSB0aGUg
bm9ybWFsIHZhbHVlIG9mIHRoZSBDU1MgbWVkaWEgcHJvcGVydHkuCiAgU2V0dGluZyB0aGUgdmFs
dWUgdG8gbmlsIHdpbGwgcmVzdG9yZSB0aGUgbm9ybWFsIHZhbHVlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMmRkN2VhNWVhOWMxMTM5
N2I3Mjc0ODE4Mjc2YTc0OGUzMGQ5YzY3NC4uMWI0NDQ0YTU2MjI3YTgyMzdmNGFhZDkwMjJmNTNj
MmEyYWEyM2NmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCkBAIC01OCw5ICs1OCwxMSBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJ
dGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxv
YWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tFcnJvckludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Zp
bmRDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tGcmFtZUluZm9Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVBy
aXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tNZWRpYVBsYXli
YWNrU3RhdGUuaCIKQEAgLTcwOCw2ICs3MTAsNDIgQEAgc3RhdGljIHZvaWQgaGFyZHdhcmVLZXli
b2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5vdGlmaWNhdGlvbkNlbnRlclJlZiwK
ICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEoeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0sIE1JTUVUeXBlLCBjaGFyYWN0ZXJF
bmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcpKTsKIH0KIAorLSAodm9pZClzdGFy
dERvd25sb2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9w
YWdlLT5kb3dubG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlm
IChkb3dubG9hZCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxv
YWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfSk7Cit9CisKKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRXaXRoRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmls
XSk7CisgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdG
YWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVj
dHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNz
XSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VS
TFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtl
eSJdOworICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBOU1N0cmluZyAqcGF0
aCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2Nh
bFBhdGgiXTsKKworICAgIGlmICghcGF0aCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgcmVzdW1lIGRhdGEiXTsK
KworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAvLyBNb2phdmUgQ0ZO
ZXR3b3JrIGZhaWxzIHRvIHJlc3VtZSBhIGRvd25sb2FkIGlmIHRoZSBkZXN0aW5hdGlvbiBkb2Vz
IG5vdCBleGlzdC4KKyAgICAvLyBJZiBzb21lb25lIGhhcyByZW1vdmVkIHRoZSBkZXN0aW5hdGlv
biBmaWxlLCBtYWtlIGFuIGVtcHR5IGZpbGUgYXQgdGhhdCBsb2NhdGlvbi4KKyAgICBpZiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpwYXRoXSkKKyAg
ICAgICAgW1tOU0RhdGEgZGF0YV0gd3JpdGVUb0ZpbGU6cGF0aCBhdG9taWNhbGx5OllFU107Cisj
ZW5kaWYKKworICAgIF9wYWdlLT5yZXN1bWVEb3dubG9hZChBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLCBwYXRoLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYg
KGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9h
ZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9KTsKK30KKwogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA4NTRiMjMzMTAx
MzJlN2RhZGVlNjQ5M2VmNzYzYTE2MTgwNzVkMGRjLi41MGE2MmI1NzMyNDA5ZWVkYWVkNzgwYWJl
ZjdhMzg3OWY3NDhiOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEwOSw2ICsxMDksNyBAQCB0eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKICNlbmRpZgogCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0ZyYW1l
SW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaAppbmRleCBiNGQ4MjZiOWE3MjQ3OGZkMGMwM2U2YjRiMDE4OWYwNzI5OWNlYzczLi5l
YTgyMDMyYTFjZGFjYTZiNDZlOWJjMWZjYTA1ZDhkZTkwMDQ1ZjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAtMjgsMTIgKzI4LDE0
IEBACiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgV0tE
b3dubG9hZDsKIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCitX
S19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQiLCBtYWNvcygx
MC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tE
b3dubG9hZCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CiAKLS0gKHZvaWQpY2FuY2VsOworKyAoaW5z
dGFuY2V0eXBlKWRvd25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAo
dm9pZCljYW5jZWw7CiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkZmVmZTBm
MTY2YTU0OWRkZTY1YmUxMDIyZWI1YzFmZmRlY2MyZGJjLi5kNWUxMWFkNjk0NTRlZDhkZWFiMzU1
NmIwOTI3ZjUwZDhiMzJlMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC0yOCw2NiArMjgsODcgQEAKIAogI2ltcG9ydCAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkIHsKLSAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBfZG93bmxvYWQ7CitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorc3RhdGljIE5TTWFwVGFibGU8V0tE
b3dubG9hZCAqLCBfV0tEb3dubG9hZCAqPiAqZG93bmxvYWRXcmFwcGVyTWFwKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTWFwVGFibGU+PiB0YWJsZTsKKyAgICBp
ZiAoIXRhYmxlLmdldCgpKQorICAgICAgICB0YWJsZS5nZXQoKSA9IFtOU01hcFRhYmxlIHdlYWtU
b1dlYWtPYmplY3RzTWFwVGFibGVdOworICAgIHJldHVybiB0YWJsZS5nZXQoKS5nZXQoKTsKIH0K
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKK0BpbXBsZW1lbnRhdGlvbiBfV0tEb3du
bG9hZAorSUdOT1JFX1dBUk5JTkdTX0VORAogCi0tICh2b2lkKWRlYWxsb2MKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERvd25sb2FkMjooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgX2Rv
d25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOworICAgIHJl
dHVybiBzZWxmOworfQogCi0gICAgW3N1cGVyIGRlYWxsb2NdOworKyAoaW5zdGFuY2V0eXBlKWRv
d25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX1dL
RG93bmxvYWQgKndyYXBwZXIgPSBbZG93bmxvYWRXcmFwcGVyTWFwKCkgb2JqZWN0Rm9yS2V5OmRv
d25sb2FkXSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgX1dLRG93bmxvYWQgKndyYXBw
ZXIgPSBbW1tfV0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDI6ZG93bmxvYWRdIGF1
dG9yZWxlYXNlXTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkgc2V0T2JqZWN0OndyYXBwZXIg
Zm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogLSAodm9pZCljYW5j
ZWwKIHsKLSAgICBfZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxv
YWQpXSAoYXV0byopIHsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9h
ZCA9IG1ha2VSZWYoKl9kb3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1dG8qKSB7CiAgICAgICAgIGRv
d25sb2FkLT5jbGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwogICAgIH0p
OwogfQogCiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTAogewotICAg
IF9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CisgICAgX2Rvd25sb2FkLT5fZG93bmxv
YWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
CiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3Jl
OjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJu
IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoV0tXZWJW
aWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFn
ZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCisgICAgaWYgKGF1dG8qIG9yaWdpbmF0
aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKICAgICAg
ICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKily
ZWRpcmVjdENoYWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5yZWRp
cmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICogeworICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRv
JiB1cmwpIC0+IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAogewotICAgIHJldHVybiBfZG93
bmxvYWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxv
YWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRhICopcmVzdW1lRGF0YQogewot
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5fZG93bmxvYWQtPmxlZ2Fj
eVJlc3VtZURhdGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICopb3JpZ2luYXRpbmdGcmFtZQog
ewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+X2Rvd25sb2FkLT5mcmFtZUlu
Zm8oKSk7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtOTksNyAr
MTIwLDcgQEAKIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKl9k
b3dubG9hZDsKKyAgICByZXR1cm4gKl9kb3dubG9hZC0+X2Rvd25sb2FkOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
RGVsZWdhdGUuaAppbmRleCBhODNmOTAyOWI1YzczZWM1ZjlkYjc0ZjE0MDdjMjg2NGUyNTExMzU4
Li42NWVhY2NhY2I1ZjcwZTE0YWUzYjk3Mzg3ZjQ2OGE4M2E3YmI3YzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRl
LmgKQEAgLTMxLDYgKzMxLDggQEAKIAogQHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGUgPE5T
T2JqZWN0PgogQG9wdGlvbmFsCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAt
ICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkOwogLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlv
cygxMS4zKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKQEAgLTQ2LDQgKzQ4LDUg
QEAKIC0gKEJPT0wpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIHNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKE5TU3RyaW5nICopX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dP
dmVyd3JpdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX2Rvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOiIs
IG1hY29zKDEwLjEwLCAxMC4xMy40KSwgaW9zKDguMCwgMTEuMykpOworI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKaW5kZXggZTEyOTBiM2U1NTNhZWNlZDIy
ZDRmYzZkOTA4NjM0MzcwOTJkNDAxMi4uY2E5NGMyMTczNzU3YTU0YTBjNzU1Y2JmMzBmOGUwNWEw
Yjc1YzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yNSwxNiArMjUsMTIgQEAKIAogI2ltcG9ydCAi
X1dLRG93bmxvYWQuaCIKIAotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiV0tP
YmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4gewotICAg
IHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rvd25sb2FkOwotfTsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAg
ICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gX2Rvd25sb2FkOwogfQotCi1AaW50ZXJmYWNlIF9XS0Rv
d25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlMmZhNWM1
YzVkOWM5ZTVkOTY1NTZlNGExZmM4Y2RhZmU5MjExM2ZlLi5lYWRjZDQzZGIzZDliYjU5NmVkZTk4
MDNhMzg2YzI3MDFiMTQ2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZFN0YXJ0ZWQo
ZG93bmxvYWQuZ2V0KCkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdl
YmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2FkLmdldCgpLCBwYXRoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50LmgKaW5kZXggNzVkNTEyMjFkMmMzNTE4MmY4OTRkYTk4NjEzZDFjYzQwZDBm
MDE1ZS4uYjdmNjQ5MzEwYTQ4ODRmOTJmNTE2NWQwY2JmNzU2NTM4ZTE0MDZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5o
CkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAvLyBGcm9t
IEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94
eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpEYXRhKikgZmluYWw7CiAgICAgdm9pZCBsZWdhY3lEaWRDYW5jZWwo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb3dubG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxv
YWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5tbQppbmRleCAzZDMxYmRiZjQzYTM2ZWViY2QyMzY5ODVmYTY4YjQ5ZDE2MWU0ZGI0
Li42MDc1NjJhZWU4OGU3NjY5ZjhkOTE4NmZkZDgyNGI2MzU5NTVjNmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpA
QCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDcmVkZW50aWFs
LmgiCkBAIC00Nyw2ICs0OCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorCiBMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5
RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIDog
bV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RhdGljIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKiBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihEb3dubG9hZFByb3h5JiBk
b3dubG9hZFAKIH0KICNlbmRpZgogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6bGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgewpAQCAtOTAsNyArOTMsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwNCw3ICsxMDcs
NyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29ucwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRp
ZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCiB2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQpAQCAtMTE4LDkgKzEyMSw5IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGVdOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRv
d25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFdyaXRlRGF0YTpi
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKICAgICBlbHNlIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpi
eXRlc1dyaXR0ZW5dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVE
YXRhOmJ5dGVzV3JpdHRlbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
QEAgLTEzMSw3ICsxMzQsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CisgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNzAsNyBAQCB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjbwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOworICAgICAg
ICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9u
XTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NE
aWRDcmFzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndy
YXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9j
ZXNzRGlkQ3Jhc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDQsMTEgKzIwNywxMSBAQCB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShE
b3dubG9hZFByb3h5JgogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsKICAgICAgICAg
Qk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5POwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVd
OworICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSld
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3Zl
cndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFs
bG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUu
Z2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmlu
ZyAqZGVzdGluYXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBs
ZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjMzLDEw
ICsyMzYsMTAgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmlu
aXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6RGF0YSopCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OgogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRGYWlsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCld
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTI2MywxMyArMjY2LDEzIEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5j
ZWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJp
bmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZT
dHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0zMDEsNCArMzA0LDYgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShEb3dubG9hZFByb3h5
JiBkb3dubG8KIH0KICNlbmRpZgogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVkOGQ0
OGYxMmJiM2Q0ZDYuLjk2NzgzN2FmZTE0YmQ4MzU0YzU2ZDZiZWZlNWQyOTEzNzZhYjg3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBA
IC0xMjYsNiArMTI2LDEwIEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5n
PiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWdu
ZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKwogI2lmIFVT
RShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgdXRpKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKQEAgLTIzNSw2ICsyMzksOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdX
ZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dl
YlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYkNyeXB0
b01hc3RlcktleUZvcldlYlZpZXcgOiAxOworICAgICAgICBib29sIG5hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgOiAxOworICAgICAgICBib29sIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93
bmxvYWQ7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CmluZGV4IGU3Y2IwODNjNGZmMmIzMzkwOTNkNzE5NDgzYjU5NGM4MDVmZDU0ZWMuLmIzOGZjZmZl
MjJkN2JjYjk5YjhmMGUwZjcwZmU5ZjZkYmYyY2Q1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNp
bXBvcnQgIlNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3
YXJkTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5m
b0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBv
cnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBAIC0xODcsNiArMTg4LDkgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlKQogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOildOwogICAgIG1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2Vi
UHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
Om5hdmlnYXRpb25BY3Rpb246ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uUmVz
cG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOild
OwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0
aW9uR2VzdHVyZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJ
dGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRF
bmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTop
XTsKQEAgLTQ3MiwxMSArNDc2LDEwIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIE5TVVJMUmVxdWVzdCAqbnNVUkxSZXF1ZXN0ID0gd3JhcHBl
cihBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkpKTsK
LSAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxS
ZXF1ZXN0XSB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJlcXVl
c3QgVVJMXS5zY2hlbWUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5hdmlnYXRpb25BY3Rpb24t
PnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpKQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
ZG93bmxvYWQoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CisgICAgICAgICAgICBp
ZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0KKyAgICAg
ICAgICAgICAgICB8fCB3ZWJQYWdlLT51cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFtuc1VSTFJl
cXVlc3QgVVJMXS5zY2hlbWUpCisgICAgICAgICAgICAgICAgfHwgW25zVVJMUmVxdWVzdC5VUkwu
c2NoZW1lIGlzRXF1YWxUb1N0cmluZzpAImJsb2IiXSkgeworICAgICAgICAgICAgICAgIGxpc3Rl
bmVyLT51c2UoZGVmYXVsdFdlYnNpdGVQb2xpY2llcy5nZXQoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC01NTUsOSArNTU4LDEyIEBAIEFMTE9XX0RFUFJF
Q0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3Jl
KCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
RG93bmxvYWQ6CisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRU
cnlpbmdBcHBMaW5rOgogICAgICAgICAgICAgdHJ5U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwgW2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxv
Y2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNpZXMgPSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2ll
cyldIChib29sIG9wdGltaXplZExvYWQpIHsKICAgICAgICAgICAgICAgICBpZiAob3B0aW1pemVk
TG9hZCkgewpAQCAtNjcxLDcgKzY3Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnCiAgICAg
ICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6Cisg
ICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZDoKICAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTA4NSw2ICsxMDkxLDQyIEBAIFJlZlB0cjxBUEk6OlN0cmluZz4gTmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
CiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmco
KSwgdXJsKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpu
YXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkK
K3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAg
IHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25B
Y3Rpb24pIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwordm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZp
Z2F0aW9uUmVzcG9uc2UsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBbbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5hdmlnYXRpb25SZXNwb25zZSkgZGlk
QmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQ
YWdlUHJveHkmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0
ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIGlm
ICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbc3RhdGljX2Nh
c3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSkgIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwogI2lmIFVTRShRVUlDS19M
T09LKQogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFN0YXJ0TG9h
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IDNmNzdjYzk5ZjZjOGZhOWZjMjkw
ODViYzg1ZTA4YjI3ZWY2MDI1Y2YuLjU5OThjZTUxYTU3Nzk0YTE5ZGNhOWZiYWJlM2U3MjllNGE3
NzA0MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIgogI2ltcG9ydCAiSGlnaFBlcmZvcm1hbmNlR1BVTWFuYWdlci5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiT2JqQ09iamVjdEdyYXBoLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKaW5kZXggMjlj
MTdiZWIzM2VkNjc2YzljNDQ0YTRkNzJhNjAxZjRjZDA3N2YzNi4uZGMxMDFiNjZjYjBjZTNkYWVk
OGNiYjMxMWY3NzIyNDNlYTM4OTExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAtNTksNyArNTksMTEgQEAgRG93bmxv
YWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFw
LCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHko
KSA9IGRlZmF1bHQ7CitEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpCit7CisgICAgaWYg
KG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKG51bGxwdHIp
OworfQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEpCiB7CkBAIC0xMTcsNyArMTIxLDkgQEAgdm9pZCBEb3dubG9hZFBy
b3h5OjpkaWRTdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2UKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlzRW1wdHkoKSB8fCBtX3JlZGlyZWN0
Q2hhaW4ubGFzdCgpICE9IHJlcXVlc3QudXJsKCkpCiAgICAgICAgIG1fcmVkaXJlY3RDaGFpbi5h
cHBlbmQocmVxdWVzdC51cmwoKSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkU3RhcnQoKnRoaXMpOwor
ICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayh0
aGlzKTsKKyAgICBtX2NsaWVudC0+bGVnYWN5RGlkU3RhcnQoKnRoaXMpOwogfQogCiB2b2lkIERv
d25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVu
Z2VJRCkKQEAgLTE0NSw4ICsxNTEsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcmkKICAgICBt
X2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi12b2lkIERvd25sb2FkUHJv
eHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2Fk
UHJveHk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSwgQWxsb3dPdmVyd3JpdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIC8vIEFzIHBl
ciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0
aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKKyAgICAvLyBz
aG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBh
dHRyaWJ1dGUuCisgICAgaWYgKHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpIHx8
IChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkgJiYgbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0Vt
cHR5KCkpKQorICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLnN1Z2dlc3RlZEZp
bGVuYW1lKCk7CisgICAgZWxzZSBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQor
ICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IG1fc3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZO
ZWNlc3Nhcnkoc3VnZ2VzdGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworCiAgICAg
bV9jbGllbnQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCBy
ZXNwb25zZSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUo
c3VnZ2VzdGVkRmlsZW5hbWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGlu
YXRpb24pIG11dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKQEAg
LTE3MywxMSArMTg3LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdh
Y3lSZXN1bWVEYXRhID0gY3JlYXRlRGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5k
aWRGYWlsKCp0aGlzLCBlcnJvcik7CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9y
LCBtX2xlZ2FjeVJlc3VtZURhdGEuZ2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhl
IERvd25sb2FkUHJveHkgb2JqZWN0IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5
TWFwLmRvd25sb2FkRmluaXNoZWQoKnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNl
dENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGll
bnQgPSBXVEZNb3ZlKGNsaWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRl
eCAwNzE4ZTg5M2FiMjU1YmIzYTM1ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi4zMTg5NWY1NjU5OTk3
OWVmMzJjZGMxNmJiODk0MzQ1MGQxNWE5MWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKQEAgLTEwMiwxMiArMTAyLDkgQEAgcHVi
bGljOgogICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFtZUluZm8oKSB7IHJldHVybiBtX2ZyYW1lSW5m
by5nZXQoKTsgfQogCiAgICAgQVBJOjpEb3dubG9hZENsaWVudCYgY2xpZW50KCkgeyByZXR1cm4g
bV9jbGllbnQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5
KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVu
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCBXZWJQYWdlUHJveHkqKTsKLQotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldENsaWVudChSZWY8QVBJOjpEb3dubG9hZENsaWVudD4mJik7Cisg
ICAgdm9pZCBzZXREaWRTdGFydENhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxv
YWRQcm94eSopPiYmIGNhbGxiYWNrKSB7IG1fZGlkU3RhcnRDYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spOyB9CisgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKSB7IG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBzdWdnZXN0ZWRGaWxlbmFt
ZTsgfQogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZFN0YXJ0KGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5h
bWUpOwpAQCAtMTE4LDcgKzExNSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRmluaXNoKCk7
CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0UmVxdWVzdCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7Ci0gICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUp
PiYmKTsKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBEb3dubG9h
ZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3JlJiwgQVBJOjpEb3dubG9h
ZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBvdmVycmlkZTsKIAogICAgIERvd25sb2FkUHJveHlNYXAmIG1fZG93bmxvYWRQcm94eU1hcDsK
ICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CkBAIC0xMzQsNiArMTM3
LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8VVJMPiBtX3JlZGlyZWN0Q2hhaW47CiAgICAgYm9v
bCBtX3dhc1VzZXJJbml0aWF0ZWQgeyB0cnVlIH07CiAgICAgUmVmPEFQSTo6RnJhbWVJbmZvPiBt
X2ZyYW1lSW5mbzsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4g
bV9kaWRTdGFydENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCAzNDg3ZDRlMzQ0ZTE4YTIwMjNkMjliZWM0NjBjYWNhZTA1NTI1N2VkLi4wNDZh
NmI1MDJmMGY2YTQ3Nzg5ZGQ5MTRhZjE0ZmY2MWVlMTZjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEb3dubG9hZFByb3h5TWFwLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2Vz
LmgiCisjaW5jbHVkZSAiRnJhbWVJbmZvRGF0YS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAz
ODJkMWZlMThjMDRjMTA4YjEzOTVjN2ZjY2I2MDg3YzAwZTlhOWRlLi44YTI1NjQ1MzEyYzZmYjBk
OTkzNmZhNDMwMmNiYmQyODQwNmM2M2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbk1h
bmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFuYWdlci5oIgogI2luY2x1ZGUgIkRh
dGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhUHJveHkuaCIKQEAgLTMxMzAsNyArMzEzMSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbGVhclNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyKQordm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAicmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246IGZy
YW1lSUQ6ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSIsIGZyYW1l
LmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uKTsKIApAQCAtMzE3MCw3ICszMTcxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5
QWN0aW9uOjpEb3dubG9hZDsKIAogICAgIGlmIChwb2xpY3lBY3Rpb24gIT0gUG9saWN5QWN0aW9u
OjpVc2UgfHwgIWZyYW1lLmlzTWFpbkZyYW1lKCkgfHwgIW5hdmlnYXRpb24pIHsKLSAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUo
cG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTMxODMsMTEgKzMxODQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JO
YXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNv
dXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0
YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0
aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBz
b3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKKyAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9j
ZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJl
ZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUod2Vi
c2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBuYXZpZ2F0aW9u
QWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJj
ZVByb2Nlc3MuY29weVJlZigpLAogICAgICAgICBwb2xpY2llcyA9IFdURk1vdmUocG9saWNpZXMp
LCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnRd
IChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3NGb3JOYXZpZ2F0aW9uLCBTdXNwZW5kZWRQ
YWdlUHJveHkqIGRlc3RpbmF0aW9uU3VzcGVuZGVkUGFnZSwgY29uc3QgU3RyaW5nJiByZWFzb24p
IG11dGFibGUgewogICAgICAgICAvLyBJZiB0aGUgbmF2aWdhdGlvbiBoYXMgYmVlbiBkZXN0cm95
ZWQsIHRoZW4gbm8gbmVlZCB0byBwcm9jZWVkLgogICAgICAgICBpZiAoaXNDbG9zZWQoKSB8fCAh
bmF2aWdhdGlvblN0YXRlKCkuaGFzTmF2aWdhdGlvbihuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSkpIHsKLSAgICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uLnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAg
ICAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
LnB0cigpLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0zMjIz
LDExICszMjI0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBudWxscHRyIDogV1RGTW92ZShw
b2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3Vs
ZFByb2Nlc3NTd2FwID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBu
dWxscHRyIDogV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdU
Rk1vdmUoc2VuZGVyKSwgV1RGTW92ZShvcHRpb25hbEhhbmRsZSksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6WWVzIDogV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2Vzczo6Tm8pOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5h
dmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZElu
TmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZp
Z2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0
ZVBvbGljaWVzLCBWYXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6
Ok5hdmlnYXRpb25BY3Rpb24+PiYmIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLCBSZWY8UG9s
aWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpIHsKICAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVy
LT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH0pOwpAQCAtMzI0Myw2
ICszMjQ0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBv
bGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICBpZiAoYWN0aW9uID09IFBv
bGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxvYWQgcHJv
eHkuCiAgICAgICAgIGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNy
ZWF0ZURvd25sb2FkUHJveHkobV93ZWJzaXRlRGF0YVN0b3JlLCBtX2RlY2lkZVBvbGljeUZvclJl
c3BvbnNlUmVxdWVzdCwgdGhpcywgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm9yaWdpbmF0aW5n
RnJhbWVJbmZvKCkgOiBGcmFtZUluZm9EYXRhIHsgfSk7CisgICAgICAgIGRvd25sb2FkLnNldERp
ZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBuYXZp
Z2F0aW9uQWN0aW9uT3JSZXNwb25zZSA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9u
c2UpXSAoYXV0byogZG93bmxvYWRQcm94eSkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8
fCAhZG93bmxvYWRQcm94eSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBX
VEY6OnN3aXRjaE9uKG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlLAorICAgICAgICAgICAgICAg
IFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiYgcmVzcG9uc2UpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051
bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkUHJveHktPnNldFN1Z2dlc3Rl
ZEZpbGVuYW1lKHJlc3BvbnNlLT5kb3dubG9hZEF0dHJpYnV0ZSgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCgqdGhpcywgcmVzcG9uc2UuZ2V0KCksICpkb3dubG9hZFByb3h5KTsKKyAgICAgICAgICAg
ICAgICB9LCBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiBhY3Rpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5uYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIGFjdGlvbi5nZXQoKSwgKmRvd25sb2FkUHJveHkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0pOwogICAgICAgICBp
ZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAgZG93bmxvYWQuc2V0V2FzVXNlckluaXRpYXRl
ZChuYXZpZ2F0aW9uLT53YXNVc2VySW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQu
c2V0UmVkaXJlY3RDaGFpbihuYXZpZ2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTUw
OTUsMTAgKzUxMDksMjkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBuYXZpZ2F0aW9u
LT5zZXRPcmlnaW5hdGluZ0ZyYW1lSW5mbyhvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpOwogICAg
IG5hdmlnYXRpb24tPnNldERlc3RpbmF0aW9uRnJhbWVTZWN1cml0eU9yaWdpbihmcmFtZUluZm8u
c2VjdXJpdHlPcmlnaW4pOwogCisgICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0
aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwor
ICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuZnJhbWVJRCkgOiBudWxscHRyOworICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7CisgICAgUmVm
UHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CisgICAgaWYgKCFmcm9tQVBJICYm
IG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQorICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBk
ZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CisgICAgZWxzZSBpZiAoIWZyb21BUEkpIHsK
KyAgICAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9j
ZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOworICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlKTsKKyAgICB9CisKKyAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24KKyAgICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZy
YW1lKCkKKyAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0
KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCisgICAgICAgICYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2Fy
ZDsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRp
YXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246
OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdl
dCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCksIG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtz
LCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwor
CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS5kaWRIYW5kbGVD
b250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2Fk
IHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IHdhcyBoYW5kbGVkIGJ5IGNvbnRlbnQgZmls
dGVyIik7Ci0gICAgICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
bjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBu
dWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRp
b24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTExMCwxMSArNTE0MywxMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKICAg
ICBzaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdCA9IFNob3VsZEV4cGVjdEFwcEJvdW5k
RG9tYWluUmVzdWx0OjpZZXM7CiAjZW5kaWYKLSAgICAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92
ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0
aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFi
bGUgeworCisgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0g
bWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2
aWdhdGlvbkFjdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0
cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjogbGlzdGVuZXIgY2FsbGVkOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0aW9u
SUQ6ICVsbHUsIHBvbGljeUFjdGlvbjogJXUsIHNhZmVCcm93c2luZ1dhcm5pbmc6ICVkLCBpc0Fw
cEJvdW5kRG9tYWluOiAlZCIsIGZyYW1lLT5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlv
biA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlv
biwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91bmREb21haW4pOwogCi0gICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNl
bmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5h
dmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNp
ZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXBvbGljaWVz
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkZWZhdWx0UG9saWNpZXMgPSBtX2Nv
bmZpZ3VyYXRpb24tPmRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSkKQEAgLTUxMjMsNyArNTE1Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgICAgICAgICAgaWYgKHBvbGljaWVz
KQogICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRFZmZlY3RpdmVDb250ZW50TW9k
ZShlZmZlY3RpdmVDb250ZW50TW9kZUFmdGVyQWRqdXN0aW5nUG9saWNpZXMoKnBvbGljaWVzLCBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24uZ2V0KCksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBv
bGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIFdU
Rk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICB9OwogCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQpAQCAtNTE5MCwxMCArNTIyMyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzCiAgICAgYXV0byBwcm90b2NvbCA9IHNob3VsZFNlbmRTZWN1cml0eU9yaWdp
bkRhdGEgPyBmcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2wgOiByZXF1ZXN0LnVybCgp
LnByb3RvY29sKCk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlLT5iZWdpbkFwcEJvdW5kRG9tYWlu
Q2hlY2soaG9zdC50b1N0cmluZygpLCBwcm90b2NvbC50b1N0cmluZygpLCBsaXN0ZW5lcik7CiAj
ZW5kaWYKLSAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5p
c01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7Ci0gICAgV2ViRnJhbWVQ
cm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlE
ID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6
IG51bGxwdHI7CiAKLSAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBh
dXRvIHdhc1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyID0gbmF2aWdhdGlvbi0+aXNMb2FkZWRX
aXRoTmF2aWdhdGlvblNoYXJlZCgpIHx8IHVzZXJJbml0aWF0ZWRBY3Rpdml0eTsKICAgICBpZiAo
IXNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCkBAIC01MjAxLDI0ICs1MjMxLDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXMKICNlbmRpZgogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQotICAg
ICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhp
cywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFt
ZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwg
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbigqdGhpcywgJmZyYW1lLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBvcmlnaW5hdGlu
Z0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVu
ZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gZGVzdGluYXRpb25GcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7Ci0gICAg
ICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAo
IWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCi0gICAgICAgICAgICBzb3Vy
Y2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7Ci0gICAgICAgIGVs
c2UgaWYgKCFmcm9tQVBJKSB7Ci0gICAgICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBv
cmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6
IG51bGxwdHI7Ci0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKFdURk1vdmUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hv
dWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgotICAgICAg
ICAgICAgJiYgZGVzdGluYXRpb25GcmFtZUluZm8tPmlzTWFpbkZyYW1lKCkKLSAgICAgICAgICAg
ICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3Qu
dXJsKCkuaG9zdCgpKQotICAgICAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdh
dGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOwotCi0gICAg
ICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRl
KFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRl
c3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUocmVxdWVzdCks
IG9yaWdpbmFsUmVxdWVzdC51cmwoKSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJ
bml0aWF0ZWRBY3Rpdml0eSksIG1haW5GcmFtZU5hdmlnYXRpb24pOwotCiAjaWYgSEFWRShBUFBf
U1NPKQogICAgICAgICBpZiAobV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbiB8fCBtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9u
SW5BbGxOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uQWN0
aW9uLT51bnNldFNob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24oKTsKQEAgLTUzMjAsNyArNTMz
NCwxNSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBmcmFtZSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwobV9wcm9jZXNzLCByZXF1ZXN0LnVy
bCgpKTsKIAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRp
ZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRF0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQ
STo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgUmVmUHRyPEFQSTo6RnJh
bWVJbmZvPiBzb3VyY2VGcmFtZUluZm87CisgICAgaWYgKGZyYW1lKQorICAgICAgICBzb3VyY2VG
cmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhp
cyk7CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlcklu
aXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVu
dGlmaWVyKTsKKyAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1lICYmIG1f
bWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7CisgICAgYXV0
byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwg
ZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3Ms
IFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7CisgICAgCisgICAgYXV0byBsaXN0ZW5l
ciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlE
LCBuYXZpZ2F0aW9uQWN0aW9uXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0
aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2Yg
V0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2lu
Z1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzMjksMjQgKzUzNTEsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lE
ZWNpc2lvbikpOwogICAgICAgICB9KTsKIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAg
ICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIs
IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hv
dWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21h
aW5SZXN1bHQ6Ok5vKSk7CiAKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1fcG9s
aWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFtZSwg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5l
ciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNv
dXJjZUZyYW1lSW5mbzsKLSAgICAgICAgaWYgKGZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJh
bWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMp
OwotCi0gICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOwotICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9IG1fbWFpbkZyYW1l
ICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCk7Ci0g
ICAgICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3Jl
YXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCks
IG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3Bl
bkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwotCisgICAgICAgIG1f
cG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oKnRoaXMsICpmcmFt
ZSwgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxp
c3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIG5hdmlnYXRpb25BY3Rpb24uZ2V0
KCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLQotICAgIH0KLSAgICAgICAgCiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZUlkZW50aWZpZXIg
ZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgUG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsCkBAIC01MzY3LDggKzUzNzgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywKICAgICBNRVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXF1ZXN0LnVybCgpKTsKICAgICBN
RVNTQUdFX0NIRUNLX1VSTChwcm9jZXNzLCByZXNwb25zZS51cmwoKSk7CiAgICAgUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25JRCA/IG1fbmF2aWdhdGlvblN0
YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkgOiBudWxscHRyOworICAgIGF1dG8gbmF2aWdh
dGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3QsIHJl
c3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKwogICAgIGF1dG8g
bGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgd2ViUGFnZUlELCBmcmFtZUlELCBpZGVu
dGlmaWVyLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uKSwKLSAg
ICAgICAgcHJvY2Vzc10gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBv
bGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJu
aW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisgICAgICAgIHByb2Nlc3MsIG5hdmlnYXRpb25SZXNw
b25zZV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRp
b25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2Fm
ZUJyb3dzaW5nV2FybmluZyk7CkBAIC01Mzc3LDE0ICs1MzkwLDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNp
b24pLCB3ZWJQYWdlSUQpOwogICAgICAgICB9KTsKICAgICAgICAgCi0gICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBX
VEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9u
c2UpLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jl
c3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogICAgIGlm
IChtX3BvbGljeUNsaWVudCkKICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKCp0aGlzLCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5
cGUsIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGF1dG8gbmF2
aWdhdGlvblJlc3BvbnNlID0gQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U6OmNyZWF0ZShBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcykuZ2V0KCksIHJlcXVlc3Qs
IHJlc3BvbnNlLCBjYW5TaG93TUlNRVR5cGUsIGRvd25sb2FkQXR0cmlidXRlKTsKKyAgICBlbHNl
CiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKCp0aGlzLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUobGlzdGVu
ZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKSk7Ci0gICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3koRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC02MDIzLDYgKzYwMzQsMTggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3du
bG9hZCkKICAgICBwYWdlQ2xpZW50KCkuaGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkKTsK
IH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERv
d25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvJiBkb3dubG9h
ZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlc3VtZURvd25sb2FkKHdlYnNpdGVEYXRhU3Rv
cmUoKSwgdGhpcywgcmVzdW1lRGF0YSwgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQ6Olllcyk7
CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMs
IHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VD
b250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRD
aGFuZ2VDb250ZW50U2l6ZShzaXplKTsKQEAgLTY1OTIsMTggKzY2MTUsMjYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwotICAgICAgICByZXR1cm47ICAg
IAotICAgIH0KKyAgICBzdHJ1Y3QgRG93bmxvYWRJbmZvIHsKKyAgICAgICAgU3RyaW5nIHVybDsK
KyAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIH07CisgICAgT3B0aW9uYWw8
RG93bmxvYWRJbmZvPiBkb3dubG9hZEluZm87CisgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykKKyAgICAgICAgZG93bmxvYWRJbmZv
ID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRh
KCkuYWJzb2x1dGVJbWFnZVVSTCwgeyB9IH19OwogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaykgewogICAgICAgICBhdXRvJiBoaXRU
ZXN0UmVzdWx0ID0gbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1
bHREYXRhKCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dl
YnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxp
bmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
ZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFV
UkwpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBoaXRUZXN0
UmVzdWx0LmFic29sdXRlTGlua1VSTCwgaGl0VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5h
bWUgfX07CisgICAgfQorICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkTWVkaWFUb0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7IG1fYWN0aXZl
Q29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVk
aWFVUkwsIHsgfSB9fTsKKyAgICBpZiAoZG93bmxvYWRJbmZvKSB7CisgICAgICAgIGF1dG8mIGRv
d25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFT
dG9yZSwgdGhpcywgVVJMKFVSTCgpLCBkb3dubG9hZEluZm8tPnVybCksIGRvd25sb2FkSW5mby0+
c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNr
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8qIGRvd25sb2FkKSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQoKnRoaXMsICpkb3dubG9hZCk7CisgICAgICAgIH0pOwogICAgIH0KICAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4Nzlm
NzMyYjExY2IxMjM5NzM4NjU4ZThlNThmYjg3YzUwMzRmMmI4Li45MjMyM2U2NzE0NmFkMTljZTBm
NDI2ZWMwZGVmZTNmYTZkOWZiNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTE2NCw4ICsxMTY0LDggQEAgcHVibGljOgogCiAgICAgY2xhc3MgUG9saWN5RGVj
aXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
IDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKLSAgICB2b2lkIHJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIFJlZlB0
cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsK
KyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFZhcmlhbnQ8
UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+
JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVm
PEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
V2ViRnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbShj
b25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKQEAgLTEyNzksNiAr
MTI3OSw4IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQ
STo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25s
b2FkUHJveHkqKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNv
bnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggMzZiMmQ2ZjdhNzVhNTZiODU0YzY5ZTYyMGFiNzk4Zjc2ZTYwYTUxNi4uMGRj
Y2NhNjg0MjkxMzM4ZGM5Y2UyYjRhYjAyNmI1ZTExOWU4MDIzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSwgV2ViUGFnZVByb3gKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAotRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3Rh
cnQpCiB7CiAgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoZGF0
YVN0b3JlLCBSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7CiAKQEAgLTEx
NTYsNyArMTE1Niw3IEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3du
bG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhCiAgICAgaWYgKCFwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CiAKLSAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFBy
b3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNl
c3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVm
ZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNhbGxEb3dubG9hZERpZFN0
YXJ0KSwgMCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGEzYzJkYmY5NGY1NWVmNzBjN2U3NjcwMWFl
M2ZjMTg4NzI0NGRjMDguLjY1ZDRmOThmMTUxNTYwZDU2MDQ4NWM1ZDE1YzliN2JjNjRlMDViNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTE2LDYgKzEx
Niw3IEBAIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHdlYlByb2Nlc3NUaHJvdWdo
cHV0UU9TKCk7CiAjZW5kaWYKIAorZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJv
b2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwogCiBj
bGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nl
c3NQb29sPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC0yMDQsNyArMjA1LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBEb3dubG9hZFByb3h5JiBkb3dubG9hZChXZWJzaXRl
RGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7
Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYsIFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJ
OjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0
YXJ0KTsKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KFJlZlB0cjxBUEk6Ok9iamVjdD4mJiB1c2VyRGF0YSkgeyBtX2luamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSA9IFdURk1vdmUodXNlckRhdGEpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3NjFkODM1MWVmY2I1
NjExMDljNTNmMDBlNTAwOTcwNjZlMjNhZTcuLmI4OTUyZmMwMmUzNDRhODYxOTE4YmE5ZDhiNzNh
Y2ZkM2VlYjVmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjE4LDcgKzIxOCw2IEBACiAJCTFBNDNFODJBMTg4RjNDREMwMDlFNEQz
MCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QkExMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0
NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBNDQ1QkEzMTg0RDVG
Q0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8q
IFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4
dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUE0ODMyQ0MxQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDgzMkNBMUE5QkM0
NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTQ4MzJDRTFBOUJDNDg0MDA4QjRERkUgLyog
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDRDFBOUJDNDg0MDA4QjRERkUgLyogV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmggKi87IH07CkBAIC0zMzEsNyArMzMwLDcgQEAKIAkJMUFCN0Q0
Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM4MTI4OEFBQTcwMENGRDA4QyAvKiBE
b3dubG9hZFByb3h5LmggKi87IH07CiAJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCN0Q2MUExMjg4QjlEOTAwQ0ZEMDhD
IC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHlNZXNzYWdlcy5oICovOyB9OwotCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3du
bG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
N0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMg
LyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFFQzE4
NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFQjE4NDAwODA5MDBFOUFFNjkgLyog
V0tQYWdlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
OEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUYwMTg0MDBCMDAw
MEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRjE4NDAwQjAwMDBFOUFFNjkgLyogV0tQYWdlRm9y
bUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMTg1LDYgKzExODQsNyBAQAogCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0
d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oICovOyB9Owog
CQk1QzI2OTU4NTIwMDQzMjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyNjk1
ODQyMDA0MkYxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzI5OERBMDFD
M0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVu
ZGluZ0Rvd25sb2FkLmggKi87IH07CisJCTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rv
d25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDMzU5QzBEMjE1
NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJl
Y2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1QzQ2MDlFNzIyNDMxN0I0MDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQ2MDlFMjIy
NDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM0NjA5RTgyMjQzMTdCQjAw
OTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQ2MDlFNDIyNDMwRTREMDA5OTQz
QzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTE4MjUs
NiArMTgyNSw5IEBACiAJCUNFRTRBRTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VFNEFFMkExQTVE
Q0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07CiAJCUQzQjk0ODQ3MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAq
LzsgfTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDUx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovOyB9OworCQlERjBDNUYy
ODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93
bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJ
CURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI2MjUyRUNCOEUw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJCMjUyRUQ0NDAwMEQ5MjFEQiAvKiBXS0Rv
d25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAq
LzsgfTsKIAkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY0
NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGNDYyRTEyMjNG
MzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTExMjNGMzM4QUQwMEVGRjM1RiAv
KiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQlERjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyogV0tQREZIVURW
aWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY4
NENFRTIyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSAqLzsgfTsKQEAgLTI0NTQs
NyArMjQ1Nyw2IEBACiAJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
NDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0NUJBMDE4NEQ1RkMx
MDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0NvbnRleHRIaXN0b3J5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9h
ZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHREb3du
bG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0NUJBNDE4NEQ1
RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkMxMUE5NjVBM0MwMDhCNERGRSAvKiBXZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTFBNDgzMkM5MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YVJlY29yZC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTAsOCArMjY1Miw4IEBACiAJCTFB
QjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHkubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJj
ZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERv
d25sb2FkUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
b3dubG9hZFByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvRG93
bmxvYWRQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
Ci0JCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tEb3dubG9hZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRSZWYu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhD
IC8qIFdLRG93bmxvYWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV0tEb3dubG9hZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhB
MUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBQjhBMUVEMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlUG9saWN5Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVGMTg0MDBCMDAwMEU5
QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUGFnZUZvcm1DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQx
MjIsNiArNDEyNCw3IEBACiAJCTVDMkIxQUYzMjIzQUI3MjgwMEI5MUNGNyAvKiBEb3dubG9hZE1v
bml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRG93bmxvYWRN
b25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFBRjQyMjNBQjcy
ODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERvd25sb2FkUHJveHlNYXBDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERvd25sb2FkUHJveHlNYXBDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyRUJERjkyNTY0MzUyMDAwRDU1
QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzM1
OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlUG9saWNpZXNEYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NjA5RTIyMjQzMEU0QzAwOTk0
M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTUzODgsNiArNTM5MSwxMCBAQAogCQlEM0I5NDg0MzExRkY0QjY1MDAwMzJC
MzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NDExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBN
ZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjIzMjUyRUNCOEQwMEQ5
MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVG
MjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlE
RjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9h
ZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRE
ZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUwRTIzRjIyRjUz
MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50V29y
bGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGVudFdv
cmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4QzYzMTEzNzFB
QzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03NTM4LDYgKzc1NDUsMTAgQEAKIAkJCQk1Q0UwQzM2ODIyOUYyRDRBMDAzNjk1
RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAogCQkJCTVDRTBDMzZCMjI5RjJE
NEIwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oICovLAogCQkJ
CTVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9Qcml2
YXRlLmggKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAq
LywKKwkJCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5tbSAqLywKKwkJ
CQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi8sCisJ
CQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovLAog
CQkJCTFBRjQ1OTJEMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggKi8sCiAJCQkJMUFGNDU5
MkMxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gKi8sCiAJCQkJMUEyRDI1MkExOTQ2ODhG
RDAwNDUzN0IwIC8qIFdLRXJyb3JJbnRlcm5hbC5oICovLApAQCAtOTUwNCw3ICs5NTE1LDYgQEAK
IAkJCQkxQUU1MkY5MzE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
Zi5jcHAgKi8sCiAJCQkJMUFFNTJGOTQxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaCAqLywKIAkJCQkxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250
ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovLAotCQkJCTFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAv
KiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovLAogCQkJCTFBNDQ1QkEwMTg0RDVGQzEwMDRC
MzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUE0NDVCOUUxODRENUZC
NTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8sCiAJCQkJQTFF
QTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5jcHAgKi8sCkBA
IC05NTE1LDggKzk1MjUsOSBAQAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUzMCAvKiBXS0Ny
ZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRl
bnRpYWwuaCAqLywKIAkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFs
VHlwZXMuaCAqLywKLQkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5j
cHAgKi8sCi0JCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLywK
KwkJCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovLAor
CQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmNwcCAqLywKKwkJ
CQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oICovLAogCQkJCUJD
RTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwICov
LAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVu
ZXIuaCAqLywKIAkJCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFtZS5jcHAgKi8s
CkBAIC0xMTg0NSw3ICsxMTg1Niw2IEBACiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAwQTEzN0UwIC8q
IFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3MjAwQTFGQTM3
IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1
QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKLQkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkExMTg0RDVGQzEwMDRCMzQxNCAv
KiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUI5RjE4
NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFDNCAvKiBXS0NvbnRleHRNZW51RWxl
bWVudEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMTE4NzgsOCArMTE4ODgsMTIgQEAKIAkJCQlC
QzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEgLyogV0tET01SYW5nZVByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRleHRJdGVyYXRv
ci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBX
S0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJFQkRGQTI1NjQzODBCMDBENTVCMDUg
LyogV0tEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkEyNTJFQ0I4
RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYw
QzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQcm9ncmVzcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxv
YWRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MDlCQTE4MUU2RTY0QkMwMDlEQTI4RSAvKiBX
S0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVDRjY2Q0UyMUQ2
Qjc3RTAwOUU1QzNGIC8qIFdLRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRjQ1
OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YmRkMGM4NDBkYTlk
N2U2NTJjMjVjYjU0MjNlNmZkYmMyMTlmNmIxLi45ODZiNDk3Y2M5OGUwYjY0MTY0MWIwNzdlNzA3
MjRlMTk3OWY2ODJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMjAtMTEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IGRvd25sb2Fk
IFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3
NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlUG9saWN5
Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250ZXh0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25s
b2FkLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29u
dGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcu
bW06CisgICAgICAgICgtW0JlY29tZURvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW06CisgICAgICAgICgtW0Nv
bnZlcnRSZXNwb25zZVRvRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtUZXN0RG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGVEZWxlZ2F0ZSB3
ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGVEZWxlZ2F0
ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKGRvd25sb2FkVGVzdFNlcnZlcik6CisgICAgICAgIChjaGVja1Jlc3VtZWREb3dubG9hZENv
bnRlbnRzKToKKyAgICAgICAgKHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcik6CisgICAgICAgIChj
aGVja0ZpbGVDb250ZW50cyk6CisgICAgICAgICh0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QpOgor
ICAgICAgICAoLVtEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjptdXRhdGVGaWxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW06CisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jl
c3NUZXN0UnVubmVyIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRl
Y2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtQU09OTmF2aWdhdGlv
bkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRp
ZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0p
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6XSk6
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6bmF2aWdhdGlvblJlc3Bv
bnNlOmRpZEJlY29tZURvd25sb2FkOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERp
ZEZpbmlzaF0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB0YWtlQ2FsbGJhY2tS
ZWNvcmRdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3Rh
cnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRl
RGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRp
ZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIF9kb3dubG9hZERpZENhbmNlbDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDogQ29w
aWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5o
LgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUubW06IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUubW0uCisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZERpZFN0YXJ0Ol0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6XSk6CisgICAgICAgICgtW1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6
CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0
ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAg
ICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6Cisg
ICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0
aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxv
YWREaWRDYW5jZWw6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRDcmVhdGVEZXN0aW5hdGlvbjpdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25E
aWRCZWNvbWVEb3dubG9hZFNoYXJlZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpu
YXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwpOiBEZWxldGVk
LgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKwogMjAyMC0x
MS0xOCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3
c10gQWRkIHRpbWVvdXQgdG8gbmV0d29yayByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IGQ5N2YyNjZlNDA1ZWNmYWE0MTQxOTQ1OTkwODhhZDU0MGJkNGQwOWUu
LmY1YTlkMjE3NjVmNjhhZjIyZmZiOTRlMzg1MjNkN2Q2NDllNDUxZmMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3LDYgKzI3LDcgQEAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbkV4dHJhcy5tbQogY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVz
dENvY29hLm1tCiBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorY29jb2EvVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUubW0KIGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KIGNv
Y29hL1Rlc3RQcm90b2NvbC5tbQogY29jb2EvVGVzdFVJRGVsZWdhdGUubW0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYjEwOWU2MGExMzRlZjlhZTIwM2ExMzlmMWNmYjE4MGY1OTUxMDI5OC4u
MGIyYzc1OGFhYjhjNWU1NTU0MjU2NDAzYTI0NGZhNTIwMGZmY2Q4ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTIyMTQsOCArMjIxNCw4IEBACiAJCTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0
QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZFMjdBNjIyNEVFQkVBMDAxMjg3MzYgLyogVVJMQ2Fu
b25pY2FsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFVSTENhbm9uaWNhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NzE0ODk0MjEyM0E0MDcwMEZERTNDNSAvKiBXS1dlYnNpdGVEYXRhc3RvcmUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhc3RvcmUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3
IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3MkU4Q0Qy
NDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHBh
dGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBU
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzczQTgxQTIz
MjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBUTFNEZXByZWNhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM3NTcxNUYyMjEyNDlCRDAwQjlFNUFDIC8qIEJ1bmRsZVJldGFpblBhZ2VQ
bHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCdW5kbGVS
ZXRhaW5QYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc5NjQw
RjFFQjAyNjlCMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRNb2RpZmllcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjgwMCw2ICsyODAwLDggQEAKIAkJRDNCRTVFMzQxRTRDRTg1RTAwRkQ1
NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3R2V0Q29udGVudHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURDNjlBQTYyMUNGNzdDNjUwMEM2MjcyRiAvKiBTY29wZWRMYW1iZGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkTGFtYmRhLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8q
IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNo
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYz
Q0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0Mg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVs
ZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURGQjhGRjMxMjQ5MkY1MUEwMEYwMEIwRCAvKiBQcmVjb25uZWN0
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJlY29ubmVjdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gTWVtb3J5
Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMjAsOCArMzEyMiwxMCBAQAogCQkJCUNFNjQwQ0E2MjM3MEE0
RjMwMEM1Q0FBNCAvKiBUZXN0Q29jb2EubW0gKi8sCiAJCQkJNUNFNzU5NDgyMkE4ODNBNTAwQzEy
NDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5oICovLAogCQkJCTVDRTc1OTQ3MjJBODgzQTUw
MEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCi0JCQkJNUM3MkU4Q0QyNDRG
RkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCi0JCQkJNUM3MkU4Q0Uy
NDRGRkNFNDAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCURGNkJD
NDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCURG
NkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJ
CQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
aCAqLywKKwkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4MTYgLyogVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MTYyODEyMzIzMjVDMTdBMDBCQjdFNDIg
LyogVGVzdFBERkRvY3VtZW50LmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNo
LmNwcAppbmRleCBjYTY5N2FjMzVhOWFhNTIwYTViMTlmNWM3Yjc0M2MxN2M4NDRjNTM4Li5jNDU3
NTg2NTA1ZGIzZTRkYmFiZGIwNzEyYTBlNjYzYmRiMjljNzdkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRl
RGVzdGluYXRpb25DcmFzaC5jcHAKQEAgLTI5LDQyICsyOSw0MSBAQAogCiAjaW5jbHVkZSAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKLSNpbmNsdWRl
IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkUmVmLmg+
CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIGJvb2wgZGlkRGVjaWRlRGVz
dGluYXRpb247CiAKLXN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJl
ZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3N0YXRpYyB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNl
UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCopCiB7CiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQobGlzdGVuZXIpOwog
fQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiwg
Ym9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9u
c2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBkaWREZWNpZGVEZXN0aW5h
dGlvbiA9IHRydWU7Ci0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CisgICAgV0tEb3du
bG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgcmV0dXJuIFV0aWw6
OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gi
KS5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldENvbnRleHREb3dubG9hZENsaWVudChX
S0NvbnRleHRSZWYgY29udGV4dCkKK3N0YXRpYyB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiBuYXZp
Z2F0aW9uUmVzcG9uc2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgV0tE
b3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNs
aWVudCkpOwotCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250
ZXh0LCAmY2xpZW50LmJhc2UpOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLRG93
bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0YXRpYyB2b2lk
IHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tQYWdlTmF2aWdh
dGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVu
dFYzIG5hdmlnYXRpb25DbGllbnQ7CiAgICAgbWVtc2V0KCZuYXZpZ2F0aW9uQ2xpZW50LCAwLCBz
aXplb2YobmF2aWdhdGlvbkNsaWVudCkpOwogCi0gICAgbmF2aWdhdGlvbkNsaWVudC5iYXNlLnZl
cnNpb24gPSAwOwotICAgIG5hdmlnYXRpb25DbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbiA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CisgICAgbmF2aWdhdGlv
bkNsaWVudC5iYXNlLnZlcnNpb24gPSAzOworICAgIG5hdmlnYXRpb25DbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOworICAgIG5hdmlnYXRpb25DbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKIAogICAgIFdLUGFn
ZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwog
fQpAQCAtNzIsNyArNzEsNiBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFn
ZVJlZiBwYWdlKQogVEVTVChXZWJLaXQsIERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCkK
IHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFdLQ29u
dGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKLSAgICBzZXRDb250ZXh0RG93
bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyhjb250ZXh0LmdldCgpKTsKICAgICBzZXRQYWdlUG9saWN5Q2xpZW50KHdlYlZpZXcucGFnZSgp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250
ZXh0TWVudURvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0NvbnRleHRNZW51RG93bmxvYWQubW0KaW5kZXggMTU5MzBlNTQ2ZGJhYTNkYTlkNWVkMjE1YjZj
OGI5Y2M2MTA5YWYwZi4uNzU1NmY2MTJkNWUzYjliYTRmNGNkNmY1MjZjOTU4YzE3ZjNmMWYyNiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRN
ZW51RG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0NvbnRleHRNZW51RG93bmxvYWQubW0KQEAgLTI4LDcgKzI4LDggQEAKICNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgPFdl
YktpdC9XS0NvbnRleHRNZW51SXRlbS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tE
b3dubG9hZFJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUGFnZS5oPgogI2ltcG9ydCA8V2ViS2l0
L1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaD4KQEAgLTYyLDEyICs2MywxMiBAQCBzdGF0aWMgdm9pZCBnZXRDb250ZXh0TWVu
dUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmIHBhZ2UsIFdLQXJyYXlSZWYgcHJvcG9zZWRNZQog
ICAgIH0KIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJp
bmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0
cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxl
bmFtZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmls
ZW5hbWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBh
dHRyaWJ1dGUgaW4gdGhlIEhUTUwuCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJkb3dubG9hZEF0dHJp
YnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93bmxvYWRDYW5j
ZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51bGxwdHIsIG51
bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVlOwogCiAgICAg
RVhQRUNUX0VRKGV4cGVjdGVkT3JpZ2luYXRpbmdQYWdlLCBXS0Rvd25sb2FkR2V0T3JpZ2luYXRp
bmdQYWdlKGRvd25sb2FkKSk7CkBAIC03NiwyNSArNzcsMjkgQEAgc3RhdGljIFdLU3RyaW5nUmVm
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tE
b3dubG8KICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0NvbnRleHRN
ZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudDsK
KyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNsaWVudC5iYXNl
LnZlcnNpb24gPSAwOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdLRG93bmxvYWRT
ZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7Cit9CisKIC8vIENoZWNrcyB0aGF0IHRo
ZSBIVE1MIGRvd25sb2FkIGF0dHJpYnV0ZSBpcyB1c2VkIGFzIHN1Z2dlc3RlZCBmaWxlbmFtZSB3
aGVuIHNlbGVjdGluZwogLy8gdGhlICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgaXRlbSBpbiB0aGUg
Y29udGV4dCBtZW51LgogVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxv
YWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0g
YWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOwogCi0gICAg
V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7Ci0gICAgbWVtc2V0KCZjbGllbnQsIDAs
IHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGll
bnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdl
R3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRp
ZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50
VjMgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9h
ZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9h
ZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5h
dmlnYXRpb24gPSBkaWRGaW5pc2hOYXZpZ2F0aW9uOworICAgIGxvYWRlckNsaWVudC5jb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkID0gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKICAg
ICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNs
aWVudC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1lbnVD
bGllbnQ7CkBAIC0xMTQsMzQgKzExOSwzOCBAQCBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3du
bG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZSkKICAgICBVdGlsOjpydW4oJmRpZERlY2lkZURvd25s
b2FkRGVzdGluYXRpb24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29s
KiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qg
dm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgaXMgcHJv
dmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUgaW4g
dGhlIEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RSRVEoInRlc3Qx
X3Rlc3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwog
Ci0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CisgICAgV0tEb3dubG9hZENhbmNlbChk
b3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5h
dGlvbiA9IHRydWU7CiAKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0
L0NvbnRleHRNZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKLVRFU1QoV2ViS2l0LCBDb250
ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlV2l0aFNsYXNoZXMpCitzdGF0aWMg
dm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29u
dGFpbmluZ1NsYXNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkp
OwotCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgV0tEb3dubG9h
ZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkp
OwogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUNvbnRhaW5pbmdTbGFzaGVzOworICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZj
bGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERv
d25sb2FkQXR0cmlidXRlV2l0aFNsYXNoZXMpCit7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVu
ZGxlKCkpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFk
b3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3Vw
IikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBw
YWdlR3JvdXAuZ2V0KCkpOwogCi0gICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNs
aWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbG9hZGVyQ2xpZW50OwogICAgIG1l
bXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVy
Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9
IDM7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRGaW5pc2hOYXZp
Z2F0aW9uOworICAgIGxvYWRlckNsaWVudC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkID0g
Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5p
bmdTbGFzaGVzOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZpZXcucGFn
ZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRW
MyBjb250ZXh0TWVudUNsaWVudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5MTMxMTAxZjJj
ZGQ5NTA5ODY3ZWZlOTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDczMjM5M2IzNGNh
ZWVlMGFlN2IzMzkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUxLDcgQEAgVEVT
VChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRs
ZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUJlY29tZURvd25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhlYzMzNWUxMDIz
MmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLjE4ZGIxMmJhYzk0NDliMjQyNWExMjc1MDBiY2FlY2Vj
NzNiZDE3MzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIK
ICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCisjaW1w
b3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQg
PFdlYktpdC9XS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsxNzgsNyBAQCBU
RVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRpb24gQ29udmVy
dFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0g
ICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCk7CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNUKF9XS0Rvd25s
b2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQRUNUX0ZBTFNF
KF9kaWRGaW5pc2hOYXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dLTGVnYWN5RXJy
b3JEb21haW4sIGVycm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAgICBpZiAoX3Jl
c3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
fHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTk4
NSw3ICs5ODksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0Zv
cmVncm91bmQpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uKTsKICAgICBfZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3BvbnNl
UG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9k
aWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAgICAg
ICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVTVChXZWJLaXQs
IERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9X
S19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0
cmluZyk7CiAKICAgICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vYnVuZGxlLWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRlIHNldFJlc3Bv
bnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAg
ICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUsNyBAQCBURVNU
KFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAg
RVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVT
dHJpbmcpOwogCi0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQ
b2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxd
XTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlz
RG9uZSk7CkBAIC0xMTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5nKExDaGFyIGMp
CiAgICAgcmV0dXJuIFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQogCi1URVNUKF9X
S0Rvd25sb2FkLCBSZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9vbCB7IE5vLCBZ
ZXMgfTsKK2VudW0gY2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9vbCB7IE5vLCBZ
ZXMgfTsKKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxvYWRUZXN0U2Vy
dmVyKEluY2x1ZGVFVGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6OlllcywgRnVuY3Rpb248
dm9pZChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0gbnVsbHB0cikK
IHsKLSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQU2VydmVyIHNl
cnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxl
IHsKKyAgICByZXR1cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1p
bmF0b3IpLCBjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNv
bm5lY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7
CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1
ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAgICAgIGNvbm5l
Y3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAg
ICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBjb25uZWN0aW9u
LCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFyPiYmKSBtdXRh
YmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlRVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3RcclxuIiA6ICIi
LAogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1l
PVwiZXhhbXBsZS50eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0
cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICAgICAgKTsK
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25zZSksIFtjb25u
ZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAgICAgICAgICAg
ICAgdGVybWluYXRvcihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4m
JiByZXF1ZXN0KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
PV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVz
dC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygK
ICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRcclxuIgpA
QCAtMTIyMCwxNiArMTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQot
ICAgIH0pOworICAgIH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWREb3dubG9hZENv
bnRlbnRzKE5TVVJMICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50
cy5sZW5ndGgsIDEwMDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsK
KyAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5ndGggPT0gMTAw
MDB1KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQorICAgICAg
ICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0
ZXMpW2ldLCAnYScpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBp
KyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVD
b250ZW50cy5ieXRlcylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVzdFdlYktpdEFQ
STo6SFRUUFNlcnZlciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7
IFtdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25u
ZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsK
KyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIK
KyAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAg
ICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUu
dHh0XCJcclxuIgorICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScp
CisgICAgICAgICAgICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAgICBOU1VSTCAq
dGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkg
c3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVUZXN0Il0gaXNE
aXJlY3Rvcnk6WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5TVVJMICpmaWxl
LCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRhICpmaWxlQ29u
dGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBFWFBFQ1Rf
RVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKyspCisgICAgICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtp
XSwgZXhwZWN0ZWRDb250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05TRmlsZU1hbmFn
ZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIgd2l0aEludGVy
bWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxdOwotICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENv
bXBvbmVudDpAImV4YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6bmlsXTsKKyAg
ICBOU1VSTCAqZmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4
YW1wbGUudHh0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJ
dGVtQXRVUkw6ZmlsZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQorCitURVNUKF9X
S0Rvd25sb2FkLCBSZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwogCiAgICAg
YXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
IG5ld10pOwogICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCk7CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sgOiB1aW50OF90
IHsgU3RhcnQsIFdyaXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURlc3RpbmF0aW9u
LCBDYW5jZWwsIEZpbmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNUKF9XS0Rvd25s
b2FkLCBSZXN1bWUpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+IGRvd25sb2Fk
OwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAotICAgIGF1dG8g
ZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOwor
ICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlIG5ld10pOwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpzdWdn
ZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBOU1N0cmluZyAq
KSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
bik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKCJleGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsKICAgICB9Owog
ICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tEb3dubG9hZCAq
ZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0
ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAgICAgY2FsbGJh
Y2tzLmFwcGVuZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMxNyw3IEBAIFRF
U1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0
KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICpkZXN0
aW5hdGlvbikgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpDcmVhdGVEZXN0
aW5hdGlvbik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgW3RlbXBEaXIg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRoKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRo
KTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWREaWRDYW5jZWwg
PSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENh
bGxiYWNrOjpDYW5jZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQs
IFJlc3VtZSkKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVwKDEwMDAwKTsK
IAotICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZV
Ukw6ZXhwZWN0ZWREb3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVu
Z3RoLCAxMDAwMHUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7Ci0gICAg
aWYgKGZpbGVDb250ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDUwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAgIH0KKyAgICBj
aGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKIH0KIAog
QGludGVyZmFjZSBEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmln
YXRpb25EZWxlZ2F0ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJl
c3VtZSkKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJl
c3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3BvbnNlLnJlc3Bv
bnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkKLSAgICAgICAg
ZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDExOTAgQEAgVEVT
VChfV0tEb3dubG9hZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2ViVmlldyBsb2Fk
SFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5PjxpZnJhbWUgc3Jj
PSdodHRwOi8vMTI3LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBzZXJ2ZXIucG9y
dCgpXSBiYXNlVVJMOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lkIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0b3I8RG93bmxv
YWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1YWxDYWxsYmFj
a3MgPSBkZWxlZ2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VRKGFjdHVhbENh
bGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENh
bGxiYWNrcy5zaXplKCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3Nb
aV0sIGV4cGVjdGVkQ2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaW5pc2hT
dWNjZXNzZnVsbHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
KyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAg
Y2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitzdGF0
aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURhdGEsIE5TVVJM
ICpkZXN0aW5hdGlvbikKK3sKKyAgICBjaGVja0ZpbGVDb250ZW50cyhkZXN0aW5hdGlvbiwgbG9u
Z1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGF1dG8gKmRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvICp3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKKworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERh
dGE6cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgRVhQRUNUX05V
TEwoZG93bmxvYWQuZGVsZWdhdGUpOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWREb3du
bG9hZCkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJv
b2wgZG93bmxvYWRlZFNlY29uZDVrID0gZmFsc2U7CisgICAgRVhQRUNUX05VTEwocmV0YWluZWRE
b3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSk7CisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAq
ZG93bmxvYWQsIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQRUNUX0VR
KGRvd25sb2FkLCByZXRhaW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKGJ5
dGVzV3JpdHRlbiArIDUwMDAsIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQRUNUX0VR
KHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5dGVzV3Jp
dHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1ZTsKKyAg
ICB9OworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5k
b3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQ
RUNUX0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCksIGRvd25sb2FkKTsKKyAgICAgICAgcmV0YWlu
ZWREb3dubG9hZCA9IG51bGxwdHI7CisgICAgICAgIEVYUEVDVF9UUlVFKGRvd25sb2FkZWRTZWNv
bmQ1ayk7CisgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgfTsKKworICAgIFV0aWw6OnJ1
bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoZGVzdGlu
YXRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgd2FpdEZvckZpcnN0NWsoVGVzdERv
d25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlKQoreworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVk
Rmlyc3Q1ayA9IGZhbHNlOworICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRhKTsKKyAg
ICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dy
aXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
V3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAx
MDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRv
d25sb2FkZWRGaXJzdDVrID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRl
ZEZpcnN0NWspOworfQorCitURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKK3sKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxX
S0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9
IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFp
bmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFp
bmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFp
bmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVB
bmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQoreworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpZZXMsIFsm
XSAoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRG
b3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAg
ICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAg
X19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFp
bmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFp
bmVkRG93bmxvYWQuZ2V0KCkpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRv
bWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29k
ZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICByZXRhaW5l
ZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIHdoaWxlICghcmV0YWlu
ZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3VtZUFu
ZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9h
ZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5Q
dHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRh
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1
MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpO
bywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAg
d2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRv
bWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29k
ZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICBFWFBFQ1Rf
TlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9Owor
ICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxX
aXRoRXJyb3IKKyAgICB9KTsKK30KKworLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGluIENGTmV0
d29yay4KKyNpZiBIQVZFKENGTkVUX1JFU1BPTlNFX0NBTExCQUNLX1dJVEhfTk9fQ09OVEVOVCkK
KworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQoreworICAg
IE9wdGlvbmFsPFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rpb247Cisg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsICZzZXJ2ZXJDb25uZWN0
aW9uXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAg
ICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHNlcnZlckNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICAgICAgY29ubmVj
dGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJl
eGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iCisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0
cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUo
KSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEw
MFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzwxMDA+KCd4JykK
KyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gWyZdKFdL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVk
RG93bmxvYWRGaWxlKTsKKyAgICAgICAgc2VydmVyQ29ubmVjdGlvbi0+dGVybWluYXRlKCk7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsK
KyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgcmV0YWluZWRS
ZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9h
ZEZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdL
RG93bmxvYWQgKikgeworICAgICAgICBkb3dubG9hZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9Owor
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUg
KCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAg
CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4
aXN0c0F0UGF0aDpleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNF
KGRvd25sb2FkRmluaXNoZWQpOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6
cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9
XTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkRmluaXNoZWQpOworICAgIGNoZWNrRmlsZUNvbnRl
bnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7CisKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaAorICAgIH0pOworfQorCisjZW5kaWYKKwordm9pZCB0ZXN0UmVzdW1lQWZ0ZXJN
dXRhdGluZ0Rpc2soTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIHZvaWQoXm11dGF0ZUZpbGUpKHZvaWQpKQoreworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rv
d25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRv
d25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyUmVxdWVzdF07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgIGRlbGVnYXRl
LmRpZFdyaXRlRGF0YSA9IG5pbDsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0
YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAq
cmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOwor
ICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIG11dGF0ZUZpbGUoKTsKKworICAg
IF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3du
bG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2Fk
ICopIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07
CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aG91dEluaXRpYWxEYXRh
T25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShU
ZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBz
d2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAg
ICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAg
ICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRl
c3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZp
bGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwK
KyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAgICAgICAgICAg
ICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9y
PGNoYXI+JiYgcmVxdWVzdCkgeworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CisgICAgICAgICAgICAgICAgLy8gTW9qYXZlIENGTmV0d29yayBzZW5kcyBhIHJhbmdlIHJlcXVl
c3Qgd2hlbiByZXN1bWluZyBhIGRvd25sb2FkIGFmdGVyIHJlbW92aW5nIGFscmVhZHktZG93bmxv
YWRlZCBkYXRhLgorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJuc3RyKHJlcXVlc3Qu
ZGF0YSgpLCAiUmFuZ2UiLCByZXF1ZXN0LnNpemUoKSkpOworI2VuZGlmCisgICAgICAgICAgICAg
ICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQ
LzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+
KCd4JykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25sb2Fk
RmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRlck11
dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsKKyAg
ICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZl
cnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICB9KTsKKworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEwMDAwPigneCcp
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVXaXRoRXh0cmFJbml0aWFsRGF0YU9uRGlz
aykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNo
ICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25u
ZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAg
ICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAg
IkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJc
biIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFt
ZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAg
ICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkp
OworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgor
ICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFy
PiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVl
c3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7Cisg
ICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1SYW5n
ZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtTGVuZ3RoOiA1MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAg
ICAgICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPignZCcpCisgICAgICAgICAgICAgICAgKSk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAg
ICAKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3Qo
KSwgZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVS
TDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVM
TChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbKE5TU3RyaW5nICopbWFrZVN0cmluZyhs
b25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSkgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZp
bGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICB9KTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4
cGVjdGVkRG93bmxvYWRGaWxlLCBtYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9u
Z1N0cmluZzwzMDAwPignYycpLCBsb25nU3RyaW5nPDUwMDA+KCdkJykpKTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBSZXN1bWVXaXRoSW52YWxpZFJlc3VtZURhdGEpCit7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgRVhQ
RUNUX1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNh
bGx5OllFU10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgQHRyeSB7CisgICAg
ICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6W0AiaW52YWxpZCByZXN1bWUgZGF0
YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICB9XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24gKmUpIHsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24p
OworICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVlOworICAgIH0KKyAgICBFWFBFQ1RfVFJV
RShjYXVnaHRFeGNlcHRpb24pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUNhbnRSZWNv
bm5lY3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFp
bmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0
ZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0
cmluZzw1MDAwPignYScpKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWlu
ZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVz
dW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAg
IH1dOworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGlu
UnVuTG9vcCgpOworCisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIAorICAgIHJldGFpbmVkRG93
bmxvYWQgPSBuaWw7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5l
ZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVD
VF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVk
RG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICByZXRhaW5lZERv
d25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX19ibG9jayBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICos
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgIEVY
UEVDVF9OT1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsK
KyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJv
cgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQor
eworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAg
ICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsK
KyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKCJIVFRQLzEuMSAyMDAgT0tc
clxuXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSkpOworICAgICAgICB9KTsKKyAgICB9KTsK
KyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAg
X19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5k
aWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0
X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkg
eworICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSA1MDAwKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRlbiwgNTAwMCk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgLTEpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgSW52YWxpZEFyZ3VtZW50cykKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBf
X2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYXV0byBzZXJ2ZXIgPSBk
b3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0
aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl0p
OworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24pOwor
ICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRpb24pOworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRpYyBIVFRQU2VydmVyIHJl
ZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAgeyAiLyIsIHsgMzAxLCB7
eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFtZSIsICJDdXN0
b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0IiwgeyAiaGkiIH0g
fSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93KQoreworICAg
IGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqc2Vy
dmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2Vd
OworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9jayBib29sIGZpbmlzaGVk
RG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6
c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJl
c3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2FudCB0byBt
YWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7Cisg
ICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJDdXN0b20tTmFt
ZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFwcGVuZGluZ1Bh
dGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93KTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJp
bmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJyZWRp
cmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5V
UkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5n
LCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRl
bGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgICAg
IGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6
OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJl
cXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBhdXRvIHNlcnZl
ciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0g
c2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVn
YXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3
IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24g
PSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0
UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNv
bHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAg
ICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1
c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFi
c29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9u
ZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOworICAgICAgICB9
OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5T
RXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9O
VUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFp
biwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
TlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlOworICAg
ICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxS
ZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAg
IH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVy
IHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5y
ZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0g
XihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0
YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJv
ckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNh
bm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRo
RXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0NDA0
KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgNDA0LCB7IH0s
ICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9OworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBO
ZXR3b3JrUHJvY2Vzc0NyYXNoKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2Vy
dmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisgICAgX19ibG9j
ayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOwor
ICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3LmNvbmZpZ3Vy
YXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3NdOworICAgIFV0
aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9y
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5hbWVGcm9tSG9z
dCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICJkb3dubG9h
ZCBjb250ZW50IiB9IH0KKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZp
bGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7Cisg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsICIx
MjcuMC4wLjEudHh0Iik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmlu
aXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93
bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdy
aXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9
CisKK1RFU1QoV0tEb3dubG9hZCwgUmVxdWVzdEhUVFBCb2R5KQoreworICAgIGF1dG8gc2VydmVy
ID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBO
U011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVD
b3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmVxdWVzdC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBbd2ViVmlldyBzdGFydERv
d25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5IVFRQQm9keSk7IC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24t
bnVsbC4KKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25l
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBQYXRoTXVzdEV4aXN0KQoreworICAgIE5TVVJMICp0
ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9y
eTpZRVNdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0
VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOwor
CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9
IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBe
KFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7Cisg
ICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQoreworICAgIGF1
dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19ibG9jayBhdXRv
IHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAg
ICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0
b21pY2FsbHk6WUVTXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAg
cmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5n
ZXQoKTsKKyAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAg
ICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSk7CisgICAgICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0
KCk7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsK
KyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENy
ZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9
OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5h
dGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19i
bG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihuaWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0g
XihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAg
ICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VC
ZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsK
K30KKworLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxs
ZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRX
T1JLX0RPV05MT0FEUykKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlU3VjY2VzcykKK3sKKyAg
ICBIVFRQU2VydmVyIHNlcnZlcih7eyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH19fSwgSFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNo
ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgX19i
bG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRo
ZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNy
ZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2Ug
PSB0cnVlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxv
YWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBFWFBFQ1RfVFJVRShyZWNl
aXZlZENoYWxsZW5nZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZp
bGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmluaXNoCisgICAgfSk7Cit9CisjZW5kaWYKKworVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVu
Z2VGYWlsdXJlKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNlcnZlcjo6UHJv
dG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVs
ZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktf
RE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBk
aWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JTZWN1cmVDb25uZWN0aW9uRmFpbGVkKTsK
KyNlbHNlCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVk
KTsKKyNlbmRpZgorICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBi
b29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOworICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRy
dWU7CisgICAgfTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZmYWlsZWQpOworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAg
RVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworI2VuZGlmCisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZSwgeworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMp
CisgICAgICAgIC8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVD
aGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyNlbmRpZgorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK3ZvaWQgYmxvYlRlc3Qo
Ym9vbCBkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgTlNTdHJpbmcgKmh0
bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgorICAgICIg
ICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIg
PSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0
VVJMKGIpOyIKKyAgICAiICAgIGEuZG93bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFtZSc7IgorICAg
ICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdk
b3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRt
bCBiYXNlVVJMOm5pbF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
XihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3Qu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCisgICAg
ICAgICAgICBFWFBFQ1RfTlVMTChhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwuc2No
ZW1lLCAiYmxvYiIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5kb3dubG9h
ZEF0dHJpYnV0ZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgICAgIGlmIChkb3dubG9h
ZEZyb21OYXZpZ2F0aW9uQWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgfTsKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVt
ZSwgImJsb2IiKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9
OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJM
LnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdp
bmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3Ry
aW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2Ii
KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiZG93bmxvYWRG
aWxlbmFtZSIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRl
LmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tGaWxlQ29udGVu
dHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCBleHBlY3RlZENhbGxiYWNrcyk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQmxv
YlJlc3BvbnNlKQoreworICAgIGJsb2JUZXN0KGZhbHNlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93
bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworCisgICAgYmxvYlRlc3QodHJ1ZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZU5vRmlsZW5hbWUpCit7CisgICAgTlNTdHJpbmcgKmh0
bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgorICAgICIg
ICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIg
PSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0
VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0iCisgICAgIjwvc2NyaXB0Pjxi
b2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd2Via2l0Lm9y
Zy8iXV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmln
YXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kpKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJl
Y29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3Bv
bnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAid2Via2l0Lm9yZyIpOwor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJp
bmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIp
OworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJVbmtub3duIik7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwg
U3ViZnJhbWVPcmlnaW5hdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hpbGRGcmFtZUhU
TUwgPSAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAg
ICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9
IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RV
UkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJv
ZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgSFRUUFNlcnZlciBncmFu
ZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBncmFuZGNoaWxkRnJhbWVIVE1M
IH0gfQorICAgIH0pOworICAgIEhUVFBTZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAg
IHsgIi8iLCB7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6
Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgp
XSB9IH0KKyAgICB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFtZVNlcnZlclJl
cXVlc3QgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIE5TVVJMUmVxdWVz
dCAqY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3QoKTsK
KyAgICB1aW50MTZfdCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRjaGlsZEZyYW1l
U2VydmVyLnBvcnQoKTsKKworICAgIE5TU3RyaW5nICptYWluSFRNTCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFt
ZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpt
YWluSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcv
Il1dOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2
aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgaWYgKFtyZXNwb25zZS5yZXNwb25z
ZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dlYmtpdC5vcmcv
Il0KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Z10KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcg
aXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nXSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICB9Owor
ICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNj
aGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5z
ZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4xIik7CisgICAgICAgIEVYUEVDVF9FUShyZXNw
b25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9y
dCk7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBf
X2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5zY2hlbWUsICJi
bG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgIlVua25v
d24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisK
K30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dy
ZXNzLm1tCmluZGV4IGYwMDNhYzI4Y2UxZTg5NjdmNWRhYjBkODg4Y2M3ODY4NzUxMTY1NjkuLmIx
YjE0NGZlYWM5YzdhYWQyYzJhMmJhMTZkMjY4MGUyNmM5OTQ2MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3Mu
bW0KQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9pZCogcHJvZ3Jlc3NPYnNlcnZpbmdDb250
ZXh0ID0gJnByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dDsKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdh
dGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAo
XikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlm
IChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRUb0Rvd25sb2Fk
KQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9u
TmF2aWdhdGlvbi5tbQppbmRleCBhN2Q0ZTUzYTM1MTc5MjQ1ZDFlOTA0MGMzZWE1NmUzYTA4MjIz
ZmNkLi40ZWUxOTI2N2IzMDAwZjg5NWE5OGQzMDk1MTc4OWU5Zjk2Y2Q2YWI1IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZp
Z2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TVVJMPiBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uVVJMOwogCiAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIK
IHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3cpOworICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3dubG9h
ZCA/IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlv
bjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCBhZTJiYzdmZTY2NTM0ZDY3OWE0
OGZiNDFmNjEzZjNlMDhhMDgwMWJmLi5kZmUxZDM4YzY2YzQ4ZmZjYzg4NWY4MzFmYzMwMmZiOTQ5
N2I1MzczIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1F1aWNrTG9vay5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxS
ZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJl
c3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFn
ZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29r
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwg
cmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0p
OwogICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEo
V2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUg
bmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZp
bmlzaE5hdmlnYXRpb25dKTsKQEAgLTM3OSw3ICszNzksNyBAQCBURVNUKFF1aWNrTG9vaywgRG93
bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogI2lmIFBMQVRGT1JNKElPUykgJiYg
X19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29r
LCBEb3dubG9hZFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVk
RmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJl
dmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBw
cmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGlj
eTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CiAgICAgcnVuVGVz
dERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJh
bWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJv
cl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9u
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERl
bGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRl
LmgKaW5kZXggN2FhZDIzYzNlYzViNDIxNzUxZWRjODQwMGMwYTBlYTYwYjhjNDg1Yi4uMzA5Mzc1
MDM5NzMzZWNiOTYwN2E1YjAyODI0MDU5NWM4OGY1NTRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaApAQCAtMjQsMTcgKzI0LDM1IEBA
CiAgKi8KIAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgotI2ltcG9ydCA8V2ViS2l0L19XS0Rv
d25sb2FkRGVsZWdhdGUuaD4KIAotQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5T
T2JqZWN0PF9XS0Rvd25sb2FkRGVsZWdhdGU+Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93
bmxvYWQgKiwgTlNVUkwgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFJlY2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAq
LCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rv
d25sb2FkICosIE5TU3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25s
b2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVy
cm9yKShfV0tEb3dubG9hZCAqLCBOU0Vycm9yICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kb3dubG9hZERpZENhbmNlbCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkIChe
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCop
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGluYXRp
b24pKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICopOworZW51bSBjbGFzcyBEb3dubG9hZENhbGxi
YWNrIDogdWludDhfdCB7CisgICAgV2lsbFJlZGlyZWN0LAorICAgIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlLAorICAgIERlY2lkZURlc3RpbmF0aW9uLAorICAgIERpZFdyaXRlRGF0YSwKKyAgICBE
aWRGaW5pc2gsCisgICAgRGlkRmFpbFdpdGhFcnJvciwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uQmVj
YW1lRG93bmxvYWQsCisgICAgTmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAg
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2UsCit9OworCitAaW50ZXJm
YWNlIFRlc3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8V0tEb3dubG9hZERlbGVnYXRlLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNw
b25zZSAqLCBOU1VSTFJlcXVlc3QgKiwgdm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkoV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF4pKE5TVVJMICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShXS0Rvd25sb2FkICosIGludDY0X3QsIGludDY0X3Qs
IGludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERp
ZEZpbmlzaCkoV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkRmFpbFdpdGhFcnJvcikoV0tEb3dubG9hZCAqLCBOU0Vycm9yICosIE5TRGF0YSAqKTsK
KworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uQWN0aW9uRGlk
QmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tEb3du
bG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkoV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKTsKKwor
LSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2g7CistIChWZWN0b3I8RG93bmxvYWRDYWxs
YmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkOworCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQppbmRleCAxZGI1Y2Q4MTFhYjZmNWQ5
OWI0MTNlNmQyMWFhYTMwMmE4MDFmZGQzLi4wNTMwOTM3MzUxNjAzNDEyZGVhYjQyYzY4ZmRjNzFj
YWYwZWRiOTRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3du
bG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25s
b2FkRGVsZWdhdGUubW0KQEAgLTI2LDY4ICsyNiwxMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgog
I2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRlc3RE
b3dubG9hZERlbGVnYXRlCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmg+CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQKLXsKLSAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0
YXJ0KGRvd25sb2FkKTsKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7Cisg
ICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkw6KE5TVVJMICopdXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93
bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVz
cG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0g
ICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOworICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0KTsKKworICAgIEFTU0VSVChf
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOworICAgIF93aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbihkb3dubG9hZCwgcmVzcG9uc2UsIHJlcXVlc3QsIGRlY2lzaW9uSGFuZGxlcik7CiB9CiAK
LS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9u
c2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxl
bmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0aW9uKSljb21w
bGV0aW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBf
ZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CisgICAgX2NhbGxiYWNrUmVj
b3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7CisKKyAgICBB
U1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsKKyAgICBfZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29tcGxldGlvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVz
V3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClkb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0
ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7Cisg
ICAgLy8gZGlkV3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9m
IHRpbWVzLCBzbyBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2FsbGJh
Y2tSZWNvcmQuaXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdyaXRlRGF0YSkK
ICAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVz
V3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25I
YW5kbGVyCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICop
Y2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCiB7
Ci0gICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0g
ICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBmaWxl
bmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93
bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgaWYgKF9kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIp
OworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25s
b2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRvd25sb2FkRGlk
RmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBw
ZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rvd25sb2FkRGlk
RmluaXNoKQogICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi0tICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihO
U0Vycm9yICopZXJyb3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YQogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCi0gICAgICAg
IF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9kaWRGYWlsV2l0
aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25s
b2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICop
bmF2aWdhdGlvbkFjdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2Fk
CiB7Ci0gICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlkQ2Fu
Y2VsKGRvd25sb2FkKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRpb25BY3Rpb25EaWRC
ZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uQWN0aW9uLCBkb3dubG9hZCk7CiB9CiAK
LS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxs
ZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5n
ZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdL
RG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKQotICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRv
d25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfY2FsbGJhY2tSZWNv
cmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkKTsKKworICAgIGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisg
ICAgICAgIF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZp
Z2F0aW9uUmVzcG9uc2UsIGRvd25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2Nh
bGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Up
OworCisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAg
IF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UobmF2aWdhdGlvblJlc3BvbnNlLCBk
ZWNpc2lvbkhhbmRsZXIpOwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CisgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25B
Y3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbik7CisKKyAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pCisgICAgICAgIF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KG5hdmlnYXRpb25BY3Rpb24sIGRlY2lzaW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2
b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlzaAoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hl
ZCA9IGZhbHNlOworICAgIEFTU0VSVCghX2Rvd25sb2FkRGlkRmluaXNoKTsKKyAgICBfZG93bmxv
YWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7
CisgICAgfTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKIH0KIAot
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGlu
YXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24KKy0gKFZlY3RvcjxEb3dubG9hZENhbGxiYWNr
Pil0YWtlQ2FsbGJhY2tSZWNvcmQKIHsKLSAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9uKQot
ICAgICAgICBfZGlkQ3JlYXRlRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKKyAg
ICByZXR1cm4gc3RkOjpleGNoYW5nZShfY2FsbGJhY2tSZWNvcmQsIHsgfSk7CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTEyNDYxZWExMmM5Y2FkYTYxNWQxZTJjNGE1NzMxZjFk
MTVkMTNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxl
Z2F0ZS5oPgorCitAaW50ZXJmYWNlIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIDogTlNPYmpl
Y3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZG93bmxvYWREaWRTdGFydCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9h
ZCAqLCBOU1VSTCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVj
ZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICosIHVp
bnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93bmxv
YWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQg
Kik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3Ip
KF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShf
V0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlvbiko
X1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7CitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li44NzdhOTI0YmRmZTY5NWUwYjc5MTViOTVlZmU5ZjA1ZGJmMWNhMDgzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgorCitAaW1wbGVtZW50YXRpb24g
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUKKworLSAodm9pZClfZG93bmxvYWREaWRTdGFydDoo
X1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRTdGFydCkKKyAg
ICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDoo
TlNVUkwgKil1cmwKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQor
ICAgICAgICBfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVybCk7Cit9
CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9kaWRSZWNlaXZl
UmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNl
KTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3Jp
dGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90
KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKK3sKKyAgICBpZiAoX2RpZFdyaXRlRGF0YSkKKyAgICAg
ICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09M
IGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVy
Cit7CisgICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7
CisgICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBm
aWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCistICh2b2lkKV9kb3dubG9hZERpZEZp
bmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRGaW5p
c2gpCisgICAgICAgIF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJy
b3IgKillcnJvcgoreworICAgIGlmIChfZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgX2RpZEZh
aWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRD
YW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkQ2Fu
Y2VsKQorICAgICAgICBfZG93bmxvYWREaWRDYW5jZWwoZG93bmxvYWQpOworfQorCistICh2b2lk
KV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoX2Rp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKK30KKworLSAodm9pZClfZG93
bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGluYXRpb246KE5TU3Ry
aW5nICopZGVzdGluYXRpb24KK3sKKyAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9uKQorICAg
ICAgICBfZGlkQ3JlYXRlRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKK30KKwor
QGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA3YmE2
NzJhYzlmOTI1ZjYzMjVhYTA3ZmE2ZjE2MWE1MDIzNWZiYjhjLi45OTZmMTk0ZjdjNDI5OTFiZmI3
MzhiYTAzODczYTJiZjg3NmM0ZGNiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRD
b25maWd1cmF0aW9uUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGUuaD4K
ICNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93
bmxvYWRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS0ZyYW1lSGFuZGxlUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVJ
bmZvUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JlUmVmLmg+CkBAIC04
MCw2ICs4Miw3IEBACiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzIsNiArMTM1LDMzIEBAIHN0YXRpYyBXS1N0
cmluZ1JlZiBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdLUGFnZVJlZiwg
Y29uc3Qgdm9pZCopCiAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJN
SUhGTUhFd1hEQU5CZ2txaGtpRzl3MEJBUUVGQUFOTEFEQklBa0VBblgwVElMSnJPTVV1ZSUyQlB0
d0JSRTZYZlYlMEFXdEtRYnNzaHhrNVpoY1V3Y3d5dmNuSXE5YjgyUWhKZG9BQ2REMzRycWZDQUlO
RDQ2ZlhLUVVuYjBtdkt6UUlEJTBBQVFBQkZoRk5iM3BwYkd4aFNYTk5lVVp5YVdWdVpEQU5CZ2tx
aGtpRzl3MEJBUVFGQUFOQkFBS3YyRWV4Mm4lMkZTJTBBciUyRjdpSk5yb1dsU3pTTXRUaVFURUIl
MkJBRFdIR2o5dTF4clVyT2lscSUyRm8yY3VReElmWmNOWmtZQWtXUDREdWJxVyUwQWkwJTJGJTJG
cmdCdm1jbyUzRCIpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uRGlkQmVj
b21lRG93bmxvYWRTaGFyZWQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CisKKyAgICBX
S0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50IHsKKyAgICAgICAgeyAwLCBjbGllbnRJbmZvIH0sCisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMLAorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lLAorICAgICAgICBudWxscHRyLCAvLyBkaWRXcml0ZURhdGEKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoLAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGYWlsCisgICAgfTsKKworICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93bmxv
YWQsICZjbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25B
Y3Rpb25EaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwg
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBu
YXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudEluZm8pOwor
fQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIG5hdmlnYXRpb25EaWRCZWNv
bWVEb3dubG9hZFNoYXJlZChkb3dubG9hZCwgY2xpZW50SW5mbyk7Cit9CisKIEFzeW5jVGFzayog
QXN5bmNUYXNrOjptX2N1cnJlbnRUYXNrOwogCiBib29sIEFzeW5jVGFzazo6cnVuKCkKQEAgLTMz
Niw3MiArMzY2LDcyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdl
KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBXS1BhZ2VVSUNs
aWVudFY4IG90aGVyUGFnZVVJQ2xpZW50ID0gewogICAgICAgICB7IDgsIHZpZXcgfSwKLSAgICAg
ICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAs
IC8vIHNob3dQYWdlCisgICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBzaG93UGFnZQogICAgICAgICBjbG9z
ZU90aGVyUGFnZSwKLSAgICAgICAgMCwgLy8gdGFrZUZvY3VzCisgICAgICAgIG51bGxwdHIsIC8v
IHRha2VGb2N1cwogICAgICAgICBmb2N1cywKICAgICAgICAgdW5mb2N1cywKLSAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwg
Ly8gc2V0U3RhdHVzVGV4dAotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9k
ZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIG1pc3NpbmdQbHVnaW5CdXR0b25D
bGlja2VkCi0gICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50Ci0gICAgICAgIDAsIC8v
IGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKLSAgICAgICAgMCwgLy8gdG9vbGJhcnNBcmVWaXNpYmxl
Ci0gICAgICAgIDAsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBtZW51
QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKLSAgICAgICAg
MCwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c0JhcklzVmlz
aWJsZQotICAgICAgICAwLCAvLyBpc1Jlc2l6YWJsZQotICAgICAgICAwLCAvLyBzZXRJc1Jlc2l6
YWJsZQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRf
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNUZXh0
CisgICAgICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNr
ZWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVudAorICAgICAgICBudWxscHRyLCAvLyB0b29s
YmFyc0FyZVZpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0VG9vbGJhcnNBcmVWaXNpYmxl
CisgICAgICAgIG51bGxwdHIsIC8vIG1lbnVCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwg
Ly8gc2V0TWVudUJhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzdGF0dXNCYXJJc1Zp
c2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0U3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAg
IG51bGxwdHIsIC8vIGlzUmVzaXphYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldElzUmVzaXph
YmxlCiAgICAgICAgIGdldFdpbmRvd0ZyYW1lLAogICAgICAgICBzZXRXaW5kb3dGcmFtZSwKICAg
ICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAotICAgICAgICAwLCAvLyBkaWREcmF3
Ci0gICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKLSAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRh
YmFzZVF1b3RhCisgICAgICAgIG51bGxwdHIsIC8vIGRpZERyYXcKKyAgICAgICAgbnVsbHB0ciwg
Ly8gcGFnZURpZFNjcm9sbAorICAgICAgICBudWxscHRyLCAvLyBleGNlZWRlZERhdGFiYXNlUXVv
dGEKICAgICAgICAgcnVuT3BlblBhbmVsLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKLSAgICAg
ICAgMCwgLy8gZm9vdGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKLSAgICAgICAg
MCwgLy8gZHJhd0Zvb3RlcgorICAgICAgICBudWxscHRyLCAvLyBoZWFkZXJIZWlnaHQKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZm9vdGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGRyYXdIZWFk
ZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAog
ICAgICAgICBydW5Nb2RhbCwKLSAgICAgICAgMCwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9y
TWFpbkZyYW1lCi0gICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIK
LSAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdAotICAgICAgICAwLCAvLyBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQKLSAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gc2hvd0NvbG9y
UGlja2VyCi0gICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKLSAgICAgICAgMCwgLy8gcGlubmVkU3RhdGVEaWRD
aGFuZ2UKLSAgICAgICAgMCwgLy8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVBy
ZXNzCi0gICAgICAgIDAsIC8vIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzCi0gICAgICAgIDAs
IC8vIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwg
Ly8gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29tcGxl
dGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIHNhdmVEYXRhVG9G
aWxlSW5Eb3dubG9hZHNGb2xkZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW50ZXJydXB0
SmF2YVNjcmlwdAorICAgICAgICBudWxscHRyLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQK
KyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QKKyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvd0NvbG9y
UGlja2VyCisgICAgICAgIG51bGxwdHIsIC8vIGhpZGVDb2xvclBpY2tlcgorICAgICAgICBudWxs
cHRyLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICAgICAgbnVsbHB0ciwg
Ly8gcGlubmVkU3RhdGVEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5UcmFj
a2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY29n
bml6ZUxvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENhbmNlbFRyYWNraW5n
UG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNQbGF5aW5nQXVk
aW9EaWRDaGFuZ2UKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3QsCi0gICAgICAgIDAsIC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0b24KLSAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJt
Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gdW51c2Vk
NQorICAgICAgICBudWxscHRyLCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCisgICAgICAgIG51
bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0Q29uZmlybQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Cisg
ICAgICAgIG51bGxwdHIsIC8vIHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAg
ICAgICBydW5KYXZhU2NyaXB0QWxlcnQsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25m
aXJtCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0ciwg
Ly8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlw
dFByb21wdAogICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCi0gICAg
ICAgIDAsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAotICAgICAgICAwLCAvLyBmdWxs
c2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsCisgICAgICAgIG51bGxwdHIsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZQogICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2ssCi0gICAgICAgIDAsCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZExvc2VQb2ludGVyTG9jawogICAgIH07CiAgICAgV0tQYWdlU2V0UGFn
ZVVJQ2xpZW50KG5ld1BhZ2UsICZvdGhlclBhZ2VVSUNsaWVudC5iYXNlKTsKICAgICAKQEAgLTQx
MCwxNiArNDQwLDE2IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdl
KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwKLSAgICAgICAg
MCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8g
ZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZENvbW1pdE5hdmlnYXRpb24KLSAg
ICAgICAgMCwgLy8gZGlkRmluaXNoTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsTmF2
aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQot
ICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAgICAgICAgMCwgLy8gZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENo
YW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisg
ICAgICAgIG51bGxwdHIsIC8vIGRpZENvbW1pdE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkRmluaXNoTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2aWdh
dGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBy
ZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlLAogICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsCiAgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwKQEAgLTQyOCw5ICs0NTgsMTIgQEAgV0tQYWdl
UmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJl
bnRWaWV3LCBXS1BhZ2VDb24KICAgICAgICAgd2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAg
ICAgICBkaWRFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlv
bkdlc3R1cmVTbmFwc2hvdCwKLSAgICAgICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQot
ICAgICAgICAwLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZworICAgICAgICBudWxscHRyLCAvLyB3ZWJQ
cm9jZXNzRGlkVGVybWluYXRlCisgICAgICAgIG51bGxwdHIsIC8vIGNvbnRlbnRSdWxlTGlzdE5v
dGlmaWNhdGlvbgorICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
LAorICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkLAorICAgICAgICBudWxscHRyIC8vIGNv
bnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZp
Z2F0aW9uQ2xpZW50KG5ld1BhZ2UsICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIApAQCAt
NzUwLDE2ICs3ODMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2UsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQsCi0gICAgICAgIDAsIC8v
IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFN0
YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uCiAgICAgICAgIGRpZENvbW1pdE5hdmlnYXRpb24sCiAgICAgICAgIGRpZEZpbmlzaE5h
dmlnYXRpb24sCi0gICAgICAgIDAsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8v
IGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lCi0gICAgICAgIDAsIC8vIGRpZEZpbmlz
aERvY3VtZW50TG9hZAotICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCi0g
ICAgICAgIDAsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZEZhaWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNp
b25hbExvYWRJblN1YmZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3VtZW50
TG9hZAorICAgICAgICBudWxscHRyLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCisgICAg
ICAgIG51bGxwdHIsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCiAgICAgICAgIGNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgcHJvY2Vzc0RpZENyYXNoLApAQCAtNzY4LDI4
ICs4MDEsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25z
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICB3aWxsRW5kTmF2aWdhdGlvbkdl
c3R1cmUsCiAgICAgICAgIGRpZEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRSZW1v
dmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90LAotICAgICAgICAwLCAvLyB3ZWJQcm9jZXNzRGlk
VGVybWluYXRlCi0gICAgICAgIDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgotICAg
ICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisgICAgICAgIG51bGxw
dHIsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0ciwgLy8gY29udGVu
dFJ1bGVMaXN0Tm90aWZpY2F0aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcsCisgICAgICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCwK
KyAgICAgICAgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG51
bGxwdHIgLy8gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZAogICAgIH07CiAgICAgV0tQYWdl
U2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZU5hdmln
YXRpb25DbGllbnQuYmFzZSk7Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYxIGRvd25s
b2FkQ2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKLSAgICAgICAgZG93bmxvYWREaWRT
dGFydCwKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCi0g
ICAgICAgIDAsIC8vIGRpZFJlY2VpdmVSZXNwb25zZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZl
RGF0YQotICAgICAgICAwLCAvLyBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZQotICAg
ICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKLSAgICAgICAgMCwg
Ly8gZGlkQ3JlYXRlRGVzdGluYXRpb24KLSAgICAgICAgZG93bmxvYWREaWRGaW5pc2gsCi0gICAg
ICAgIGRvd25sb2FkRGlkRmFpbCwKLSAgICAgICAgZG93bmxvYWREaWRDYW5jZWwsCi0gICAgICAg
IDAsIC8vIHByb2Nlc3NEaWRDcmFzaDsKLSAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTAotICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29u
dGV4dCgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7CiAgICAgCiAgICAgLy8gdGhpcyBzaG91bGQg
anVzdCBiZSBkb25lIG9uIHRoZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50
VjEgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7CkBAIC0yMDc5LDQ1ICsyMDk4LDM1IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1BhZ2VS
ZWYgcGFnZSwgV0tBdXRoZW50CiB9CiAKIAotLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnQKLQot
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRTdGFydChjb250ZXh0LCBkb3dubG9hZCk7Ci19CisvLyBXS0Rvd25s
b2FkQ2xpZW50CiAgICAgCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRleHQsIGRvd25sb2FkLCBmaWxlbmFtZSwg
YWxsb3dPdmVyd3JpdGUpOwotfQotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZp
bmlzaChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goY29udGV4
dCwgZG93bmxvYWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoZG93bmxvYWQsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIH0KIAotdm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRG
YWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNo
KGRvd25sb2FkKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwo
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChjb250ZXh0LCBkb3du
bG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChkb3dubG9hZCwgZXJyb3IpOwogfQogCi12
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1
cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitib29sIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
VVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKGNvbnRleHQsIGRvd25sb2FkLCB1cmwpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgbmV3UmVxdWVzdCk7CiB9CiAKLXZv
aWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZFN0YXJ0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93
bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQo
IkRvd25sb2FkIHN0YXJ0ZWQuXG4iKTsKIH0KIAotV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSkK
K1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSkK
IHsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSB0b1dURlN0cmluZyhmaWxlbmFtZSk7
CiAKQEAgLTIxMzMsMjggKzIxNDIsMzMgQEAgV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwKICAgICBp
ZiAoIWR1bXBSZW5kZXJUcmVlVGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAq
YWxsb3dPdmVyd3JpdGUgPSB0cnVlOwogICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xkZXIgPSBTdHJp
bmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CiAgICAgaWYgKHN1Z2dlc3RlZEZpbGVu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSAiVW5rbm93biI7Cisg
ICAgCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3Vn
Z2VzdGVkRmlsZW5hbWU7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRp
b24pKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uKTsKIAotICAg
IHJldHVybiB0b1dLKHRlbXBvcmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lKS5s
ZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvV0soZGVzdGluYXRpb24pLmxlYWtSZWYoKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tEb3du
bG9hZFJlZikKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY29tcGxldGVkLlxu
Iik7CiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZiB1cmwpCitib29sIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxv
YWRSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQogeworICAgIGF1dG8gdXJsID0gYWRvcHRX
SyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3du
bG9hZENhbGxiYWNrcykKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCht
YWtlU3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFk
b3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOworICAgICAgICBtX2N1cnJl
bnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVj
dGVkIHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgp
KSkpLCAiXCIuXG4iKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JS
ZWYgZXJyb3IpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3dubG9h
ZFJlZiwgV0tFcnJvclJlZiBlcnJvcikKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENh
bGxiYWNrcykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3du
bG9hZCBmYWlsZWQuXG4iX3MpOwpAQCAtMjE2OCwxMyArMjE4Miw2IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJy
b3JSZWYgZXJyCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7
CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZikKLXsKLSAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNr
cykKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2Fu
Y2VsbGVkLlxuIik7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25l
KCk7Ci19Ci0KIHZvaWQgVGVzdENvbnRyb2xsZXI6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAg
Ly8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gY3Jhc2gg
bG9ncyBhcmUgYmVpbmcgc2F2ZWQgb24gV2luZG93cywgc28KQEAgLTI1MDQsNyArMjUxMSw3IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV0tO
YXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnCiAgICAgYXV0byBkZWNpc2lvbkZ1bmN0aW9uID0gW3No
b3VsZElnbm9yZSwgcmV0YWluZWRMaXN0ZW5lciwgcmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLCBz
aG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiA9IG1fc2hvdWxkU3dh
cFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24sIHNob3VsZFN3YXBUb0RlZmF1bHRT
ZXNzaW9uT25OZXh0TmF2aWdhdGlvbiA9IG1fc2hvdWxkU3dhcFRvRGVmYXVsdFNlc3Npb25Pbk5l
eHROYXZpZ2F0aW9uXSgpIHsKICAgICAgICAgaWYgKHNob3VsZElnbm9yZSkKICAgICAgICAgICAg
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShyZXRhaW5lZExpc3RlbmVyLmdldCgpKTsKLSAg
ICAgICAgZWxzZSBpZiAoV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKHJl
dGFpbmVkTmF2aWdhdGlvbkFjdGlvbi5nZXQoKSkpCisgICAgICAgIGVsc2UgaWYgKFdLTmF2aWdh
dGlvbkFjdGlvbkdldERvd25sb2FkQXR0cmlidXRlKHJldGFpbmVkTmF2aWdhdGlvbkFjdGlvbi5n
ZXQoKSkpCiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChyZXRhaW5l
ZExpc3RlbmVyLmdldCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoc2hvdWxk
U3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24gfHwgc2hvdWxkU3dhcFRvRGVm
YXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKaW5kZXggYjU3YjhmN2EwNTk1MjNlY2Y4NzdhYjAxOTcyMGQ0ZGJlNThmY2I1
Zi4uNzY4MWUxZTQxOWJhODk3ZDEyNTFlOThlMmIxZmFkMzlmYWY2ZjIyNSAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQyLDE5ICs0NDIsMTkgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZp
Z2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRp
ZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYpOwogCi0gICAgLy8g
V0tDb250ZXh0RG93bmxvYWRDbGllbnQKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFN0YXJ0
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93
bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092
ZXJ3cml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0gICAgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKTsKLSAgICBz
dGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYs
IGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQg
ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZik7
Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJl
ZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmKTsKKyAgICAvLyBX
S0Rvd25sb2FkQ2xpZW50CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2FkUmVm
LCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tEb3dubG9h
ZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25EaWRCZWNvbWVE
b3dubG9hZFNoYXJlZChXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3du
bG9hZERpZFN0YXJ0KFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1VSTFJl
c3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7CisgICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpOworICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAg
ICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lk
IGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBXS0RhdGFSZWYsIGNv
bnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vy
cm9yUmVmKTsKKyAgICBzdGF0aWMgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwg
Y29uc3Qgdm9pZCopOworICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYpOwogICAgIAogICAgIHN0YXRpYyB2
b2lkIHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwog
ICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTM0ZTk4ZjYxMDUzYWEwYzEzMzZi
ZjQyMzE0ZGE5ZDI5OGY0Mjg3OC4uYmUxYjFiNjgxNzEzNjQ1M2RkNzgwNjlmNzc1ZDdkYmJjODA2
NTZhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTExLTE4ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3du
bG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
dXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93
bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5v
ZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgTm93IHRoYXQgTmV0d29ya0RhdGFU
YXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUgZG9lc24ndCBzdWdnZXN0ICJ1bmtub3duIgorICAg
ICAgICB0aGUgY2FwaXRhbGl6YXRpb24gaGFzIGNoYW5nZWQgdG8gIlVua25vd24iIGZyb20gTlNV
UkxSZXNwb25zZSdzIHN1Z2dlc3RlZEZpbGVuYW1lLgorCiAyMDIwLTExLTE4ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2OTU5OCk6IFsg
TWFjIF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJl
ZGRlZC1jb250ZW50L3RoZS1pZnJhbWUtZWxlbWVudC9pZnJhbWUtbmV0d29yay1lcnJvci5zdWIu
aHRtbCBpcyBmbGFreSBmYWlsaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4
dAppbmRleCAwMmFmMmRlOWIxYzRiY2FjNTg2MmMxZGE1NmZiYjRiZTZhMTZkMmE5Li4zNzVjMTkx
MjlhZTYxYmEwNmU3ZDU0OGE4M2EzYjg2YTc2OTBiNjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3du
bG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93
bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3du
bG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25s
b2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhl
dGljLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhw
ZWN0ZWQudHh0CmluZGV4IGJlZGM4ZGRhMDFjOGMxMjM3ZTEwNmM2ODUzMzQwZjM3OTZmN2NlZTcu
LmM1MTE3Nzk1YTU4YzA4ZmJlZTA2Y2IzOTQzMWNkYzMxZDBkYjU5YTUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2Vy
LXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJl
ZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQg
c3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93
bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3du
Lmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUZXN0IHRoYXQgdXNlciB0cmlnZ2VyZWQgc3lu
dGhldGljIGNsaWNrcyBvbiBhbiBhbmNob3Igd2l0aCBhIGRvd25sb2FkIGF0dHJpYnV0ZSBhcmUg
bm90IGlnbm9yZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxl
Z2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDExMTQwZmQyMTg4N2I4NTEyMGRhYjE4M2Y5ZmQ5YjNkMGY0N2FjNWUu
LjEyMDI3YzNlMTBhZDhiMGMwMWJmYTdhNjExMjg2ZTg1NjI4YmU5MzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29u
dmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0
LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5h
bWUgInVua25vd24iCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVu
a25vd24iCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUaGUgZG93bmxvYWQgc2hvdWxkIHN1Y2NlZWQu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQt
dG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDExMTQwZmQyMTg4N2I4NTEyMGRhYjE4M2Y5
ZmQ5YjNkMGY0N2FjNWUuLjEyMDI3YzNlMTBhZDhiMGMwMWJmYTdhNjExMjg2ZTg1NjI4YmU5MzEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0
LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIERvd25sb2FkIHN0YXJ0
ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24iCitE
b3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24iCiBEb3dubG9h
ZCBjb21wbGV0ZWQuCiBUaGUgZG93bmxvYWQgc2hvdWxkIHN1Y2NlZWQuCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2Fk
LXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFjNGJj
YWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgzYTNi
ODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JF
bGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVj
dGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBV
Ukwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxl
dGVkLgogQmxvYiBVUkwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414532</attachid>
            <date>2020-11-18 20:00:11 -0800</date>
            <delta_ts>2020-11-19 09:51:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201118200010.patch</filename>
            <type>text/plain</type>
            <size>329831</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5OTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjNWZkNGY1ZjVjNmExYWFj
YTM3YzNmNThmOWRlMTkwYTEzYTI0ODMuLjU1ZTM1NmZiZmMwZWZhN2VhMmRkOGJhYzY2NGVmY2I1
Mzc4YTIwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX2Rvd25sb2FkRGlk
U3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlvbiBoYW5kbGVycyB0aGF0
IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBUaGVyZSdzIG5vIG5lZWQg
dG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2JqZWN0IGJlZm9yZSB0aGVu
IGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQgInN0YXJ0cyIgd2hpY2gg
aXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAgICAgICAgIHNvIHRoZXJl
IHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bmxv
YWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICA5LiAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNvbnRpbnVpbmcgb3IgY2Fu
Y2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250cm9sIHRoZQorICAgICAg
ICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAxMC4gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVSZXNwb25zZSBoYXZlIGJl
ZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lIGFu
ZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVkRmlsZW5hbWUgQVBJLiAg
YWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVzZWQsIGFuZCBub3QgcmVh
bGx5IG5lZWRlZC4KKyAgICAgICAgMTEuIGRpZENyZWF0ZURlc3RpbmF0aW9uIGlzIGdvbmUuICBU
aGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3NhcnkuICBJZiB5b3UgbmVlZCB0
byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBmaXJzdAorICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9uIGhhcyBkZWZpbml0ZWx5
IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMi4gc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNhbGxlZCBzaW5jZSB3ZSBh
ZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlLgorICAgICAgICAxMy4gb3JpZ2luYXRpbmdGcmFtZSBpcyBnb25lLiAgT24gX1dLRG93
bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUluZm8gdGhhdCBvZnRlbiBj
b250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9uIHdhcyB0aGVyZSwKKyAg
ICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZGlk
QmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlvblJlc3BvbnNlIHdoaWNo
IGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUgQVBJIHRlc3RzIGZvciBl
dmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tEb3dubG9hZEdldFR5cGVJRCk6
CisgICAgICAgIChXS0Rvd25sb2FkQ29weVJlcXVlc3QpOgorICAgICAgICAoV0tEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKToKKyAgICAgICAg
KFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKToKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHA6CisgICAgICAg
IChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZSk6CisgICAgICAgIChXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRG93bmxvYWQgY2Fu
Y2VsOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAg
ICAoLVtXS0Rvd25sb2FkIGRlbGVnYXRlXSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgc2V0RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb24gX3dhc1Vz
ZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVd
KToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9zaG91bGRQZXJmb3JtRG93bmxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0
b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJW
aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhE
b3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
Ol0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBjYW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJl
cXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6Cisg
ICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVE
YXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBk
ZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRE
aWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMjAtMTEtMTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBEcm9wIHJlZHVuZGFudCBjb2RlIHRoYXQgdHJpZXMgdG8gYnVtcCB0aGUgUW9TIG9mIHRoZSBX
ZWJDb250ZW50IG1haW4gdGhyZWFkIG9mIFVzZXJJbnRlcmFjdGl2ZSB3aGVuIGhhbmRsaW5nIGEg
c3luYyBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCAzZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFi
ZWMzZmZhMjEzOWEyLi45OGVhMDdkYWIxM2Q2ODk2NGZhNmEzZWYxYmFlYzJiN2UxYTA0NDY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktp
dC9IZWFkZXJzLmNtYWtlCkBAIC00MCwxNCArNDAsMTQgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJB
TUVXT1JLX0hFQURFUlMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHREb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEhpc3Rv
cnlDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNs
aWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRl
bnRpYWwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCi0gICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
Q2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCiAgICAgVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3
NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQyZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxv
YWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZWY8TmV0dwogICAg
IG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2FkSUQsIFdURk1v
dmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lk
IERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRT
dGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBhdXRvIGRvd25s
b2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsICpu
ZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgs
IFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAgLy8gRm9yIGNvbXBhdGli
aWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBzZW5kIERpZFN0YXJ0IGlm
IHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93bmxvYWREaWRTdGFydCA9
PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3dubG9hZC0+c2VuZChNZXNz
YWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsKKwogICAgIEFTU0VSVCgh
bV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFkZChk
b3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5k
ZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uYzQ4MWViNWY2ZDQy
OWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTYwLDYg
KzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3
b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBjbGFzcyBDYWxsRG93bmxv
YWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERvd25sb2FkTWFuYWdlciB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2VyKTsKIApAQCAtODYsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERv
d25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0
aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVu
Y2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChE
b3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAK
ICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRz
L2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggOTVmOGRlYzMwMjUxYjgwYmFhMjljZTU5MDg3
M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgRG93bmxv
YWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0U2Vy
aWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1Byb3Bl
cnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICNlbmRpZgog
CisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRhdGVkRGF0YSBvbmNlIHdl
J3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gV0tEb3dubG9hZAorICAgIC8vIGJlY2F1
c2UgdGhlcmUncyBubyByZWFzb24gdG8gc2V0IHRoZSBsb2NhbCBwYXRoIHdlIGdvdCBmcm9tIHRo
ZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0YS4KICAgICBtX2Rvd25sb2FkVGFzayA9IFtjb2NvYVNl
c3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5zZXNzaW9uIGRvd25sb2FkVGFza1dp
dGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gW21f
ZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5z
ZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5zKHRhc2tJZGVu
dGlmaWVyKSk7CkBAIC04Myw3ICs4NSwyMiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiB2b2lk
IERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKG1fZG93bmxvYWRUYXNrKTsKLSAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQ
cm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7Cisg
ICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQ
dHIoW3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2Fk
VGFza0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09S
S19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBN
b2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3Vt
ZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAg
IGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5p
dEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAg
W3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9s
aWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRO
UyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVP
YmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3Nd
LCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtO
U0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAg
ICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0
aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUlu
Zm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tl
eWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAg
ICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBb
ZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9Q
QVJBTShwYXRoKTsKKyNlbmRpZgogICAgICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSBy
ZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgfTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YVJlZmVyZW5j
ZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggOGQ4OTdhNDIzMGFmZTJlOThkZGRhOWM0
YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4MmM5ZTQ3M2JmMzVlMDNmZjNhNjJmNzA1ZDNlMWFjMjE2
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFza0Jsb2IuY3BwCkBAIC00NDYsMTAgKzQ0Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2Fu
CiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0
CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICByZXR1cm4gInVua25vd24iX3M7CisgICAg
cmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxv
Yjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAppbmRleCA4YTlkMmYzOTM5ZTcxODZiODFlOGE3ZWZkNGJiZWI1MGE2M2IyZjU5
Li5iNGViMTBhMDk4NDNmZmM2NDUzYTBjYzRhOWM3MmY0ZWJmOGVlNzhmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5ICsy
MDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93
bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1hbmFn
ZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBh
dGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0
aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3RhcnQp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRv
d25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDc5LDEwICsyMDc5LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYg
bmV0d29ya0RhdGFUYXMKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gbmV0d29ya0Rh
dGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkudG9VSW50NjQoKTsKIAotICAgIC8vIEFzIHBlciBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUg
ZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91
bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0d29y
a0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBN
SU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVk
RmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxl
bmFtZSA9IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogCiAgICAgZG93bmxv
YWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZSwg
c3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBuZXR3b3Jr
RGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdvcmtEYXRhVGFzayldIChTdHJpbmcmJiBkZXN0aW5hdGlv
biwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQWxs
b3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAgICAgICBhdXRvIGRvd25s
b2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmU1MjZlZmYxZThj
OTFkMzZlYTg5Yjg3ZTdiNTY3OTU4YTk1NmZiMi4uMjlkNGE2ODAwZWM2YWIwZDgwZGI4MzNkNTRk
MjdmMGQ1NzdiOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
OwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBDYWxs
RG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90
OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQyMSw3
ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9k
aWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZG93
bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7
CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAgdm9p
ZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lk
IHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmMDE5MDU2ZTViNTdmNTMz
NGI4Y2U3MzgyNmUyZmEwNTY4ODkzYmYuLmE5YmJlY2U1YWE4ZDg3YjM0OTMyYTYzOTJjZjVhZGUy
Nzg3OGUxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJzaXRl
RGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdEb21h
aW4sIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykg
LT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSkKLSAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0
YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJl
c3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRT
dGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRv
d25sb2FkSUQgZG93bmxvYWRJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKSBB
c3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmlu
ZGV4IDhhOGFiMGI5YjgzMWNhZjQ4ZmEyMjQ1MzA5OGFmYjI0YWFhOGY0ZGUuLmNiNjk2ZjMyYTkz
ZTVkNjZlYjcwY2QwNDhmZWIxNDE2YWI5NTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc2
OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2UKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBp
ZiAocmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUg
dGhlIGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4g
QWRkIGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVz
dW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5n
RmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAg
ICAgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxl
RGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBz
ZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNT
dHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNs
YXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVS
b290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBm
aW5pc2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dGFzay5f
cGF0aFRvRG93bmxvYWRUYXNrRmlsZSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9j
YWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFy
Y2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAg
ICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29k
ZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBhdXRvIHJlc3Vt
ZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0
aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwo
ZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRi
ZGI5Yjg2OTUuLmUyODcwYTBhZmRjOWY4NTE4ZTFkMjk0NzNjM2M1YjYzMjc1OTM4MTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3IEBA
IGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6
QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAn
V2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIiddLAog
ICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdvcmxk
U2hhcmVkLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1
ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpG
aW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3M2UxMDk5NGY1ZGMxMzdmYWY0MDZh
MjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJjZGUxOTIwZmI1MDRjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzAsNiArMzAsOCBAQAogI2lt
cG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9X
S0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50SW5m
by5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJlc3Vs
dC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAppbmRl
eCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3M2M1MmFjMTFlYjIyMjBhY2Y2Li40YTExMzY0NjExY2Zi
YzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBhdXRvIHRvQVBJKFQq
IHQpIC0+IEFQSVR5cGUKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihBUEk6
Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFQ
SVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88VD46OkFQSVR5cGU+CithdXRvIHRvQVBJKFQm
IHQpIC0+IEFQSVR5cGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihB
UEk6Ok9iamVjdDo6d3JhcCgmdCkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZT4KIGF1dG8gdG9J
bXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KaW5kZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4uN2Yw
NTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tDb250
ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2lt
cG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05T
QXJyYXkuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tG
cmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmplY3Q6
Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQgYWxs
b2NdOworICAgICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBicmVh
azsKIAogICAgIGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjRlYTRhZmJkNjlmMTgw
ZDc4ZTU5YmZhZTMyNWM0ZWY2NGY0NDkyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzc0LDcgKzM3NCw3
IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIu
Y3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tG
cmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEu
LjI0ODA1MzJlZWNlMWE0OTA0YmVkYzhjZGQ0ZTk3ZjFiYzk1NWI4NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRD
bGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1Li5k
ZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDksMTggKzQ5LDIw
IEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsK
IAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxl
Z2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWlu
dDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
eyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2go
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94
eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYmJhODU5YWYyZTQzNWU5ZjA5MjRmNGEzMmUxMTdkOTYz
OTVkYmY5NS4uMGM1NjRkNDQ1NGM4MmQ4OTU3YWZlYWU3NDdjMGI2ZjE3MGY2YmFmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCkBA
IC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0KICAg
ICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmln
YXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0aW9u
QWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzQnV0Tm90
QXBwTGlua3M7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5OjpTaG91bGRBbGxvdzsgfQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybURvd25sb2FkKCkgY29u
c3QgeyByZXR1cm4gIW1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNO
dWxsKCk7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25z
dCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9CiAg
ICAgYm9vbCBpc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0
YS5pc1JlZGlyZWN0OyB9CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0
aW9uKCkgeyBtX3Nob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2VuZGlm
CiAKKyAgICBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAgICBO
YXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyog
dGFyZ2V0RnJhbWUsIE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVS
TCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYm
IHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlv
bikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRi
ZTg4NmEwNzQyMmJmODNiN2FmY2ZjYmM2YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgxZTky
Y2VlNDkyNWZmNmFkZGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9y
aWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJh
bWVQcm94eTsKQEAgLTk5LDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBO
YXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgTmF2aWdhdGlvbkFjdGlvbiYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hh
bGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5YjdkZDMx
YTBjMmE5Y2ViZWQ0Zi4uMjYxMDE4OGE5NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAt
NTAsMTEgKzUwLDExIEBAIGNsYXNzIFBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVz
ZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAg
ICAgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMzYTVj
MjYwNzRlMjYyZDExMzRiYy4uZmZkMDdlOGNjZDhiMDQwNjcxNGVlODcxMGVjMjEzMDgwOWZlYzRl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC01
NSw5ICs1NSw2IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAK
IG5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4
dERvd25sb2FkQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRE
b3dubG9hZENsaWVudFYwLCBXS0NvbnRleHREb3dubG9hZENsaWVudFYxPiBWZXJzaW9uczsKLX07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJh
c2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYwPiBW
ZXJzaW9uczsKIH07CkBAIC0xNjgsOTAgKzE2NSw2IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9y
eUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNs
CiAgICAgfQogfQogCi12b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQot
ewotICAgIGNsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xp
ZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50
KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYg
Y29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1f
Y29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRl
eHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAg
ICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNw
b25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRS
ZWNlaXZlUmVzcG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwg
V2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3Qg
bGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEobV9jb250ZXh0LCBXZWJLaXQ6OnRv
QVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZShkb3dubG9hZFByb3h5LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
OjpObywgeyB9KTsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAg
ICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93
bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3Zlcndy
aXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDogV2Vi
S2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb24u
Z2V0KCkpKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdl
YktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBm
aW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3Rp
bmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRp
ZENyZWF0ZURlc3RpbmF0aW9uKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94
eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRGaW5pc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBt
X2NsaWVudC5kaWRGYWlsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAg
ICB9Ci0gICAgICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRDYW5jZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2FuY2VsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwcm9jZXNz
RGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2go
bV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3QobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2Vi
S2l0Ojp0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKLSAgICAgICAgfQotICAgICAgICBXS0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAg
IH07Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldExlZ2FjeURvd25sb2FkQ2xpZW50
KGFkb3B0UmVmKCpuZXcgTGVnYWN5RG93bmxvYWRDbGllbnQod2tDbGllbnQsIGNvbnRleHQpKSk7
Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQog
ewogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNs
aWVudCh3a0NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CmluZGV4IGRjMmUwZDE5MjMxNWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLjQzMTU2MGQ2
MDczNDViNTU2N2IyNzYxM2I5N2Q1MDEyZjZiMDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQu
aD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaD4KICNpbmNsdWRl
IDxXZWJLaXQvV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0Nv
bnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0
ZWQuaD4KQEAgLTEzOCw3ICsxMzcsNiBAQCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4
dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBX
S0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29u
dGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4
dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0
RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25s
b2FkQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5l
Y3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRl
eHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJl
ZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGZjZjk2YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2IzMmQxZDg3
NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAorKysgL2Rl
di9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQ29udGV4dERv
d25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9h
ZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4
dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNl
Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVk
ZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wgKCpXS0NvbnRleHREb3dubG9h
ZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tDb250ZXh0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrKShXS0Nv
bnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmls
ZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5
cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFj
aykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5n
UmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250
ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsKShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRD
cmFzaENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSB7Ci0gICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tDb250ZXh0
RG93bmxvYWRDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENs
aWVudFYwIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAg
V0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRTdGFydDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOwotICAgIFdLQ29udGV4dERvd25sb2FkU2hvdWxkRGVj
b2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3RpbmF0
aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9uOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkRmluaXNoOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmFpbENh
bGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbDsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZENhbmNlbDsKLSAgICBXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRDcmFz
aENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsKLX0g
V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRWMSB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAw
LgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVz
cG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9hZFNo
b3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZERl
Y29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVE
ZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0aW5h
dGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9hZERp
ZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWw7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9jZXNz
RGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlkQ3Jh
c2g7Ci0KLSAgICAvLyBWZXJzaW9uIDEuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3Q7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjE7Ci0KLSNlbmRpZiAvLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGMyODdiYjM0NzA0
NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmViZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJBUElB
cnJheS5oIgotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBUElEb3dubG9hZENsaWVu
dC5oIgotI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlICJEb3dubG9hZFByb3h5
LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KQotewotICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKLX0KLQotdWlu
dDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRv
SW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQotV0tEYXRhUmVmIFdL
RG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPmxlZ2FjeVJlc3VtZURhdGEoKSk7Ci19Ci0KLXZv
aWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVy
biB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqdG9JbXBsKGRv
d25sb2FkKSldIChhdXRvKikgewotICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlk
Q2FuY2VsKGRvd25sb2FkLmdldCgpKTsKLSAgICB9KTsKLX0KLQotV0tQYWdlUmVmIFdLRG93bmxv
YWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwotfQotCi1XS0Fy
cmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQotewotICAgIGF1dG8mIHJlZGlyZWN0Q2hhaW4gPSAgdG9JbXBsKGRvd25sb2FkKS0+cmVkaXJl
Y3RDaGFpbigpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAgIHVy
bHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWRpcmVjdENoYWluLnNpemUoKSk7Ci0gICAgZm9y
IChhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0Q2hhaW4pCi0gICAgICAgIHVybHMudW5jaGVj
a2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUocmVkaXJlY3RVUkwuc3RyaW5nKCkpKTsKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMpKS5sZWFrUmVmKCkp
OwotfQotCi1ib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0
ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmNzIwMjc5M2Q1NGY1NDJhMzkwOTIwNGEzYzgw
ZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0Rvd25sb2FkX2gKLSNk
ZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVk
ZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVk
ZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKLQot
V0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KSBXS19DX0FQSV9ERVBSRUNBVEVEOwotV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25s
b2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tEYXRh
UmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tf
RVhQT1JUIHZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdL
X0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJl
Y3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93bmxv
YWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotCi0jaWZkZWYg
X19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV0tEb3dubG9hZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWE2OGFiNmEwMTMzZjU3OGVjNTg5Mzc2NmEwMGYwZjdkNDVhNjkwNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Rvd25sb2FkQ2xpZW50X2gK
KyNkZWZpbmUgV0tEb3dubG9hZENsaWVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+
CisKK3R5cGVkZWYgYm9vbCAoKldLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiko
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxS
ZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2
b2lkICgqV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBjaGFsbGVuZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLRG93bmxv
YWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFdy
aXRlRGF0YSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgbG9uZyBsb25nIGJ5dGVzV3JpdHRlbiwg
bG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rvd25s
b2FkRGlkRmluaXNoKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRGYWlsV2l0aEVycm9yKShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLRG93bmxvYWRDbGll
bnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS0Rvd25sb2Fk
Q2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tEb3dubG9hZENsaWVudFYwIHsKKyAgICBX
S0Rvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tEb3dubG9hZFdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbjsKKyAgICBXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBXS0Rv
d25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgICAgICAgICAgICAgICAgICAgIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOworICAgIFdLRG93bmxvYWREaWRXcml0ZURhdGEg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3JpdGVEYXRhOworICAgIFdL
RG93bmxvYWREaWRGaW5pc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlkRmluaXNoOworICAgIFdLRG93bmxvYWREaWRGYWlsV2l0aEVycm9yICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkRmFpbFdpdGhFcnJvcjsKK30gV0tEb3dubG9hZENsaWVudFYw
OworCisjZW5kaWYgLyogV0tEb3dubG9hZENsaWVudF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MDNmOGI2NGU4
ODJhNjdiMjNiZDM0NmI3N2MwNzg0MmEwNTFmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcApAQCAtMCwwICsxLDE1MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2Fk
UmVmLmgiCisKKyNpbmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNp
bmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIK
KyNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5j
bHVkZSAiV0tEb3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCitu
YW1lc3BhY2UgQVBJIHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0Rvd25sb2Fk
Q2xpZW50QmFzZT4geworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0Rvd25sb2FkQ2xpZW50VjA+
IFZlcnNpb25zOworfTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQg
V0tEb3dubG9hZEdldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKERvd25sb2FkUHJveHk6
OkFQSVR5cGUpOworfQorCitXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVl
c3Q6OmNyZWF0ZSh0b0ltcGwoZG93bmxvYWQpLT5yZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Cit9CisK
K3ZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lk
KiBmdW5jdGlvbkNvbnRleHQsIFdLRG93bmxvYWRDYW5jZWxDYWxsYmFjayBjYWxsYmFjaykKK3sK
KyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+Y2FuY2VsKFtmdW5jdGlvbkNvbnRleHQsIGNh
bGxiYWNrXShhdXRvKiByZXN1bWVEYXRhKSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHRvQVBJKHJlc3VtZURhdGEpLCBmdW5jdGlvbkNvbnRleHQpOworICAg
IH0pOworfQorCitXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5v
cmlnaW5hdGluZ1BhZ2UoKSk7Cit9CisKK2Jvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0
ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2Fk
KS0+d2FzVXNlckluaXRpYXRlZCgpOworfQorCit2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAg
ICBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0Rvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLRG93bmxvYWRDbGllbnRCYXNlKiBj
bGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBvdmVycmlkZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkgeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNv
bXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh0b0FQSShkb3dubG9hZCksIHRvQVBJKGNoYWxsZW5nZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVz
V3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGUpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkV3JpdGVEYXRhKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY2xpZW50LmRpZFdyaXRlRGF0YSh0b0FQSShkb3dubG9hZCksIGJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdURjo6U3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFs
bG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBBUEk6OlN0cmluZyogZGVzdGluYXRpb24gPSB0b0ltcGwo
bV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UodG9BUEkoZG93bmxvYWQpLCB0
b0FQSShyZXNwb25zZSksIHRvQVBJKHN1Z2dlc3RlZEZpbGVuYW1lLmltcGwoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbykpOworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5v
LCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5h
dGlvbi0+c3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKGRvd25sb2FkKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmFpbChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRhKSBvdmVycmlkZQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcih0b0FQSShkb3du
bG9hZCksIHRvQVBJKGVycm9yKSwgdG9BUEkocmVzdW1lRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAg
ICAgICBkaWRGYWlsKGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgpLnVybCgpLCAi
TmV0d29yayBwcm9jZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIiB9LCBudWxscHRyKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24odG9BUEko
ZG93bmxvYWQpLCB0b0FQSShyZXNwb25zZSksIHRvQVBJKHJlcXVlc3QpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAg
ICB0b0ltcGwoZG93bmxvYWQpLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVu
dChjbGllbnQpKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0Rvd25sb2FkUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkUmVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDQ3ZmZhODk1ZTJlNTU5NWM4N2NhYTQ3YzdlMWUxOGMxYmRj
YjM4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWRSZWYuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxv
YWRDbGllbnQuaD4KKworI2lmbmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGJvb2wuaD4K
KyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1dL
X0VYUE9SVCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBXS1VS
TFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
OworCit0eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2spKFdLRGF0YVJlZiBy
ZXN1bWVEYXRhLCBjb25zdCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQg
V0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBmdW5j
dGlvbkNvbnRleHQsIFdLRG93bmxvYWRDYW5jZWxDYWxsYmFjayBjYWxsYmFjayk7CitXS19FWFBP
UlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCk7CitXS19FWFBPUlQgYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChX
S0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRTZXRDbGll
bnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcAppbmRleCA4ZmYz
N2U1Yzg3YmU4NDcyMWNiMWE4MDgzZjNhMjBmMTU1OWE1NTAxLi5lMTM3MDZkZTUwM2M5N2E1MzYy
ODc1YjVhNzZiNDkwNDEwZmIzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKQEAgLTM2LDcgKzM2LDEwIEBA
IFdLVHlwZUlEIFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJ
KEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6QVBJVHlwZSk7CiB9CiAKLWJvb2wgV0tOYXZpZ2F0aW9u
QWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24p
CitXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZShXS05h
dmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQogewotICAgIHJldHVybiB0b0ltcGwoYWN0aW9uKS0+
c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAgYXV0byYgYXR0cmlidXRlID0gdG9JbXBsKGFj
dGlvbiktPmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKGF0dHJpYnV0ZS5pbXBs
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZp
Z2F0aW9uQWN0aW9uUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmln
YXRpb25BY3Rpb25SZWYuaAppbmRleCA5ZDhmY2YxZTE5OTcxM2IxZjA5YjMyNjIwZDIxNTc5MjQ1
NDg2ZTljLi40YzEzZDYzOWJkN2FmMjY5MTBjM2Q3MDIzNzNkNjU0NjE1M2I5NTMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25S
ZWYuaApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlE
IFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgYm9vbCBXS05hdmln
YXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmKTsK
K1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJp
YnV0ZShXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVz
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwNjQ4MjZj
YjI1ZTM1NjRhMTMwNWQ0MzRiMzg0MGFhMzRlZmZjOTZkLi5jOWU4YjMyNjM0ZGE4ZTgwODhjOTIz
YTE2ZDlhYjQyYTY4NWI4ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAj
aW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5o
IgpAQCAtMTI0MCw3ICsxMjQxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdL
UGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJGcmFtZVByb3h5KiBv
cmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNl
UmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBXZWJGcmFt
ZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0
ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVj
YXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAt
MTI1MSwxNCArMTI1MiwxNCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgICAgICBS
ZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVz
b3VyY2VSZXF1ZXN0KTsKIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKLSAgICAgICAgICAgICAg
ICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZp
ZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShyZXF1
ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlv
blR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEko
bmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIo
KSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pOwogICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKQotICAgICAgICAgICAg
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2Rp
ZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9y
aWdpbmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRy
KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNh
dGVkRm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0
aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
LT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNl
QnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0
b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNl
QnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5w
dHIoKSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJ
KHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSks
IHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQ
SShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZjxB
UEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOwpAQCAtMTI2Nyw3ICsxMjY4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9s
aWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNl
KgogCiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxS
ZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAotICAgICAgICAgICAgbV9jbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1l
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5t
b3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgp
KSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRh
KCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9u
KSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZyYW1lTmFtZS5pbXBsKCkpLCB0b0FQSShs
aXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCkBAIC0yMjU5LDYgKzIyNjAsMjcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdh
dGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUK
ICAgICAgICAgICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+
c3RyaW5nKCksIHVybCkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uQWN0
aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2
aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBv
dmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25B
Y3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBh
Z2UpLCB0b0FQSSgmYWN0aW9uKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlJiByZXNwb25zZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh0b0FQSSgm
cGFnZSksIHRvQVBJKCZyZXNwb25zZSksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNvbnRleHRNZW51RGlkQ3Jl
YXRlRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9j
bGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKHRv
QVBJKCZwYWdlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJQ
YWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAppbmRleCAzODA2ZDE4
NmFhOWZiOTc3NDdhNzNkOTczNjA2YTU4ZWI0MTg4YjYwLi5hNGFhZmU0YTkzNWIzMTBhMjIwMWJm
N2I0Zjc0NTY1ZTU1MmI4NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCkBAIC03MSw3ICs3MSwxMyBAQCB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uV2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZUNhbGxiYWNr
KShXS1BhZ2VSZWYgcGFnZSwgVwogdHlwZWRlZiBXS0RhdGFSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9u
Q29weVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9u
Q29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgCisKK3R5cGVkZWYgdm9pZCAoKldL
UGFnZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0eXBlZGVmIHZvaWQgKCpX
S1BhZ2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrKShXS1BhZ2VS
ZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdhdGlvblJlc3BvbnNlLCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiB2
b2lkICgqV0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworCiB0eXBlZGVmIFdLUGx1Z2luTG9hZFBvbGljeSAoKldLUGFnZU5hdmlnYXRp
b25EZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1Bs
dWdpbkxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIFdLRGljdGlvbmFyeVJlZiBw
bHVnaW5JbmZvRGljdGlvbmFyeSwgV0tTdHJpbmdSZWYqIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRp
b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZp
Z2F0aW9uRGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwpAQCAtMjEzLDYgKzIxOSw5IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFn
ZU5hdmlnYXRpb25DbGllbnRWMyB7CiAKICAgICAvLyBWZXJzaW9uIDMuCiAgICAgV0tQYWdlTmF2
aWdhdGlvbkNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjayBjb3B5
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nOworICAgIFdLUGFnZU5hdmlnYXRpb25B
Y3Rpb25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVE
b3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZENh
bGxiYWNrIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkOworICAgIFdLUGFnZU5h
dmlnYXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2sgY29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZDsKIH0gV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzOwogCiAjaWZkZWYg
X19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViNmYxMzE3NzMxNzNiZDI3ZGZhODEzNTY0OGExZjA3NWIxYzQ4
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKwor
QGNsYXNzIFdLRnJhbWVJbmZvOworQHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAor
CisvKiBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2Fk
LgorICBAZGlzY3Vzc2lvbiBJZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEg
ZGlmZmVyZW50IFVSTCwgb3JpZ2luYWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVy
IHRoZSBkb3dubG9hZCBmb2xsb3dzIHRoZSByZWRpcmVjdC4KKyovCitAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsK
KworLyogQGFic3RyYWN0IFRoZSBkZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0
ZXMgZm9yIHRoaXMgZG93bmxvYWQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQg
PFdLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhl
IGRvd25sb2FkLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3
aGVuIGNhbmNlbGxhdGlvbiBpcyBmaW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUbyBhdHRlbXB0IHRv
IHJlc3VtZSB0aGUgZG93bmxvYWQsIGNhbGwgV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERh
dGE6IHdpdGggdGhlIGRhdGEgZ2l2ZW4gdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLgorIElmIG5v
IHJlc3VtZSBhdHRlbXB0IGlzIHBvc3NpYmxlIHdpdGggdGhpcyBzZXJ2ZXIsIGNvbXBsZXRpb25I
YW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggbmlsLgorKi8KKy0gKHZvaWQpY2FuY2VsOih2b2lk
KF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29tcGxldGlvbkhh
bmRsZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MmE5OTQ1
NDE5MDc3YmQ5NDk4N2RhMDJiY2E0MjM5ZjgxODEzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAtMCwwICsxLDIy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZEludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5Lmgi
CisjaW1wb3J0ICJXS0Rvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisj
aW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2Vi
Vmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1
YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9h
ZENsaWVudChpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2Rl
bGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2Fk
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAg
ICwgbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAg
ICwgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChb
bV9kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNo
OildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1
bWVEYXRhOildKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJl
cXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0
cjxOU1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6
OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21f
ZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb246c3RhdGljX2Nhc3Q8TlNIVFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNw
b25zZSgpKSBuZXdSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rv
cihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9u
SGFuZGxlcjopKV0oV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Cisg
ICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAg
ICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIFdLRG93
bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9u
IGZvcm1hdDpAIkludmFsaWQgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcp
cG9saWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hh
bGxlbmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3Bv
bmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1
cm4gY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250
aW51ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdl
KSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3Jl
ZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0
Y2ggKGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNy
ZWRlbnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZh
dWx0SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBs
ZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVD
aGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5j
ZWwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAgICAgIGNo
YWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZv
cm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQp
IiwgKGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07
CisgICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3Ry
aW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9k
ZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpCisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZTo6Tm8sIHsgfSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZCkgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVy
Om1ha2VCbG9ja1B0cihbZG93bmxvYWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCks
IEBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0
ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMICpkZXN0aW5hdGlvbikgbXV0
YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVu
Q2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+
ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRp
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWRl
c3RpbmF0aW9uLmlzRmlsZVVSTCkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIFtOU0V4
Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5h
dGlvbiBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgICAgICAgICAgaWYgKCFbZmlsZU1hbmFn
ZXIgZmlsZUV4aXN0c0F0UGF0aDpbZGVzdGluYXRpb24gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29t
cG9uZW50XS5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fu
bm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6
Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0aW5hdGlvbi5wYXRo
XSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRd
IHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmls
ZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBh
dGgpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4s
IHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3Bv
bmRzVG9EaWRXcml0ZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVs
ZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZvaWQgZGlk
RmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFw
cGVyKGRvd25sb2FkKV07CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBB
UEk6OkRhdGEqIHJlc3VtZURhdGEpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFp
bFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3VtZURhdGEp
XTsKKyAgICB9CisKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJv
eHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFt
X3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJy
b3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVy
cm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0IHVzZXJJbmZvOm5pbF0gcmVzdW1lRGF0YTpuaWxdOwor
ICAgIH0KKworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gbV9kZWxl
Z2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24g
OiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CisgICAgYm9v
bCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmFp
bFdpdGhFcnJvciA6IDE7Cit9OworCitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZAorCistICh2
b2lkKWNhbmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlmIChjb21w
bGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0
YSkpOworICAgIH0pOworfQorCistIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKK3sK
KyAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoaWQgPFdL
RG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgp
LmdldCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRl
PilkZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+
c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisK
Ky0gKHZvaWQpZGVhbGxvYworeworICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAg
ICBbc3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBp
bXBsZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVy
biAqX2Rvd25sb2FkOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1MzI4NDgw
ODFhYTgzNmMzNGMwZjgzMDA1N2RiMDM5YjM3OWJjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsK
KworLyogQGVudW0gV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xp
Y3kgdG8gcGFzcyBiYWNrIHRvIHRoZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2Fk
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBt
ZXRob2QuCisgQGNvbnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNl
bCB0aGUgcmVkaXJlY3QuCisgQGNvbnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93
ICAgIEFsbG93IHRoZSByZWRpcmVjdC4KKyovCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBX
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpIHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lD
YW5jZWwsCisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCisKK0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0Pgor
QG9wdGlvbmFsCisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBy
ZWNlaXZlZCBhbiBIVFRQIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBU
aGUgZG93bmxvYWQgdGhhdCByZWNlaXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNl
IFRoZSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJl
cXVlc3QgdGhhdCB3aWxsIGJlIHNlbnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBj
b21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Ig
bm90CisgdG8gcHJvY2VlZCB3aXRoIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5
b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVk
aXJlY3RzIHdpbGwgYmUgdGFrZW4uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAq
KXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsK
KworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9u
ZCB0byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBk
b3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBh
cmFtIGNoYWxsZW5nZSBUaGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjb21w
bGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byBy
ZXNwb25kIHRvIHRoZSBjaGFsbGVuZ2UuIFRoZQorIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9u
ZSBvZiB0aGUgY29uc3RhbnRzIG9mIHRoZSBlbnVtZXJhdGVkIHR5cGUKKyBOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsCisgdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMg
dGhlIGNyZWRlbnRpYWwgdG8gdXNlLCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRo
b3V0IGEKKyBjcmVkZW50aWFsLgorIEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50
IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2Ugd2l0aCB0aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFBy
b3RlY3Rpb25TcGFjZSBkaXNwb3NpdGlvbi4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2Vk
IHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNoIHdlIG5l
ZWQgYSBmaWxlIHRvIHdoaWNoIHRvIHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUgc2VydmVy
IHJlc3BvbnNlLCBpZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVx
dWVzdC4KKyBAcGFyYW0gc3VnZ2VzdGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4K
KyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVz
dCBpbnZva2Ugd2l0aAorIGVpdGhlciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBv
ciBuaWwgdG8gY2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEg
ZG93bmxvYWQgb2YgYSBibG9iIFVSTCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVk
RmlsZW5hbWUKKyB3aWxsIG9mdGVuIGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZp
bGVuYW1lLCBidXQgd2ViIGNvbnRlbnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVkIGRvd25s
b2FkIGZpbGVuYW1lLiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBp
dCBtdXN0IGJlIGEgZmlsZQorIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhh
dCBkb2VzIGV4aXN0IGFuZCBjYW4gYmUgd3JpdHRlbiB0by4KKyovCistICh2b2lkKWRvd25sb2Fk
OihXS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51
bGxhYmxlIE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJp
bmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwg
KiBfTnVsbGFibGUgZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJh
Y3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0
YSB0byB0aGUgZGVzdGluYXRpb24uCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0
IGhhcyB3cml0dGVuIGRhdGEuCisgQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5
dGVzIHdyaXR0ZW4uCisgQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIg
b2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUg
dG90YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Np
b24gSWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3Vz
IGRvd25sb2FkLCB0aGVuCisgdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4g
cGx1cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVk
LgorIElmIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZSB3aWxsIGJlIC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworLyogQGFic3RyYWN0
IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KKyBA
cGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgZmluaXNoZWQuCisqLworLSAodm9pZClk
b3dubG9hZERpZEZpbmlzaDooV0tEb3dubG9hZCAqKWRvd25sb2FkOworCisvKiBAYWJzdHJhY3Qg
SW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgZmFpbGVkLgorIEBwYXJhbSBkb3dubG9hZCBU
aGUgZG93bmxvYWQgdGhhdCBoYXMgZmFpbGVkLgorIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgaW5k
aWNhdGluZyB0aGUgZmFpbHVyZSByZWFzb24uCisgQHBhcmFtIHJlc3VtZURhdGEgVGhpcyBkYXRh
IGNhbiBiZSBwYXNzZWQgdG8gV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHRvIGF0
dGVtcHQgdG8gcmVzdW1lIHRoaXMgZG93bmxvYWQuCisqLworLSAodm9pZClkb3dubG9hZDooV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1
bWVEYXRhOihudWxsYWJsZSBOU0RhdGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIw
MjU0MDVjYjMzYjdhOWQ3YzRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxv
YWQuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBX
cmFwcGVyQ2xhc3MgPSBXS0Rvd25sb2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxv
YWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJL
aXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3du
bG9hZERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFi
OTE1N2Q4MDNhNGZiYWViMTM4YjczYmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhi
NmFkMzRmYzYxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbi5tbQpAQCAtNDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRp
b24tPm9yaWdpbmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0
ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0
aWF0ZWQKK3sKKyAgICByZXR1cm4gX25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30K
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZl
Q29udGVudE1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25BY3Rpb24uaAppbmRleCA5MzQwNzBlM2RlNDQ5ODJmNTcyYmQ1YTE4OGQx
MGNiNDljZjcyMTFmLi45MmVmMGZmNGU4MTY4Zjg1NzJkNzM4ODhjYjZhMDk3ODQ3YjIyZGM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvbkFjdGlvbi5oCkBAIC03Niw2ICs3NiwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
MTAuMTApLCBpb3MoOC4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CiAKKy8qISBAYWJzdHJhY3QgVGhlIGRvd25sb2Fk
IGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCB0aGF0IGNhdXNlZCB0aGlzIG5hdmlnYXRpb24uCisq
LworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJp
bmcgKmRvd25sb2FkQXR0cmlidXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CisKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogCiAvKiEgQGFic3Ry
YWN0IFRoZSBtb2RpZmllciBrZXlzIHRoYXQgd2VyZSBpbiBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdh
dGlvbiB3YXMgcmVxdWVzdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXggNGQyMGM4MGNlYzI2YTdjMjg2
OTJhYTg2ZDM0YjQwYTZiNzUwZjBiZS4uYmJlZThmZTZiZmVlYTkwODczNzYxZWI5ZWVkYzYxOWEz
NjZlZTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCkBAIC0xMTYsNiArMTE2LDE0IEBAIHN0YXRpYyBXS1N5
bnRoZXRpY0NsaWNrVHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91c2VF
dmVudDo6U3ludGhlCiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7
CiB9CiAKKy0gKE5TU3RyaW5nICopZG93bmxvYWRBdHRyaWJ1dGUKK3sKKyAgICBhdXRvJiBhdHRy
aWJ1dGUgPSBfbmF2aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAo
YXR0cmlidXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBhdHRy
aWJ1dGU7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoV0tTeW50aGV0aWNDbGlj
a1R5cGUpX3N5bnRoZXRpY0NsaWNrVHlwZQogewpAQCAtMTg3LDcgKzE5NSw3IEBAIHN0YXRpYyBX
S1N5bnRoZXRpY0NsaWNrVHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91
c2VFdmVudDo6U3ludGhlCiAKIC0gKEJPT0wpX3Nob3VsZFBlcmZvcm1Eb3dubG9hZAogewotICAg
IHJldHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAg
cmV0dXJuICFfbmF2aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051bGwoKTsK
IH0KIAogLSAoQk9PTClfc2hvdWxkT3BlbkV4dGVybmFsVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2
YXRlLmgKaW5kZXggODVmZDk2ZTRkZDBmZWZlNmJjZjdmZWU5ZDc4YzVlOTkyZjViYzM3Mi4uNTNj
YzVhOTdjN2VhOTI1NGEzMjUwNGE0ZGU2NGY2YzNmZjNlNWE2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9u
UHJpdmF0ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdL
U3ludGhldGljQ2xpY2tUeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgX2NhbkhhbmRsZVJlcXVlc3Q7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJP
T0wgX3Nob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MSksIGlvcyg5LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hv
dWxkT3BlbkFwcExpbmtzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3du
bG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoImRvd25sb2FkQXR0cmlidXRlIiwgbWFjb3Mo
MTAuMTUsIFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHMgV0tfQVBJ
X0RFUFJFQ0FURUQoInVzZSBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBhbmQgX3Nob3VsZE9w
ZW5BcHBMaW5rcyIsIG1hY29zKDEwLjExLCAxMC4xMSksIGlvcyg5LjAsIDkuMCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25E
ZWxlZ2F0ZS5oCmluZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2UxYmUzNTEwZWI4ODRhMDU4Nzgu
LjE2OGI3OWVjZTA2OGY4YmNjZmE2Y2FiMGMwMWZlODFlM2U2YjI1ODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0
ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFz
cyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25B
Y3Rpb247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBAIC00MCwyMCArNDEsMjQgQEAg
TlNfQVNTVU1FX05PTk5VTExfQkVHSU4KICB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8g
Y29udGludWUuCisgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25s
b2FkICAgIFR1cm4gdGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICAgICBXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWxsb3csCisgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEBlbnVtIFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5CiAgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRv
IHRoZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBA
Y29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2
aWdhdGlvbiB0byBjb250aW51ZS4KKyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCAgICBUdXJuIHRoZSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4K
ICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpIHsKICAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCwKICAgICBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93LAorICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsK
IAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgcHJv
dG9jb2wgY2FuIHByb3ZpZGUKQEAgLTE2NCw2ICsxNjksMjIgQEAgdHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAqLwogLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93RGVwcmVjYXRlZFRM
Uzoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qCisgQGFic3RyYWN0IENhbGxlZCBh
ZnRlciB1c2luZyBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFy
YW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFy
YW0gbmF2aWdhdGlvbkFjdGlvbiBUaGUgYWN0aW9uIHRoYXQgaXMgYmVpbmcgdHVybmVkIGludG8g
YSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkLgorKi8KKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
b25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2Fk
ICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2
aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25z
ZSBUaGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBw
YXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKilu
YXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9h
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0
ZS5oCmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1YjUuLjk5MTNk
MTZjMGE5NzYwNDk5NDY0Y2M0M2ViYTNlNGYxOWU3ZDBkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmgKQEAgLTU4LDExICs1OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9u
TG9hZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygx
My4wKSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdh
dGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBf
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCAr
IDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgi
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tf
TUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3Mo
OS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsg
PSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyArIDIpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lBbGxvd0luTmV3UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKLXN0YXRp
YyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAs
IFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOwogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIApAQCAtODgsNiArODgsOCBAQCBzdGF0
aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZSBzaG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTmVnb3RpYXRl
TW9kZXJuVExTOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0gKHZvaWQpX3dlYlZpZXdEaWRCZWdpbk5hdmln
YXRpb25HZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogLy8gSXRlbSBpcyBuaWwgaWYgdGhl
IGdlc3R1cmUgZW5kZWQgd2l0aG91dCBuYXZpZ2F0aW9uLgogLSAodm9pZClfd2ViVmlld0RpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2
YXRlLmgKaW5kZXggOTE1ODlkMTJhNDIzN2NkNzNiYjczZWQ1Yzk3YjYxYzE3YTFmMTM5Yy4uYTdh
N2Q5MjlkZmY4NzA0M2U3ZjNhNjAzZjY4ZGU0MDdkMGQzMGFjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCkBA
IC0yNyw0ICsyNyw1IEBACiAKIEBpbnRlcmZhY2UgV0tOYXZpZ2F0aW9uIChXS1ByaXZhdGUpCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqX3JlcXVl
c3Q7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3dhc1VzZXJJbml0aWF0
ZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2wubW0KaW5kZXggNGYzNmUyMzI2NDM3MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4NTlkYy4u
ZmFlMzFmMzFiNzk5MTIxZDBlMTczN2NkMDcyMTA4NTQ5ODAyMjAzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTI4LDEx
ICsyOCwxMyBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNo
ZU1vZGVsLmgiCisjaW1wb3J0ICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbXBvcnQgIkxlZ2FjeURv
d25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9j
ZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlH
YW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
S1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgpAQCAtNDgxLDEyICs0ODMsMTIgQEAgc3RhdGlj
IFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFByb2Nlc3NQb29sOwogCiAtIChfV0tEb3dubG9hZCAqKV9k
b3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93
bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVx
dWVzdCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3Jl
LCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jl
c3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGgg
b3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdy
YXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURh
dGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5n
KHJlc3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRh
dGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpj
cmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxs
RG93bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3Jp
Z2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCmluZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2EwMzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYy
NDk4MGM5Y2ZmNjdlY2QzYmVkZTczZmUyNDAwODE4YWE1MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNl
dHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93
bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERv
d25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdh
dGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZC5kb3dubG9h
ZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJB
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVs
ZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFSR0VUX09T
X0lQSE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAqKV9kb3du
bG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZToo
V0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJ
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJlcXVlc3Qi
LCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9X
S0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEg
d2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihO
U1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdL
X0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5fcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSks
IGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVk
IG9ubHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9p
ZClfdGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCks
IGlvcygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3LmgKaW5kZXggNzYxYTFkYTBmNjViMzY5OTdiYWI0OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uNmNj
OGE3NDgxMDg2NTYzNThjMmRlODgyZDY3NGYxZjM5MzM5MTEwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdL
QmFja0ZvcndhcmRMaXN0SXRlbTsKIEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rv
d25sb2FkOwogQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0
OwogQGNsYXNzIFdLRnJhbWVJbmZvOwpAQCAtNDUwLDYgKzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0
eXBlIGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxh
dGVkIHBhc3RlYgogICovCiArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJs
U2NoZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvKiBA
YWJzdHJhY3QgQmVnaW5zIGEgZG93bmxvYWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRs
eSBkaXNwbGF5ZWQgd2VicGFnZSBhcyBpZiB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVk
IGEgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQgaW5zdGVhZAorIEBwYXJhbSByZXF1ZXN0IFRo
ZSByZXF1ZXN0IHNwZWNpZnlpbmcgdGhlIFVSTCB0byBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxl
dGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQu
CisgKi8KKy0gKHZvaWQpc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKworLyogQGFic3RyYWN0IFJlc3VtZXMgYSBkb3dubG9hZCB0aGF0IGZhaWxlZCBvciB3
YXMgY2FuY2VsbGVkLgorIEBwYXJhbSByZXN1bWVEYXRhIERhdGEgZnJvbSBhIFdLRG93bmxvYWRE
ZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3IgYSBXS0Rvd25sb2FkJ3MgY2FuY2VsIGNvbXBs
ZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3
aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4KKyAqLworLSAodm9pZClyZXN1bWVEb3dubG9h
ZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0
eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRpc2N1c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlw
ZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwgdmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0
eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBuaWwgd2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFs
dWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDljNjc0Li4xYjQ0NDRhNTYy
MjdhODIzN2Y0YWFkOTAyMmY1M2MyYTJhYTIzY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0
ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
IgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJl
c3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJXS0ZyYW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQg
IldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAj
aW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5oIgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0
aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90
aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwg
TUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykp
OwogfQogCistICh2b2lkKXN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICop
cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93
bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZXN1bWVEb3dubG9hZFdp
dGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdL
RG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6
cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1
cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgTlNE
aWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2Vz
OltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xh
c3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwg
W05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXll
ZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2Rpbmdd
OworICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiTlNVUkxT
ZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYgKCFwYXRoKQorICAgICAgICBb
TlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52
YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURT
KQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxvYWQgaWYg
dGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIHNvbWVvbmUgaGFzIHJl
bW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0aGF0IGxv
Y2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBbW05TRGF0YSBkYXRhXSB3cml0ZVRvRmlsZTpwYXRo
IGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgorCisgICAgX3BhZ2UtPnJlc3VtZURvd25sb2FkKEFQ
STo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSksIHBhdGgsIFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3du
bG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFj
a0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewogICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFkZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMuLjUwYTYy
YjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA5LDYg
KzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewog
I2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBXS0Rvd25s
b2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwog
QGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQwYzAzZTZi
NGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJhMWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRlOTAwNDVm
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdL
V2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2FkOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
MTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgi
V0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RC
QSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3QgPE5TQ29weWluZz4KIAotLSAo
dm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93
bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNz
QXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygx
Mi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpy
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25s
b2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJkYmMuLmQ1
ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5MjdmNTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTI4LDY2ICsyOCw4
NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiRG93bmxvYWRQ
cm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1l
SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVtZW50YXRp
b24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2Fk
UHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitz
dGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2FkICosIF9XS0Rvd25sb2FkICo+ICpkb3dubG9hZFdy
YXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNYXBU
YWJsZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisgICAgICAgIHRhYmxlLmdldCgp
ID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJsZV07CisgICAgcmV0dXJuIHRh
YmxlLmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisK
K0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQorQGlt
cGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklOR1NfRU5ECiAKLS0gKHZvaWQp
ZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxvYWQyOihXS0Rvd25sb2FkICop
ZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2Rvd25sb2Fk
ID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107
CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3du
bG9hZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9hZFdyYXBwZXJN
YXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAg
ICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERv
d25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAo
KSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVy
OwogfQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9h
ZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAgIF9kb3dubG9hZC0+X2Rvd25s
b2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5fZG93bmxvYWQpXSAo
YXV0byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3du
bG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6
KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKKyAg
ICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CiB9CiAKIC0gKE5T
VVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCku
bnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhU
VFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VS
TFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJv
ZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAgICBpZiAo
YXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAg
ICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdp
bmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmlnaW5h
dGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0o
TlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwg
KiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlZGly
ZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CiAgICAgICAgIHJldHVybiB1
cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTCl3YXNVc2VySW5pdGlhdGVk
CiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOworICAgIHJldHVy
biBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOwogfQogCiAtIChOU0Rh
dGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQt
PmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxv
YWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0KIAogLSAoV0tGcmFtZUluZm8g
KilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25s
b2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pv
bmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVj
dAogewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVybiAqX2Rvd25sb2FkLT5fZG93
bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNlYzVmOWRi
NzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFjY2FjYjVmNzBlMTRhZTNiOTczODdmNDY4YTgzYTdi
YjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMzEsNiArMzEsOCBAQAogCiBAcHJvdG9jb2wgX1dL
RG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3Bv
bnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAoQk9PTClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5nICopTUlN
RVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIAogLSAo
TlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVy
d3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4wLCAxMS4z
KSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRl
eCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIxNzM3NTdh
NTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsy
NSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFBy
b3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxE
b3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19
OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0BpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2Jq
ZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiBfZG93bmxvYWQ7CiB9
Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PgogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGll
bnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEzZmUuLmVh
ZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5j
cHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lk
IGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9p
ZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRX
ZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdl
YmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxv
YWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKKyAg
ICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVm
UHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0
ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXND
YW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRleCA3NWQ1MTIyMWQyYzM1MTgy
Zjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBjYmY3NTY1
MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdh
Y3lEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xl
Z2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgCiBw
cml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3Rh
cnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxv
YWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmlu
YWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3du
bG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJveHkm
KSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsKICAgICB2
b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZlZWJjZDIz
Njk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0YjYzNTk1
NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2Fj
eURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEb3dubG9hZFBy
b3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3Q29udHJv
bGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNp
bXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAgLTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKIExlZ2FjeURv
d25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0
ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewpAQCAtNzYsNyArNzks
NyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9s
bGVyKERvd25sb2FkUHJveHkmIGRvd25sb2FkUAogfQogI2VuZGlmCiAKLXZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQ
cm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBAIHZvaWQg
TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0
KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19XS0Rvd25s
b2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAog
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zCiAjZW5kaWYK
IAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkK
LSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlk
UmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9u
c2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0
X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUp
CkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QKICNlbmRpZgogCiAg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dy
aXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2
ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5
JiBkb3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwg
KmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRv
d25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFr
ZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9k
b3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29t
cGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3
IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRl
TWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpk
ZXN0aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQg
ZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVz
dGluYXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpw
cm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4Miw3ICsx
ODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChB
bGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIwNCwxMSAr
MjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092
ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRlID0gTk87CiAgICAgICAgIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIE5TU3RyaW5nICpkZXN0
aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3Zlcndy
aXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFtt
X2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxM
T1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpO
bywgZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
OjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxs
b3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCi12b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcp
CiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAt
MjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6CiAjZW5kaWYKIAogICAgIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3Iu
bnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBk
b3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVy
cm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6Omxl
Z2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsy
NjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlk
Q2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNl
bmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJM
IF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05T
VVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CiAKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0ICszMDQs
NiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVj
ZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlmCiAKK0FMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMDQyZTc4ODU0
MTFkNDE3N2ZjZTljNjc1ZWQ4ZDQ4ZjEyYmIzZDRkNi4uOTY3ODM3YWZlMTRiZDgzNTRjNTZkNmJl
ZmU1ZDI5MTM3NmFiODdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhX
ZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0
cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAKKyAgICAgICAg
dm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lk
IG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6
TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lk
IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQcm94
eSYpIGZpbmFsOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRM
b2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpAQCAtMjM1LDYgKzIzOSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJv
b2wgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkIDogMTsKKyAgICAgICAgYm9vbCBu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgY29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQmVnaW5O
YXZpZ2F0aW9uR2VzdHVyZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxFbmROYXZpZ2F0
aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFj
a0ZvcndhcmRMaXN0SXRlbSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZTdjYjA4M2M0ZmYyYjMzOTA5M2Q3MTk0ODNiNTk0
YzgwNWZkNTRlYy4uYjM4ZmNmZmUyMmQ3YmNiOTliOGYwZTBmNzBmZTlmNmRiZjJjZDU0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpA
QCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAiU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCIK
ICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0Zv
cndhcmRMaXN0SXRlbUludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVn
YXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tOU0RpY3Rpb25hcnkuaCIKQEAgLTE4Nyw2ICsxODgs
OSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3Bv
bnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOildOwogICAg
IG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYkNyeXB0b01hc3Rl
cktleUZvcldlYlZpZXc6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvbkFjdGlvbjpkaWRCZWNvbWVEb3dubG9hZDop
XTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3
ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9hZDopXTsKKyAgICBtX25h
dmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbnRleHRNZW51
RGlkQ3JlYXRlRG93bmxvYWQ6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlOildOwogICAg
IG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0
dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZTp3
aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTopXTsKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRp
b25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihfd2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtOildOwpAQCAtNDcyLDExICs0NzYsMTAgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV2ViUGFnZVAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgTlNVUkxSZXF1ZXN0ICpu
c1VSTFJlcXVlc3QgPSB3cmFwcGVyKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKG5hdmlnYXRpb25B
Y3Rpb24tPnJlcXVlc3QoKSkpOwotICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2Fu
SGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGxpc3RlbmVyLT5kb3dubG9hZCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdl
dCgpKTsKKyAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6
bnNVUkxSZXF1ZXN0XQorICAgICAgICAgICAgICAgIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkKKyAgICAgICAgICAgICAgICB8
fCBbbnNVUkxSZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiYmxvYiJdKSB7Cisg
ICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdldCgp
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTU1NSw5ICs1
NTgsMTIgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBs
b2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAg
ICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBjYXNlIF9XS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZDoKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQo
KTsKICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbms6CiAgICAgICAgICAgICB0cnlTT0F1dGhv
cml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxM
aXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1v
dmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgewogICAgICAgICAg
ICAgICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7CkBAIC02NzEsNyArNjc3LDcgQEAgdm9pZCBOYXZp
Z2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZShXZWJQYWcKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZDoKKyAgICAgICAgY2FzZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkOgogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDg1LDYgKzEwOTEsNDIgQEAgUmVm
UHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW4KICAgICByZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJD
b3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFs
bGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwpKTsKIH0KIAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQ
YWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIERvd25s
b2FkUHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRp
b25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9u
OndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGlkQmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZCldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZp
Z2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxv
YWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9u
YXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2
aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9
CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQor
eworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVs
ZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4o
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSAgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93
ZWJWaWV3IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOwor
fQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25z
dCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
M2Y3N2NjOTlmNmM4ZmE5ZmMyOTA4NWJjODVlMDhiMjdlZjYwMjVjZi4uNTk5OGNlNTFhNTc3OTRh
MTlkY2E5ZmJhYmUzZTcyOWU0YTc3MDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCiAjaW1wb3J0ICJIaWdoUGVyZm9ybWFuY2VH
UFVNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3Jh
cGguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcAppbmRleCAyOWMxN2JlYjMzZWQ2NzZjOWM0NDRhNGQ3MmE2MDFmNGNkMDc3ZjM2
Li5kYzEwMWI2NmNiMGNlM2RhZWQ4Y2JiMzExZjc3MjI0M2VhMzg5MTFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC01
OSw3ICs1OSwxMSBAQCBEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlN
YXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcgogewogfQogCi1Eb3dubG9hZFBy
b3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVmYXVsdDsKK0Rvd25sb2FkUHJveHk6On5Eb3dubG9h
ZFByb3h5KCkKK3sKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0
YXJ0Q2FsbGJhY2sobnVsbHB0cik7Cit9CiAKIHN0YXRpYyBSZWZQdHI8QVBJOjpEYXRhPiBjcmVh
dGVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKQEAgLTExNyw3ICsxMjEs
OSBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZQogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNF
bXB0eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0gcmVxdWVzdC51cmwoKSkKICAgICAg
ICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChyZXF1ZXN0LnVybCgpKTsKIAotICAgIG1fY2xpZW50
LT5kaWRTdGFydCgqdGhpcyk7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAg
bV9kaWRTdGFydENhbGxiYWNrKHRoaXMpOworICAgIG1fY2xpZW50LT5sZWdhY3lEaWRTdGFydCgq
dGhpcyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMTQ1LDggKzE1MSwxNiBAQCB2b2lkIERvd25s
b2FkUHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3Qg
dG90YWxCeXRlc1dyaQogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNX
cml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9
CiAKLXZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0cmlu
ZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CisgICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2FzLWEt
ZG93bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBDb250ZW50LURpc3Bvc2l0
aW9uIGhlYWRlcgorICAgIC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1l
IGZyb20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KKyAgICBpZiAocmVzcG9uc2UuaXNBdHRhY2ht
ZW50V2l0aEZpbGVuYW1lKCkgfHwgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSAmJiBtX3N1
Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkpCisgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
cmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKyAgICBlbHNlIGlmICghbV9zdWdnZXN0ZWRG
aWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gbV9zdWdnZXN0
ZWRGaWxlbmFtZTsKKyAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFw
cGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9uc2Uu
bWltZVR5cGUoKSk7CisKICAgICBtX2NsaWVudC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRp
emVTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSksIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVy
d3JpdGUsIFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3Rp
bmF0aW9uLmlzTnVsbCgpKQpAQCAtMTczLDExICsxODcsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UKIHsKICAgICBtX2xlZ2FjeVJlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEp
OwogCi0gICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yKTsKKyAgICBtX2NsaWVudC0+
ZGlkRmFpbCgqdGhpcywgZXJyb3IsIG1fbGVnYWN5UmVzdW1lRGF0YS5nZXQoKSk7CiAKICAgICAv
LyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4K
ICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CiB9CiAKK3Zv
aWQgRG93bmxvYWRQcm94eTo6c2V0Q2xpZW50KFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGNs
aWVudCkKK3sKKyAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5oCmluZGV4IDA3MThlODkzYWIyNTViYjNhMzVkZjdlZGE5YzMyOTJjMWY3
MThhNGMuLjMxODk1ZjU2NTk5OTc5ZWYzMmNkYzE2YmI4OTQzNDUwZDE1YTkxYmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAt
MTAyLDEyICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygp
IHsgcmV0dXJuIG1fZnJhbWVJbmZvLmdldCgpOyB9CiAKICAgICBBUEk6OkRvd25sb2FkQ2xpZW50
JiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4
cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUm
LCBBUEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOwotCi0gICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2xpZW50KFJlZjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmKTsKKyAgICB2b2lkIHNldERpZFN0YXJ0Q2FsbGJhY2soQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY2FsbGJhY2spIHsgbV9kaWRTdGFydENh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVu
YW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFt
ZSA9IHN1Z2dlc3RlZEZpbGVuYW1lOyB9CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAg
IHZvaWQgZGlkU3RhcnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0xMTgsNyArMTE1LDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RS
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNl
KTsKLSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYpOworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFN0cmlu
ZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYpOworCitwcml2YXRlOgor
ICAgIGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRh
U3RvcmUmLCBBUEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOworCisgICAgLy8gSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYg
bV9kb3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFT
dG9yZTsKQEAgLTEzNCw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVUkw+IG1fcmVk
aXJlY3RDaGFpbjsKICAgICBib29sIG1fd2FzVXNlckluaXRpYXRlZCB7IHRydWUgfTsKICAgICBS
ZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRG93bmxvYWRQcm94eSopPiBtX2RpZFN0YXJ0Q2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0ODdkNGUzNDRlMThhMjAyM2QyOWJlYzQ2
MGNhY2FlMDU1MjU3ZWQuLjA0NmE2YjUwMmYwZjZhNDc3ODlkZDkxNGFmMTRmZjYxZWUxNmMxYjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJE
b3dubG9hZFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaWYg
RU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lD
dXN0b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDM4MmQxZmUxOGMwNGMxMDhiMTM5NWM3ZmNjYjYwODdjMDBlOWE5
ZGUuLjhhMjU2NDUzMTJjNmZiMGQ5OTM2ZmE0MzAyY2JiZDI4NDA2YzYzZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1
ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkTWFu
YWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJl
YU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMzEzMCw3ICsz
MTMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50
T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICNlbmRpZgogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkm
IGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmln
YXRpb25BY3Rpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbjogZnJhbWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xp
Y3lBY3Rpb246ICV1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwog
CkBAIC0zMTcwLDcgKzMxNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBw
b2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFj
dGlvbiAhPSBQb2xpY3lBY3Rpb246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2
aWdhdGlvbikgewotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3Zl
KHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4MywxMSArMzE4NCwxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQ
cm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9u
KSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIHByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwg
c291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2
aWdhdGlvbiksIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBz
b3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCiAgICAgICAgIHBvbGljaWVz
ID0gV1RGTW92ZShwb2xpY2llcyksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudF0gKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5h
dmlnYXRpb24sIFN1c3BlbmRlZFBhZ2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBj
b25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0
aW9uIGhhcyBiZWVuIGRlc3Ryb3llZCwgdGhlbiBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAg
IGlmIChpc0Nsb3NlZCgpIHx8ICFuYXZpZ2F0aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmln
YXRpb24tPm5hdmlnYXRpb25JRCgpKSkgewotICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBX
VEZNb3ZlKHNlbmRlcikpOworICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTMyMjMsMTEgKzMyMjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24s
IEEKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91bGRQcm9jZXNzU3dhcCA/
IG51bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9w
dGlvbmFsSGFuZGxlKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzOjpZZXMgOiBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBz
aG91bGRQcm9jZXNzU3dhcCA/IG51bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShu
YXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFuZGxl
KSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMg
OiBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24s
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3MpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rp
b24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNp
dGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlv
blJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYgbmF2aWdhdGlvbkFjdGlv
bk9yUmVzcG9uc2UsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENv
bnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9s
aWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51
bGxvcHQgfSk7CkBAIC0zMjQzLDYgKzMyNDQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgog
ICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpEb3dubG9hZCkgewogICAgICAgICAvLyBD
cmVhdGUgYSBkb3dubG9hZCBwcm94eS4KICAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nl
c3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUs
IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzLCBuYXZpZ2F0aW9uID8gbmF2
aWdhdGlvbi0+b3JpZ2luYXRpbmdGcmFtZUluZm8oKSA6IEZyYW1lSW5mb0RhdGEgeyB9KTsKKyAg
ICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlID0gV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uT3JSZXNwb25zZSldIChhdXRvKiBkb3dubG9hZFByb3h5KSB7CisgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZFByb3h5KQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIFdURjo6c3dpdGNoT24obmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9u
c2UsCisgICAgICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U+JiByZXNwb25zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLT5kb3du
bG9hZEF0dHJpYnV0ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxv
YWRQcm94eS0+c2V0U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRl
KCkpOworICAgICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkKCp0aGlzLCByZXNwb25zZS5nZXQoKSwgKmRvd25sb2Fk
UHJveHkpOworICAgICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlv
bkFjdGlvbj4mIGFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGll
bnQtPm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgYWN0aW9uLmdldCgp
LCAqZG93bmxvYWRQcm94eSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAg
ICAgICAgfSk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBkb3dubG9h
ZC5zZXRXYXNVc2VySW5pdGlhdGVkKG5hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKSk7CiAg
ICAgICAgICAgICBkb3dubG9hZC5zZXRSZWRpcmVjdENoYWluKG5hdmlnYXRpb24tPnRha2VSZWRp
cmVjdENoYWluKCkpOwpAQCAtNTA5NSwxMCArNTEwOSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2NlcwogICAgIG5hdmlnYXRpb24tPnNldE9yaWdpbmF0aW5nRnJhbWVJbmZvKG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSk7CiAgICAgbmF2aWdhdGlvbi0+c2V0RGVzdGluYXRpb25GcmFtZVNlY3Vy
aXR5T3JpZ2luKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAKKyAgICBBUEk6Ok5hdmlnYXRp
b24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlv
bi5nZXQoKSA6IG51bGxwdHI7CisgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6IG51bGxwdHI7CisgICAgYXV0byBkZXN0
aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUlu
Zm8pLCB0aGlzKTsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsK
KyAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCisgICAgICAg
IHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKKyAgICBl
bHNlIGlmICghZnJvbUFQSSkgeworICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBvcmln
aW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51
bGxwdHI7CisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
V1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UpOworICAg
IH0KKworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBM
aW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgorICAgICAgICAmJiBkZXN0aW5hdGlv
bkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQorICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9t
YWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKKyAgICAgICAg
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGU6OkJhY2tGb3J3YXJkOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkg
PSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6
Om51bGxvcHQsIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgp
LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFp
bkZyYW1lTmF2aWdhdGlvbik7CisKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
aWYgKGZyYW1lLmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25v
cmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgd2FzIGhh
bmRsZWQgYnkgY29udGVudCBmaWx0ZXIiKTsKLSAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJl
dHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmln
YXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0KICNlbmRpZgogCkBAIC01
MTEwLDExICs1MTQzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0g
U2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgotICAgIAotICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJh
bWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIGZyYW1lSW5mbywgdXNl
ckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNB
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5k
ZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2Jq
ZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2ll
cyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmRE
b21haW4pIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1l
SUQ6ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSwgc2FmZUJyb3dz
aW5nV2FybmluZzogJWQsIGlzQXBwQm91bmREb21haW46ICVkIiwgZnJhbWUtPmZyYW1lSUQoKS50
b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAo
dW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3Vu
ZERvbWFpbik7CiAKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNp
ZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNlbmRlciA9
IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVz
ID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghcG9saWNpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRl
ZmF1bHRQb2xpY2llcyA9IG1fY29uZmlndXJhdGlvbi0+ZGVmYXVsdFdlYnNpdGVQb2xpY2llcygp
KQpAQCAtNTEyMyw3ICs1MTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAg
ICAgICAgICBpZiAocG9saWNpZXMpCiAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNl
dEVmZmVjdGl2ZUNvbnRlbnRNb2RlKGVmZmVjdGl2ZUNvbnRlbnRNb2RlQWZ0ZXJBZGp1c3RpbmdQ
b2xpY2llcygqcG9saWNpZXMsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkpKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgZnJhbWUsIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICAg
ICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CiAg
ICAgICAgIH07CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MTkwLDEwICs1
MjIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBhdXRvIHByb3RvY29sID0gc2hv
dWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90
b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2woKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUt
PmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0LnRvU3RyaW5nKCksIHByb3RvY29sLnRvU3Ry
aW5nKCksIGxpc3RlbmVyKTsKICNlbmRpZgotICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1l
TmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVs
bHB0cjsKLSAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGF1dG8gd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIgPSBu
YXZpZ2F0aW9uLT5pc0xvYWRlZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKCkgfHwgdXNlckluaXRpYXRl
ZEFjdGl2aXR5OwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKQEAgLTUyMDEs
MjQgKzUyMzEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAgICBpZiAo
bV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbiksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBk
ZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFt
ZUluZm8pLCB0aGlzKTsKLSAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFt
ZUluZm87Ci0gICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFt
ZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNv
cHlSZWYoKTsKLSAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpIHsKLSAgICAgICAgICAgIGF1dG8q
IG9yaWdpbmF0aW5nUGFnZSA9IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgq
b3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEpLCBvcmlnaW5hdGluZ1BhZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uCi0gICAgICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWlu
RnJhbWUoKQotICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwo
KS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCi0gICAgICAgICAgICAmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6
QmFja0ZvcndhcmQ7Ci0KLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJj
ZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBw
TGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlv
bik7Ci0KICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIGlmIChtX3Nob3VsZFN1cHByZXNzU09B
dXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8IG1fc2hvdWxkU3Vw
cHJlc3NTT0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikKICAgICAg
ICAgICAgIG5hdmlnYXRpb25BY3Rpb24tPnVuc2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlv
bigpOwpAQCAtNTMyMCw3ICs1MzM0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCht
X3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJv
d3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsK
KyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKyAgICBpZiAoZnJh
bWUpCisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShmcmFtZUluZm8pLCB0aGlzKTsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5
ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtz
ID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVy
bCgpLmhvc3QoKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJ
bmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0s
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAg
ICAKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIs
IGxpc3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAg
ICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBo
ZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMg
Z28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAt
NTMyOSwyNCArNTM1MSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQs
IGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZN
b3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShz
ZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91
bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pKTsKIAogICAgIGlmIChtX3BvbGljeUNs
aWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZlB0
cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAoZnJhbWUpCi0g
ICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1v
dmUoZnJhbWVJbmZvKSwgdGhpcyk7Ci0KLSAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFw
cExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1
ZXN0LnVybCgpLmhvc3QoKTsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpO
YXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNv
dXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2
aXR5KSk7Ci0KKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCByZXF1ZXN0LCBm
cmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCiAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
bmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotCi0gICAg
fQotICAgICAgICAKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKQEAgLTUzNjcsOCArNTM3OCwxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJl
cXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlc3BvbnNlLnVy
bCgpKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlv
bklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxw
dHI7CisgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25z
ZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlz
KS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRy
aWJ1dGUpOworCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQ
YWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzXSAoUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5n
PiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICAgICAgcHJv
Y2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVC
cm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFz
c2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVu
dHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVC
cm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzNzcsMTQgKzUzOTAs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0
ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAg
ICAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZN
b3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxk
RXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5S
ZXN1bHQ6Ok5vKSk7CiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNs
aWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0
aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRB
dHRyaWJ1dGUpOworICAgIGVsc2UKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJlc3Bv
bnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTYw
MjMsNiArNjAzNCwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVEb3dubG9h
ZFJlcXVlc3QoZG93bmxvYWQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lRG93bmxv
YWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVzdW1lRG93
bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXN1bWVEYXRhLCBwYXRoLCBDYWxsRG93
bmxvYWREaWRTdGFydDo6WWVzKTsKKyAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRvd25s
b2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvJiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKHdlYnNp
dGVEYXRhU3RvcmUoKSwgdGhpcywgcmVxdWVzdCwgeyB9KTsKKyAgICBkb3dubG9hZC5zZXREaWRT
dGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAg
ICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZUNvbnRlbnRTaXplKHNpemUpOwpAQCAtNjU5MiwxOCAr
NjYxNSwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICNlbmRpZgotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25s
b2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25s
b2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRN
ZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdlVVJMKSk7
Ci0gICAgICAgIHJldHVybjsgICAgCi0gICAgfQorICAgIHN0cnVjdCBEb3dubG9hZEluZm8gewor
ICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWU7Cisg
ICAgfTsKKyAgICBPcHRpb25hbDxEb3dubG9hZEluZm8+IGRvd25sb2FkSW5mbzsKKyAgICBpZiAo
aXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKQor
ICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEu
d2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdlVVJMLCB7IH0gfX07CiAgICAgaWYg
KGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9EaXNrKSB7
CiAgICAgICAgIGF1dG8mIGhpdFRlc3RSZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4
dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBoaXRU
ZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZp
bGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXRlbS5hY3Rpb24oKSA9
PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVS
TChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHRE
YXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGRvd25s
b2FkSW5mbyA9IHt7IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLCBoaXRUZXN0UmVzdWx0
LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSB9fTsKKyAgICB9CisgICAgaWYgKGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykKKyAgICAgICAgZG93bmxv
YWRJbmZvID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1
bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCwgeyB9IH19OworICAgIGlmIChkb3dubG9hZEluZm8p
IHsKKyAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93
bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIGRvd25sb2FkSW5mby0+
dXJsKSwgZG93bmxvYWRJbmZvLT5zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGRvd25sb2Fk
LnNldERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMp
XSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRvd25s
b2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNs
aWVudC0+Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCgqdGhpcywgKmRvd25sb2FkKTsKKyAg
ICAgICAgfSk7CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRl
bVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZykgewogICAgICAgICBUZXh0Q2hlY2tlcjo6c2V0
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCFUZXh0Q2hlY2tlcjo6c3RhdGUoKS5pc0Nv
bnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDg3OWY3MzJiMTFjYjEyMzk3Mzg2NThlOGU1OGZiODdjNTAzNGYyYjgu
LjkyMzIzZTY3MTQ2YWQxOWNlMGY0MjZlYzBkZWZlM2ZhNmQ5ZmI0MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTY0LDggKzExNjQsOCBAQCBwdWJsaWM6CiAK
ICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBlbnVtIGNsYXNzIFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbios
IFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOwot
ICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBX
ZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5
RGVjaXNpb25TZW5kZXI+JiYpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJD
b3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiwgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmLCBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAgIHZvaWQg
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBv
bGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogCiAgICAgdm9pZCBiYWNr
Rm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImKTsKIApAQCAtMTI3OSw2ICsxMjc5LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERyYXdpbmdB
cmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRyKTsKIAog
ICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAgICB2b2lk
IHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5n
JiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7CisgICAg
dm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZvaWQgY2hh
bmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzNmIyZDZmN2E3NWE1NmI4NTRjNjllNjIw
YWI3OThmNzZlNjBhNTE2Li4wZGNjY2E2ODQyOTEzMzhkYzljZTJiNGFiMDI2YjVlMTE5ZTgwMjMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMTQ4
LDcgKzExNDgsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vi
c2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBkb3dubG9h
ZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxv
YWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQ
YWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCkKK0Rv
d25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0
b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6
RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFy
dCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5ID0gY3Jl
YXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0aWF0aW5n
UGFnZSwgeyB9KTsKIApAQCAtMTE1Niw3ICsxMTU2LDcgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJv
Y2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2Vi
UGEKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vz
c2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZl
cmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRhdGFTdG9y
ZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVE
b3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgp
LCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSwgY2FsbERvd25sb2FkRGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYTNjMmRi
Zjk0ZjU1ZWY3MGM3ZTc2NzAxYWUzZmMxODg3MjQ0ZGMwOC4uNjVkNGY5OGYxNTE1NjBkNTYwNDg1
YzVkMTVjOWI3YmM2NGUwNWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5oCkBAIC0xMTYsNiArMTE2LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9TKCk7CiBp
bnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNzIENhbGxE
b3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCA6IGJvb2w7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKQEAgLTIwNCw3ICsyMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25sb2FkUHJv
eHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQ
YWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZEZpbGVuYW1lID0geyB9KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJ
OjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25sb2FkUHJv
eHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUlu
aXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1f
aW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMDc2MWQ4MzUxZWZjYjU2MTEwOWM1M2YwMGU1MDA5NzA2NmUyM2FlNy4uYjg5NTJmYzAy
ZTM0NGE4NjE5MThiYTlkOGI3M2FjZmQzZWViNWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTgsNyArMjE4LDYgQEAKIAkJMUE0
M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0M0U4MjgxODhG
M0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDQ1QjlGMTg0RDVGQjUw
MDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0
IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8q
IFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0
b3J5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKLQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NUJB
MjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUJBNTE4NEQ1RkRB
MDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8q
IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ4MzJDQzFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJz
aXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUE0ODMyQ0ExQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFBNDgzMkNF
MUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDgzMkNEMUE5QkM0ODQw
MDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCAqLzsgfTsKQEAgLTMzMSw3
ICszMzAsNyBAQAogCQkxQUI3RDRDQTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q0Qzgx
Mjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCAqLzsgfTsKIAkJMUFCN0Q2MTkxMjg4
QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTcxMjg4QjlEOTAw
Q0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQkxQUI3
RDYxQTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDYxODEyODhCOUQ5MDBD
RkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjdENzhEMTI4OENE
OUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFBQjdE
NzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyog
V0tEb3dubG9hZFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBQjhBMUVDMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVC
MTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFFRTE4NDAwQUNCMDBFOUFF
NjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVGMTg0MDBCMDAw
MEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODUsNiArMTE4NCw3IEBACiAJCTVDMjBDQkEwMUJC
MUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8qIE5ldHdv
cmtTZXNzaW9uLmggKi87IH07CiAJCTVDMjY5NTg1MjAwNDMyMTIwMDVDNDM5QiAvKiBXS09wZW5Q
YW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJh
bWV0ZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4RDlFMUMz
REVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAqLzsgfTsKKwkJNUMyRUJERkEyNTY0
MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rv
d25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzNTlDMEMyMTU0NzMy
MTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU3MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250
ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RB
Y3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
NDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5h
bC5oICovOyB9OwpAQCAtMTgyNSw2ICsxODI1LDkgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0MzAwMDJG
NDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsgfTsKIAkJ
RDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJCMzkgLyog
V2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51
LmggKi87IH07CisJCURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNDI1MkVD
QjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVGMkEyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxv
YWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVGMkIyNTJF
RDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdL
RG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwogCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYzNUYgLyog
V0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2ll
U3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJF
MTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGODRDRUU0MjQ5QUEyNEQw
MDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFBMjFGMDA5MDk2RjYgLyogV0tQREZIVURWaWV3
Lm1tICovOyB9OwpAQCAtMjQ1NCw3ICsyNDU3LDYgQEAKIAkJMUE0M0U4MjgxODhGM0NEQzAwOUU0
RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dEhpc3RvcnlDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0
IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzExQTk2NUEz
QzAwOEI0REZFIC8qIFdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzkxQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0
ZURhdGFSZWNvcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYnNpdGVEYXRhUmVjb3JkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjY1
MCw4ICsyNjUyLDggQEAKIAkJMUFCN0Q1RTkxMjg4QjhDMDAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG93bmxvYWRQcm94eS5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0Q2MTcxMjg4QjlEOTAw
Q0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7
IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Rvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2
ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI3RDYxODEy
ODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyog
V0tEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rv
d25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3OEIxMjg4Q0Q5
QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tEb3dubG9hZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUI3
RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkZXJDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUQxODQwMEFDQjAwRTlB
RTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS1BhZ2VQb2xpY3lDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlRm9ybUNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNDEyMiw2ICs0MTI0LDcgQEAKIAkJNUMyQjFBRjMyMjNBQjcyODAw
QjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFDRjcgLyogRG93bmxvYWRQ
cm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEZXByZWNhdGVkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FFQThFMUZFMUYxREYwMDIzMThEMyAvKiBXZWJz
aXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTM4OCw2ICs1MzkxLDEwIEBACiAJCUQz
Qjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VhcmNoUG9wdXBNZW51
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDUxMUZGNEI2NTAwMDMy
QjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
REYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rvd25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZElu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI2MjUyRUNCOEUw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3RvcmVQcml2
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNDYyRTExMjNGMzM4QUQwMEVG
RjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tDb250ZW50V29ybGRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZlbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MzgsNiArNzU0NSwxMCBAQAogCQkJCTVD
RTBDMzY4MjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8s
CiAJCQkJNUNFMEMzNkIyMjlGMkQ0QjAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5m
b0ludGVybmFsLmggKi8sCiAJCQkJNUNFMEMzNkEyMjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29udGV4
dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCAqLywKKwkJCQlERjBDNUYyNDI1MkVDQjhEMDBEOTIx
REIgLyogV0tEb3dubG9hZC5oICovLAorCQkJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFEQiAvKiBX
S0Rvd25sb2FkLm1tICovLAorCQkJCURGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25s
b2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3du
bG9hZEludGVybmFsLmggKi8sCiAJCQkJMUFGNDU5MkQxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJy
b3IuaCAqLywKIAkJCQkxQUY0NTkyQzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywK
IAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAgLyogV0tFcnJvckludGVybmFsLmggKi8sCkBA
IC05NTA0LDcgKzk1MTUsNiBAQAogCQkJCTFBRTUyRjkzMTkyMDFGNkIwMEExRkEzNyAvKiBXS0Nv
bnRleHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLywKIAkJCQkxQUU1MkY5NDE5MjAxRjZCMDBBMUZB
MzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oICovLAogCQkJCTFBNDQ1QkE0MTg0RDVG
REEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggKi8sCi0JCQkJMUE0NDVC
QTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi8sCiAJCQkJ
MUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywK
IAkJCQkxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCAqLywKIAkJCQlBMUVBMDIzNTFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250ZXh0TWVu
dUxpc3RlbmVyLmNwcCAqLywKQEAgLTk1MTUsOCArOTUyNSw5IEBACiAJCQkJNTEyRjU4RjExMkE4
OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTEyRjU4RjIxMkE4OEE1
NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICovLAogCQkJCTUxOEFDRjEwMTJCMDE1RjgwMEIw
NEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovLAotCQkJCTFBQjdENzhDMTI4OENEOUEwMENG
RDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLywKLQkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMg
LyogV0tEb3dubG9hZC5oICovLAorCQkJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rv
d25sb2FkQ2xpZW50LmggKi8sCisJCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWRSZWYuY3BwICovLAorCQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkUmVmLmggKi8sCiAJCQkJQkNFNDY5NTcxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkNFNDY5NTgxMjE0RURGNDAwMEI5OEVCIC8qIFdL
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovLAogCQkJCUJDRDAxMzk4MTEwRkE0MjAwMDNCOEE2
NyAvKiBXS0ZyYW1lLmNwcCAqLywKQEAgLTExODQ1LDcgKzExODU2LDYgQEAKIAkJCQlCQ0I5RTI0
QjExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUU1
MkY5ODE5MjAyNjcyMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5l
Y3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNDQ1QkEzMTg0RDVGQ0YwMDRCMzQx
NCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVC
QTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM3OTVENzAyMjlGMzczRjAwM0ZGMUM0
IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTg3OCw4
ICsxMTg4OCwxMiBAQAogCQkJCUJDNUQyNEM1MTZDRDcwODgwMDdENTQ2MSAvKiBXS0RPTVJhbmdl
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4OUYxIC8q
IFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMjExNjI2MzMwODAwNzA1NEY1
IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUI3RDc4RDEyODhD
RDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMjgy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkVC
REZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzcyODFBMjIxQURDNzQ0MDA5RTBERTYgLyog
V0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI3RDc4RDEyODhDRDlB
MDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQwOUJBMTgx
RTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDhiZGQwYzg0MGRhOWQ3ZTY1MmMyNWNiNTQyM2U2ZmRiYzIxOWY2YjEuLjk4NmI0OTdj
Yzk4ZTBiNjQxNjQxYjA3N2U3MDcyNGUxOTc5ZjY4MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0xMS0xOCAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIElu
dHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldENvbnRleHREb3dubG9h
ZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
bWFjL0NvbnRleHRNZW51RG93bmxvYWQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29u
dGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWREZWxlZ2F0
ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRs
ZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxl
Z2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21N
ZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3
aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZy
b21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAg
ICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNo
ZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAoc2ltcGxlRG93bmxvYWRUZXN0
U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToKKyAgICAgICAgKHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRl
IHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZpbGUpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAg
ICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAg
ICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW06CisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0
ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRv
d25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6
XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZEZhaWxXaXRo
RXJyb3I6cmVzdW1lRGF0YTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2Vi
VmlldzpuYXZpZ2F0aW9uUmVzcG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6XSk6CisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIHRha2VDYWxsYmFja1JlY29yZF0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOiBE
ZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVj
ZWl2ZVJlc3BvbnNlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0
aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkRGlkRmluaXNoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246
XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93
bmxvYWREZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3REb3dubG9hZERlbGVnYXRlLmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbS4KKyAgICAgICAgKC1bVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRp
ZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2Up
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25z
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFp
bCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZENhbmNlbCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oOgorCiAyMDIwLTExLTE4ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBbZXdzXSBBZGQgdGltZW91dCB0byBuZXR3b3JrIHJlcXVlc3RzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5
NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2OGFmMjJmZmI5NGUzODUyM2Q3ZDY0OWU0
NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcsNyBA
QCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGll
c0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRl
Lm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQogY29jb2EvVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0VUlEZWxl
Z2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiMTA5ZTYwYTEzNGVmOWFlMjAzYTEz
OWYxY2ZiMTgwZjU5NTEwMjk4Li4wYjJjNzU4YWFiOGM1ZTU1NTQyNTY0MDNhMjQ0ZmE1MjAwZmZj
ZDhmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIxNCw4ICsyMjE0LDggQEAKIAkJNUM2
OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNjcmlwdER1cmluZ05h
dmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkUyN0E2MjI0RUVC
RUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURh
dGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vi
c2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0Qy
NDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Qzcy
RThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsg
cGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVC
NyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0g
Y29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMg
LyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODAwLDYgKzI4MDAsOCBAQAogCQlE
M0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJG
IC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjRCMjcz
ODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5
RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURG
NkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJD
NDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAw
RjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIy
MEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBN
ZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEyMCw4ICszMTIyLDEwIEBA
CiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1
Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLmggKi8sCiAJ
CQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAq
LywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUu
aCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdh
dGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERl
bGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9h
ZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAv
KiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThC
MDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3
NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAogCQkJCTUxNjI4
MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25DcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCmluZGV4IGNhNjk3YWMzNWE5YWE1MjBhNWIxOWY1Yzdi
NzQzYzE3Yzg0NGM1MzguLmM0NTc1ODY1MDVkYjNlNGRiYWJkYjA3MTJhMGU2NjNiZGIyOWM3N2Qg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVj
aWRlRGVzdGluYXRpb25DcmFzaC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcApAQCAtMjksNDIgKzI5LDQx
IEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsYXRmb3Jt
V2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLRG93bmxvYWRSZWYuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0
aWMgYm9vbCBkaWREZWNpZGVEZXN0aW5hdGlvbjsKIAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tG
cmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQor
c3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdLUGFnZVJlZiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5l
ciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJE
b3dubG9hZChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdS
ZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqKQogewog
ICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1ZTsKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRv
d25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRy
KTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0Rvd25sb2FkRGVj
aWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0Q29u
dGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQorc3RhdGljIHZvaWQgbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdh
dGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVu
dFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgm
Y2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0g
MDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLQotICAgIFdLQ29udGV4dFNl
dERvd25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGllbnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNl
KTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkK
IHsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudDsKKyAgICBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbmF2aWdhdGlvbkNsaWVudDsKICAgICBtZW1zZXQoJm5h
dmlnYXRpb25DbGllbnQsIDAsIHNpemVvZihuYXZpZ2F0aW9uQ2xpZW50KSk7CiAKLSAgICBuYXZp
Z2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbmF2aWdhdGlvbkNsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CisgICAgbmF2aWdh
dGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U7CisgICAgbmF2aWdhdGlvbkNsaWVudC5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkOwogCiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQocGFnZSwgJm5hdmln
YXRpb25DbGllbnQuYmFzZSk7CiB9CkBAIC03Miw3ICs3MSw2IEBAIHN0YXRpYyB2b2lkIHNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiBURVNUKFdlYktpdCwgRG93bmxvYWREZWNp
ZGVEZXN0aW5hdGlvbkNyYXNoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikp
OwotICAgIHNldENvbnRleHREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpKTsKIAogICAgIFBs
YXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogICAgIHNldFBhZ2VQb2xpY3lD
bGllbnQod2ViVmlldy5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQppbmRleCAxNTkzMGU1
NDZkYmFhM2RhOWQ1ZWQyMTViNmM4YjljYzYxMDlhZjBmLi43NTU2ZjYxMmQ1ZTNiOWJhNGY0Y2Q2
ZjUyNmM5NThjMTdmM2YxZjI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQpAQCAtMjgsNyArMjgs
OCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2Vi
Vmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVJdGVtLmg+Ci0jaW1wb3J0IDxX
ZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRDbGllbnQuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdl
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdlQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtNjIsMTIgKzYzLDEyIEBAIHN0YXRp
YyB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYgcGFnZSwgV0tB
cnJheVJlZiBwcm9wb3NlZE1lCiAgICAgfQogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0
IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3Ry
aW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1
cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFs
dWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTC4KICAgICBFWFBFQ1RfV0tf
U1RSRVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwog
Ci0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CisgICAgV0tEb3dubG9hZENhbmNlbChk
b3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5h
dGlvbiA9IHRydWU7CiAKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRPcmlnaW5hdGluZ1BhZ2UsIFdL
RG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoZG93bmxvYWQpKTsKQEAgLTc2LDI1ICs3NywyOSBA
QCBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sbwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dl
YktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9hZCIpLmxlYWtSZWYoKTsKIH0KIAorc3RhdGlj
IHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXS0Rvd25s
b2FkQ2xpZW50VjAgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50
KSk7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgY2xpZW50LmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30K
KwogLy8gQ2hlY2tzIHRoYXQgdGhlIEhUTUwgZG93bmxvYWQgYXR0cmlidXRlIGlzIHVzZWQgYXMg
c3VnZ2VzdGVkIGZpbGVuYW1lIHdoZW4gc2VsZWN0aW5nCiAvLyB0aGUgIkRvd25sb2FkIExpbmtl
ZCBGaWxlIiBpdGVtIGluIHRoZSBjb250ZXh0IG1lbnUuCiBURVNUKFdlYktpdCwgQ29udGV4dE1l
bnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZSkKIHsKICAgICBXS1JldGFpblB0cjxXS0Nv
bnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0
ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKLSAg
ICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotICAgIGNsaWVudC5iYXNlLnZl
cnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0KICAg
ICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VH
cm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwog
ICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQo
KSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdL
UGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJD
bGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52
ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2Fk
ZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAg
bG9hZGVyQ2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZp
ZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlQ29udGV4dE1lbnVD
bGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKQEAgLTExNCwzNCArMTE5LDM4IEBAIFRFU1QoV2Vi
S2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlKQogICAgIFV0aWw6
OnJ1bigmZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbik7CiB9CiAKLXN0YXRpYyBXS1N0cmlu
Z1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFz
aGVzKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dl
c3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRv
d25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCwgYWZ0ZXIgc2FuaXRpemF0aW9uLgogICAgIEVY
UEVDVF9XS19TVFJFUSgidGVzdDFfdGVzdDJfZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBz
dWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAg
ICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICBkaWRE
ZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIHJldHVybiBVdGlsOjp0b1dL
KCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9hZCIpLmxlYWtSZWYoKTsKIH0K
IAotVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVX
aXRoU2xhc2hlcykKK3N0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS1BhZ2VSZWYgcGFnZSwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFp
blB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRX
aXRoSW5qZWN0ZWRCdW5kbGUoKSk7Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNs
aWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50
LCAwLCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAg
Y2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0Nv
bnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOworICAg
IGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7CisgICAgV0tEb3dubG9hZFNl
dENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIENvbnRl
eHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3sKKyAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91
cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVy
KFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJW
aWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBs
b2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJD
bGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJD
bGllbnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdh
dGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9hZGVyQ2xpZW50LmNvbnRleHRNZW51
RGlkQ3JlYXRlRG93bmxvYWQgPSBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRp
b25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKICAgICBXS1Bh
Z2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xpZW50OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1t
CmluZGV4IDQzMzkxMzExMDFmMmNkZDk1MDk4NjdlZmU5NDRmNmU3N2VmMzllZGIuLmQxOTZjMmM5
M2M5MmNhYWJkNzMyMzkzYjM0Y2FlZWUwYWU3YjMzOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KQEAg
LTE1MSw3ICsxNTEsNyBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcsIFVSTEFmdGVyU2VydmVyUmVk
aXJlY3QpCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogfQogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjoo
V0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5k
ZXggM2FlZmViOGVjMzM1ZTEwMjMyZmY4ZTVjODBjNmY3OWJkMzVlZmMwOC4uMThkYjEyYmFjOTQ0
OWIyNDI1YTEyNzUwMGJjYWVjZWM3M2JkMTczNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC0zMywxMSArMzMsMTUgQEAKICNp
bXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdERvd25s
b2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCiAj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wu
aCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxS
ZXNwb25zZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktp
dC9XS0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgpA
QCAtMTc0LDcgKzE3OCw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdCkKIEBp
bXBsZW1lbnRhdGlvbiBDb252ZXJ0UmVzcG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRl
CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25z
ZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlk
ZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKIH0KIEBlbmQKIApAQCAtOTc3LDcgKzk4
MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3Vu
ZCkKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZpbmlzaE5hdmlnYXRpb24pOwogICAgIEVYUEVDVF9X
S19TVFJFUShfV0tMZWdhY3lFcnJvckRvbWFpbiwgZXJyb3IuZG9tYWluKTsKICAgICBfZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9
IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERv
d25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKIH0KIApAQCAtOTg1LDcgKzk4OSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25s
b2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkKIHsKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb24pOwogICAgIF9kaWRGaW5pc2hOYXZpZ2F0aW9uID0gWUVT
OwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBv
bGljeSAhPSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRT
dGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC0xMDI0LDcgKzEw
MjgsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5
Q2FjaGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJMLmFic29sdXRlU3RyaW5nLCBbd2Vi
VmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAogICAgIE5TVVJMICpzZWNvbmRVUkwgPSBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmlsZS9zaW1wbGUyLmh0bWwiXTsKLSAg
ICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWRdOworICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9u
ZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTEw
NTEsNyArMTA1NSw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZy
b21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdh
dGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dl
YlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKLSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQ
b2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOworICAgIFtk
ZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTExODksMjQgKzExOTMsMzAgQEAgU3RyaW5n
IGxvbmdTdHJpbmcoTENoYXIgYykKICAgICByZXR1cm4gU3RyaW5nKHZlY3Rvci5kYXRhKCksIGxl
bmd0aCk7CiB9CiAKLVRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK2VudW0gY2xhc3MgSW5jbHVk
ZUVUYWcgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBUZXJtaW5hdGVBZnRlckZpcnN0
UmVwbHkgOiBib29sIHsgTm8sIFllcyB9OworCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRl
RVRhZzo6WWVzLCBGdW5jdGlvbjx2b2lkKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24pPiYmIHRl
cm1pbmF0b3IgPSBudWxscHRyKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OwotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFtpbmNsdWRlRVRhZywgdGVybWlu
YXRvciA9IFdURk1vdmUodGVybWluYXRvciksIGNvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJL
aXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAo
Kytjb25uZWN0aW9uQ291bnQpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgY29ubmVj
dGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7Ci0g
ICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgICAgICAiRVRhZzog
dGVzdFxyXG4iCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbaW5j
bHVkZUVUYWcsIGNvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAo
VmVjdG9yPGNoYXI+JiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIs
CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVFVGFnID09IEluY2x1ZGVFVGFnOjpZZXMgPyAi
RVRhZzogdGVzdFxyXG4iIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjog
YXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKICAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKLSAgICAgICAgICAgICAgICApKTsK
KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZN
b3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0
b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3IpCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yKGNvbm5lY3Rpb24pOworICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5l
Y3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRl
cz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBh
cnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDE2ICsxMjMwLDY0IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CisKK3N0YXRpYyB2b2lkIGNo
ZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNVUkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpm
aWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBF
WFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShm
aWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNv
bnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CisK
K3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZl
cigpCit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0
aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9u
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAw
MFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7
IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgIlxyXG4iLCBs
b25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAgICB9KTsKKyAgICB9
fTsKK30KIAotICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3du
bG9hZFJlc3VtZVRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworc3RhdGljIHZvaWQgY2hlY2tGaWxl
Q29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDb250ZW50cykKK3sK
KyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
OmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBleHBlY3RlZENvbnRl
bnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVDb250ZW50cy5s
ZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihm
aWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsKK30KKworc3RhdGlj
IE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5TVVJMICp0ZW1wRGly
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNd
OwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2Fk
RmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07CisgICAgcmV0dXJu
IGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAgICB9OwogCiAgICAgZW51bSBjbGFz
cyBDYWxsYmFjayA6IHVpbnQ4X3QgeyBTdGFydCwgV3JpdGVEYXRhLCBEZWNpZGVEZXN0aW5hdGlv
biwgQ3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNoIH07CkBAIC0xMjQwLDEwICsxMjk4
LDExIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBfX2Jsb2NrIFJldGFpblB0cjxf
V0tEb3dubG9hZD4gZG93bmxvYWQ7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1
bWVEYXRhOwogCi0gICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhb
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5n
ZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IF4oX1dLRG93bmxv
YWQgKiwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKEJPT0wsIE5TU3RyaW5nICopKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBb
dGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2VzdGVkRmlsZW5hbWVdLnBh
dGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImV4YW1wbGUudHh0Iiwgc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIGV4cGVjdGVkRG93bmxvYWRG
aWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRXcml0ZURh
dGEgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50
NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpXcml0ZURhdGEpOwpAQCAt
MTI1OCw3ICsxMzE3LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIH07CiAgICAg
ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IF4oX1dLRG93bmxv
YWQgKiwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQo
Q2FsbGJhY2s6OkNyZWF0ZURlc3RpbmF0aW9uKTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRl
c3RpbmF0aW9uLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxl
LnR4dCJdLnBhdGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIGV4cGVj
dGVkRG93bmxvYWRGaWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQo
KS5kb3dubG9hZERpZENhbmNlbCA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAg
IGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNhbmNlbCk7CkBAIC0xMjk2LDE1ICsxMzU1LDcg
QEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsK
ICAgICB1c2xlZXAoMTAwMDApOwogCi0gICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRh
IGRhdGFXaXRoQ29udGVudHNPZlVSTDpleHBlY3RlZERvd25sb2FkRmlsZV07Ci0gICAgRVhQRUNU
X0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUNv
bnRlbnRzLmJ5dGVzKTsKLSAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzKSB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCi0gICAgICAgICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0s
ICdiJyk7Ci0gICAgfQorICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOwogfQogCiBAaW50ZXJmYWNlIERvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRl
IDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpAQCAtMTMxNCw3ICsxMzY1LDcgQEAg
VEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKFtuYXZp
Z2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGhhc1N1ZmZpeDpAIi9k
b3dubG9hZCJdKQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CkBAIC0xMzcz
LDQgKzE0MjQsMTE5MCBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdWJmcmFtZVNlY3VyaXR5T3JpZ2lu
KQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiPGJvZHk+PGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvcGFnZSc+PC9pZnJhbWU+
PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
c3RhdGljIHZvaWQgY2hlY2tDYWxsYmFja1JlY29yZChUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVs
ZWdhdGUsIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykKK3sKKyAg
ICBhdXRvIGFjdHVhbENhbGxiYWNrcyA9IGRlbGVnYXRlLnRha2VDYWxsYmFja1JlY29yZDsKKyAg
ICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6
ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKGFjdHVhbENhbGxiYWNr
cy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7IGkrKykKKyAgICAgICAgRVhQRUNU
X0VRKGFjdHVhbENhbGxiYWNrc1tpXSwgZXhwZWN0ZWRDYWxsYmFja3NbaV0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHNp
bXBsZURvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9h
ZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0
YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQoreworICAgIGNoZWNrRmlsZUNvbnRl
bnRzKGRlc3RpbmF0aW9uLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgYXV0byAqZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gKndlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworCisgICAgW3dlYlZpZXcg
cmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2Fk
OworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07CisgICAg
d2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOwor
ICAgIAorICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkU2Vjb25kNWsgPSBmYWxzZTsKKyAgICBF
WFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlKTsKKyAgICByZXRhaW5l
ZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
LCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH07CisgICAgZGVsZWdhdGUuZGlkV3JpdGVE
YXRhID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0
X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkg
eworICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuICsgNTAwMCwgdG90YWxCeXRlc1dyaXR0ZW4p
OworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOwor
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVk
U2Vjb25kNWsgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZh
bHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3du
bG9hZCkgeworICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKSwgZG93bmxv
YWQpOworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gbnVsbHB0cjsKKyAgICAgICAgRVhQRUNU
X1RSVUUoZG93bmxvYWRlZFNlY29uZDVrKTsKKyAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAg
ICB9OworCisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hlY2tSZXN1bWVkRG93
bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitzdGF0aWMgdm9pZCB3
YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUpCit7CisgICAgX19i
bG9jayBib29sIGRvd25sb2FkZWRGaXJzdDVrID0gZmFsc2U7CisgICAgQVNTRVJUKCFkZWxlZ2F0
ZS5kaWRXcml0ZURhdGEpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9h
ZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50
NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShieXRl
c1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1
MDAwKQorICAgICAgICAgICAgZG93bmxvYWRlZEZpcnN0NWsgPSB0cnVlOworICAgIH07CisgICAg
VXRpbDo6cnVuKCZkb3dubG9hZGVkRmlyc3Q1ayk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQ2Fu
Y2VsQW5kUmVzdW1lKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAg
IF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1
ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVz
dW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURh
dGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsK
KworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVu
TG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVzdW1lRGF0YS5n
ZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxB
bmRSZXN1bWUpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
SW5jbHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0
aW9uLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5l
ZERvd25sb2FkOworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVE
YXRhOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQs
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsK
KyAgICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07
CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
CisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5M
b29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdl
dCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxl
Z2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0
aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0
YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6
Tm8pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAg
ICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJz
dDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3Jl
dGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVY
UEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxv
YWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZh
aWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RT
ZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29u
bmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAgIGNv
bm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxv
YWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAg
ZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmll
dyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
LCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsK
KyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRl
bnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBGSVhNRTogTWFr
ZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9OU0VfQ0FMTEJB
Q0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFmdGVyWmVyb0J5
dGVzUmVjZWl2ZWQpCit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbj4g
c2VydmVyQ29ubmVjdGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50
ID0gMCwgJnNlcnZlckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVj
dGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAg
ICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247
CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNo
YXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzog
dGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRh
Y2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiXHJcbiIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
SFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAg
ICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAt
XHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LUxlbmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLCBs
b25nU3RyaW5nPDEwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25S
ZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0
aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4g
cmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdL
RG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAg
ICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3Qp
OworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAg
X19ibG9jayBib29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3du
bG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNo
ZWQgPSB0cnVlOworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpXTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6
c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhd
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVz
dW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8
MTAwPigneCcpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxX
aXRoRXJyb3IsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKKyNlbmRpZgorCit2
b2lkIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVl
c3QsIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0YXRlRmlsZSkodm9pZCkp
Cit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBy
ZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxl
Z2F0ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gbmlsOworCisgICAgX19ibG9jayBS
ZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxv
YWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1l
RGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1l
RGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIGNoZWNrRmlsZUNvbnRl
bnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAg
bXV0YXRlRmlsZSgpOworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRG
aW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2Ft
ZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1
bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nv
bm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikg
bXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAg
Y2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZl
Y3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50
LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3Np
dGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+
KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhU
VFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisjaWYgIVVTRShMRUdBQ1lf
Q0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgICAgICAgICAvLyBNb2phdmUgQ0ZOZXR3b3Jr
IHNlbmRzIGEgcmFuZ2UgcmVxdWVzdCB3aGVuIHJlc3VtaW5nIGEgZG93bmxvYWQgYWZ0ZXIgcmVt
b3ZpbmcgYWxyZWFkeS1kb3dubG9hZGVkIGRhdGEuCisgICAgICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZSIsIHJlcXVlc3Quc2l6ZSgpKSk7Cisj
ZW5kaWYKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAx
MDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAg
ICAgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNV
UkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Cisg
ICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVk
RG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAg
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwor
ICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxv
bmdTdHJpbmc8MTAwMDA+KCd4JykpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhF
eHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0
aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFi
bGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2Ug
MToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8
Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAor
ICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5n
dGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246
IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1MDAwPignYScp
CisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVx
dWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwg
cmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0
cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRlbnRc
clxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAgICAg
ICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+KCdkJykK
KyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRlck11dGF0aW5n
RGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsKKyAgICAgICAg
TlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZlcnJvcl07
CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1soTlNT
dHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0cmluZzwzMDAw
PignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VS
TDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIH0pOworCisgICAg
Y2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIG1ha2VTdHJpbmcobG9uZ1N0
cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJyksIGxvbmdTdHJpbmc8NTAwMD4o
J2QnKSkpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhJbnZhbGlkUmVzdW1lRGF0
YSkKK3sKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVk
RG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxz
ZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpb
QCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH1dOworICAgIH0gQGNhdGNoIChO
U0V4Y2VwdGlvbiAqZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1lLCBOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7Cisg
ICAgfQorICAgIEVYUEVDVF9UUlVFKGNhdWdodEV4Y2VwdGlvbik7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2Fk
VGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25s
b2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdh
aXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVk
RG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgX19ibG9jayBSZXRh
aW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQg
Y2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0
YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEp
CisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBzZXJ2ZXIuY2FuY2VsKCk7Cisg
ICAgCisgICAgcmV0YWluZWREb3dubG9hZCA9IG5pbDsKKyAgICBbd2ViVmlldyByZXN1bWVEb3du
bG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3du
bG9hZDsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQuZGVsZWdhdGUpOworICAgIH1dOwor
ICAgIHdoaWxlICghcmV0YWluZWREb3dubG9hZCkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3Ao
KTsKKworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0
VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgVW5r
bm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10oQ29ubmVjdGlv
biBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPignYScpKSk7Cisg
ICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90
IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUw
MDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFs
Qnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBJ
bnZhbGlkQXJndW1lbnRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxzZTsK
KyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJW
aWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBAdHJ5IHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0
dHBzOi8vd2Via2l0Lm9yZy8iXSk7CisgICAgICAgICAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmUpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1lLCBOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNh
dWdodEV4Y2VwdGlvbik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICB9KTsKK30KKwor
c3RhdGljIEhUVFBTZXJ2ZXIgcmVkaXJlY3RTZXJ2ZXIoKQoreworICAgIHJldHVybiB7eworICAg
ICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvcmVkaXJlY3RUYXJnZXQiIH0sIHsg
IkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1WYWx1ZSIgfX0gfSB9LAorICAgICAgICB7ICIvcmVkaXJl
Y3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH19OworfQorCitURVNUKFdLRG93bmxvYWQsIFJl
ZGlyZWN0QWxsb3cpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBOU011
dGFibGVVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFi
bGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgc2VydmVyUmVxdWVzdC5IVFRQQm9keSA9IFtAImJv
ZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAKKyAgICBf
X2Jsb2NrIGJvb2wgZmluaXNoZWREb3dubG9hZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0
RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93
bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkg
eworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBX
ZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXND
b2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRl
ckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3Qu
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1
dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdn
ZXN0ZWRGaWxlbmFtZSwgInJlZGlyZWN0VGFyZ2V0LnR4dCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5wYXRoLCAiL3JlZGlyZWN0VGFyZ2V0Iik7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5wYXRoLCAi
LyIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKikgeworICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7CisgICAgICAgIH07
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZERvd25sb2FkKTsKKworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaGkiKTsKKyAgICAKKyAgICBFWFBF
Q1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOworCisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3Qs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0Q2FuY2Vs
KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTFJlcXVl
c3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAq
cmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0
ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAx
KTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNb
QCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5n
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGlj
eUNhbmNlbCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3Ig
PSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgewor
ICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGNh
bmNlbGxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYW5j
ZWxsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGYWlsV2l0aEVycm9yCisgICAgfSk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50b3RhbFJlcXVl
c3RzKCksIDF1KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RGYWlsdXJl
KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2
ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBzZXJ2ZXIuY2FuY2VsKCk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9v
bCBmYWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6
c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJv
ci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgICAgICBmYWls
ZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsK
KworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBEb3dubG9hZFJlcXVlc3Q0MDQpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICIvIiwgeyA0MDQsIHsgfSwgImh0dHAgYm9keSIgfSB9CisgICAgfSk7CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
YXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
d2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9v
bCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworCisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJodHRwIGJvZHkiKTsKKworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoLAorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCit7CisgICAgYXV0byBzZXJ2
ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZp
bGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRl
KTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgdGVybWluYXRlZCA9IGZhbHNlOworICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdv
cmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAgIH07Cisg
ICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5hdGVOZXR3
b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxv
YWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBTdWdn
ZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwg
IjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5z
dWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0
ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXF1ZXN0SFRUUEJvZHkp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBbW3NlcnZl
ci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXF1ZXN0LkhUVFBC
b2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOwor
ICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0IGNvbXBsZXRpb25I
YW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93
bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdh
bnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93bmxvYWQsIFBhdGhNdXN0RXhp
c3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1Rl
bXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25s
b2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpuaWxdOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0
b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVh
c2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBf
X2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUu
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JD
YW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07
CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZpbGVNdXN0
Tm90RXhpc3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBfX2Jsb2NrIGF1dG8gcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gcmV0YWluZWRE
ZWxlZ2F0ZS5nZXQoKTsKKworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlz
ayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhw
ZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKworICAgIF9fYmxvY2sgYm9vbCBm
YWlsZWQgPSBmYWxzZTsKKyAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworICAgICAgICByZXRhaW5lZERlbGVnYXRlLmdldCgp
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwg
TlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
cmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgICAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5n
ZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBO
U0RhdGEgKikgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7CisgICAgICAgICAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKwor
ICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQocmV0YWluZWREZWxlZ2F0ZS5nZXQoKSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0cmluZykKK3sKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRl
LmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0
YSAqKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVy
cm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9y
Q2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGls
OjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFp
bFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3Qg
Y2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyNp
ZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorVEVTVChXS0Rvd25sb2FkLCBDaGFs
bGVuZ2VTdWNjZXNzKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHt7ICIvIiwgeyAiZG93bmxv
YWQgY29udGVudCIgfX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIE5TVVJM
ICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAg
IF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlk
RmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBmaW5pc2hlZCA9IHRy
dWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsK
KyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9u
TWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFs
Rm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgICAg
ICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAg
W3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWQpOwor
ICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKyNlbmRpZgorCitURVNU
KFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
eyB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBmYWls
ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2Fk
ICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyNpZiBV
U0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIC8vIE1vamF2ZSBkb3dubG9h
ZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBl
dmFsdWF0aW9uLgorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvclNlY3Vy
ZUNvbm5lY3Rpb25GYWlsZWQpOworI2Vsc2UKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JDYW5jZWxsZWQpOworI2VuZGlmCisgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxzZTsKKyAgICBk
ZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVj
dGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
U2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIG5pbCk7CisgICAgICAgIHJl
Y2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxv
YWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRX
T1JLX0RPV05MT0FEUykKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CisjZW5k
aWYKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisjaWYgIVVTRShMRUdBQ1lf
Q0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRv
bid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24u
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorI2Vu
ZGlmCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsK
K30KKwordm9pZCBibG9iVGVzdChib29sIGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24sIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxEb3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykK
K3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25s
b2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2En
KTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJl
ZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9hZCA9ICdkb3du
bG9hZEZpbGVuYW1lJzsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAgICI8L3Nj
cmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAg
aWYgKFthY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAi
YWJvdXQ6YmxhbmsiXSkKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFj
dGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlLCAiZG93bmxvYWRGaWxlbmFtZSIpOworICAg
ICAgICAgICAgaWYgKGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3du
bG9hZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoYWN0aW9uLnJlcXVlc3QuVVJM
LnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdp
bmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVz
cG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25z
ZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVk
RmlsZW5hbWUsICJkb3dubG9hZEZpbGVuYW1lIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0g
ZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikg
eworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgIjEyMyIpOworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIGV4cGVjdGVkQ2FsbGJhY2tzKTsKK30KKwor
VEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2UpCit7CisgICAgYmxvYlRlc3QoZmFsc2UsIHsK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7CisKKyAgICBibG9i
VGVzdCh0cnVlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlTm9GaWxlbmFtZSkK
K3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25s
b2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2En
KTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJl
ZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAi
fSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7
CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhv
c3QsICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24KKyAgICB9KTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBTdWJmcmFtZU9yaWdpbmF0b3IpCit7CisgICAgY29uc3QgY2hh
ciogZ3JhbmRjaGlsZEZyYW1lSFRNTCA9ICI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxv
YWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVm
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9
IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsK
KyAgICBIVFRQU2VydmVyIGdyYW5kY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7
IGdyYW5kY2hpbGRGcmFtZUhUTUwgfSB9CisgICAgfSk7CisgICAgSFRUUFNlcnZlciBjaGlsZEZy
YW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGdyYW5kY2hp
bGRGcmFtZVNlcnZlci5wb3J0KCldIH0gfQorICAgIH0pOworICAgIE5TVVJMUmVxdWVzdCAqZ3Jh
bmRjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0
KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGNoaWxkRnJh
bWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIHVpbnQxNl90IGdyYW5kY2hpbGRGcmFtZVNlcnZlclBv
cnQgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpOworCisgICAgTlNTdHJpbmcgKm1haW5I
VE1MID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEy
Ny4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOm1haW5IVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZy8iXV07CisKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgeworICAgICAgICBp
ZiAoW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZy8iXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNl
LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Y2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNl
LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Z3JhbmRjaGlsZEZyYW1lU2VydmVy
UmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9u
c2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICIxMjcuMC4wLjEiKTsKKyAg
ICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBncmFu
ZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0KTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dl
c3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwp
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGlu
YXRpb24KKyAgICB9KTsKK30KKworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjAwM2FjMjhjZTFlODk2N2Y1ZGFiMGQ4
ODhjYzc4Njg3NTExNjU2OS4uYjFiMTQ0ZmVhYzljN2FhZDJjMmEyYmExNmQyNjgwZTI2Yzk5NDYw
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkKiBw
cm9ncmVzc09ic2VydmluZ0NvbnRleHQgPSAmcHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0OwogLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNp
b25IYW5kbGVyCiB7CiAgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpD
b252ZXJ0TG9hZFRvRG93bmxvYWQpCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAgICBlbHNlCiAg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsK
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5B
cHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA5NzU4N2Q2NTA3MjNkMDJlM2VhZWNmYmI1
MTQzOGE5OWU0NzkyMzgxLi4yY2ZmYzlhNzA5ZjU1MGRmYTFkZDVjMzFkYjIyOTgyYjRhZTBkMWM2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBw
QnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMzcyLDYgKzEzNzIsOCBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJv
dW5kKQogICAgICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0
aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5G
cmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9U
UlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgICAgICAg
ICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUiAlQCIsIGVycm9yKTsKICAgICAgICAgICAgIGlm
IChpc01haW5GcmFtZSkKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb1N0cmluZzpAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXBy
aXZhY3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSJdKTsKICAgICAgICAgICAgIGVsc2UKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGE3ZDRlNTNhMzUxNzkyNDVkMWU5MDQw
YzNlYTU2ZTNhMDgyMjNmY2QuLjRlZTE5MjY3YjMwMDBmODk1YTk4ZDMwOTUxNzg5ZTlmOTZjZDZh
YjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJv
Y2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkw7CiAK
IC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNl
IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRl
Y2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3du
bG9hZCA/IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENv
bnZlcnRUb0Rvd25sb2FkID8gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCA6IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQogCiAtICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IGFlMmJj
N2ZlNjY1MzRkNjc5YTQ4ZmI0MWY2MTNmM2UwOGEwODAxYmYuLmRmZTFkMzhjNjZjNDhmZmNjODg1
ZjgzMWZjMzAyZmI5NDk3YjUzNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChRdWlj
a0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xv
b2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFn
ZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkXSk7CiAgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUu
Z2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwog
ICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFu
Z2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShb
ZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1Qo
UXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExB
VEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAog
VEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewot
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBh
Z2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdl
c0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBl
IHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRd
KTsKICAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEo
V2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUg
bmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZp
bmlzaE5hdmlnYXRpb25dKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdERvd25sb2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUuaAppbmRleCA3YWFkMjNjM2VjNWI0MjE3NTFlZGM4NDAwYzBhMGVhNjBi
OGM0ODViLi4zMDkzNzUwMzk3MzNlY2I5NjA3YTViMDI4MjQwNTk1Yzg4ZjU1NGU3IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0y
NCwxNyArMjQsMzUgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW1wb3J0
IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogCi1AaW50ZXJmYWNlIFRlc3REb3dubG9h
ZERlbGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4KLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFydCkoX1dLRG93bmxvYWQgKik7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEp
KF9XS0Rvd25sb2FkICosIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwotQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJp
bmcgKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZp
bmlzaCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRpZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAq
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNV
UkxDcmVkZW50aWFsKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRD
cmVhdGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7CitlbnVtIGNsYXNz
IERvd25sb2FkQ2FsbGJhY2sgOiB1aW50OF90IHsKKyAgICBXaWxsUmVkaXJlY3QsCisgICAgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgRGVjaWRlRGVzdGluYXRpb24sCisgICAgRGlkV3Jp
dGVEYXRhLAorICAgIERpZEZpbmlzaCwKKyAgICBEaWRGYWlsV2l0aEVycm9yLAorICAgIE5hdmln
YXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVE
b3dubG9hZCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uLAorICAgIE5hdmlnYXRpb25SZXNwb25zZSwK
K307CisKK0BpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxXS0Rvd25s
b2FkRGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkICos
IE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lkICheKShXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoTlNVUkwgKikpOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKFdLRG93bmxvYWQgKiwgaW50
NjRfdCwgaW50NjRfdCwgaW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KiwgTlNEYXRhICopOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFj
dGlvbiAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pKFdLTmF2aWdhdGlv
bkFjdGlvbiAqLCB2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKTsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKShXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeSkpOworCistICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlzaDsKKy0gKFZlY3Rv
cjxEb3dubG9hZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQ7CisKIEBlbmQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCmluZGV4IDFk
YjVjZDgxMWFiNmY1ZDk5YjQxM2U2ZDIxYWFhMzAyYTgwMWZkZDMuLjA1MzA5MzczNTE2MDM0MTJk
ZWFiNDJjNjhmZGM3MWNhZjBlZGI5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsNjggKzI2LDExMyBAQAogI2ltcG9y
dCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgogCi1AaW1wbGVt
ZW50YXRpb24gVGVzdERvd25sb2FkRGVsZWdhdGUKKyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaD4KIAotLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93
bmxvYWQgKilkb3dubG9hZAotewotICAgIGlmIChfZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAg
X2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9h
ZERlbGVnYXRlIHsKKyAgICBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gX2NhbGxiYWNrUmVjb3Jk
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwKKy0gKHZvaWQpZG93bmxvYWQ6KFdL
RG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjooTlNIVFRQVVJM
UmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAg
ICAgICBfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVybCk7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QpOwor
CisgICAgQVNTRVJUKF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik7CisgICAgX3dpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKGRvd25sb2FkLCByZXNwb25zZSwgcmVxdWVzdCwgZGVjaXNpb25I
YW5kbGVyKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKKy0gKHZvaWQpZG93
bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAq
KXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqZGVz
dGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9u
c2UpCi0gICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlKTsKKyAg
ICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpOworICAg
IF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UsIHN1Z2dl
c3RlZEZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0
dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCist
ICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2
NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUKIHsKKyAgICAvLyBkaWRXcml0ZURhdGEgaXMgY2FsbGVkIGEgbm9uZGV0ZXJtaW5p
c3RpYyBudW1iZXIgb2YgdGltZXMsIHNvIG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBzZXJpZXMuCisg
ICAgaWYgKF9jYWxsYmFja1JlY29yZC5pc0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVjb3JkLmxhc3Qo
KSAhPSBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpCisgICAgICAgIF9jYWxsYmFja1Jl
Y29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKTsKKwogICAgIGlmIChf
ZGlkV3JpdGVEYXRhKQogICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0
ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKIH0KIAot
LSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlv
bikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3du
bG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxl
dGlvbkhhbmRsZXIKIHsKLSAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKLSAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
ZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVj
b3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk7CisK
KyAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2Rp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21w
bGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKIH0KIAot
LSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZv
aWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxvYWQgKilkb3dubG9hZAogeworICAgIF9jYWxs
YmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoKTsKKwogICAgIGlm
IChfZG93bmxvYWREaWRGaW5pc2gpCiAgICAgICAgIF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9h
ZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZh
aWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRh
OihOU0RhdGEgKilyZXN1bWVEYXRhCiB7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yKTsKKwogICAgIGlmIChfZGlkRmFpbFdpdGhF
cnJvcikKLSAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yKTsKKyAgICAg
ICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yLCByZXN1bWVEYXRhKTsKIH0KIAot
LSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOihXS05hdmln
YXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQKIHsKLSAgICBpZiAoX2Rvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBf
ZG93bmxvYWREaWRDYW5jZWwoZG93bmxvYWQpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQo
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkKTsKKworICAg
IGlmIChfbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25BY3Rpb24sIGRv
d25sb2FkKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25I
YW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJl
c3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNv
bWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQpOworCisgICAgaWYgKF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KHdlYlZpZXcsIG5hdmlnYXRpb25SZXNwb25zZSwgZG93bmxvYWQpOworfQorCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRs
ZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSk7CisKKyAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZSkKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShuYXZpZ2F0
aW9uUmVzcG9uc2UsIGRlY2lzaW9uSGFuZGxlcik7CiAgICAgZWxzZQotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGlu
ZywgbmlsKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9u
ICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFw
cGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uKTsKKworICAgIGlmIChfZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgZGVjaXNpb25IYW5kbGVyKTsKKyAgICBl
bHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoCit7CisgICAgX19ibG9j
ayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNTRVJUKCFfZG93bmxvYWREaWRGaW5pc2gp
OworICAgIF9kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGZp
bmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmlu
aXNoZWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgorLSAoVmVjdG9yPERv
d25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZAogewotICAgIGlmIChfZGlkQ3JlYXRl
RGVzdGluYXRpb24pCi0gICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVz
dGluYXRpb24pOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1JlY29yZCwgeyB9
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEyYzljYWRhNjE1
ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCArMSw0MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tEb3dubG9hZERlbGVnYXRlLmg+CisKK0BpbnRlcmZhY2UgVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
Kik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoX1dL
RG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmluZyAq
KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNo
KShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
RmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICopOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
Kiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENyZWF0
ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRiZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVkYmYxY2EwODMK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlLm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCisKK0Bp
bXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZQorCistICh2b2lkKV9kb3du
bG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9h
ZERpZFN0YXJ0KQorICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7Cit9CisKKy0g
KHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3du
bG9hZCwgdXJsKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKK3sKKyAgICBp
ZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3du
bG9hZCwgcmVzcG9uc2UpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3Jp
dHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAgIGlmIChfZGlkV3Jp
dGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dyaXR0ZW4sIHRv
dGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30KKworLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9k
b3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsK
K30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQor
ICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworfQorCistICh2b2lk
KV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChf
ZG93bmxvYWREaWRDYW5jZWwpCisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7
Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBf
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNv
bXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworfQor
CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRDcmVhdGVEZXN0
aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgoreworICAgIGlmIChfZGlkQ3JlYXRlRGVz
dGluYXRpb24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9hZCwgZGVzdGlu
YXRpb24pOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDdiYTY3MmFjOWY5MjVmNjMyNWFhMDdmYTZmMTYxYTUwMjM1ZmJiOGMuLjk5NmYx
OTRmN2M0Mjk5MWJmYjczOGJhMDM4NzNhMmJmODc2YzRkY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSA8V2Vi
S2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250
ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRpYWwuaD4KKyNpbmNsdWRl
IDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2Fk
UmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tIVFRQQ29va2llU3Rv
cmVSZWYuaD4KQEAgLTgwLDYgKzgyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXV0b2RyYWluZWRQb29s
Lmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0Ny
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0u
aD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMiw2ICsxMzUsMzMg
QEAgc3RhdGljIFdLU3RyaW5nUmVmIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmcoV0tQYWdlUmVmLCBjb25zdCB2b2lkKikKICAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoIk1JSEZNSEV3WERBTkJna3Foa2lHOXcwQkFRRUZBQU5MQURCSUFrRUFuWDBU
SUxKck9NVXVlJTJCUHR3QlJFNlhmViUwQVd0S1Fic3NoeGs1WmhjVXdjd3l2Y25JcTliODJRaEpk
b0FDZEQzNHJxZkNBSU5ENDZmWEtRVW5iMG12S3pRSUQlMEFBUUFCRmhGTmIzcHBiR3hoU1hOTmVV
WnlhV1Z1WkRBTkJna3Foa2lHOXcwQkFRUUZBQU5CQUFLdjJFZXgybiUyRlMlMEFyJTJGN2lKTnJv
V2xTelNNdFRpUVRFQiUyQkFEV0hHajl1MXhyVXJPaWxxJTJGbzJjdVF4SWZaY05aa1lBa1dQNER1
YnFXJTBBaTAlMkYlMkZyZ0J2bWNvJTNEIik7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5h
dmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVy
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGRvd25s
b2FkKTsKKworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQgeworICAgICAgICB7IDAsIGNs
aWVudEluZm8gfSwKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwsCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZQorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUsCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFdyaXRlRGF0
YQorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2gsCisgICAgICAgIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwKKyAgICB9OworCisgICAgV0tEb3dubG9hZFNl
dENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxl
cjo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIG5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZChkb3dubG9hZCwg
Y2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbmF2
aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKGRvd25sb2FkLCBjbGllbnRJbmZvKTsKK30K
KwogQXN5bmNUYXNrKiBBc3luY1Rhc2s6Om1fY3VycmVudFRhc2s7CiAKIGJvb2wgQXN5bmNUYXNr
OjpydW4oKQpAQCAtMzM2LDcyICszNjYsNzIgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAog
ICAgIFdLUGFnZVVJQ2xpZW50Vjggb3RoZXJQYWdlVUlDbGllbnQgPSB7CiAgICAgICAgIHsgOCwg
dmlldyB9LAotICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAKLSAgICAgICAgMCwgLy8gc2hvd1BhZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3
UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHNob3dQYWdl
CiAgICAgICAgIGNsb3NlT3RoZXJQYWdlLAotICAgICAgICAwLCAvLyB0YWtlRm9jdXMKKyAgICAg
ICAgbnVsbHB0ciwgLy8gdGFrZUZvY3VzCiAgICAgICAgIGZvY3VzLAogICAgICAgICB1bmZvY3Vz
LAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAotICAgICAgICAwLCAvLyBzZXRTdGF0dXNUZXh0Ci0gICAgICAgIDAsIC8vIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gbWlzc2lu
Z1BsdWdpbkJ1dHRvbkNsaWNrZWQKLSAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQK
LSAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVudAotICAgICAgICAwLCAvLyB0b29s
YmFyc0FyZVZpc2libGUKLSAgICAgICAgMCwgLy8gc2V0VG9vbGJhcnNBcmVWaXNpYmxlCi0gICAg
ICAgIDAsIC8vIG1lbnVCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc2V0TWVudUJhcklzVmlz
aWJsZQotICAgICAgICAwLCAvLyBzdGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc2V0
U3RhdHVzQmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIGlzUmVzaXphYmxlCi0gICAgICAgIDAs
IC8vIHNldElzUmVzaXphYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVy
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3Jp
cHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkph
dmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8v
IHNldFN0YXR1c1RleHQKKyAgICAgICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBtaXNzaW5nUGx1
Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICBudWxscHRyLCAvLyBkaWROb3RIYW5kbGVLZXlFdmVu
dAorICAgICAgICBudWxscHRyLCAvLyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50CisgICAgICAgIG51
bGxwdHIsIC8vIHRvb2xiYXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRUb29s
YmFyc0FyZVZpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gbWVudUJhcklzVmlzaWJsZQorICAg
ICAgICBudWxscHRyLCAvLyBzZXRNZW51QmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8v
IHN0YXR1c0JhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNCYXJJc1Zp
c2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNSZXNpemFibGUKKyAgICAgICAgbnVsbHB0ciwg
Ly8gc2V0SXNSZXNpemFibGUKICAgICAgICAgZ2V0V2luZG93RnJhbWUsCiAgICAgICAgIHNldFdp
bmRvd0ZyYW1lLAogICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwsCi0gICAgICAg
IDAsIC8vIGRpZERyYXcKLSAgICAgICAgMCwgLy8gcGFnZURpZFNjcm9sbAotICAgICAgICAwLCAv
LyBleGNlZWRlZERhdGFiYXNlUXVvdGEKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRHJhdworICAg
ICAgICBudWxscHRyLCAvLyBwYWdlRGlkU2Nyb2xsCisgICAgICAgIG51bGxwdHIsIC8vIGV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YQogICAgICAgICBydW5PcGVuUGFuZWwsCiAgICAgICAgIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCi0gICAgICAgIDAsIC8vIGhlYWRl
ckhlaWdodAotICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZHJhd0hl
YWRlcgotICAgICAgICAwLCAvLyBkcmF3Rm9vdGVyCisgICAgICAgIG51bGxwdHIsIC8vIGhlYWRl
ckhlaWdodAorICAgICAgICBudWxscHRyLCAvLyBmb290ZXJIZWlnaHQKKyAgICAgICAgbnVsbHB0
ciwgLy8gZHJhd0hlYWRlcgorICAgICAgICBudWxscHRyLCAvLyBkcmF3Rm9vdGVyCiAgICAgICAg
IHByaW50RnJhbWUsCiAgICAgICAgIHJ1bk1vZGFsLAotICAgICAgICAwLCAvLyBkaWRDb21wbGV0
ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKLSAgICAgICAgMCwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcgotICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Ci0g
ICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQotICAgICAg
ICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAotICAgICAgICAwLCAvLyBkZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAotICAgICAgICAwLCAvLyB1bmF2YWls
YWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQotICAgICAgICAw
LCAvLyBzaG93Q29sb3JQaWNrZXIKLSAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlja2VyCi0gICAg
ICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAwLCAvLyBw
aW5uZWRTdGF0ZURpZENoYW5nZQotICAgICAgICAwLCAvLyBkaWRCZWdpblRyYWNraW5nUG90ZW50
aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwgLy8gZGlkUmVjb2duaXplTG9uZ01vdXNlUHJl
c3MKLSAgICAgICAgMCwgLy8gZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVz
cwotICAgICAgICAwLCAvLyBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICAgICAgbnVsbHB0ciwg
Ly8gc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgorICAgICAgICBudWxscHRyLCAvLyBz
aG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0CisgICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1Bh
Z2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRyLCAvLyBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudAorICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lGb3JOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICBudWxscHRyLCAvLyB1bmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRy
LCAvLyBzaG93Q29sb3JQaWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gaGlkZUNvbG9yUGlja2Vy
CisgICAgICAgIG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAg
ICAgICBudWxscHRyLCAvLyBwaW5uZWRTdGF0ZURpZENoYW5nZQorICAgICAgICBudWxscHRyLCAv
LyBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
Q2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcworICAgICAgICBudWxscHRyLCAv
LyBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZQogICAgICAgICBkZWNpZGVQb2xpY3lGb3JVc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgMCwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRv
bgotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKLSAgICAgICAgMCwgLy8gcnVuSmF2
YVNjcmlwdENvbmZpcm0KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAotICAgICAg
ICAwLCAvLyB1bnVzZWQ1CisgICAgICAgIG51bGxwdHIsIC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0
b24KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CisgICAgICAgIG51bGxw
dHIsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFT
Y3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gdW51c2VkNQogICAgICAgICBjcmVhdGVP
dGhlclBhZ2UsCiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKLSAgICAgICAgMCwgLy8gcnVu
SmF2YVNjcmlwdENvbmZpcm0KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAg
ICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQorICAgICAgICBudWxscHRyLCAv
LyBydW5KYXZhU2NyaXB0UHJvbXB0CiAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVybWlzc2lvbkZv
ck9yaWdpbiwKLSAgICAgICAgMCwgLy8gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsCi0gICAg
ICAgIDAsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZQorICAgICAgICBudWxscHRyLCAv
LyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKKyAgICAgICAgbnVsbHB0ciwgLy8gZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lCiAgICAgICAgIHJlcXVlc3RQb2ludGVyTG9jaywKLSAgICAg
ICAgMCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTG9zZVBvaW50ZXJMb2NrCiAgICAgfTsKICAg
ICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xpZW50LmJhc2Up
OwogICAgIApAQCAtNDEwLDE2ICs0NDAsMTYgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KICAg
ICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JQbHVnaW5M
b2FkLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAg
ICBudWxscHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24sCi0gICAgICAgIDAs
IC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkQ29tbWl0
TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGaW5pc2hOYXZpZ2F0aW9uCi0gICAgICAgIDAs
IC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbExv
YWRJblN1YmZyYW1lCi0gICAgICAgIDAsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZAotICAgICAg
ICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIHJlbmRlcmlu
Z1Byb2dyZXNzRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29tbWl0TmF2aWdhdGlvbgorICAg
ICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEZhaWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9h
ZAorICAgICAgICBudWxscHRyLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCisgICAgICAg
IG51bGxwdHIsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCiAgICAgICAgIGNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgcHJvY2Vzc0RpZENyYXNoLApAQCAtNDI4LDkgKzQ1
OCwxMiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9y
bVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogICAgICAgICB3aWxsRW5kTmF2aWdhdGlv
bkdlc3R1cmUsCiAgICAgICAgIGRpZEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRS
ZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90LAotICAgICAgICAwLCAvLyB3ZWJQcm9jZXNz
RGlkVGVybWluYXRlCi0gICAgICAgIDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgot
ICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisgICAgICAgIG51
bGxwdHIsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0ciwgLy8gY29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcsCisgICAgICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCwKKyAgICAgICAgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAg
IG51bGxwdHIgLy8gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZAogICAgIH07CiAgICAgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobmV3UGFnZSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50
LmJhc2UpOwogCkBAIC03NTAsMTYgKzc4MywxNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVh
dGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAg
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwK
LSAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBk
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkQ29tbWl0TmF2aWdhdGlvbiwKICAgICAg
ICAgZGlkRmluaXNoTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24K
LSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAg
MCwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8g
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
RmluaXNoRG9jdW1lbnRMb2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UK
ICAgICAgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jh
c2gsCkBAIC03NjgsMjggKzgwMSwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJW
aWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgICAgIHdpbGxF
bmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAg
ICAgICAgIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIDAsIC8v
IHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90
aWZpY2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcK
KyAgICAgICAgbnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAgICAgICBudWxs
cHRyLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAgICAgY29weVNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCwKKyAgICAgICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCiAgICAg
fTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChtX21haW5XZWJWaWV3LT5wYWdl
KCksICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKLQotICAgIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50VjEgZG93bmxvYWRDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9LAotICAgICAg
ICBkb3dubG9hZERpZFN0YXJ0LAotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCi0gICAgICAgIDAs
IC8vIGRpZFJlY2VpdmVEYXRhCi0gICAgICAgIDAsIC8vIHNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlCi0gICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
LAotICAgICAgICAwLCAvLyBkaWRDcmVhdGVEZXN0aW5hdGlvbgotICAgICAgICBkb3dubG9hZERp
ZEZpbmlzaCwKLSAgICAgICAgZG93bmxvYWREaWRGYWlsLAotICAgICAgICBkb3dubG9hZERpZENh
bmNlbCwKLSAgICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoOwotICAgICAgICBkb3dubG9hZERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMCi0gICAgfTsKLSAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChjb250ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKICAgICAKICAgICAv
LyB0aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKQEAgLTIwNzksNDUgKzIw
OTgsMzUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKFdLUGFnZVJlZiBwYWdlLCBXS0F1dGhlbnQKIH0KIAogCi0vLyBXS0NvbnRleHREb3du
bG9hZENsaWVudAotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRleHQsIGRvd25sb2FkKTsK
LX0KKy8vIFdLRG93bmxvYWRDbGllbnQKICAgICAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVy
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wq
IGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4dCwgZG93bmxv
YWQsIGZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci19Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xs
ZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRl
c3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERp
ZEZpbmlzaChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgc3VnZ2VzdGVkRmlsZW5hbWUpOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmIGNv
bnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kb3dubG9hZERpZEZhaWwoY29udGV4dCwgZG93bmxvYWQsIGVycm9yKTsKKyAgICBzdGF0aWNf
Y2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93
bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkRmFpbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRy
b2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkQ2FuY2Vs
KGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNv
bnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGRvd25sb2FkLCBl
cnJvcik7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK2Jvb2wgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3Qs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCBuZXdSZXF1
ZXN0KTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsKICAgICBpZiAo
bV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0cmluZ1JlZiBU
ZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tD
b250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFs
bG93T3ZlcndyaXRlKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5n
UmVmIGZpbGVuYW1lKQogewogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IHRvV1RGU3Ry
aW5nKGZpbGVuYW1lKTsKIApAQCAtMjEzMywyOCArMjE0MiwzMyBAQCBXS1N0cmluZ1JlZiBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250
ZXh0UmVmLAogICAgIGlmICghZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgICphbGxvd092ZXJ3cml0ZSA9IHRydWU7CiAgICAgU3RyaW5nIHRlbXBvcmFy
eUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsKICAgICBpZiAo
c3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQogICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9
ICJVbmtub3duIjsKKyAgICAKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0ZW1wb3JhcnlGb2xk
ZXIgKyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoRmlsZVN5c3RlbTo6ZmlsZUV4
aXN0cyhkZXN0aW5hdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUoZGVzdGlu
YXRpb24pOwogCi0gICAgcmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2Vz
dGVkRmlsZW5hbWUpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9XSyhkZXN0aW5hdGlvbikubGVh
a1JlZigpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZpbmlzaChXS0Rvd25sb2FkUmVmKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2Fs
bGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9h
ZCBjb21wbGV0ZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlEb3dubG9h
ZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmIHVy
bCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7CisgICAgYXV0
byB1cmwgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCkpOwogICAgIGlmICht
X3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVkIHRvIFwiIiwg
dG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkpLCAiXCIuXG4iKSk7Cisg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxv
YWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0
cmluZyh1cmwuZ2V0KCkpKSksICJcIi5cbiIpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgV0tFcnJvclJlZiBlcnJvcikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQogewogICAgIGlmIChtX3Nob3Vs
ZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91
dHB1dFRleHQoIkRvd25sb2FkIGZhaWxlZC5cbiJfcyk7CkBAIC0yMTY4LDEzICsyMTgyLDYgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZiwgV0tFcnJvclJlZiBlcnIKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3RpZnlE
b3dubG9hZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5j
ZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQotewotICAgIGlmIChtX3Nob3VsZExvZ0Rv
d25sb2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0
KCJEb3dubG9hZCBjYW5jZWxsZWQuXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3Rp
ZnlEb3dubG9hZERvbmUoKTsKLX0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJvY2Vzc0RpZENy
YXNoKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGlt
ZXMgd2hlbiBjcmFzaCBsb2dzIGFyZSBiZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBzbwpAQCAtMjUw
NCw3ICsyNTExLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWcKICAgICBhdXRvIGRlY2lzaW9u
RnVuY3Rpb24gPSBbc2hvdWxkSWdub3JlLCByZXRhaW5lZExpc3RlbmVyLCByZXRhaW5lZE5hdmln
YXRpb25BY3Rpb24sIHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9u
ID0gbV9zaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiwgc2hvdWxk
U3dhcFRvRGVmYXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9EZWZh
dWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb25dKCkgewogICAgICAgICBpZiAoc2hvdWxkSWdub3Jl
KQogICAgICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKHJldGFpbmVkTGlzdGVu
ZXIuZ2V0KCkpOwotICAgICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJm
b3JtRG93bmxvYWQocmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKKyAgICAgICAgZWxz
ZSBpZiAoV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUocmV0YWluZWROYXZp
Z2F0aW9uQWN0aW9uLmdldCgpKSkKICAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRv
d25sb2FkKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgIGlmIChzaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiB8fCBz
aG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24pIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTdiOGY3YTA1OTUyM2VjZjg3N2FiMDE5
NzIwZDRkYmU1OGZjYjVmLi43NjgxZTFlNDE5YmE4OTdkMTI1MWU5OGUyYjFmYWQzOWZhZjZmMjI1
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC00NDIsMTkgKzQ0
MiwxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQ
YWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCop
OwogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJl
Zik7CiAKLSAgICAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7
Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7
Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUs
IGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLSAgICBXS1N0
cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRS
ZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVy
d3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2go
V0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERp
ZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lk
Kik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
LCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlk
Q2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93
bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxv
YWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxS
ZWYpOworICAgIC8vIFdLRG93bmxvYWRDbGllbnQKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9u
QWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYs
IFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNl
UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdh
dGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIFdL
U3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxv
YWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFt
ZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiwgY29u
c3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZik7Cisg
ICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYs
IFdLRGF0YVJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93
bmxvYWRSZWYsIFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyBib29sIGRvd25sb2FkRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tV
UkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisgICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJlZik7CiAgICAg
CiAgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1MzRlOThm
NjEwNTNhYTBjMTMzNmJmNDIzMTRkYTlkMjk4ZjQyODc4Li5iZTFiMWI2ODE3MTM2NDUzZGQ3ODA2
OWY3NzVkN2RiYmM4MDY1NmEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMTEtMTggIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRy
b2R1Y2UgbmV3IGRvd25sb2FkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxv
YWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2It
Y29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRv
LWRvd25sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICBOb3cgdGhh
dCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBkb2Vzbid0IHN1Z2dlc3Qg
InVua25vd24iCisgICAgICAgIHRoZSBjYXBpdGFsaXphdGlvbiBoYXMgY2hhbmdlZCB0byAiVW5r
bm93biIgZnJvbSBOU1VSTFJlc3BvbnNlJ3Mgc3VnZ2VzdGVkRmlsZW5hbWUuCisKIDIwMjAtMTEt
MTggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9O
IChyMjY5NTk4KTogWyBNYWMgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
c2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWlmcmFtZS1lbGVtZW50L2lmcmFtZS1uZXR3
b3JrLWVycm9yLnN1Yi5odG1sIGlzIGZsYWt5IGZhaWxpbmcKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxv
YWQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmEx
NmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2Fk
IHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25v
d24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93
bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBVUkwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRy
aWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRo
ZXRpYy1jbGljay1leHBlY3RlZC50eHQKaW5kZXggYmVkYzhkZGEwMWM4YzEyMzdlMTA2YzY4NTMz
NDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVhNThjMDhmYmVlMDZjYjM5NDMxY2RjMzFkMGRiNTlhNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2Fk
LXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1
IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZp
bGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmls
ZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRlc3QgdGhhdCB1c2Vy
IHRyaWdnZXJlZCBzeW50aGV0aWMgY2xpY2tzIG9uIGFuIGFuY2hvciB3aXRoIGEgZG93bmxvYWQg
YXR0cmlidXRlIGFyZSBub3QgaWdub3JlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25s
b2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3lu
Yy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlm
ZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3Rl
ZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBz
aG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxl
LWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3
Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEy
ODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAog
RG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFt
ZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5r
bm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKaW5kZXgg
MDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJh
MDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3du
bG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4K
LURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgor
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBE
b3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414596</attachid>
            <date>2020-11-19 09:51:48 -0800</date>
            <delta_ts>2020-11-19 14:08:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201119095146.patch</filename>
            <type>text/plain</type>
            <size>329775</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzODJhZmU1Yzk4MmE5Yjhh
NTdiODNjOTgwZGI3ZDIyMTRlODA0NjMuLmZkZGEzMGUyNjRjYmNmOTk3MTliZWQyZjk2OTVhMzY1
ZTYxNTkwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNhZmFyaSBjdXJyZW50bHkgdXNlcyBfV0tEb3dubG9hZCwgd2hpY2ggaGFzIGV2
b2x2ZWQgc3RyYW5nZWx5IG92ZXIgdGhlIGxhc3QgZGVjYWRlLgorICAgICAgICBJbiBvcmRlciB0
byBtYWtlIGEgbmljZXIgaW50ZXJmYWNlLCB3ZSBuZWVkIHRvIGxlYXJuIGZyb20gdGhvc2UgbGVz
c29ucyBhbmQgdGFrZSBhIHN0ZXAgYmFjay4KKyAgICAgICAgSSBkaWQgdGhhdCwgYW5kIGhlcmUn
cyB3aGF0IEkgY2FtZSB1cCB3aXRoOiBXS0Rvd25sb2FkIGFuZCBXS0Rvd25sb2FkRGVsZWdhdGUh
CisKKyAgICAgICAgTm90YWJsZSBjaGFuZ2VzIGluY2x1ZGU6CisgICAgICAgIDEuICBUaGUgZGVs
ZWdhdGUgbm93IGxpdmVzIG9uIHRoZSBkb3dubG9hZCBvYmplY3QgaW5zdGVhZCBvZiB0aGUgcHJv
Y2VzcyBwb29sLgorICAgICAgICAyLiAgV0tEb3dubG9hZCBkb2VzIG5vdCBjb25mb3JtIHRvIE5T
Q29weWluZyBiZWNhdXNlIHdlIGhhdmUgTlNNYXBUYWJsZSBpbnN0ZWFkIG9mIE5TRGljdGlvbmFy
eS4KKyAgICAgICAgMy4gIHB1Ymxpc2hQcm9ncmVzc0F0VVJMIGlzIGdvbmUuICBUaGF0IHdpbGwg
YmUgcmVpbXBsZW1lbnRlZCBpbiB0aGUgVUkgcHJvY2VzcyBvZiB0aGUgY2xpZW50IHRoYXQgdXNl
ZCBpdC4KKyAgICAgICAgNC4gIGNhbmNlbCBoYXMgYSBjb21wbGV0aW9uIGhhbmRsZXIgdG8gZ2V0
IHRoZSByZXN1bWUgZGF0YSBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIGRpZENhbmNlbCB0aGVuIGdl
dHRpbmcgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LgorICAgICAgICA1LiAgZGlkRmFpbFdp
dGhFcnJvciBhbHNvIGdpdmVzIHlvdSB0aGUgcmVzdW1lIGRhdGEsIHNvIHRoZXJlIGlzIG5vIHdh
eSB0byBnZXQgaXQgZnJvbSB0aGUgZG93bmxvYWQgb2JqZWN0LiAgVGhhdCdzIG1vcmUgYWJvdXQg
YSBmYWlsL2NhbmNlbAorICAgICAgICAgICAgZXZlbnQgdGhhbiBhIHByb3BlcnR5IG9mIHRoZSBk
b3dubG9hZC4KKyAgICAgICAgNi4gIHdhc1VzZXJJbml0aWF0ZWQgaXMgZ29uZS4gIEluc3RlYWQs
IFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcyBhIGNhbGxiYWNrIHRoYXQgbGlua3MgYSBuYXZpZ2F0
aW9uICh3aGVyZSBfd2FzVXNlckluaXRpYXRlZCBpcyBleHBvc2VkKSB0byB0aGUgZG93bmxvYWQu
CisgICAgICAgIDcuICByZWRpcmVjdENoYWluIGlzIGFsc28gZ29uZS4gIFRoYXQgY2FuIGFsc28g
YmUgZ290dGVuIGZyb20gdGhlIGxpbmsgdG8gdGhlIG5hdmlnYXRpb24gYW5kIHRoZSBkb3dubG9h
ZCBkZWxlZ2F0ZSdzIHJlZGlyZWN0IGNhbGxiYWNrLgorICAgICAgICA4LiAgX2Rvd25sb2FkRGlk
U3RhcnQgaXMgZ29uZS4gIEluc3RlYWQsIHdlIGhhdmUgY29tcGxldGlvbiBoYW5kbGVycyB0aGF0
IGV4cG9zZSBhIFdLRG93bmxvYWQgb25jZSBpdCdzIHN0YXJ0ZWQuICBUaGVyZSdzIG5vIG5lZWQg
dG8KKyAgICAgICAgICAgIHJlZmVyZW5jZSB0aGUgZG93bmxvYWQgb2JqZWN0IGJlZm9yZSB0aGVu
IGFueXdheXMuICBOb3RlOiB0aGF0J3Mgd2hlbiB0aGUgZG93bmxvYWQgInN0YXJ0cyIgd2hpY2gg
aXMgYmVmb3JlIGl0IHJlY2VpdmVzIHRoZSByZXNwb25zZSwKKyAgICAgICAgICAgIHNvIHRoZXJl
IHdpbGwgYmUgbm8gc2VydmVyIGRlbGF5IGluIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gZG93bmxv
YWQgb2JqZWN0IGF2YWlsYWJpbGl0aWVzLgorICAgICAgICA5LiAgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwgbm93IGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIGNvbnRpbnVpbmcgb3IgY2Fu
Y2VsbGluZy4gIFRoaXMgcmVmbGVjdHMgdGhlIGFtb3VudCBvZiBjb250cm9sIHRoZQorICAgICAg
ICAgICAgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgaGFzLgorICAgICAgICAxMC4gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgYW5kIGRpZFJlY2VpdmVSZXNwb25zZSBoYXZlIGJl
ZW4gbWVyZ2VkLCBzaW5jZSB0aGV5IGFjdHVhbGx5IGhhcHBlbiBhdCB0aGUgc2FtZSB0aW1lIGFu
ZAorICAgICAgICAgICAgTlNVUkxSZXNwb25zZSBoYXMgc3VnZ2VzdGVkRmlsZW5hbWUgQVBJLiAg
YWxsb3dPdmVyd3JpdGUgaXMgYWxzbyBnb25lLiAgSXQgd2Fzbid0IHVzZWQsIGFuZCBub3QgcmVh
bGx5IG5lZWRlZC4KKyAgICAgICAgMTEuIGRpZENyZWF0ZURlc3RpbmF0aW9uIGlzIGdvbmUuICBU
aGF0IGNhbGxiYWNrIHRpbWUgd2Fzbid0IHJlYWxseSBuZWNlc3NhcnkuICBJZiB5b3UgbmVlZCB0
byBrbm93IHdoZW4gaXQncyBjcmVhdGVkLCB3YWl0IHVudGlsIHRoZSBmaXJzdAorICAgICAgICAg
ICAgZGlkV3JpdGVEYXRhIGNhbGxiYWNrLiAgVGhlIGRlc3RpbmF0aW9uIGhhcyBkZWZpbml0ZWx5
IGJlZW4gY3JlYXRlZCBieSB0aGVuLgorICAgICAgICAxMi4gc2hvdWxkRGVjb2RlU291cmNlRGF0
YU9mTUlNRVR5cGUgaXMgZ29uZS4gIEl0J3MgYWN0dWFsbHkgbm90IGNhbGxlZCBzaW5jZSB3ZSBh
ZG9wdGVkIE5TVVJMU2Vzc2lvbiwgYW5kIHdlIHNob3VsZCByZW1vdmUgdGhlIHJlbGF0ZWQgZGVh
ZCBjb2RlLgorICAgICAgICAxMy4gb3JpZ2luYXRpbmdGcmFtZSBpcyBnb25lLiAgT24gX1dLRG93
bmxvYWQgaXQgd2FzIGFjdHVhbGx5IGEgbm9uLW51bGwgV0tGcmFtZUluZm8gdGhhdCBvZnRlbiBj
b250YWluZWQgbm8gaW5mb3JtYXRpb24uICBXaGVuIGluZm9ybWF0aW9uIHdhcyB0aGVyZSwKKyAg
ICAgICAgICAgIHRoZSBpbmZvcm1hdGlvbiBhY2Nlc3MgaGFzIGJlZW4gcmVwbGFjZWQgYnkgZGlk
QmVjb21lRG93bmxvYWQgd2hpY2ggbGlua3MgdGhlIFdLTmF2aWdhdGlvblJlc3BvbnNlIHdoaWNo
IGhhcyBmcmFtZSBpbmZvIG9uIGl0LgorCisgICAgICAgIEkgd3JvdGUgQVBJIHRlc3RzIGZvciBl
dmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9jb2NvYS9Eb3dubG9hZENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZDo6cmVz
dW1lKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xv
YWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBj
b25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29y
a1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkQ29tcGxldGVXaXRoRXJyb3I6XSk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHk6CisgICAgICAgICogU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElD
YXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRvQVBJKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisgICAgICAg
ICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgIChBUEk6OkRvd25sb2Fk
Q2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50Ojpk
aWRGYWlsKToKKyAgICAgICAgKEFQSTo6RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaDoKKyAgICAgICAgKEFQSTo6
TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgor
ICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURp
ZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHA6
CisgICAgICAgIChXS0NvbnRleHRTZXREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZFJlZi5jcHA6IEFkZGVkLgorICAgICAgICAoV0tEb3dubG9hZEdldFR5cGVJRCk6
CisgICAgICAgIChXS0Rvd25sb2FkQ29weVJlcXVlc3QpOgorICAgICAgICAoV0tEb3dubG9hZENh
bmNlbCk6CisgICAgICAgIChXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKToKKyAgICAgICAg
KFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKToKKyAgICAgICAgKFdLRG93bmxvYWRTZXRD
bGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHA6CisgICAgICAg
IChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZSk6CisgICAgICAgIChXS05h
dmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGll
bnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tEb3dubG9hZC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRG93bmxvYWQgY2Fu
Y2VsOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIG9yaWdpbmFsUmVxdWVzdF0pOgorICAgICAg
ICAoLVtXS0Rvd25sb2FkIGRlbGVnYXRlXSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgc2V0RGVs
ZWdhdGU6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVhbGxvY10pOgorICAgICAgICAoLVtX
S0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWREZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb24gX3dhc1Vz
ZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25BY3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVd
KToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIF9zaG91bGRQZXJmb3JtRG93bmxvYWRd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06Cisg
ICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25sb2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0
b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVz
dW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJW
aWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhE
b3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
Ol0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBjYW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJl
cXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6Cisg
ICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93
bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVE
YXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBk
ZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURv
d25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAg
ICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwpOgorICAgICAgICAoV2Vi
S2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24p
OgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXZWJL
aXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRE
aWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMjAtMTEtMTkgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFttYWNPU10gSXNzdWUgc2FuZGJveCBleHRlbnNpb24gdG8gYXVkaW8gc2VydmljZSBp
ZiBNZWRpYSBpbiB0aGUgR1BVIHByb2Nlc3MgaXMgbm90IGVuYWJsZWQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQpp
bmRleCAzZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZhMjEzOWEyLi45OGVhMDdkYWIx
M2Q2ODk2NGZhNmEzZWYxYmFlYzJiN2UxYTA0NDY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCkBAIC00MCwx
NCArNDAsMTQgQEAgc2V0KFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKICAgICBVSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29u
ZmlndXJhdGlvblJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbm5lY3Rpb25D
bGllbnQuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHREb3dubG9hZENsaWVudC5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEhpc3RvcnlDbGllbnQuaAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dFByaXZhdGUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFn
ZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuaAogICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQu
aAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKKyAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Np
b25MaXN0ZW5lci5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2
MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0N2I3NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZh
MzhiZjBiNDA3OWIzNTJmZmQyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQs
NyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBSZWY8TmV0dwogICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5h
dGlvbkRlY2lkZWQuc2V0KGRvd25sb2FkSUQsIFdURk1vdmUobmV0d29ya0RhdGFUYXNrKSk7CiB9
CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRo
LCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxs
RG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKICNpZiAhUExBVEZPUk0o
Q09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBE
b3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG8KICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9h
ZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIsICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBk
b3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkpOworCisgICAgLy8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRv
d25sb2FkIEFQSSwgb25seSBzZW5kIERpZFN0YXJ0IGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJ
LgorICAgIGlmIChjYWxsRG93bmxvYWREaWRTdGFydCA9PSBDYWxsRG93bmxvYWREaWRTdGFydDo6
WWVzKQorICAgICAgICBkb3dubG9hZC0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlk
U3RhcnQoeyB9LCB7IH0pKTsKKwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93
bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25s
b2FkKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZj
MDViMDE2NWYxYzcyNjc4ZmE1MC4uYzQ4MWViNWY2ZDQyOWNiMDliYmM1MjU5NmZmNTlhN2JlNTcz
MjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTYwLDYgKzYwLDggQEAgY2xhc3MgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdE
b3dubG9hZDsKIAorZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2wgeyBObywg
WWVzIH07CisKIGNsYXNzIERvd25sb2FkTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRG93bmxvYWRNYW5hZ2VyKTsKIApAQCAtODYsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0
cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJl
ZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAg
dm9pZCBkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElELCBSZWY8TmV0d29ya0Rh
dGFUYXNrPiYmKTsKIAotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERv
d25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3Ry
aW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAKICAgICB2b2lkIGNhbmNlbERvd25sb2Fk
KERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0K
aW5kZXggOTVmOGRlYzMwMjUxYjgwYmFhMjljZTU5MDg3M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMw
NWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBOU0RhdGEg
KnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3Bl
cnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9w
dGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICNlbmRpZgogCisgICAgLy8gRklYTUU6IFVzZSBuc0Rh
dGEgaW5zdGVhZCBvZiB1cGRhdGVkRGF0YSBvbmNlIHdlJ3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93
bmxvYWQgdG8gV0tEb3dubG9hZAorICAgIC8vIGJlY2F1c2UgdGhlcmUncyBubyByZWFzb24gdG8g
c2V0IHRoZSBsb2NhbCBwYXRoIHdlIGdvdCBmcm9tIHRoZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0
YS4KICAgICBtX2Rvd25sb2FkVGFzayA9IFtjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JE
b3dubG9hZHMoKS5zZXNzaW9uIGRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRh
XTsKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0gW21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlm
aWVyXTsKICAgICBBU1NFUlQoIWNvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2Fk
cygpLmRvd25sb2FkTWFwLmNvbnRhaW5zKHRhc2tJZGVudGlmaWVyKSk7CkBAIC04Myw3ICs4NSwy
MiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1
bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNl
bE5ldHdvcmtMb2FkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRUYXNr
KTsKLSAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VC
bG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7CisgICAgW21fZG93bmxvYWRUYXNrIGNhbmNl
bEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxvY2tQdHIoW3BhdGggPSByZXRhaW5QdHIobV9k
b3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBt
dXRhYmxlIHsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlm
IChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0
aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBB
ZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0
TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1
bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdG
YWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAg
ICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVE
aWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNl
dFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0
cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xh
c3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJv
b3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZp
bmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdl
dCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAg
ICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRS
ZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVP
YmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RL
ZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07Cisg
ICAgICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyNlbmRpZgogICAg
ICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCBy
ZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YVJlZmVyZW5jZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9i
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5j
cHAKaW5kZXggOGQ4OTdhNDIzMGFmZTJlOThkZGRhOWM0YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4
MmM5ZTQ3M2JmMzVlMDNmZjNhNjJmNzA1ZDNlMWFjMjE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00NDYsMTAg
KzQ0Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9j
YXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgU2FuCiAKIFN0cmluZyBOZXR3b3JrRGF0YVRh
c2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3Rl
ZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7
Ci0KLSAgICByZXR1cm4gInVua25vd24iX3M7CisgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5h
bWU7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA4YTlkMmYz
OTM5ZTcxODZiODFlOGE3ZWZkNGJiZWI1MGE2M2IyZjU5Li5iNGViMTBhMDk4NDNmZmM2NDUzYTBj
YzRhOWM3MmY0ZWJmOGVlNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5ICsyMDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJ
RCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwg
ZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3VnZ2Vz
dGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
RG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURh
dGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxv
YWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNz
aW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Np
b25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3RhcnQpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0yMDc5LDEwICsyMDc5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdE
b3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXMKIHsKICAgICB1
aW50NjRfdCBkZXN0aW5hdGlvbklEID0gbmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElE
KCkudG9VSW50NjQoKTsKIAotICAgIC8vIEFzIHBlciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVu
dC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBzaG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3Rl
ZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgPyByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVu
YW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRG
aWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVU
eXBlKCkpOworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IG5ldHdvcmtEYXRhVGFzay5z
dWdnZXN0ZWRGaWxlbmFtZSgpOwogCiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBuZXR3b3JrRGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdv
cmtEYXRhVGFzayldIChTdHJpbmcmJiBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3Jp
dGUpIG11dGFibGUgewogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2st
PnBlbmRpbmdEb3dubG9hZElEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKaW5kZXggYmU1MjZlZmYxZThjOTFkMzZlYTg5Yjg3ZTdiNTY3OTU4YTk1
NmZiMi4uMjlkNGE2ODAwZWM2YWIwZDgwZGI4MzNkNTRkMjdmMGQ1NzdiOGU5MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEw
Niw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2Vy
U2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2w7
CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNs
YXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0
YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQyMSw3ICs0MjIsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lv
bklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25h
bDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9h
ZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
LCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9h
ZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYm
KTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNz
KERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1l
c3NhZ2VzLmluCmluZGV4IDBmMDE5MDU2ZTViNTdmNTMzNGI4Y2U3MzgyNmUyZmEwNTY4ODkzYmYu
LmE5YmJlY2U1YWE4ZDg3YjM0OTMyYTYzOTJjZjVhZGUyNzg3OGUxMmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdEb21haW4sIE9wdGlvblNldDxXZWJLaXQ6Oldl
YnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBlcykgLT4gKCkgQXN5bmMKIAogICAgIERvd25s
b2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9w
dGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICBSZXN1bWVEb3du
bG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgUmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBX
ZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBl
bnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFy
dCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkgLT4g
KElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDhhOGFiMGI5YjgzMWNhZjQ4ZmEy
MjQ1MzA5OGFmYjI0YWFhOGY0ZGUuLmNiNjk2ZjMyYTkzZTVkNjZlYjcwY2QwNDhmZWIxNDE2YWI5
NTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc2OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlu
bGluZSB2b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2Nv
YSYgc2Vzc2lvbiwgU2UKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisjaWYgVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBpZiAocmVzdW1lRGF0YSkgeworICAgICAg
ICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUgdGhlIGRvd25sb2FkIGxvY2F0aW9uIGlu
IHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4gQWRkIGl0IGZyb20gdGhlIHRhc2suCisg
ICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAg
ICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5n
RmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAgICAgICAgICAgIGF1dG8gZGljdGlvbmFy
eSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3VuYXJjaGl2
ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9u
YXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIg
Y2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFz
c10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNv
cHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAg
ICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dGFzay5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSBm
b3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgICAgICAgICBh
dXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWly
aW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0
OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07
CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29kZXIgZW5jb2RlZERhdGFdOworICAgICAg
ICB9CisjZW5kaWYKKwogICAgICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSByZXN1bWVE
YXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJl
c3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNl
IHsgfTsKICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVu
Y2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdmOWRiZGI5Yjg2OTUuLmUyODcwYTBhZmRjOWY4
NTE4ZTFkMjk0NzNjM2M1YjYzMjc1OTM4MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5
cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5n
QXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3du
bG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6
IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAgICAnV2ViS2l0OjpDYWxsRG93bmxvYWREaWRT
dGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIiddLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50
V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdvcmxkU2hhcmVkLmgiJ10sCiAgICAgICAgICdX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5n
Q29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRP
cHRpb25zLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXgg
MWY3YTNkZDNjNjk3M2UxMDk5NGY1ZGMxMzdmYWY0MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2Vm
MjdmODcxODNmNTJjZGUxOTIwZmI1MDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XZWJLaXQuaApAQCAtMzAsNiArMzAsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1
bGVMaXN0U3RvcmUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
RG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS0Vycm9yLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlv
bi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJlc3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAppbmRleCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3
M2M1MmFjMTFlYjIyMjBhY2Y2Li40YTExMzY0NjExY2ZiYzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5
YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNh
c3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApA
QCAtMTI3LDYgKzEyNywxMiBAQCBhdXRvIHRvQVBJKFQqIHQpIC0+IEFQSVR5cGUKICAgICByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihBUEk6Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlw
ZUluZm88VD46OkFQSVR5cGU+CithdXRvIHRvQVBJKFQmIHQpIC0+IEFQSVR5cGUKK3sKKyAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihBUEk6Ok9iamVjdDo6d3JhcCgmdCkpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQ
SVR5cGVJbmZvPFQ+OjpJbXBsVHlwZT4KIGF1dG8gdG9JbXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggZjhhMDI4YjA2YjUx
MDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4uN2YwNTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAw
NTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpA
QCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tDb250ZW50UnVsZUxpc3RTdG9yZUludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRl
eHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFs
LmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hUVFBDb29r
aWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKQEAgLTczLDcgKzc0LDYg
QEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFk
ZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFt
ZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIK
QEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwg
VHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0g
ICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQgYWxsb2NdOworICAgICAgICB3cmFwcGVyID0g
W1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RXhw
ZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdm
MGY4OTBmODk1YTNmMmVmODYuLjRlYTRhZmJkNjlmMTgwZDc4ZTU5YmZhZTMyNWM0ZWY2NGY0NDky
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzLnR4dApAQCAtMzc0LDcgKzM3NCw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAK
IFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tD
cmVkZW50aWFsLmNwcAotVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCitVSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkv
Qy9XS0ZyYW1lSGFuZGxlUmVmLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDk5NTE4MDcz
MjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEyNDEuLjI0ODA1MzJlZWNlMWE0OTA0YmVkYzhj
ZGQ0ZTk3ZjFiYzk1NWI4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTMwMCw2ICszMDAs
NyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3RvcmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZXh0TWVudUVsZW1l
bnRJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tFcnJvci5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0
aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCBkMzdmNjI4Njhi
NjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1Li5kZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlm
NTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
RG93bmxvYWRDbGllbnQuaApAQCAtNDksMTggKzQ5LDIwIEBAIGVudW0gY2xhc3MgQWxsb3dPdmVy
d3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJIHsKIAorY2xhc3MgRGF0YTsKKwogY2xhc3Mg
RG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxEb3dubG9hZENsaWVudD4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2Fk
Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93
bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpD
YW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxv
YWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25s
b2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpT
dHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdU
Rjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVh
dGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5Jikg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWls
KFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBB
UEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5j
ZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2ls
bFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXgg
YmJhODU5YWYyZTQzNWU5ZjA5MjRmNGEzMmUxMTdkOTYzOTVkYmY5NS4uMGM1NjRkNDQ1NGM4MmQ4
OTU3YWZlYWU3NDdjMGI2ZjE3MGY2YmFmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0KICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5h
bFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6
OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzQnV0Tm90QXBwTGlua3M7IH0KICAgICBib29sIHNo
b3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkT3BlbkFwcExpbmtzICYm
IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdzsgfQotICAg
IGJvb2wgc2hvdWxkUGVyZm9ybURvd25sb2FkKCkgY29uc3QgeyByZXR1cm4gIW1fbmF2aWdhdGlv
bkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNOdWxsKCk7IH0KKyAgICBjb25zdCBXVEY6
OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9CiAgICAgYm9vbCBpc1JlZGlyZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5pc1JlZGlyZWN0OyB9CiAgICAgV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZv
aWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0aW9uKCkgeyBtX3Nob3VsZFBlcmZvcm1T
T0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2VuZGlmCiAKKyAgICBjb25zdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAgICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUlu
Zm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0RnJhbWUsIE9wdGlvbmFsPFdU
Rjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZy
YW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRiZTg4NmEwNzQyMmJmODNiN2FmY2ZjYmM2
YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgxZTkyY2VlNDkyNWZmNmFkZGY5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBA
IC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTsKK2NsYXNzIERvd25s
b2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94eTsKQEAgLTk5LDYgKzEwMCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbkFjdGlv
biYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0xl
Z2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlk
TmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgK
aW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5YjdkZDMxYTBjMmE5Y2ViZWQ0Zi4uMjYxMDE4OGE5
NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAtNTAsMTEgKzUwLDExIEBAIGNsYXNzIFBv
bGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAK
LSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8
V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2Jq
ZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFJlZjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxX
ZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmpl
Y3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogICAgIH0KLSAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBB
UEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFJlZjxB
UEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewogICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMzYTVjMjYwNzRlMjYyZDExMzRiYy4uZmZkMDdl
OGNjZDhiMDQwNjcxNGVlODcxMGVjMjEzMDgwOWZlYzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC01NSw5ICs1NSw2IEBACiAjaW5jbHVkZSAi
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAKIG5hbWVzcGFjZSBBUEkgewotdGVtcGxh
dGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4gewot
ICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHREb3dubG9hZENsaWVudFYwLCBXS0NvbnRl
eHREb3dubG9hZENsaWVudFYxPiBWZXJzaW9uczsKLX07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6
dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYwPiBWZXJzaW9uczsKIH07CkBAIC0xNjgsOTAg
KzE2NSw2IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9yeUNsCiAgICAgfQogfQogCi12b2lkIFdLQ29u
dGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50KQotewotICAgIGNsYXNzIExlZ2FjeURvd25s
b2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xpZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRSZWYgY29udGV4dCkKLSAgICAgICAgICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluaXRpYWxpemUoY2xp
ZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkU3RhcnQoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0KQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UobV9jb250ZXh0
LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJl
c3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgbGVuZ3RoLCB1aW50NjRfdCwgdWludDY0
X3QpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2
ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlk
UmVjZWl2ZURhdGEobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVu
Z3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJL
aXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZFBy
b3h5LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKLSAgICAgICAgICAg
IGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRp
b24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9B
UEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3ZlcndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8g
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDogV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRpb24uZ2V0KCkpKTsKLSAgICAgICAgfQotICAg
ICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRoKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fY29u
dGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5p
bXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZv
aWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGaW5pc2gpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKG1fY29udGV4
dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZp
bmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsKG1fY29udGV4
dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgbGVnYWN5
RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRDYW5jZWwpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkQ2FuY2VsKG1fY29udGV4dCwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJ
KCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQot
ICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QobV9jb250ZXh0LCBX
ZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b1VSTFJlZihyZXF1ZXN0LnVy
bCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAg
ICAgICBXS0NvbnRleHRSZWYgbV9jb250ZXh0OwotICAgIH07Ci0gICAgV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dCktPnNldExlZ2FjeURvd25sb2FkQ2xpZW50KGFkb3B0UmVmKCpuZXcgTGVnYWN5RG93
bmxvYWRDbGllbnQod2tDbGllbnQsIGNvbnRleHQpKSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0
Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0
Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50KQogewogICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4IGRjMmUwZDE5MjMxNWVlNTcy
ZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLjQzMTU2MGQ2MDczNDViNTU2N2IyNzYxM2I5N2Q1MDEy
ZjZiMDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBA
IC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8
V2ViS2l0L1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tD
b250ZXh0RG93bmxvYWRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0SGlzdG9y
eUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4KQEAgLTEzOCw3ICsxMzcsNiBA
QCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9u
KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xp
ZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGll
bnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFz
ZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGll
bnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0
UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsK
IFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENvbm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnRCYXNlKiBjbGllbnQpOwog
CiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0NvbnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBS
RUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dERvd25sb2FkQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZjk2
YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2IzMmQxZDg3NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQ29udGV4dERvd25sb2FkQ2xpZW50X2gKLSNkZWZpbmUg
V0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgot
Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldL
Q29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBj
b250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNl
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25s
b2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Ci10eXBlZGVmIGJvb2wgKCpXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10
eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3Zlcndy
aXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERv
d25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQs
IFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxs
YmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRG
YWlsQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9p
ZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZv
aWQgKCpXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrKShXS0NvbnRleHRS
ZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJM
UmVmIHVybCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZSB7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNv
bnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlOwotCi10
eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIHsKLSAgICBXS0NvbnRleHRE
b3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRTdGFy
dENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydDsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxi
YWNrICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBXS0Nv
bnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2Vp
dmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
OwotICAgIFdLQ29udGV4dERvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVD
YWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAg
V0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNh
bGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBX
S0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9uOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlk
RmluaXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNo
OwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmFpbENhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkRmFpbDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENhbmNl
bCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNlbDsKLSAg
ICBXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsKLX0gV0tDb250ZXh0RG93bmxvYWRDbGllbnRW
MDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSB7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLQ29udGV4dERvd25sb2Fk
RGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3Rh
cnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0g
ICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRE
aWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNl
aXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1J
TUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBl
OwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbjsKLSAgICBXS0NvbnRleHREb3du
bG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRE
aWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDYW5j
ZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlkQ3Jhc2g7Ci0KLSAgICAvLyBWZXJzaW9uIDEu
Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3Q7Ci19IFdLQ29udGV4dERv
d25sb2FkQ2xpZW50VjE7Ci0KLSNlbmRpZiAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3MGMyODdiYjM0NzA0NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmVi
ZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXS0Rvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURh
dGEuaCIKLSNpbmNsdWRlICJBUElEb3dubG9hZENsaWVudC5oIgotI2luY2x1ZGUgIkFQSVVSTFJl
cXVlc3QuaCIKLSNpbmNsdWRlICJEb3dubG9hZFByb3h5LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
Ci0KLVdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKQotewotICAgIHJldHVybiB0b0FQSShE
b3dubG9hZFByb3h5OjpBUElUeXBlKTsKLX0KLQotdWludDY0X3QgV0tEb3dubG9hZEdldElEKFdL
RG93bmxvYWRSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rv
d25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3Qo
KSkubGVha1JlZigpKTsKLX0KLQotV0tEYXRhUmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9h
ZCktPmxlZ2FjeVJlc3VtZURhdGEoKSk7Ci19Ci0KLXZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rv
d25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5j
ZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqdG9JbXBsKGRvd25sb2FkKSldIChhdXRvKikgewotICAg
ICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsK
LSAgICB9KTsKLX0KLQotV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2Fk
KS0+b3JpZ2luYXRpbmdQYWdlKCkpOwotfQotCi1XS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVk
aXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIGF1dG8mIHJlZGlyZWN0
Q2hhaW4gPSAgdG9JbXBsKGRvd25sb2FkKS0+cmVkaXJlY3RDaGFpbigpOwotICAgIFZlY3RvcjxS
ZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAgIHVybHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShyZWRpcmVjdENoYWluLnNpemUoKSk7Ci0gICAgZm9yIChhdXRvJiByZWRpcmVjdFVSTCA6IHJl
ZGlyZWN0Q2hhaW4pCi0gICAgICAgIHVybHMudW5jaGVja2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVh
dGUocmVkaXJlY3RVUkwuc3RyaW5nKCkpKTsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6
OmNyZWF0ZShXVEZNb3ZlKHVybHMpKS5sZWFrUmVmKCkpOwotfQotCi1ib29sIFdLRG93bmxvYWRH
ZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJu
IHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDNmNzIwMjc5M2Q1NGY1NDJhMzkwOTIwNGEzYzgwZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXS0Rvd25sb2FkX2gKLSNkZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5o
PgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5jbHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0K
LSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdL
VHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsKLQotV0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93
bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKSBXS19DX0FQSV9ERVBSRUNBVEVEOwot
V0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tEYXRhUmVmIFdLRG93bmxvYWRHZXRSZXN1bWVE
YXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIHZvaWQgV0tEb3dubG9hZENh
bmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3du
bG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9S
VCBXS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgot
Ci0jZW5kaWYgLy8gV0tEb3dubG9hZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWE2OGFiNmEwMTMzZjU3OGVjNTg5
Mzc2NmEwMGYwZjdkNDVhNjkwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXS0Rvd25sb2FkQ2xpZW50X2gKKyNkZWZpbmUgV0tEb3dubG9hZENsaWVu
dF9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgYm9vbCAoKldLRG93
bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25z
ZSwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFdyaXRlRGF0YSkoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgbG9uZyBsb25nIGJ5dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0
dGVuLCBsb25nIGxvbmcgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldL
RG93bmxvYWREaWRGYWlsV2l0aEVycm9yKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9y
UmVmIGVycm9yLCBXS0RhdGFSZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisKK3R5cGVkZWYgc3RydWN0IFdLRG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247
CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGllbnRJbmZvOworfSBXS0Rvd25sb2FkQ2xpZW50QmFzZTsKKwordHlwZWRlZiBz
dHJ1Y3QgV0tEb3dubG9hZENsaWVudFYwIHsKKyAgICBXS0Rvd25sb2FkQ2xpZW50QmFzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9u
IDAuCisgICAgV0tEb3dubG9hZFdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uICAgICAgICAgICAg
ICAgICAgICAgICB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjsKKyAgICBXS0Rvd25sb2FkRGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgICAgICAgICAgICAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlOworICAgIFdLRG93bmxvYWREaWRXcml0ZURhdGEgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkV3JpdGVEYXRhOworICAgIFdLRG93bmxvYWREaWRGaW5pc2ggICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLRG93bmxv
YWREaWRGYWlsV2l0aEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFp
bFdpdGhFcnJvcjsKK30gV0tEb3dubG9hZENsaWVudFYwOworCisjZW5kaWYgLyogV0tEb3dubG9h
ZENsaWVudF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Rvd25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcw
NDYzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Rvd25sb2FkUmVmLmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRG93bmxvYWRSZWYuaCIKKworI2luY2x1ZGUg
IkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2Fk
Q2xpZW50LmgiCisjaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkQ2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBBUEkgewordGVt
cGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLRG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAg
dHlwZWRlZiBzdGQ6OnR1cGxlPFdLRG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlE
KCkKK3sKKyAgICByZXR1cm4gdG9BUEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dL
VVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKK3sKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChk
b3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2Fu
Y2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwg
V0tEb3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxiYWNrKQoreworICAgIHJldHVybiB0b0ltcGwo
ZG93bmxvYWQpLT5jYW5jZWwoW2Z1bmN0aW9uQ29udGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3Vt
ZURhdGEpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2sodG9B
UEkocmVzdW1lRGF0YSksIGZ1bmN0aW9uQ29udGV4dCk7CisgICAgfSk7Cit9CisKK1dLUGFnZVJl
ZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7
CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsK
K30KKworYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKQoreworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVk
KCk7Cit9CisKK3ZvaWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQoreworICAgIGNsYXNzIERvd25sb2FkQ2xp
ZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQ
STo6RG93bmxvYWRDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93bmxv
YWRDbGllbnQoY29uc3QgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRl
OgorICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7Cisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoY2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0
b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3Zl
cnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVE
YXRhKHRvQVBJKGRvd25sb2FkKSwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6
U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5v
LCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIEFQSTo6U3RyaW5nKiBkZXN0aW5hdGlvbiA9IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSh0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9B
UEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7
CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZEZpbmlzaCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVu
dC5kaWRGaW5pc2godG9BUEkoZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEq
IHJlc3VtZURhdGEpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBtX2NsaWVudC5kaWRGYWlsV2l0aEVycm9yKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3Ip
LCB0b0FQSShyZXN1bWVEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYg
ZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxv
YWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdElu
dGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jh
c2hlZCBkdXJpbmcgZG93bmxvYWQiIH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJl
c3BvbnNlKSwgdG9BUEkocmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOworICAgICAgICB9CisgICAgfTsKKworICAgIHRvSW1wbChkb3dubG9hZCkt
PnNldENsaWVudChhZG9wdFJlZigqbmV3IERvd25sb2FkQ2xpZW50KGNsaWVudCkpKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jMDU4ZDY3ZWZmY2Y0ZmFkYzBmZjBhOTRlNjBjYjZlMjE1MmZjZjBiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV0tEb3dubG9hZFJlZl9oCisj
ZGVmaW5lIFdLRG93bmxvYWRSZWZfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisKKyNpZm5kZWYgX19jcGx1c3BsdXMK
KyNpbmNsdWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRl
cm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tEb3dubG9hZEdldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChX
S0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKKwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZENhbmNl
bENhbGxiYWNrKShXS0RhdGFSZWYgcmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250
ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Rvd25sb2FkQ2FuY2VsQ2FsbGJh
Y2sgY2FsbGJhY2spOworV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRp
bmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JUIGJvb2wgV0tEb3dubG9h
ZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQg
dm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93bmxv
YWRDbGllbnRCYXNlKiBjbGllbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgor
CisjZW5kaWYgLyogV0tEb3dubG9hZFJlZl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcAppbmRleCA4ZmYzN2U1
Yzg3YmU4NDcyMWNiMWE4MDgzZjNhMjBmMTU1OWE1NTAxLi5lMTM3MDZkZTUwM2M5N2E1MzYyODc1
YjVhNzZiNDkwNDEwZmIzMWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKQEAgLTM2LDcgKzM2LDEwIEBAIFdL
VHlwZUlEIFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6QVBJVHlwZSk7CiB9CiAKLWJvb2wgV0tOYXZpZ2F0aW9uQWN0
aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24pCitX
S1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZShXS05hdmln
YXRpb25BY3Rpb25SZWYgYWN0aW9uKQogewotICAgIHJldHVybiB0b0ltcGwoYWN0aW9uKS0+c2hv
dWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAgYXV0byYgYXR0cmlidXRlID0gdG9JbXBsKGFjdGlv
biktPmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAgaWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHRvQVBJKGF0dHJpYnV0ZS5pbXBsKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRp
b25BY3Rpb25SZWYuaAppbmRleCA5ZDhmY2YxZTE5OTcxM2IxZjA5YjMyNjIwZDIxNTc5MjQ1NDg2
ZTljLi40YzEzZDYzOWJkN2FmMjY5MTBjM2Q3MDIzNzNkNjU0NjE1M2I5NTMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYu
aApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdL
TmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgYm9vbCBXS05hdmlnYXRp
b25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmKTsKK1dL
X0VYUE9SVCBXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0
ZShXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCAwNjQ4MjZjYjI1
ZTM1NjRhMTMwNWQ0MzRiMzg0MGFhMzRlZmZjOTZkLi5jOWU4YjMyNjM0ZGE4ZTgwODhjOTIzYTE2
ZDlhYjQyYTY4NWI4ODllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5j
cHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5j
bHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRv
d25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpA
QCAtMTI0MCw3ICsxMjQxLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFn
ZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJGcmFtZVByb3h5KiBvcmln
aW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVx
dWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
UmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBXZWJGcmFtZVBy
b3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
c291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5l
ciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTI1
MSwxNCArMTI1MiwxNCBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVm
IHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgICAgICBSZWY8
QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3Vy
Y2VSZXF1ZXN0KTsKIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCkKLSAgICAgICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJz
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0
LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwg
dG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5
cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSks
IHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICAgICAgZWxzZSBpZiAobV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKQotICAgICAgICAgICAgICAg
IG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmll
cnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdp
bmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5k
YXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0
dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQ
SShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0
dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIo
KSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEko
ZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlv
bkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRv
QVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShs
aXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IE5hdmln
YXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBS
ZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZjxBUEk6
Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBS
ZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgbGlzdGVu
ZXItPnVzZSgpOwpAQCAtMTI2Nyw3ICsxMjY4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgog
CiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1
ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwg
dG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3Vz
ZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwg
dG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
LT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCku
bW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwg
dG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZyYW1lTmFtZS5pbXBsKCkpLCB0b0FQSShsaXN0
ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFn
ZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92
ZXJyaWRlCkBAIC0yMjU5LDYgKzIyNjAsMjcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlv
bkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAg
ICAgICAgICAgIHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3Ry
aW5nKCksIHVybCkpOwogICAgICAgICB9CiAKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdh
dGlvbkFjdGlvbiYgYWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25BY3Rp
b25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmYWN0aW9uKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlJiByZXNwb25zZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFn
ZSksIHRvQVBJKCZyZXNwb25zZSksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGll
bnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJQYWdl
UHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAppbmRleCAzODA2ZDE4NmFh
OWZiOTc3NDdhNzNkOTczNjA2YTU4ZWI0MTg4YjYwLi5hNGFhZmU0YTkzNWIzMTBhMjIwMWJmN2I0
Zjc0NTY1ZTU1MmI4NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCkBAIC03MSw3ICs3MSwxMyBAQCB0eXBlZGVm
IHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uV2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgVwogdHlwZWRlZiBXS0RhdGFSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29w
eVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29w
eVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgCisKK3R5cGVkZWYgdm9pZCAoKldLUGFn
ZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0eXBlZGVmIHZvaWQgKCpXS1Bh
Z2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdhdGlvblJlc3BvbnNlLCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lk
ICgqV0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFjayko
V0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworCiB0eXBlZGVmIFdLUGx1Z2luTG9hZFBvbGljeSAoKldLUGFnZU5hdmlnYXRpb25E
ZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdp
bkxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIFdLRGljdGlvbmFyeVJlZiBwbHVn
aW5JbmZvRGljdGlvbmFyeSwgV0tTdHJpbmdSZWYqIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24s
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0
aW9uRGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwpAQCAtMjEzLDYgKzIxOSw5IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZU5h
dmlnYXRpb25DbGllbnRWMyB7CiAKICAgICAvLyBWZXJzaW9uIDMuCiAgICAgV0tQYWdlTmF2aWdh
dGlvbkNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjayBjb3B5U2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nOworICAgIFdLUGFnZU5hdmlnYXRpb25BY3Rp
b25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZENhbGxi
YWNrIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkOworICAgIFdLUGFnZU5hdmln
YXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2sgY29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZDsKIH0gV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzOwogCiAjaWZkZWYgX19j
cGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjViNmYxMzE3NzMxNzNiZDI3ZGZhODEzNTY0OGExZjA3NWIxYzQ4ZTUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0
aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNs
YXNzIFdLRnJhbWVJbmZvOworQHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAorCisv
KiBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgor
ICBAZGlzY3Vzc2lvbiBJZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlm
ZmVyZW50IFVSTCwgb3JpZ2luYWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRo
ZSBkb3dubG9hZCBmb2xsb3dzIHRoZSByZWRpcmVjdC4KKyovCitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIG51bGxhYmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdpbmFsUmVxdWVzdDsKKwor
LyogQGFic3RyYWN0IFRoZSBkZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMg
Zm9yIHRoaXMgZG93bmxvYWQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdL
RG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhlIGRv
d25sb2FkLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVu
IGNhbmNlbGxhdGlvbiBpcyBmaW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUbyBhdHRlbXB0IHRvIHJl
c3VtZSB0aGUgZG93bmxvYWQsIGNhbGwgV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6
IHdpdGggdGhlIGRhdGEgZ2l2ZW4gdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLgorIElmIG5vIHJl
c3VtZSBhdHRlbXB0IGlzIHBvc3NpYmxlIHdpdGggdGhpcyBzZXJ2ZXIsIGNvbXBsZXRpb25IYW5k
bGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggbmlsLgorKi8KKy0gKHZvaWQpY2FuY2VsOih2b2lkKF4g
X051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRs
ZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0MmE5OTQ1NDE5
MDc3YmQ5NDk4N2RhMDJiY2E0MjM5ZjgxODEzMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAtMCwwICsxLDIyMiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tEb3dubG9hZElu
dGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisj
aW1wb3J0ICJXS0Rvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisjaW1w
b3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitjbGFzcyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1Ymxp
YyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9hZENs
aWVudChpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RlbGVn
YXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQor
ICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwg
bV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwg
bV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9k
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOild
KQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVE
YXRhOildKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3aWxsU2VuZFJlcXVl
c3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8
ICFtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxO
U1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246c3RhdGljX2Nhc3Q8TlNIVFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25z
ZSgpKSBuZXdSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihk
b3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFu
ZGxlcjopKV0oV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAg
ICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAgICAg
ICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZv
cm1hdDpAIkludmFsaWQgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9s
aWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxl
bmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRz
VG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4g
Y2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51
ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwg
Y2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1f
ZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVu
dGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
Y2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2gg
KGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5j
b21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRp
b246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRl
bnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0
SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRl
Q2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVy
Zm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFs
bGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAgICAgIGNoYWxs
ZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1h
dDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwg
KGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07Cisg
ICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5n
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxl
Z2F0ZSB8fCAhbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6
Tm8sIHsgfSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZCkgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
IHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1h
a2VCbG9ja1B0cihbZG93bmxvYWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMICpkZXN0aW5hdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24p
CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dP
dmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWRlc3Rp
bmF0aW9uLmlzRmlsZVVSTCkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIFtOU0V4Y2Vw
dGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJkZXN0aW5hdGlv
biBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2VyID0gW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgICAgICAgICAgaWYgKCFbZmlsZU1hbmFnZXIg
ZmlsZUV4aXN0c0F0UGF0aDpbZGVzdGluYXRpb24gVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9u
ZW50XS5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChb
ZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJy
b3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90
Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5v
LCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0aW5hdGlvbi5wYXRoXSkg
eworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsK
KyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRo
RG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1
c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgp
OworICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRz
VG9EaWRXcml0ZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdh
dGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0
b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZvaWQgZGlkRmlu
aXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAg
ICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDp3cmFwcGVy
KGRvd25sb2FkKV07CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqIHJlc3VtZURhdGEpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUg
fHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdp
dGhFcnJvcjplcnJvci5uc0Vycm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3VtZURhdGEpXTsK
KyAgICB9CisKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jl
c3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6
W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9y
TmV0d29ya0Nvbm5lY3Rpb25Mb3N0IHVzZXJJbmZvOm5pbF0gcmVzdW1lRGF0YTpuaWxdOworICAg
IH0KKworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gbV9kZWxlZ2F0
ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gOiAx
OworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
IDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmFpbFdp
dGhFcnJvciA6IDE7Cit9OworCitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZAorCistICh2b2lk
KWNhbmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcgor
eworICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlmIChjb21wbGV0
aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZGF0YSkp
OworICAgIH0pOworfQorCistIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVlc3QKK3sKKyAg
ICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAoaWQgPFdLRG93
bmxvYWREZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdl
dCgpOworfQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilk
ZWxlZ2F0ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0
Q2xpZW50KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKy0g
KHZvaWQpZGVhbGxvYworeworICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBb
c3VwZXIgZGVhbGxvY107Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBs
ZW1lbnRhdGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAq
X2Rvd25sb2FkOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGU1MzI4NDgwODFh
YTgzNmMzNGMwZjgzMDA1N2RiMDM5YjM3OWJjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsx
LDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsKKwor
LyogQGVudW0gV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xpY3kg
dG8gcGFzcyBiYWNrIHRvIHRoZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2FkOndp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBtZXRo
b2QuCisgQGNvbnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNlbCB0
aGUgcmVkaXJlY3QuCisgQGNvbnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93ICAg
IEFsbG93IHRoZSByZWRpcmVjdC4KKyovCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kpIHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5j
ZWwsCisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKK0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9w
dGlvbmFsCisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNl
aXZlZCBhbiBIVFRQIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUg
ZG93bmxvYWQgdGhhdCByZWNlaXZlZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRo
ZSByZWRpcmVjdGlvbiByZXNwb25zZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVl
c3QgdGhhdCB3aWxsIGJlIHNlbnQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90
CisgdG8gcHJvY2VlZCB3aXRoIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3Ug
ZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJl
Y3RzIHdpbGwgYmUgdGFrZW4uCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRv
d25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsKKwor
LyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9uZCB0
byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3du
bG9hZCB0aGF0IHJlY2VpdmVkIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFt
IGNoYWxsZW5nZSBUaGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byByZXNw
b25kIHRvIHRoZSBjaGFsbGVuZ2UuIFRoZQorIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9uZSBv
ZiB0aGUgY29uc3RhbnRzIG9mIHRoZSBlbnVtZXJhdGVkIHR5cGUKKyBOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsCisgdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMgdGhl
IGNyZWRlbnRpYWwgdG8gdXNlLCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRob3V0
IGEKKyBjcmVkZW50aWFsLgorIEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50IHRo
aXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNhdGlv
biBjaGFsbGVuZ2Ugd2l0aCB0aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3Rl
Y3Rpb25TcGFjZSBkaXNwb3NpdGlvbi4KKyovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
IF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdo
ZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNoIHdlIG5lZWQg
YSBmaWxlIHRvIHdoaWNoIHRvIHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUgc2VydmVyIHJl
c3BvbnNlLCBpZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVxdWVz
dC4KKyBAcGFyYW0gc3VnZ2VzdGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4KKyBA
cGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBp
bnZva2Ugd2l0aAorIGVpdGhlciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBvciBu
aWwgdG8gY2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEgZG93
bmxvYWQgb2YgYSBibG9iIFVSTCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVkRmls
ZW5hbWUKKyB3aWxsIG9mdGVuIGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVu
YW1lLCBidXQgd2ViIGNvbnRlbnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVkIGRvd25sb2Fk
IGZpbGVuYW1lLiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBpdCBt
dXN0IGJlIGEgZmlsZQorIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhhdCBk
b2VzIGV4aXN0IGFuZCBjYW4gYmUgd3JpdHRlbiB0by4KKyovCistICh2b2lkKWRvd25sb2FkOihX
S0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KG51bGxh
YmxlIE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcg
KilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKiBf
TnVsbGFibGUgZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3Qg
SW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0
byB0aGUgZGVzdGluYXRpb24uCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhh
cyB3cml0dGVuIGRhdGEuCisgQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVz
IHdyaXR0ZW4uCisgQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2Yg
Ynl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90
YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24g
SWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRv
d25sb2FkLCB0aGVuCisgdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1
cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgor
IElmIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSB3aWxsIGJlIC0xLgorKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNX
cml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworLyogQGFic3RyYWN0IElu
dm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4KKyBAcGFy
YW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgZmluaXNoZWQuCisqLworLSAodm9pZClkb3du
bG9hZERpZEZpbmlzaDooV0tEb3dubG9hZCAqKWRvd25sb2FkOworCisvKiBAYWJzdHJhY3QgSW52
b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgZmFpbGVkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUg
ZG93bmxvYWQgdGhhdCBoYXMgZmFpbGVkLgorIEBwYXJhbSBlcnJvciBUaGUgZXJyb3IgaW5kaWNh
dGluZyB0aGUgZmFpbHVyZSByZWFzb24uCisgQHBhcmFtIHJlc3VtZURhdGEgVGhpcyBkYXRhIGNh
biBiZSBwYXNzZWQgdG8gV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6IHRvIGF0dGVt
cHQgdG8gcmVzdW1lIHRoaXMgZG93bmxvYWQuCisqLworLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1bWVE
YXRhOihudWxsYWJsZSBOU0RhdGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VNRV9O
T05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIwMjU0
MDVjYjMzYjdhOWQ3YzRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWQu
aCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0
ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBXcmFw
cGVyQ2xhc3MgPSBXS0Rvd25sb2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxvYWQg
KCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6
OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9h
ZERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCmluZGV4IDc3MDc1YmQ2NjRiYjFiOTE1
N2Q4MDNhNGZiYWViMTM4YjczYmYzNDMuLmNmMzU3ZGYwYWEyNzMwNWQzMDZlNDdkOTZkNDhiNmFk
MzRmYzYxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbi5tbQpAQCAtNDUsNiArNDUsMTEgQEAKICAgICByZXR1cm4gX25hdmlnYXRpb24t
Pm9yaWdpbmFsUmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBv
bGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKKy0gKEJPT0wpX3dhc1VzZXJJbml0aWF0
ZWQKK3sKKyAgICByZXR1cm4gX25hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIC0gKFdLQ29udGVudE1vZGUpZWZmZWN0aXZlQ29u
dGVudE1vZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb24uaAppbmRleCA5MzQwNzBlM2RlNDQ5ODJmNTcyYmQ1YTE4OGQxMGNi
NDljZjcyMTFmLi45MmVmMGZmNGU4MTY4Zjg1NzJkNzM4ODhjYjZhMDk3ODQ3YjIyZGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oCkBAIC03Niw2ICs3NiwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAu
MTApLCBpb3MoOC4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CiAKKy8qISBAYWJzdHJhY3QgVGhlIGRvd25sb2FkIGF0
dHJpYnV0ZSBvZiB0aGUgZWxlbWVudCB0aGF0IGNhdXNlZCB0aGlzIG5hdmlnYXRpb24uCisqLwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcg
KmRvd25sb2FkQXR0cmlidXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogCiAvKiEgQGFic3RyYWN0
IFRoZSBtb2RpZmllciBrZXlzIHRoYXQgd2VyZSBpbiBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlv
biB3YXMgcmVxdWVzdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXggNGQyMGM4MGNlYzI2YTdjMjg2OTJh
YTg2ZDM0YjQwYTZiNzUwZjBiZS4uYmJlZThmZTZiZmVlYTkwODczNzYxZWI5ZWVkYzYxOWEzNjZl
ZTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uQWN0aW9uLm1tCkBAIC0xMTYsNiArMTE2LDE0IEBAIHN0YXRpYyBXS1N5bnRo
ZXRpY0NsaWNrVHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91c2VFdmVu
dDo6U3ludGhlCiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNVUkxS
ZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiB9
CiAKKy0gKE5TU3RyaW5nICopZG93bmxvYWRBdHRyaWJ1dGUKK3sKKyAgICBhdXRvJiBhdHRyaWJ1
dGUgPSBfbmF2aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoYXR0
cmlidXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBhdHRyaWJ1
dGU7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoV0tTeW50aGV0aWNDbGlja1R5
cGUpX3N5bnRoZXRpY0NsaWNrVHlwZQogewpAQCAtMTg3LDcgKzE5NSw3IEBAIHN0YXRpYyBXS1N5
bnRoZXRpY0NsaWNrVHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91c2VF
dmVudDo6U3ludGhlCiAKIC0gKEJPT0wpX3Nob3VsZFBlcmZvcm1Eb3dubG9hZAogewotICAgIHJl
dHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAgcmV0
dXJuICFfbmF2aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051bGwoKTsKIH0K
IAogLSAoQk9PTClfc2hvdWxkT3BlbkV4dGVybmFsVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRl
LmgKaW5kZXggODVmZDk2ZTRkZDBmZWZlNmJjZjdmZWU5ZDc4YzVlOTkyZjViYzM3Mi4uNTNjYzVh
OTdjN2VhOTI1NGEzMjUwNGE0ZGU2NGY2YzNmZjNlNWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJp
dmF0ZS5oCkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU3lu
dGhldGljQ2xpY2tUeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X2NhbkhhbmRsZVJlcXVlc3Q7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
X3Nob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSks
IGlvcyg5LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxk
T3BlbkFwcExpbmtzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3dubG9h
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9E
RVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoImRvd25sb2FkQXR0cmlidXRlIiwgbWFjb3MoMTAu
MTUsIFdLX01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHMgV0tfQVBJX0RF
UFJFQ0FURUQoInVzZSBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBhbmQgX3Nob3VsZE9wZW5B
cHBMaW5rcyIsIG1hY29zKDEwLjExLCAxMC4xMSksIGlvcyg5LjAsIDkuMCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZS5oCmluZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2UxYmUzNTEwZWI4ODRhMDU4NzguLjE2
OGI3OWVjZTA2OGY4YmNjZmE2Y2FiMGMwMWZlODFlM2U2YjI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBX
S0Rvd25sb2FkOwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25BY3Rp
b247CiBAY2xhc3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBAIC00MCwyMCArNDEsMjQgQEAgTlNf
QVNTVU1FX05PTk5VTExfQkVHSU4KICB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gY29u
dGludWUuCisgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2Fk
ICAgIFR1cm4gdGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICAgICBXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3csCisgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEBlbnVtIFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5CiAgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRo
ZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29u
c3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdh
dGlvbiB0byBjb250aW51ZS4KKyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZCAgICBUdXJuIHRoZSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAq
LwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kp
IHsKICAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93LAorICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAog
LyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgcHJvdG9j
b2wgY2FuIHByb3ZpZGUKQEAgLTE2NCw2ICsxNjksMjIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAqLwogLSAodm9pZCl3ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93RGVwcmVjYXRlZFRMUzoo
dm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qCisgQGFic3RyYWN0IENhbGxlZCBhZnRl
ciB1c2luZyBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0g
d2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0g
bmF2aWdhdGlvbkFjdGlvbiBUaGUgYWN0aW9uIHRoYXQgaXMgYmVpbmcgdHVybmVkIGludG8gYSBk
b3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkLgorKi8KKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25B
Y3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKworLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3
IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25zZSBU
aGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJh
bSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZp
Z2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBA
ZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CmluZGV4IGYwOWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1YjUuLjk5MTNkMTZj
MGE5NzYwNDk5NDY0Y2M0M2ViYTNlNGYxOWU3ZDBkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmgKQEAgLTU4LDExICs1OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBf
V0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9uTG9h
ZFBvbGljeUlnbm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4w
KSk7CiAKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCArIDEp
Oworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFD
X1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4w
KSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyAr
IDIpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvd0luTmV3UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKLXN0YXRpYyBj
b25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdL
X0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdL
X0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lBbGxvdyArIDEpOwogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KIApAQCAtODgsNiArODgsOCBAQCBzdGF0aWMg
Y29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBzaG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTmVnb3RpYXRlTW9k
ZXJuVExTOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC0gKHZvaWQpX3dlYlZpZXdEaWRCZWdpbk5hdmlnYXRp
b25HZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3OwogLy8gSXRlbSBpcyBuaWwgaWYgdGhlIGdl
c3R1cmUgZW5kZWQgd2l0aG91dCBuYXZpZ2F0aW9uLgogLSAodm9pZClfd2ViVmlld0RpZEVuZE5h
dmlnYXRpb25HZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpdGhOYXZpZ2F0aW9uVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRl
LmgKaW5kZXggOTE1ODlkMTJhNDIzN2NkNzNiYjczZWQ1Yzk3YjYxYzE3YTFmMTM5Yy4uYTdhN2Q5
MjlkZmY4NzA0M2U3ZjNhNjAzZjY4ZGU0MDdkMGQzMGFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvblByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uUHJpdmF0ZS5oCkBAIC0y
Nyw0ICsyNyw1IEBACiAKIEBpbnRlcmZhY2UgV0tOYXZpZ2F0aW9uIChXS1ByaXZhdGUpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqX3JlcXVlc3Q7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3dhc1VzZXJJbml0aWF0ZWQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nl
c3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2wubW0KaW5kZXggNGYzNmUyMzI2NDM3MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4NTlkYy4uZmFl
MzFmMzFiNzk5MTIxZDBlMTczN2NkMDcyMTA4NTQ5ODAyMjAzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTI4LDExICsy
OCwxMyBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0ICJDYWNoZU1v
ZGVsLmgiCisjaW1wb3J0ICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbXBvcnQgIkxlZ2FjeURvd25s
b2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVnaW5Qcm9jZXNz
TWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlHYW1l
cGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dl
YnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgpAQCAtNDgxLDEyICs0ODMsMTIgQEAgc3RhdGljIFdL
UHJvY2Vzc1Bvb2wgKnNoYXJlZFByb2Nlc3NQb29sOwogCiAtIChfV0tEb3dubG9hZCAqKV9kb3du
bG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZToo
V0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxv
YWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVz
dCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBb
d2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2FkICopX3Jlc3Vt
ZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURhdGFTdG9yZToo
V0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAqKXBhdGggb3Jp
Z2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBw
ZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFT
dG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJl
c3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxvYWQoKmRhdGFT
dG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpEYXRhOjpjcmVh
dGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCwgV2ViS2l0OjpDYWxsRG93
bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBhZ2VzT3JpZ2lu
c0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0
ZS5oCmluZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2EwMzE5Yjk0ODkzYzFmNGU2ODk2NmMuLmYyNDk4
MGM5Y2ZmNjdlY2QzYmVkZTczZmUyNDAwODE4YWE1MGMwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBA
IC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5T
RGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRl
cj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBfZG93bmxv
YWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25s
b2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGUg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZC5kb3dubG9hZERl
bGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0aW9uRGVsZWdh
dGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVnYXRlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFSR0VUX09TX0lQ
SE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNjaGVtZUFzQ2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAqKV9kb3dubG9h
ZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tX
ZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRh
ICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRh
U3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRh
dGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RF
UFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJlcXVlc3QiLCBt
YWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKKy0gKF9XS0Rv
d25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vi
c2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0
cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5fcmVzdW1lRG93bmxvYWRX
aXRoRGF0YTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlv
cyg4LjAsIFdLX0lPU19UQkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9u
bHkgd2hpbGUgbm8gd2ViIGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClf
dGVybWluYXRlU2VydmljZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlv
cygxMi4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
LmgKaW5kZXggNzYxYTFkYTBmNjViMzY5OTdiYWI0OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uNmNjOGE3
NDgxMDg2NTYzNThjMmRlODgyZDY3NGYxZjM5MzM5MTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFj
a0ZvcndhcmRMaXN0SXRlbTsKIEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25s
b2FkOwogQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0Owog
QGNsYXNzIFdLRnJhbWVJbmZvOwpAQCAtNDUwLDYgKzQ1MSwxOCBAQCBUaGUgdW5pZm9ybSB0eXBl
IGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVk
IHBhc3RlYgogICovCiArIChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2No
ZW1lIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJz
dHJhY3QgQmVnaW5zIGEgZG93bmxvYWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRseSBk
aXNwbGF5ZWQgd2VicGFnZSBhcyBpZiB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVkIGEg
bmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQgaW5zdGVhZAorIEBwYXJhbSByZXF1ZXN0IFRoZSBy
ZXF1ZXN0IHNwZWNpZnlpbmcgdGhlIFVSTCB0byBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisg
Ki8KKy0gKHZvaWQpc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1
ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKworLyogQGFic3RyYWN0IFJlc3VtZXMgYSBkb3dubG9hZCB0aGF0IGZhaWxlZCBvciB3YXMg
Y2FuY2VsbGVkLgorIEBwYXJhbSByZXN1bWVEYXRhIERhdGEgZnJvbSBhIFdLRG93bmxvYWREZWxl
Z2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3IgYSBXS0Rvd25sb2FkJ3MgY2FuY2VsIGNvbXBsZXRp
b25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVu
IHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4KKyAqLworLSAodm9pZClyZXN1bWVEb3dubG9hZFdp
dGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdL
RG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0eXBl
IGZvciB0aGUgV0tXZWJWaWV3CiAgQGRpc2N1c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlwZSB3
aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwgdmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4K
ICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBuaWwgd2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFsdWUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4MTgyNzZhNzQ4ZTMwZDljNjc0Li4xYjQ0NDRhNTYyMjdh
ODIzN2Y0YWFkOTAyMmY1M2MyYTJhYTIzY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0ICJX
S0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgor
I2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJlc3Vs
dEludGVybmFsLmgiCisjaW1wb3J0ICJXS0ZyYW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldL
SGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1w
b3J0ICJXS01lZGlhUGxheWJhY2tTdGF0ZS5oIgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0aWMg
dm9pZCBoYXJkd2FyZUtleWJvYXJkQXZhaWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZp
Y2F0aW9uQ2VudGVyUmVmLAogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlN
RVR5cGUsIGNoYXJhY3RlckVuY29kaW5nTmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwog
fQogCistICh2b2lkKXN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVx
dWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgX3BhZ2UtPmRvd25sb2FkUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxv
YWQpIHsKKyAgICAgICAgaWYgKGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIod3JhcHBlcihkb3dubG9hZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKK30KKworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhE
YXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93
bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9w
dE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVz
dW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQ
b2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgTlNEaWN0
aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltO
U1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3Nd
LCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05T
VVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFy
Y2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOwor
ICAgIE5TU3RyaW5nICpwYXRoID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiTlNVUkxTZXNz
aW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworCisgICAgaWYgKCFwYXRoKQorICAgICAgICBbTlNF
eGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxp
ZCByZXN1bWUgZGF0YSJdOworCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQor
ICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsgZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxvYWQgaWYgdGhl
IGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4aXN0LgorICAgIC8vIElmIHNvbWVvbmUgaGFzIHJlbW92
ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUsIG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0aGF0IGxvY2F0
aW9uLgorICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOnBhdGhdKQorICAgICAgICBbW05TRGF0YSBkYXRhXSB3cml0ZVRvRmlsZTpwYXRoIGF0
b21pY2FsbHk6WUVTXTsKKyNlbmRpZgorCisgICAgX3BhZ2UtPnJlc3VtZURvd25sb2FkKEFQSTo6
RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSksIHBhdGgsIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9h
ZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0Zv
cndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbQogewogICAgIHJldHVy
biB3cmFwcGVyKF9wYWdlLT5nb1RvQmFja0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFkZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMuLjUwYTYyYjU3
MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA5LDYgKzEw
OSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2Vu
ZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZTsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNs
YXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQwYzAzZTZiNGIw
MTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJhMWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRlOTAwNDVmMTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5o
CkBAIC0yOCwxMiArMjgsMTQgQEAKIAogQGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2Vi
VmlldzsKK0BjbGFzcyBXS0Rvd25sb2FkOwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAu
MTApLCBpb3MoOC4wKSkKK1dLX0NMQVNTX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tE
b3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkp
CiBAaW50ZXJmYWNlIF9XS0Rvd25sb2FkIDogTlNPYmplY3QgPE5TQ29weWluZz4KIAotLSAodm9p
ZCljYW5jZWw7CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKWNhbmNlbDsKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRV
Ukw6KE5TVVJMICopVVJMIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4y
KSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rv
d25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJkYmMuLmQ1ZTEx
YWQ2OTQ1NGVkOGRlYWIzNTU2YjA5MjdmNTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KQEAgLTI4LDY2ICsyOCw4NyBA
QAogCiAjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94
eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5m
b0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVtZW50YXRpb24g
X1dLRG93bmxvYWQgewotICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJv
eHk+IF9kb3dubG9hZDsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitzdGF0
aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2FkICosIF9XS0Rvd25sb2FkICo+ICpkb3dubG9hZFdyYXBw
ZXJNYXAoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNYXBUYWJs
ZT4+IHRhYmxlOworICAgIGlmICghdGFibGUuZ2V0KCkpCisgICAgICAgIHRhYmxlLmdldCgpID0g
W05TTWFwVGFibGUgd2Vha1RvV2Vha09iamVjdHNNYXBUYWJsZV07CisgICAgcmV0dXJuIHRhYmxl
LmdldCgpLmdldCgpOwogfQorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKK0lH
Tk9SRV9XQVJOSU5HU19CRUdJTigiZGVwcmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQorQGltcGxl
bWVudGF0aW9uIF9XS0Rvd25sb2FkCitJR05PUkVfV0FSTklOR1NfRU5ECiAKLS0gKHZvaWQpZGVh
bGxvYworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRG93bmxvYWQyOihXS0Rvd25sb2FkICopZG93
bmxvYWQKIHsKLSAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5KCk7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgX2Rvd25sb2FkID0g
ZG93bmxvYWQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107Cisr
IChpbnN0YW5jZXR5cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9h
ZAoreworICAgIGlmIChfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtkb3dubG9hZFdyYXBwZXJNYXAo
KSBvYmplY3RGb3JLZXk6ZG93bmxvYWRdKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBf
V0tEb3dubG9hZCAqd3JhcHBlciA9IFtbW19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERvd25s
b2FkMjpkb3dubG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBz
ZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVyOwog
fQogCiAtICh2b2lkKWNhbmNlbAogewotICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9
IG1ha2VSZWYoKl9kb3dubG9hZCldIChhdXRvKikgeworICAgIF9kb3dubG9hZC0+X2Rvd25sb2Fk
LT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkLT5fZG93bmxvYWQpXSAoYXV0
byopIHsKICAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9h
ZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5T
VVJMICopVVJMCiB7Ci0gICAgX2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKKyAgICBf
ZG93bmxvYWQtPl9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CiB9CiAKIC0gKE5TVVJM
UmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNV
UkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBC
b2R5KTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkp
OwogfQogCiAtIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAgICBpZiAoYXV0
byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICBp
ZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0
aW5nUGFnZSgpKQogICAgICAgICByZXR1cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmlnaW5hdGlu
Z1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVhc2VdOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0oTlNB
cnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0Q2hhaW4KIHsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJh
eShfZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7
CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlZGlyZWN0
Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CiAgICAgICAgIHJldHVybiB1cmw7
CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogLSAoQk9PTCl3YXNVc2VySW5pdGlhdGVkCiB7
Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOworICAgIHJldHVybiBf
ZG93bmxvYWQtPl9kb3dubG9hZC0+d2FzVXNlckluaXRpYXRlZCgpOwogfQogCiAtIChOU0RhdGEg
KilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPmxl
Z2FjeVJlc3VtZURhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQt
Pl9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKIH0KIAogLSAoV0tGcmFtZUluZm8gKilv
cmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2Fk
LT5mcmFtZUluZm8oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5f
ZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKIH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUg
Kil6b25lCkBAIC05OSw3ICsxMjAsNyBAQAogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAog
ewotICAgIHJldHVybiAqX2Rvd25sb2FkOworICAgIHJldHVybiAqX2Rvd25sb2FkLT5fZG93bmxv
YWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNlYzVmOWRiNzRm
MTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFjY2FjYjVmNzBlMTRhZTNiOTczODdmNDY4YTgzYTdiYjdj
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZERlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMzEsNiArMzEsOCBAQAogCiBAcHJvdG9jb2wgX1dLRG93
bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVk
LWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQ7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
OwpAQCAtNDYsNCArNDgsNSBAQAogLSAoQk9PTClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5
cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIAogLSAoTlNT
dHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3Jp
dGU6KEJPT0wgKilhbGxvd092ZXJ3cml0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6IiwgbWFjb3MoMTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4wLCAxMS4zKSk7
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBl
MTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIxNzM3NTdhNTRh
MGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwx
MiBAQAogCiAjaW1wb3J0ICJfV0tEb3dubG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5
LmgiCi0jaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3du
bG9hZFByb3h5PiB7Ci0gICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19Owor
QGNsYXNzIFdLRG93bmxvYWQ7CiAKK0BpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0
PiB7CitAcGFja2FnZQorICAgIFJldGFpblB0cjxXS0Rvd25sb2FkPiBfZG93bmxvYWQ7CiB9Ci0K
LUBpbnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PgogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwCmluZGV4IGUyZmE1YzVjNWQ5YzllNWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEzZmUuLmVhZGNk
NDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZjMjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRp
ZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBs
ZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAg
IHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJD
b250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtp
dERvd25sb2FkU3RhcnRlZChkb3dubG9hZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgd2Via2l0RG93bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQu
Z2V0KCksIHBhdGgpOwogICAgIH0KIAotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBk
b3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2
b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIEFQSTo6RGF0YSopIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRy
PFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURv
d25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXNDYW5j
ZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAppbmRleCA3NWQ1MTIyMWQyYzM1MTgyZjg5
NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5iN2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBjYmY3NTY1Mzhl
MTQwNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lE
b3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2Fj
eURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2
YXRlOgogICAgIC8vIEZyb20gQVBJOjpEb3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3RhcnQo
RG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQ
cm94eSYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZl
RGF0YShEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWw7
CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUs
IFN0cmluZyk+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJveHkmKSBm
aW5hbDsKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsKICAgICB2b2lk
IGxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QoRG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZlZWJjZDIzNjk4
NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0YjYzNTk1NWM2
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25s
b2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEb3dubG9hZFByb3h5
LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxl
ci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBv
cnQgIldlYkNyZWRlbnRpYWwuaCIKQEAgLTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisKIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpMZWdhY3lEb3dubG9hZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4g
ZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQogewpAQCAtNzYsNyArNzksNyBA
QCBzdGF0aWMgU3lzdGVtUHJldmlld0NvbnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVy
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUAogfQogI2VuZGlmCiAKLXZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5KQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94
eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBAIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkp
CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0KQot
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2Vp
dmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zCiAjZW5kaWYKIAog
ICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVj
ZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2Uo
KV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3Qg
dG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCkBA
IC0xMTgsOSArMTIxLDkgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURh
dGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QKICNlbmRpZgogCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0
ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVz
V3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGVdOwogICAgIGVsc2UgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURh
dGEpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3JpdHRlbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3du
bG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMxLDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBk
b3duCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25s
b2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0
aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJl
ZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3du
bG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0ZSBf
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0
aW5hdGlvbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93
bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVzdGlu
YXRpb246ZGVzdGluYXRpb25dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9j
ZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4Miw3ICsxODUs
NyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkUHJvY2Vzc0RpZENyYXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQ
cm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIwNCwxMSArMjA3
LDExIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3
cml0ZSkgewogICAgICAgICBCT09MIGFsbG93T3ZlcndyaXRlID0gTk87CiAgICAgICAgIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgIE5TU3RyaW5nICpkZXN0aW5h
dGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRl
OiZhbGxvd092ZXJ3cml0ZV07CisgICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFs
bG93T3ZlcndyaXRlID8gQWxsb3dPdmVyd3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywg
ZGVzdGluYXRpb24pOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdl
dCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3Rp
bmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxl
cjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpj
cmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dP
dmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5k
bGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwxMCBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
aWRGaW5pc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYg
KG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCi12b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlk
RmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAg
ICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjQ4
LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6CiAjZW5kaWYKIAogICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNF
cnJvcigpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9y
OmVycm9yLm5zRXJyb3IoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2Fj
eURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsyNjYs
MTMgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2Fu
Y2VsOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRDYW5jZWw6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRS
ZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93
ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJM
IF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CiAKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0ICszMDQsNiBA
QCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNz
YXJ5KERvd25sb2FkUHJveHkmIGRvd25sbwogfQogI2VuZGlmCiAKK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKaW5kZXggMDQyZTc4ODU0MTFk
NDE3N2ZjZTljNjc1ZWQ4ZDQ4ZjEyYmIzZDRkNi4uOTY3ODM3YWZlMTRiZDgzNTRjNTZkNmJlZmU1
ZDI5MTM3NmFiODdhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2ICsxMjYsMTAgQEAgcHJpdmF0ZToKIAogICAgICAgICBS
ZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQ
YWdlUHJveHkmLCB1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmlu
Zz4mIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJikgb3ZlcnJpZGU7CiAKKyAgICAgICAgdm9p
ZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uQWN0aW9uJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIG5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlJiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIGNv
bnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQcm94eSYp
IGZpbmFsOworCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZp
bmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpAQCAtMjM1LDYgKzIzOSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wg
bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkIDogMTsKKyAgICAgICAgYm9vbCBuYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgY29udGV4
dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQmVnaW5OYXZp
Z2F0aW9uR2VzdHVyZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxFbmROYXZpZ2F0aW9u
R2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zv
cndhcmRMaXN0SXRlbSA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KaW5kZXggZTdjYjA4M2M0ZmYyYjMzOTA5M2Q3MTk0ODNiNTk0Yzgw
NWZkNTRlYy4uYjM4ZmNmZmUyMmQ3YmNiOTliOGYwZTBmNzBmZTlmNmRiZjJjZDU0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAt
NDMsNiArNDMsNyBAQAogI2ltcG9ydCAiU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCIKICNp
bXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0Zvcndh
cmRMaXN0SXRlbUludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNp
bXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRl
UHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tOU0RpY3Rpb25hcnkuaCIKQEAgLTE4Nyw2ICsxODgsOSBA
QCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmln
YXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNp
dmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2Vs
ZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOildOwogICAgIG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3ID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYkNyeXB0b01hc3Rlcktl
eUZvcldlYlZpZXc6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvbkFjdGlvbjpkaWRCZWNvbWVEb3dubG9hZDopXTsK
KyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJW
aWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9hZDopXTsKKyAgICBtX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQ6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlOildOwogICAgIG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJl
V2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRo
TmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld0RpZEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNr
Rm9yd2FyZExpc3RJdGVtOildOwpAQCAtNDcyLDExICs0NzYsMTAgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V2ViUGFnZVAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgTlNVUkxSZXF1ZXN0ICpuc1VS
TFJlcXVlc3QgPSB3cmFwcGVyKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKG5hdmlnYXRpb25BY3Rp
b24tPnJlcXVlc3QoKSkpOwotICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFu
ZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JT
Y2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
bmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGxpc3RlbmVyLT5kb3dubG9hZCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdldCgp
KTsKKyAgICAgICAgICAgIGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNV
UkxSZXF1ZXN0XQorICAgICAgICAgICAgICAgIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJG
b3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkKKyAgICAgICAgICAgICAgICB8fCBb
bnNVUkxSZXF1ZXN0LlVSTC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiYmxvYiJdKSB7CisgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPnVzZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdldCgpKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTU1NSw5ICs1NTgs
MTIgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2Nh
bExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogICAgICAgICBjYXNlIF9XS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZDoKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsK
ICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbms6CiAgICAgICAgICAgICB0cnlTT0F1dGhvcml6
YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0
ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUo
YXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgewogICAgICAgICAgICAg
ICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7CkBAIC02NzEsNyArNjc3LDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZShXZWJQYWcKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZDoKKyAgICAgICAgY2FzZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkOgogICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMDg1LDYgKzEwOTEsNDIgQEAgUmVmUHRy
PEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW4KICAgICByZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3Jl
OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVu
Z2VTdHJpbmctPnN0cmluZygpLCB1cmwpKTsKIH0KIAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIERvd25sb2Fk
UHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25E
ZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQo
KSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOndy
YXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGlkQmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZCldOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQp
Cit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdh
dGlvblJlc3BvbnNlKSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisK
K3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQorewor
ICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLmNv
bnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8g
bmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpKSAgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJW
aWV3IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQor
CiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggM2Y3
N2NjOTlmNmM4ZmE5ZmMyOTA4NWJjODVlMDhiMjdlZjYwMjVjZi4uNTk5OGNlNTFhNTc3OTRhMTlk
Y2E5ZmJhYmUzZTcyOWU0YTc3MDQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNp
bXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbXBvcnQg
IkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJLmgiCiAjaW1wb3J0ICJIaWdoUGVyZm9ybWFuY2VHUFVN
YW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGgu
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmNwcAppbmRleCAyOWMxN2JlYjMzZWQ2NzZjOWM0NDRhNGQ3MmE2MDFmNGNkMDc3ZjM2Li5k
YzEwMWI2NmNiMGNlM2RhZWQ4Y2JiMzExZjc3MjI0M2VhMzg5MTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC01OSw3
ICs1OSwxMSBAQCBEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAm
IGRvd25sb2FkUHJveHlNYXAsIFdlYnNpdGVEYXRhU3RvcgogewogfQogCi1Eb3dubG9hZFByb3h5
Ojp+RG93bmxvYWRQcm94eSgpID0gZGVmYXVsdDsKK0Rvd25sb2FkUHJveHk6On5Eb3dubG9hZFBy
b3h5KCkKK3sKKyAgICBpZiAobV9kaWRTdGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0
Q2FsbGJhY2sobnVsbHB0cik7Cit9CiAKIHN0YXRpYyBSZWZQdHI8QVBJOjpEYXRhPiBjcmVhdGVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKQEAgLTExNyw3ICsxMjEsOSBA
QCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZQogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0
eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5sYXN0KCkgIT0gcmVxdWVzdC51cmwoKSkKICAgICAgICAg
bV9yZWRpcmVjdENoYWluLmFwcGVuZChyZXF1ZXN0LnVybCgpKTsKIAotICAgIG1fY2xpZW50LT5k
aWRTdGFydCgqdGhpcyk7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9k
aWRTdGFydENhbGxiYWNrKHRoaXMpOworICAgIG1fY2xpZW50LT5sZWdhY3lEaWRTdGFydCgqdGhp
cyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtMTQ1LDggKzE1MSwxNiBAQCB2b2lkIERvd25sb2Fk
UHJveHk6OmRpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc1dyaQogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNXcml0
dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAK
LXZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgRG93bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0cmluZyYm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2FzLWEtZG93
bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9u
IGhlYWRlcgorICAgIC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGZy
b20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KKyAgICBpZiAocmVzcG9uc2UuaXNBdHRhY2htZW50
V2l0aEZpbGVuYW1lKCkgfHwgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSAmJiBtX3N1Z2dl
c3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkpCisgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVz
cG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKyAgICBlbHNlIGlmICghbV9zdWdnZXN0ZWRGaWxl
bmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gbV9zdWdnZXN0ZWRG
aWxlbmFtZTsKKyAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVu
ZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9uc2UubWlt
ZVR5cGUoKSk7CisKICAgICBtX2NsaWVudC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVT
dWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3Jp
dGUsIFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0
aW9uLmlzTnVsbCgpKQpAQCAtMTczLDExICsxODcsMTYgQEAgdm9pZCBEb3dubG9hZFByb3h5Ojpk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UKIHsKICAgICBtX2xlZ2FjeVJlc3VtZURhdGEgPSBjcmVhdGVEYXRhKHJlc3VtZURhdGEpOwog
Ci0gICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yKTsKKyAgICBtX2NsaWVudC0+ZGlk
RmFpbCgqdGhpcywgZXJyb3IsIG1fbGVnYWN5UmVzdW1lRGF0YS5nZXQoKSk7CiAKICAgICAvLyBU
aGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmplY3QgdG8gYmUgZGVsZXRlZC4KICAg
ICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hlZCgqdGhpcyk7CiB9CiAKK3ZvaWQg
RG93bmxvYWRQcm94eTo6c2V0Q2xpZW50KFJlZjxBUEk6OkRvd25sb2FkQ2xpZW50PiYmIGNsaWVu
dCkKK3sKKyAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50KTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCmluZGV4IDA3MThlODkzYWIyNTViYjNhMzVkZjdlZGE5YzMyOTJjMWY3MThh
NGMuLjMxODk1ZjU2NTk5OTc5ZWYzMmNkYzE2YmI4OTQzNDUwZDE1YTkxYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtMTAy
LDEyICsxMDIsOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygpIHsg
cmV0dXJuIG1fZnJhbWVJbmZvLmdldCgpOyB9CiAKICAgICBBUEk6OkRvd25sb2FkQ2xpZW50JiBj
bGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxp
Y2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBB
UEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOwotCi0gICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2xpZW50KFJlZjxBUEk6OkRvd25s
b2FkQ2xpZW50PiYmKTsKKyAgICB2b2lkIHNldERpZFN0YXJ0Q2FsbGJhY2soQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY2FsbGJhY2spIHsgbV9kaWRTdGFydENhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1l
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9
IHN1Z2dlc3RlZEZpbGVuYW1lOyB9CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZv
aWQgZGlkU3RhcnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSk7CkBAIC0xMTgsNyArMTE1LDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9p
ZCB3aWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1
ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsK
LSAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
LCBBbGxvd092ZXJ3cml0ZSk+JiYpOworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFN0cmluZyYm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYpOworCitwcml2YXRlOgorICAg
IGV4cGxpY2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3Rv
cmUmLCBBUEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOworCisgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9k
b3dubG9hZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9y
ZTsKQEAgLTEzNCw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVUkw+IG1fcmVkaXJl
Y3RDaGFpbjsKICAgICBib29sIG1fd2FzVXNlckluaXRpYXRlZCB7IHRydWUgfTsKICAgICBSZWY8
QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJbmZvOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiBtX2RpZFN0YXJ0Q2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0ODdkNGUzNDRlMThhMjAyM2QyOWJlYzQ2MGNh
Y2FlMDU1MjU3ZWQuLjA0NmE2YjUwMmYwZjZhNDc3ODlkZDkxNGFmMTRmZjYxZWUxNmMxYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaWYgRU5B
QkxFKExFR0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0
b21Qcm90b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IDBmODc0Mjg5OTBkZTAwMTM0MzY3MmUyNDk0ODk1YWQxM2Q0MzMwMjgu
LmY5YTQ5Yzc1NzdlZmNlZGEzODRiMmM4N2NhZjhmODkxOGU1ZWZkYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMzEzMCw3ICszMTMx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3Zl
cnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGlj
eUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lE
ZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZp
Z2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRp
b25BY3Rpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xp
Y2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Q
b2xpY3lEZWNpc2lvbjogZnJhbWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lB
Y3Rpb246ICV1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCkBA
IC0zMTcwLDcgKzMxNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xp
Y3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlv
biAhPSBQb2xpY3lBY3Rpb246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdh
dGlvbikgewotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2
aWdhdGlvbiwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBv
bGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4MywxMSArMzE4NCwxMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQQogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9j
ZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBX
VEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwg
c291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIHByb2Nlc3MoKS5w
cm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291
cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdh
dGlvbiksIG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBzb3Vy
Y2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCiAgICAgICAgIHBvbGljaWVzID0g
V1RGTW92ZShwb2xpY2llcyksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudF0gKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmln
YXRpb24sIFN1c3BlbmRlZFBhZ2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9u
IGhhcyBiZWVuIGRlc3Ryb3llZCwgdGhlbiBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAgIGlm
IChpc0Nsb3NlZCgpIHx8ICFuYXZpZ2F0aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpKSkgewotICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZN
b3ZlKHNlbmRlcikpOworICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lB
Y3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTMyMjMsMTEgKzMyMjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91bGRQcm9jZXNzU3dhcCA/IG51
bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlv
bmFsSGFuZGxlKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzOjpZZXMgOiBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91
bGRQcm9jZXNzU3dhcCA/IG51bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFuZGxlKSwg
c2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMgOiBX
aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
IHdlYnNpdGVQb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBX
aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
YWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiB3ZWJzaXRlUG9saWNpZXMsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYgbmF2aWdhdGlvbkFjdGlvbk9y
UmVzcG9uc2UsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5
RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQgfSk7CkBAIC0zMjQzLDYgKzMyNDQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAg
IGlmIChhY3Rpb24gPT0gUG9saWN5QWN0aW9uOjpEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVh
dGUgYSBkb3dubG9hZCBwcm94eS4KICAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUsIG1f
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzLCBuYXZpZ2F0aW9uID8gbmF2aWdh
dGlvbi0+b3JpZ2luYXRpbmdGcmFtZUluZm8oKSA6IEZyYW1lSW5mb0RhdGEgeyB9KTsKKyAgICAg
ICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uT3JSZXNwb25zZSldIChhdXRvKiBkb3dubG9hZFByb3h5KSB7CisgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZFByb3h5KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIFdURjo6c3dpdGNoT24obmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2Us
CisgICAgICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+
JiByZXNwb25zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLT5kb3dubG9h
ZEF0dHJpYnV0ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRQ
cm94eS0+c2V0U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRlKCkp
OworICAgICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkKCp0aGlzLCByZXNwb25zZS5nZXQoKSwgKmRvd25sb2FkUHJv
eHkpOworICAgICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvbkFj
dGlvbj4mIGFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQt
Pm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgYWN0aW9uLmdldCgpLCAq
ZG93bmxvYWRQcm94eSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAg
ICAgfSk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBkb3dubG9hZC5z
ZXRXYXNVc2VySW5pdGlhdGVkKG5hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKSk7CiAgICAg
ICAgICAgICBkb3dubG9hZC5zZXRSZWRpcmVjdENoYWluKG5hdmlnYXRpb24tPnRha2VSZWRpcmVj
dENoYWluKCkpOwpAQCAtNTA5NSwxMCArNTEwOSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
cwogICAgIG5hdmlnYXRpb24tPnNldE9yaWdpbmF0aW5nRnJhbWVJbmZvKG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSk7CiAgICAgbmF2aWdhdGlvbi0+c2V0RGVzdGluYXRpb25GcmFtZVNlY3VyaXR5
T3JpZ2luKGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAKKyAgICBBUEk6Ok5hdmlnYXRpb24q
IG1haW5GcmFtZU5hdmlnYXRpb24gPSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5n
ZXQoKSA6IG51bGxwdHI7CisgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6IG51bGxwdHI7CisgICAgYXV0byBkZXN0aW5h
dGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoRnJhbWVJbmZvRGF0YSB7IGZy
YW1lSW5mbyB9LCB0aGlzKTsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1l
SW5mbzsKKyAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCisg
ICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsK
KyAgICBlbHNlIGlmICghZnJvbUFQSSkgeworICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2Ug
PSBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlE
KSA6IG51bGxwdHI7CisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2Up
OworICAgIH0KKworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJl
c3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgorICAgICAgICAmJiBkZXN0
aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQorICAgICAgICAmJiAobV9tYWluRnJhbWUg
JiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKKyAg
ICAgICAgJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6
TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3YXJkOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0
aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRh
dGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlv
biA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlv
bkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigp
LCBXVEY6Om51bGxvcHQsIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0
LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5
KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7CisKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcp
CiAgICAgaWYgKGZyYW1lLmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihy
ZXF1ZXN0KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3Ms
ICJJZ25vcmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQg
d2FzIGhhbmRsZWQgYnkgY29udGVudCBmaWx0ZXIiKTsKLSAgICAgICAgcmV0dXJuIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5u
YXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAg
ICAgIHJldHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0KICNlbmRpZgog
CkBAIC01MTEwLDExICs1MTQzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5B
QkxFKEFQUF9CT1VORF9ET01BSU5TKQogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVz
dWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgotICAg
IAotICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQ
cm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VS
ZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIGZyYW1lSW5m
bywgdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6
V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4m
JiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNBcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFr
ZVJlZihmcmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92
ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJE
YXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQ
b2xpY2llcyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJy
b3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBw
Qm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6
IGZyYW1lSUQ6ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSwgc2Fm
ZUJyb3dzaW5nV2FybmluZzogJWQsIGlzQXBwQm91bmREb21haW46ICVkIiwgZnJhbWUtPmZyYW1l
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCAodW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNB
cHBCb3VuZERvbWFpbik7CiAKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlz
LCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0
aW9uLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIo
cG9saWNpZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNl
bmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBv
bGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAg
ICAgICAgICAgICAgIGlmICghcG9saWNpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1
dG8qIGRlZmF1bHRQb2xpY2llcyA9IG1fY29uZmlndXJhdGlvbi0+ZGVmYXVsdFdlYnNpdGVQb2xp
Y2llcygpKQpAQCAtNTEyMyw3ICs1MTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAg
ICAgICAgICAgICAgICBpZiAocG9saWNpZXMpCiAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRp
b24tPnNldEVmZmVjdGl2ZUNvbnRlbnRNb2RlKGVmZmVjdGl2ZUNvbnRlbnRNb2RlQWZ0ZXJBZGp1
c3RpbmdQb2xpY2llcygqcG9saWNpZXMsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkpKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgZnJhbWUsIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAg
ICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBu
YXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVy
KSk7CiAgICAgICAgIH07CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MTkw
LDEwICs1MjIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBhdXRvIHByb3RvY29s
ID0gc2hvdWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZyYW1lSW5mby5zZWN1cml0eU9yaWdp
bi5wcm90b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2woKTsKICAgICBtX3dlYnNpdGVEYXRh
U3RvcmUtPmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0LnRvU3RyaW5nKCksIHByb3RvY29s
LnRvU3RyaW5nKCksIGxpc3RlbmVyKTsKICNlbmRpZgotICAgIEFQSTo6TmF2aWdhdGlvbiogbWFp
bkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgp
IDogbnVsbHB0cjsKLSAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gdXNlckluaXRp
YXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25B
Y3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGF1dG8gd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVz
ZXIgPSBuYXZpZ2F0aW9uLT5pc0xvYWRlZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKCkgfHwgdXNlcklu
aXRpYXRlZEFjdGl2aXR5OwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKQEAg
LTUyMDEsMjQgKzUyMzEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAg
ICBpZiAobV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVx
dWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92
ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAg
YXV0byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92
ZShmcmFtZUluZm8pLCB0aGlzKTsKLSAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3Vy
Y2VGcmFtZUluZm87Ci0gICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09
ICZmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJ
bmZvLmNvcHlSZWYoKTsKLSAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpIHsKLSAgICAgICAgICAg
IGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2Vi
UGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIHNvdXJjZUZy
YW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBz
aG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdh
dGlvblBvbGljeURlY2lzaW9uCi0gICAgICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+
aXNNYWluRnJhbWUoKQotICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1l
LT51cmwoKS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCi0gICAgICAgICAgICAmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9u
VHlwZTo6QmFja0ZvcndhcmQ7Ci0KLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSks
IHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6
bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2
aWdhdGlvbik7Ci0KICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIGlmIChtX3Nob3VsZFN1cHBy
ZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8IG1fc2hv
dWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikK
ICAgICAgICAgICAgIG5hdmlnYXRpb25BY3Rpb24tPnVuc2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9y
aXphdGlvbigpOwpAQCAtNTMyMCw3ICs1MzM0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1l
CiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTChtX3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1h
a2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxT
YWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRh
YmxlIHsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKyAgICBp
ZiAoZnJhbWUpCisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkT3BlbkFw
cExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1
ZXN0LnVybCgpLmhvc3QoKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmln
YXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNl
RnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVS
TCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkp
KTsKKyAgICAKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lM
aXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50
aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rp
b24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93
c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewog
ICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVs
bHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9s
aWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcp
OwpAQCAtNTMyOSwyNCArNTM1MSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSk7CiAgICAgICAgIH0pOwogCi0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRy
LCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGlj
eUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RG
TW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5v
LCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pKTsKIAogICAgIGlmIChtX3Bv
bGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwg
ZnJhbWVOYW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAoZnJh
bWUpCi0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KFdURk1vdmUoZnJhbWVJbmZvKSwgdGhpcyk7Ci0KLSAgICAgICAgYXV0byB1c2VySW5pdGlhdGVk
QWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgIGJvb2wgc2hvdWxk
T3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAh
PSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0g
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJl
cXVlc3QpLCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRl
ZEFjdGl2aXR5KSk7Ci0KKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCByZXF1
ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCiAgICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigq
dGhpcywgbmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwot
Ci0gICAgfQotICAgICAgICAKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKQEAgLTUzNjcsOCArNTM3OCwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nl
c3MsIHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlc3Bv
bnNlLnVybCgpKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2
aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6
IG51bGxwdHI7CisgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25S
ZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8p
LCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxv
YWRBdHRyaWJ1dGUpOworCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24g
PSBXVEZNb3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzXSAoUG9saWN5QWN0aW9uIHBv
bGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdX
YXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICAg
ICAgcHJvY2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYm
IHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IEFzc2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNl
IGNsaWVudHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXku
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0g
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VE
KHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzNzcsMTQg
KzUzOTAsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlE
LCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwog
ICAgICAgICAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5h
dmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2Vp
dmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRy
LCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwg
U2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmRE
b21haW5SZXN1bHQ6Ok5vKSk7CiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3Bv
bGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9u
c2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAg
ICBlbHNlIHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUlu
Zm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93
bmxvYWRBdHRyaWJ1dGUpOworICAgIGVsc2UKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlv
blJlc3BvbnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeShGcmFtZUlkZW50aWZpZXIgZnJhbWVJ
RCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
QEAgLTYwMjMsNiArNjAzNCwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVE
b3dubG9hZFJlcXVlc3QoZG93bmxvYWQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1l
RG93bmxvYWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVz
dW1lRG93bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXN1bWVEYXRhLCBwYXRoLCBD
YWxsRG93bmxvYWREaWRTdGFydDo6WWVzKTsKKyAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxi
YWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6
OmRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBhdXRvJiBkb3dubG9hZCA9IHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmRvd25sb2Fk
KHdlYnNpdGVEYXRhU3RvcmUoKSwgdGhpcywgcmVxdWVzdCwgeyB9KTsKKyAgICBkb3dubG9hZC5z
ZXREaWRTdGFydENhbGxiYWNrKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiB7CiAgICAgcGFnZUNsaWVudCgpLmRpZENoYW5nZUNvbnRlbnRTaXplKHNpemUpOwpAQCAtNjU5
MiwxOCArNjYxNSwyNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkSW1hZ2VUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgp
LmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNv
bnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdl
VVJMKSk7Ci0gICAgICAgIHJldHVybjsgICAgCi0gICAgfQorICAgIHN0cnVjdCBEb3dubG9hZElu
Zm8geworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5h
bWU7CisgICAgfTsKKyAgICBPcHRpb25hbDxEb3dubG9hZEluZm8+IGRvd25sb2FkSW5mbzsKKyAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9E
aXNrKQorICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51Q29udGV4
dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZUltYWdlVVJMLCB7IH0gfX07CiAg
ICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRMaW5rVG9E
aXNrKSB7CiAgICAgICAgIGF1dG8mIGhpdFRlc3RSZXN1bHQgPSBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgp
LCBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCksIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dl
c3RlZEZpbGVuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoaXRlbS5hY3Rp
b24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKSB7Ci0gICAgICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRo
aXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RS
ZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCkpOwotICAgICAgICByZXR1cm47CisgICAgICAg
IGRvd25sb2FkSW5mbyA9IHt7IGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMLCBoaXRUZXN0
UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSB9fTsKKyAgICB9CisgICAgaWYgKGl0ZW0uYWN0
aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykKKyAgICAgICAg
ZG93bmxvYWRJbmZvID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRl
c3RSZXN1bHREYXRhKCkuYWJzb2x1dGVNZWRpYVVSTCwgeyB9IH19OworICAgIGlmIChkb3dubG9h
ZEluZm8pIHsKKyAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29s
KCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIGRvd25sb2Fk
SW5mby0+dXJsKSwgZG93bmxvYWRJbmZvLT5zdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGRv
d25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwg
IWRvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCgqdGhpcywgKmRvd25sb2Fk
KTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRN
ZW51SXRlbVRhZ0NoZWNrU3BlbGxpbmdXaGlsZVR5cGluZykgewogICAgICAgICBUZXh0Q2hlY2tl
cjo6c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCFUZXh0Q2hlY2tlcjo6c3RhdGUo
KS5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IDg3OWY3MzJiMTFjYjEyMzk3Mzg2NThlOGU1OGZiODdjNTAz
NGYyYjguLjkyMzIzZTY3MTQ2YWQxOWNlMGY0MjZlYzBkZWZlM2ZhNmQ5ZmI0MjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xMTY0LDggKzExNjQsOCBAQCBwdWJs
aWM6CiAKICAgICBjbGFzcyBQb2xpY3lEZWNpc2lvblNlbmRlcjsKICAgICBlbnVtIGNsYXNzIFdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgOiBib29sIHsgTm8sIFllcyB9OwotICAgIHZvaWQg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbiosIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxs
Q29udGludWVMb2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6
Tm8pOwotICAgIHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6
UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8
UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZlB0cjxBUEk6Oldl
YnNpdGVQb2xpY2llcz4mJiwgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYm
LCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+ID0geyB9LCBXaWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzID0gV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vzczo6Tm8pOworICAg
IHZvaWQgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiwgUmVmUHRyPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogCiAgICAgdm9p
ZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImKTsKIApAQCAtMTI3OSw2ICsxMjc5LDggQEAgcHVibGljOgogICAgIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYsIERy
YXdpbmdBcmVhUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgPSBudWxscHRy
KTsKIAogICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmKTsKKyAg
ICB2b2lkIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJik7
CisgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKIAogICAgIHZvaWQgYWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pOwogICAgIHZv
aWQgY2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAzNmIyZDZmN2E3NWE1NmI4NTRj
NjllNjIwYWI3OThmNzZlNjBhNTE2Li4wZGNjY2E2ODQyOTEzMzhkYzljZTJiNGFiMDI2YjVlMTE5
ZTgwMjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBA
IC0xMTQ4LDcgKzExNDgsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxv
YWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveAogICAgIHJldHVybiBk
b3dubG9hZFByb3h5OwogfQogCi1Eb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1l
RG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCkKK0Rvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRl
RGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0
IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWRE
aWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKICAgICBhdXRvJiBkb3dubG9hZFByb3h5
ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIFJlc291cmNlUmVxdWVzdCgpLCBpbml0
aWF0aW5nUGFnZSwgeyB9KTsKIApAQCAtMTE1Niw3ICsxMTU2LDcgQEAgRG93bmxvYWRQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSwgV2ViUGEKICAgICBpZiAoIXBhdGguaXNFbXB0eSgpKQogICAgICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGUocGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRl
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAotICAgIGRhdGFTdG9yZS5uZXR3b3JrUHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXN1bWVEb3dubG9hZChkYXRhU3Rv
cmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCByZXN1bWVEYXRhLmRh
dGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIDApOworICAgIGRh
dGFTdG9yZS5uZXR3b3JrUHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpS
ZXN1bWVEb3dubG9hZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIGRvd25sb2FkUHJveHkuZG93bmxv
YWRJRCgpLCByZXN1bWVEYXRhLmRhdGFSZWZlcmVuY2UoKSwgcGF0aCwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSwgY2FsbERvd25sb2FkRGlkU3RhcnQpLCAwKTsKICAgICByZXR1cm4gZG93bmxvYWRQ
cm94eTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXgg
YTNjMmRiZjk0ZjU1ZWY3MGM3ZTc2NzAxYWUzZmMxODg3MjQ0ZGMwOC4uNjVkNGY5OGYxNTE1NjBk
NTYwNDg1YzVkMTVjOWI3YmM2NGUwNWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0xMTYsNiArMTE2LDcgQEAgaW50IHdlYlByb2Nlc3NMYXRlbmN5UU9T
KCk7CiBpbnQgd2ViUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCitlbnVtIGNsYXNz
IENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgUHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCA6IGJvb2w7CiAKIGNsYXNzIFdlYlByb2Nlc3NQb29sIGZpbmFsIDogcHVi
bGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UHJvY2Vzc1Bvb2w+LCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1Bvb2w+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJl
Y2VpdmVyIHsKQEAgLTIwNCw3ICsyMDUsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIERvd25s
b2FkUHJveHkmIGRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkqIGluaXRp
YXRpbmdQYWdlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lID0geyB9KTsKLSAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3du
bG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29u
c3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERvd25s
b2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBzZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVmUHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRh
KSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2Vy
RGF0YSk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMDc2MWQ4MzUxZWZjYjU2MTEwOWM1M2YwMGU1MDA5NzA2NmUyM2FlNy4uYjg5
NTJmYzAyZTM0NGE4NjE5MThiYTlkOGI3M2FjZmQzZWViNWY1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTgsNyArMjE4LDYgQEAK
IAkJMUE0M0U4MkExODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0M0U4
MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDQ1QjlGMTg0
RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCOUUxODRENUZCNTAw
NEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTExODRENUZDMTAwNEIz
NDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRl
eHRIaXN0b3J5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKLQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUJBNTE4
NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTQxODRENUZEQTAwNEIz
NDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ4MzJDQzFBOUJDNDY1MDA4QjRERkUgLyog
V0tXZWJzaXRlRGF0YVJlY29yZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE0ODMyQ0ExQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNv
cmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCTFB
NDgzMkNFMUE5QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDgzMkNEMUE5
QkM0ODQwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCAqLzsgfTsKQEAg
LTMzMSw3ICszMzAsNyBAQAogCQkxQUI3RDRDQTEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQ
cm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
N0Q0QzgxMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCAqLzsgfTsKIAkJMUFCN0Q2
MTkxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTcxMjg4
QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQkxQUI3RDYxQTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDYxODEyODhC
OUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi87IH07Ci0JCTFBQjdENzhE
MTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3du
bG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDc4QjEyODhDRDlBMDBDRkQw
OEMgLyogV0tEb3dubG9hZFJlZi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTFBQjhBMUVDMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFFRTE4NDAwQUNC
MDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdl
UG9saWN5Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUFCOEExRjAxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVGMTg0
MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExODUsNiArMTE4NCw3IEBACiAJCTVDMjBD
QkEwMUJCMUVDRDgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyMENCOUUxQkIwREQxODAwODk1QkIxIC8q
IE5ldHdvcmtTZXNzaW9uLmggKi87IH07CiAJCTVDMjY5NTg1MjAwNDMyMTIwMDVDNDM5QiAvKiBX
S09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI2OTU4NDIwMDQyRjEyMDA1QzQzOUIgLyogV0tPcGVuUGFu
ZWxQYXJhbWV0ZXJzUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTVDMjk4REEwMUMzREYwMjEwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxv
YWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjk4
RDlFMUMzREVGMjkwMDQ3MEFGRSAvKiBQZW5kaW5nRG93bmxvYWQuaCAqLzsgfTsKKwkJNUMyRUJE
RkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAv
KiBXS0Rvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMzNTlDMEMy
MTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU3MjI0MzE3QjQwMDk5NDNDMiAvKiBf
V0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVs
ZUxpc3RBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25J
bnRlcm5hbC5oICovOyB9OwpAQCAtMTgyNSw2ICsxODI1LDkgQEAKIAkJQ0VFNEFFMkIxQTVEQ0Y0
MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCAqLzsg
fTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMxMUZGNEI2NTAw
MDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0QjY1MDAwMzJC
MzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9w
dXBNZW51LmggKi87IH07CisJCURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2Fk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYy
NDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVGMkEyNTJFQ0I4RTAwRDkyMURCIC8qIFdL
RG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVG
MkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURC
IC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwogCQlERjQ2MkUwRjIzRjIyRjU1MDBFRkYz
NUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQ
Q29va2llU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxk
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
REY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURGODRDRUU0MjQ5
QUEyNEQwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFBMjFGMDA5MDk2RjYgLyogV0tQREZI
VURWaWV3Lm1tICovOyB9OwpAQCAtMjQ1NCw3ICsyNDU3LDYgQEAKIAkJMUE0M0U4MjgxODhGM0NE
QzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dEhpc3RvcnlD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE0NDVCQTIxODRENUZDRjAw
NEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzEx
QTk2NUEzQzAwOEI0REZFIC8qIFdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzkxQTlCQzQ2NTAwOEI0REZFIC8qIFdL
V2Vic2l0ZURhdGFSZWNvcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjY1MCw4ICsyNjUyLDggQEAKIAkJMUFCN0Q1RTkxMjg4QjhDMDAwQ0ZEMDhDIC8qIERvd25s
b2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG93bmxvYWRQcm94
eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCN0Q2MTcxMjg4
QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Rvd25sb2FkUHJveHlNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQkxQUI3
RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlcy5oOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9h
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQw
OEMgLyogV0tEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3OEIx
Mjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxv
YWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2Fk
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUQxODQwMEFD
QjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1BhZ2VQb2xpY3lDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlRm9ybUNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDEyMiw2ICs0MTI0LDcgQEAKIAkJNUMyQjFBRjMyMjNB
QjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFDRjcgLyogRG93
bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJl
Y2F0ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEZXByZWNhdGVkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDM0FFQThFMUZFMUYxREYwMDIzMThEMyAv
KiBXZWJzaXRlUG9saWNpZXNEYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRSdWxlTGlzdEFj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTM4OCw2ICs1MzkxLDEwIEBA
CiAJCUQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUQzQjk0ODQ0MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1l
bnUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU2VhcmNoUG9w
dXBNZW51LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDUxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0Rvd25sb2FkLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9h
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rv
d25sb2FkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3du
bG9hZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI2MjUy
RUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCURGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVBy
aXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tIVFRQQ29va2llU3Rv
cmVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNDYyRTExMjNGMzM4
QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tDb250ZW50V29ybGRQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCURGNThDNjMxMTM3MUFDNTgwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdGl2ZVdlYldoZWVsRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc1MzgsNiArNzU0NSwxMCBAQAog
CQkJCTVDRTBDMzY4MjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8u
bW0gKi8sCiAJCQkJNUNFMEMzNkIyMjlGMkQ0QjAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVt
ZW50SW5mb0ludGVybmFsLmggKi8sCiAJCQkJNUNFMEMzNkEyMjlGMkQ0QTAwMzY5NUYwIC8qIFdL
Q29udGV4dE1lbnVFbGVtZW50SW5mb1ByaXZhdGUuaCAqLywKKwkJCQlERjBDNUYyNDI1MkVDQjhE
MDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovLAorCQkJCURGMEM1RjIzMjUyRUNCOEQwMEQ5MjFE
QiAvKiBXS0Rvd25sb2FkLm1tICovLAorCQkJCURGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBX
S0Rvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZEludGVybmFsLmggKi8sCiAJCQkJMUFGNDU5MkQxOTQ2NEIyMDAwRjlENEEyIC8q
IFdLRXJyb3IuaCAqLywKIAkJCQkxQUY0NTkyQzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5t
bSAqLywKIAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAgLyogV0tFcnJvckludGVybmFsLmgg
Ki8sCkBAIC05NTA0LDcgKzk1MTUsNiBAQAogCQkJCTFBRTUyRjkzMTkyMDFGNkIwMEExRkEzNyAv
KiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcCAqLywKIAkJCQkxQUU1MkY5NDE5MjAxRjZC
MDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oICovLAogCQkJCTFBNDQ1QkE0
MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggKi8sCi0JCQkJ
MUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi8s
CiAJCQkJMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQu
aCAqLywKIAkJCQkxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCAqLywKIAkJCQlBMUVBMDIzNTFEQUJGRjdFMDA5NjAyMUYgLyogV0tDb250
ZXh0TWVudUxpc3RlbmVyLmNwcCAqLywKQEAgLTk1MTUsOCArOTUyNSw5IEBACiAJCQkJNTEyRjU4
RjExMkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5jcHAgKi8sCiAJCQkJNTEyRjU4RjIx
MkE4OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5oICovLAogCQkJCTUxOEFDRjEwMTJCMDE1
RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovLAotCQkJCTFBQjdENzhDMTI4OENE
OUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLywKLQkJCQkxQUI3RDc4QjEyODhDRDlBMDBD
RkQwOEMgLyogV0tEb3dubG9hZC5oICovLAorCQkJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAv
KiBXS0Rvd25sb2FkQ2xpZW50LmggKi8sCisJCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWRSZWYuY3BwICovLAorCQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBX
S0Rvd25sb2FkUmVmLmggKi8sCiAJCQkJQkNFNDY5NTcxMjE0RURGNDAwMEI5OEVCIC8qIFdLRm9y
bVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAgKi8sCiAJCQkJQkNFNDY5NTgxMjE0RURGNDAwMEI5OEVC
IC8qIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oICovLAogCQkJCUJDRDAxMzk4MTEwRkE0MjAw
MDNCOEE2NyAvKiBXS0ZyYW1lLmNwcCAqLywKQEAgLTExODQ1LDcgKzExODU2LDYgQEAKIAkJCQlC
Q0I5RTI0QjExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUU1MkY5ODE5MjAyNjcyMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4
dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBNDQ1QkEzMTg0RDVGQ0Yw
MDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM3OTVENzAyMjlGMzczRjAw
M0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MTg3OCw4ICsxMTg4OCwxMiBAQAogCQkJCUJDNUQyNEM1MTZDRDcwODgwMDdENTQ2MSAvKiBXS0RP
TVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4
OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMjExNjI2MzMwODAw
NzA1NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkxQUI3RDc4
RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYw
QzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3du
bG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzcyODFBMjIxQURDNzQ0MDA5RTBE
RTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI3RDc4RDEy
ODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjQw
OUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVDM0YgLyogV0tFZGl0Q29tbWFuZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3Iu
aCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDI1NDYwM2MzMWFlYzJkNzEzODY0YTcyMzg1MzJiYjlmNTA4MjNlY2IuLjBj
NTBjZWEwMjNiODc1NTliZGQxODcyMGQxNThlYTQxM2NjYmE1MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAorMjAyMC0x
MS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldENvbnRleHRE
b3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lQ29udGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWRE
ZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25z
ZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdh
dGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNw
b25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpd
KToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAg
ICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAgICAgICAoc2ltcGxlRG93bmxv
YWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRlbnRzKToKKyAgICAgICAgKHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rvd25sb2FkVGVzdFNjaGVtZURl
bGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZpbGUpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToK
KyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06
CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW06Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpz
dWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERv
d25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWREaWRG
aW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZEZh
aWxXaXRoRXJyb3I6cmVzdW1lRGF0YTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdh
dGUgd2ViVmlldzpuYXZpZ2F0aW9uUmVzcG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6XSk6CisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXSk6CisgICAgICAgICgtW1Rlc3REb3du
bG9hZERlbGVnYXRlIHRha2VDYWxsYmFja1JlY29yZF0pOgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6
ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93
bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGlu
YXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbS4KKyAgICAgICAgKC1bVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKToKKyAgICAgICAgKC1bVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKToKKyAgICAg
ICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhl
clBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhP
cHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkRmFpbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpk
b3dubG9hZERpZENhbmNlbCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorCiAyMDIwLTExLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgYmxvY2stc3BhbW1lcnMgYXV0b2luc3RhbGwgcmVx
dWVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAppbmRleCBkOTdmMjY2ZTQwNWVj
ZmFhNDE0MTk0NTk5MDg4YWQ1NDBiZDRkMDllLi5mNWE5ZDIxNzY1ZjY4YWYyMmZmYjk0ZTM4NTIz
ZDdkNjQ5ZTQ1MWZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNyw2
ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMubW0KIGNvY29hL1BsYXRmb3Jt
VXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rlc3RDb2NvYS5tbQogY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUubW0KK2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCiBjb2NvYS9U
ZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2NvYS9UZXN0UHJvdG9jb2wubW0KIGNvY29hL1Rl
c3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDMxMDkyYzI2ZTM4ZWQ3
YzE5MDc2ZWYyZTI4M2JiNzA3OGE2ZDQ4MzEuLjAxYTAxNjY0ZjBjMDk5MDI5OGQ0NDU2NDgxZjI1
N2VlMTMyNmQ4NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMjE1LDggKzIyMTUsOCBA
QAogCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhU2NyaXB0
RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2RTI3
QTYyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDYW5vbmljYWxpemF0aW9uLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzcxNDg5NDIxMjNBNDA3MDBGREUzQzUgLyogV0tX
ZWJzaXRlRGF0YXN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJzaXRlRGF0YXN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9
IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVn
YXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3MkU4Q0UyNDRGRkNF
NDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07
IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM3M0E4MUEyMzIzMDU5ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVExTRGVwcmVj
YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzU3MTVGMjIxMjQ5QkQw
MEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIwMjY5QjAwNzVENzRDIC8qIEV2ZW50TW9k
aWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TW9k
aWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4MDEsNiArMjgwMSw4
IEBACiAJCUQzQkU1RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2ViVmlld0dldENv
bnRlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzY5QUE2MjFDRjc3QzY1
MDBDNjI3MkYgLyogU2NvcGVkTGFtYmRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjb3BlZExhbWJkYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFy
eUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU0Rp
Y3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBj
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERkI4RkYzMTI0
OTJGNTFBMDBGMDBCMEQgLyogUHJlY29ubmVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFByZWNvbm5lY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyog
TWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9h
ZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMTIyLDggKzMx
MjQsMTAgQEAKIAkJCQlDRTY0MENBNjIzNzBBNEYzMDBDNUNBQTQgLyogVGVzdENvY29hLm1tICov
LAogCQkJCTVDRTc1OTQ4MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIu
aCAqLywKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJp
dmVyLm1tICovLAotCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5oICovLAotCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93bmxv
YWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3MDI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERv
d25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjZCQzQ2RjI1MzRFMTIwMDA4RjYzQ0MgLyogVGVz
dERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8q
IFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJNUM3MkU4Q0UyNDRGRkNFNDAw
MzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tICovLAogCQkJCTJEMUMwNEE1
MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQx
QzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCiAJ
CQkJNTE2MjgxMjMyMzI1QzE3QTAwQkI3RTQyIC8qIFRlc3RQREZEb2N1bWVudC5oICovLApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVE
ZXN0aW5hdGlvbkNyYXNoLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rv
d25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKaW5kZXggY2E2OTdhYzM1YTlhYTUyMGE1
YjE5ZjVjN2I3NDNjMTdjODQ0YzUzOC4uYzQ1NzU4NjUwNWRiM2U0ZGJhYmRiMDcxMmEwZTY2M2Jk
YjI5Yzc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCkBAIC0yOSw0
MiArMjksNDEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiAKIHN0YXRpYyBib29sIGRpZERlY2lkZURlc3RpbmF0aW9uOwogCi1zdGF0aWMgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9u
UmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qg
dm9pZCopCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV0tQ
YWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVm
IGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9p
ZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVlOwotICAgIFdLRG93bmxvYWRD
YW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51bGxwdHIs
IG51bGxwdHIpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvRG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigpOwogfQogCi1zdGF0aWMgdm9p
ZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCitzdGF0aWMg
dm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYgcGFnZSwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdhdGlvblJlc3BvbnNlLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLQ29udGV4dERvd25s
b2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CiAgICAg
bWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQogICAgIGNsaWVudC5iYXNlLnZl
cnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotCi0gICAgV0tD
b250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwgJmNsaWVudC5iYXNlKTsKKyAgICBjbGll
bnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xp
ZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJl
ZiBwYWdlKQogewotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50
OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBuYXZpZ2F0aW9uQ2xpZW50OwogICAgIG1l
bXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6ZW9mKG5hdmlnYXRpb25DbGllbnQpKTsKIAot
ICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBuYXZpZ2F0aW9uQ2xp
ZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOworICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJzaW9uID0gMzsKKyAg
ICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50Lm5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChwYWdl
LCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIH0KQEAgLTcyLDcgKzcxLDYgQEAgc3RhdGljIHZv
aWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKIFRFU1QoV2ViS2l0LCBEb3du
bG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0
UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihu
dWxscHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAgICAgc2V0UGFn
ZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCmluZGV4
IDE1OTMwZTU0NmRiYWEzZGE5ZDVlZDIxNWI2YzhiOWNjNjEwOWFmMGYuLjc1NTZmNjEyZDVlM2I5
YmE0ZjRjZDZmNTI2Yzk1OGMxN2YzZjFmMjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tCkBAIC0y
OCw3ICsyOCw4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiUGxh
dGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0TWVudUl0ZW0uaD4KLSNp
bXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZENs
aWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KICNpbXBvcnQgPFdlYktp
dC9XS1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2VDb250ZXh0TWVudUNsaWVudC5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CkBAIC02MiwxMiArNjMsMTIg
QEAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiBw
YWdlLCBXS0FycmF5UmVmIHByb3Bvc2VkTWUKICAgICB9CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1Jl
ZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29s
KiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJl
ZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqKQogewogICAgIC8v
IE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFuZCBtYXRjaGVz
IHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1MLgogICAgIEVY
UEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxl
bmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2Fk
Q2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICBkaWREZWNpZGVEb3dubG9h
ZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIEVYUEVDVF9FUShleHBlY3RlZE9yaWdpbmF0aW5n
UGFnZSwgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShkb3dubG9hZCkpOwpAQCAtNzYsMjUg
Kzc3LDI5IEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvCiAgICAgcmV0dXJuIFV0aWw6OnRvV0so
Ii90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVudURvd25sb2FkIikubGVha1JlZigpOwogfQog
CitzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdLUGFnZVJlZiBwYWdl
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVv
ZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBjbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJh
c2UpOworfQorCiAvLyBDaGVja3MgdGhhdCB0aGUgSFRNTCBkb3dubG9hZCBhdHRyaWJ1dGUgaXMg
dXNlZCBhcyBzdWdnZXN0ZWQgZmlsZW5hbWUgd2hlbiBzZWxlY3RpbmcKIC8vIHRoZSAiRG93bmxv
YWQgTGlua2VkIEZpbGUiIGl0ZW0gaW4gdGhlIGNvbnRleHQgbWVudS4KIFRFU1QoV2ViS2l0LCBD
b250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlKQogewogICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdp
dGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xp
ZW50OwotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50
LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0g
ICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNl
KTsKLQogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdL
KFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdl
dCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdy
b3VwLmdldCgpKTsKIAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7
CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQo
JmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotICAgIGxvYWRlckNsaWVu
dC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwog
ICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlv
bjsKKyAgICBsb2FkZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IGNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGll
bnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKICAgICBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xpZW50OwpAQCAtMTE0LDM0ICsxMTksMzggQEAg
VEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGUpCiAg
ICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uKTsKIH0KIAotc3RhdGlj
IFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFp
bmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmlu
Z1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3Ry
aW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1Ns
YXNoZXMoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdS
ZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0
aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBv
ZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1MLCBhZnRlciBzYW5pdGl6YXRpb24u
CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0Ml9kb3dubG9hZEF0dHJpYnV0ZVZhbHVl
LnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxv
YWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51bGxwdHIsIG51bGxwdHIpOwog
ICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVlOwogCiAgICAgcmV0dXJuIFV0
aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVudURvd25sb2FkIikubGVha1Jl
ZigpOwogfQogCi1URVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0
dHJpYnV0ZVdpdGhTbGFzaGVzKQorc3RhdGljIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdLUGFnZVJlZiBwYWdl
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRl
Q29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKLQotICAgIFdLQ29udGV4dERvd25sb2FkQ2xp
ZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0
KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0g
MDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzOwot
ICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCksICZjbGllbnQuYmFz
ZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKKyAgICBXS0Rv
d25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOworfQorCitURVNUKFdlYktp
dCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQor
eworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6
Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdL
UGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElk
ZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAotICAgIFdLUGFn
ZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNs
aWVudFYzIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOwotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAg
IGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5p
c2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKKyAgICBsb2FkZXJDbGllbnQuY29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRX
aXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKICAgICBXS1BhZ2VTZXRQYWdl
TmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRlckNsaWVudC5iYXNlKTsKIAog
ICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1lbnVDbGllbnQ7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJp
bmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0KaW5kZXggNDMzOTEzMTEwMWYyY2RkOTUwOTg2N2VmZTk0NGY2ZTc3ZWYzOWVkYi4u
ZDE5NmMyYzkzYzkyY2FhYmQ3MzIzOTNiMzRjYWVlZTBhZTdiMzM5MiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmlu
Zy5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIFRFU1QoQ29udGVudEZpbHRlcmluZywgVVJMQWZ0ZXJT
ZXJ2ZXJSZWRpcmVjdCkKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKilu
YXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiB9CiAKIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVy
cm9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZC5tbQppbmRleCAzYWVmZWI4ZWMzMzVlMTAyMzJmZjhlNWM4MGM2Zjc5YmQzNWVmYzA4Li4xOGRi
MTJiYWM5NDQ5YjI0MjVhMTI3NTAwYmNhZWNlYzczYmQxNzM1IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAgLTMzLDExICszMywx
NSBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJU
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RQ
cm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU1VSTFJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3Lmg+CkBAIC0xNzQsNyArMTc4LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1
ZXN0KQogQGltcGxlbWVudGF0aW9uIENvbnZlcnRSZXNwb25zZVRvRG93bmxvYWROYXZpZ2F0aW9u
RGVsZWdhdGUKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogfQogQGVuZAogCkBAIC05
NzcsNyArOTgxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRNb25pdG9yUmV0dXJuVG9G
b3JlZ3JvdW5kKQogICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNoTmF2aWdhdGlvbik7CiAgICAg
RVhQRUNUX1dLX1NUUkVRKF9XS0xlZ2FjeUVycm9yRG9tYWluLCBlcnJvci5kb21haW4pOwogICAg
IF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQ
b2xpY3kgIT0gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2Rp
ZFN0YXJ0RG93bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAg
ICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC05ODUsNyArOTg5LDcgQEAgVEVTVChfV0tEb3dubG9h
ZCwgRG93bmxvYWRNb25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogewogICAgIEVYUEVDVF9GQUxT
RShfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CiAgICAgX2RpZEZpbmlzaE5hdmlnYXRp
b24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAgICBpZiAoX3Jl
c3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
fHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAgLTEw
MjQsNyArMTAyOCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZy
b21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVTdHJp
bmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCiAgICAgTlNVUkwgKnNlY29uZFVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2J1bmRsZS1maWxlL3NpbXBsZTIuaHRt
bCJdOwotICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5
OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOwogICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMXV07CiAg
ICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwpAQCAtMTA1MSw3ICsxMDU1LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJl
c3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5p
c2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJMLmFic29sdXRlU3Ry
aW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAotICAgIFtkZWxlZ2F0ZSBzZXRS
ZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07
CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWRdOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMXV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMTE4OSwyNCArMTE5MywzMCBA
QCBTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBjKQogICAgIHJldHVybiBTdHJpbmcodmVjdG9yLmRh
dGEoKSwgbGVuZ3RoKTsKIH0KIAotVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQorZW51bSBjbGFz
cyBJbmNsdWRlRVRhZyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFRlcm1pbmF0ZUFm
dGVyRmlyc3RSZXBseSA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZyBpbmNsdWRlRVRhZyA9
IEluY2x1ZGVFVGFnOjpZZXMsIEZ1bmN0aW9uPHZvaWQoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlv
bik+JiYgdGVybWluYXRvciA9IG51bGxwdHIpCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKENv
bm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgcmV0dXJuIHsgW2luY2x1ZGVFVGFn
LCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKSwgY29ubmVjdGlvbkNvdW50ID0gMF0o
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAg
c3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAg
ICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+
JiYpIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKLSAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAgICAgICAg
ICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1
ZXN0KFtpbmNsdWRlRVRhZywgY29ubmVjdGlvbiwgdGVybWluYXRvciA9IFdURk1vdmUodGVybWlu
YXRvcildIChWZWN0b3I8Y2hhcj4mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byBy
ZXNwb25zZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAg
T0tcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcgPT0gSW5jbHVkZUVUYWc6
OlllcyA/ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtTGVuZ3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bv
c2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgogICAgICAg
ICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQotICAgICAgICAgICAg
ICAgICkpOworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgdGVybWluYXRvciA9IFdURk1vdmUo
dGVybWluYXRvcildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybWlu
YXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0b3IoY29ubmVjdGlvbik7Cisg
ICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVz
dChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgY29u
bmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsK
ICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFu
Z2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAg
Y29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEu
MSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKQEAgLTEyMjAsMTYgKzEyMzAsNjQgQEAgVEVTVChf
V0tEb3dubG9hZCwgUmVzdW1lKQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICB9KTsKKyAgICB9fTsKK30KKworc3RhdGlj
IHZvaWQgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhOU1VSTCAqZmlsZSkKK3sKKyAgICBO
U0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVd
OworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUpOworICAgIEVYUEVD
VF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7CisgICAgaWYgKGZpbGVDb250ZW50cy5ieXRlcyAm
JiBmaWxlQ29udGVudHMubGVuZ3RoID09IDEwMDAwdSkgeworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOworICAg
IH0KK30KKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2ltcGxlRG93bmxvYWRU
ZXN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4geyBbXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nv
bm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVu
Z3RoOiA1MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0
YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAi
XHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgKSk7CisgICAgICAgIH0p
OworICAgIH19OworfQogCi0gICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkRvd25sb2FkUmVzdW1lVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CitzdGF0aWMgdm9pZCBj
aGVja0ZpbGVDb250ZW50cyhOU1VSTCAqZmlsZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZENvbnRl
bnRzKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRl
bnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIGV4cGVj
dGVkQ29udGVudHMubGVuZ3RoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZUNv
bnRlbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sIGV4cGVjdGVkQ29udGVudHNbaV0pOworfQor
CitzdGF0aWMgTlNVUkwgKnRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpCit7CisgICAgTlNVUkwg
KnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgp
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0
b3J5OllFU107CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJl
Y3RvcnlBdFVSTDp0ZW1wRGlyIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmli
dXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBb
dGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOwotICAg
IFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVk
RG93bmxvYWRGaWxlIGVycm9yOm5pbF07CisgICAgTlNVUkwgKmZpbGUgPSBbdGVtcERpciBVUkxC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOworICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmZpbGUgZXJyb3I6bmlsXTsKKyAg
ICByZXR1cm4gZmlsZTsKK30KKworVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQoreworICAgIHVz
aW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBuYXZpZ2F0aW9uRGVsZWdh
dGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRp
b25SZXNwb25zZSAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIH07CiAKICAgICBl
bnVtIGNsYXNzIENhbGxiYWNrIDogdWludDhfdCB7IFN0YXJ0LCBXcml0ZURhdGEsIERlY2lkZURl
c3RpbmF0aW9uLCBDcmVhdGVEZXN0aW5hdGlvbiwgQ2FuY2VsLCBGaW5pc2ggfTsKQEAgLTEyNDAs
MTAgKzEyOTgsMTEgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIF9fYmxvY2sgUmV0
YWluUHRyPF9XS0Rvd25sb2FkPiBkb3dubG9hZDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Rh
dGE+IHJlc3VtZURhdGE7CiAKLSAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBkb3dubG9hZERl
bGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gXihf
V0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVu
ZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxl
bmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdn
ZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWRE
b3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRp
ZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0
ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0
YSk7CkBAIC0xMjU4LDcgKzEzMTcsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAg
fTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uID0gXihf
V0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAgICAgY2FsbGJhY2tz
LmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwotICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpA
ImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlv
biwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVn
YXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
ICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsKQEAgLTEyOTYsMTUg
KzEzNTUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgVXRpbDo6c3BpblJ1bkxv
b3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAKLSAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9
IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlXTsKLSAg
ICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKLSAgICBFWFBFQ1RfVFJV
RShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMpIHsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCi0gICAgICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdh
Jyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAg
ICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5
dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhl
eHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBpbnRlcmZhY2UgRG93bmxvYWRUZXN0U2NoZW1l
RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkBAIC0xMzE0LDcgKzEz
NjUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBp
ZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaGFzU3Vm
Zml4OkAiL2Rvd25sb2FkIl0pCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAgICBlbHNlCiAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0K
QEAgLTEzNzMsNCArMTQyNCwxMTkwIEBAIFRFU1QoX1dLRG93bmxvYWQsIFN1YmZyYW1lU2VjdXJp
dHlPcmlnaW4pCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8Ym9keT48aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC9wYWdlJz48
L2lmcmFtZT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVSTDpuaWxdOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworCitzdGF0aWMgdm9pZCBjaGVja0NhbGxiYWNrUmVjb3JkKFRlc3REb3dubG9hZERlbGVn
YXRlICpkZWxlZ2F0ZSwgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IGV4cGVjdGVkQ2FsbGJhY2tz
KQoreworICAgIGF1dG8gYWN0dWFsQ2FsbGJhY2tzID0gZGVsZWdhdGUudGFrZUNhbGxiYWNrUmVj
b3JkOworICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxi
YWNrcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RkOjptaW4oYWN0dWFs
Q2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsgaSsrKQorICAgICAg
ICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzW2ldLCBleHBlY3RlZENhbGxiYWNrc1tpXSk7Cit9
CisKK1RFU1QoV0tEb3dubG9hZCwgRmluaXNoU3VjY2Vzc2Z1bGx5KQoreworICAgIGF1dG8gc2Vy
dmVyID0gc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93
bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxv
YWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRpb24pCit7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBh
dXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgYXV0byAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisKKyAgICBb
d2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0g
ZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICB9
XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5M
b29wKCk7CisgICAgCisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNl
OworICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOworICAg
IHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5k
aWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRl
biwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5n
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4gKyA1MDAwLCB0b3RhbEJ5dGVz
V3JpdHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAx
MDAwMCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRv
d25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmlu
aXNoID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgp
LCBkb3dubG9hZCk7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBudWxscHRyOworICAgICAg
ICBFWFBFQ1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICBkaWRGaW5pc2ggPSB0
cnVlOworICAgIH07CisKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICBjaGVja1Jl
c3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRp
YyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSkKK3sK
KyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsgPSBmYWxzZTsKKyAgICBBU1NFUlQo
IWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihX
S0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0
dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgRVhQRUNU
X0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4pOworICAgICAgICBFWFBFQ1RfRVEo
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVkRmlyc3Q1ayA9IHRydWU7CisgICAg
fTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVrKTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RT
ZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsK
KyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tX
ZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRG
b3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0
YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAq
cmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOwor
ICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1
bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9h
ZCwgRmFpbEFuZFJlc3VtZSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVz
dFNlcnZlcihJbmNsdWRlRVRhZzo6WWVzLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24g
Y29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAg
IGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+
IHJldGFpbmVkRG93bmxvYWQ7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5l
ZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAg
ICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpk
b3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAg
ICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlv
bkxvc3QpOworICAgICAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAg
ICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6
c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3Vt
ZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQ2FuY2VsTm9S
ZXN1bWVEYXRhKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1
ZGVFVGFnOjpObyk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxv
YWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2Fp
dEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAg
ICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0
ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFj
a1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
QWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2Fk
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25s
b2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAoVGVzdFdlYktpdEFQSTo6Q29ubmVj
dGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKyAg
ICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4o
V0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUp
OworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rv
d25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAg
ICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlv
bkxvc3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIEZJ
WE1FOiBNYWtlIHRoaXMgd29yayBpbiBDRk5ldHdvcmsuCisjaWYgSEFWRShDRk5FVF9SRVNQT05T
RV9DQUxMQkFDS19XSVRIX05PX0NPTlRFTlQpCisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lQWZ0
ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKK3sKKyAgICBPcHRpb25hbDxUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0
aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlvbl0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlv
biBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3Vu
dCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uID0gY29u
bmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShW
ZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZCgKKyAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRp
b246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJcclxuIgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9u
LnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0
ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0
aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBP
S1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAi
XHJcbiIsIGxvbmdTdHJpbmc8MTAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIE5TVVJM
ICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5u
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IFsmXShXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIHNlcnZl
ckNvbm5lY3Rpb24tPnRlcm1pbmF0ZSgpOworICAgIH07CisgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0
aW9uTG9zdCk7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAg
fTsKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRGaW5pc2hlZCA9IGZhbHNlOworICAgIGRlbGVn
YXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZG93bmxv
YWRGaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAg
ICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZXhwZWN0ZWREb3dubG9hZEZp
bGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBbd2Vi
VmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZEZp
bmlzaGVkKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9u
Z1N0cmluZzwxMDA+KCd4JykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvciwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRh
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworI2Vu
ZGlmCisKK3ZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2Vy
dmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlLCB2b2lkKF5tdXRhdGVGaWxl
KSh2b2lkKSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3RdOworICAgIHdhaXRGb3JGaXJz
dDVrKGRlbGVnYXRlKTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBuaWw7CisKKyAgICBf
X2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWlu
ZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWlu
ZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdoaWxlICghcmV0YWlu
ZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7
CisKKyAgICBtdXRhdGVGaWxlKCk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFs
c2U7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURh
dGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kb3du
bG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgICAgICBkaWRGaW5pc2gg
PSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIFJlc3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNl
cnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25u
ZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewor
ICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVz
dChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisg
ICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNF
KExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBD
Rk5ldHdvcmsgc2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBh
ZnRlciByZW1vdmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBF
WFBFQ1RfRkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXpl
KCkpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5n
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAg
ICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAK
KyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwg
ZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOwor
ICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpl
eHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVz
dW1lV2l0aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
W2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAg
ICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1d
KFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNw
b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUw
MDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAg
ICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAw
LVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2Vu
ZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwg
Q29udGVudFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4i
CisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAw
MD4oJ2QnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxv
YWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVy
TXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeewor
ICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6
JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJV
RShbWyhOU1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3Ry
aW5nPDMwMDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3
cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7
CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmlu
Zyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmlu
Zzw1MDAwPignZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRS
ZXN1bWVEYXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24g
ZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6
ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlv
biA9IGZhbHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdp
dGhEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBA
Y2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUs
IE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0g
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERv
d25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFp
bmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2Ug
KiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAg
ICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMo
ZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWRE
b3dubG9hZCBjYW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRS
ZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVz
dW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5j
ZWwoKTsKKyAgICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IHJl
c3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7Cisg
ICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGlu
UnVuTG9vcCgpOworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1
bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5v
dENvbm5lY3RUb0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7Cisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBVbmtub3duQ29udGVudExlbmd0aCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbXShD
b25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygiSFRUUC8xLjEgMjAwIE9LXHJcblxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdh
JykpKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9u
RGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICos
IGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0
ZW4gIT0gNTAwMCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBFWFBFQ1Rf
RVEodG90YWxCeXRlc1dyaXR0ZW4sIDUwMDApOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUsIC0xKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93
bmxvYWQsIEludmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGNhdWdodEV4Y2VwdGlvbiA9
IGZhbHNlOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5n
ICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEB0
cnkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdKTsKKyAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4
Y2VwdGlvbiAqZSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjYXVnaHRFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6
OnJ1bigmY2F1Z2h0RXhjZXB0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgIH0p
OworfQorCitzdGF0aWMgSFRUUFNlcnZlciByZWRpcmVjdFNlcnZlcigpCit7CisgICAgcmV0dXJu
IHt7CisgICAgICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRpcmVjdFRhcmdl
dCIgfSwgeyAiQ3VzdG9tLU5hbWUiLCAiQ3VzdG9tLVZhbHVlIiB9fSB9IH0sCisgICAgICAgIHsg
Ii9yZWRpcmVjdFRhcmdldCIsIHsgImhpIiB9IH0sCisgICAgfX07Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgUmVkaXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVy
KCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05v
dEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKwor
ICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0
KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LkhUVFBCb2R5
ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAg
IAorICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7CisgICAgW3dlYlZp
ZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRs
ZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9
IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQ
b2xpY3kpKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhUVFBCb2R5KTsgLy8g
RklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVx
dWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNl
LnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
YWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVy
UmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQi
XS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25s
b2FkUmVkaXJlY3RQb2xpY3lBbGxvdyk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAicmVkaXJlY3RUYXJnZXQudHh0Iik7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnBhdGgsICIvcmVkaXJlY3RUYXJnZXQiKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJM
LnBhdGgsICIvIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2lu
YWxSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVT
dHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqKSB7CisgICAgICAgICAgICBmaW5pc2hlZERvd25sb2FkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkRG93bmxvYWQpOworCisg
ICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJoaSIpOworICAgIAor
ICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAydSk7CisKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxS
ZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVkaXJl
Y3RDYW5jZWwpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5T
VVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBjYW5j
ZWxsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRl
LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJl
c3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlv
bkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXND
b2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRl
ckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3Qu
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1
dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5Q2FuY2VsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdp
dGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVE
YXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAg
ICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAg
ICAgICAgY2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpy
dW4oJmNhbmNlbGxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRv
dGFsUmVxdWVzdHMoKSwgMXUpOworfQorCitURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVz
dEZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAgICBOU1VSTFJlcXVl
c3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNlcnZlci5jYW5jZWwo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19i
bG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRo
UmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJy
b3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNU
X0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAg
ICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZm
YWlsZWQpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdL
RG93bmxvYWQsIERvd25sb2FkUmVxdWVzdDQwNCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7
CisgICAgICAgIHsgIi8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0KKyAgICB9KTsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19i
bG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRX
aXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmlu
aXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgZGlkRmluaXNoID0g
dHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImh0dHAgYm9keSIp
OworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gsCisgICAg
fSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKK3sKKyAgICBh
dXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3Bv
bnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWso
ZGVsZWdhdGUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICpl
cnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgdGVybWluYXRlZCA9IHRydWU7Cisg
ICAgfTsKKyAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1p
bmF0ZU5ldHdvcmtQcm9jZXNzXTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWQpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
eworICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CisgICAgfSk7CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVz
cG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZp
bGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2Rl
bGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93
bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlcXVlc3RI
VFRQQm9keSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxv
Y2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9
IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIHJlcXVl
c3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ107CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1Rf
TlVMTChkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJv
YmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUGF0
aE11c3RFeGlzdCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOm5pbF07CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwg
RmlsZU11c3ROb3RFeGlzdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIF9fYmxvY2sgYXV0byByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBy
ZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0
YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVU
b1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworCisgICAgX19ibG9j
ayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIHJldGFpbmVkRGVsZWdh
dGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRv
d25sb2FkLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKworICAgICAgICAgICAgcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0
TlMoW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgICAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgICAgICAgICByZXRhaW5lZERl
bGVnYXRlLmdldCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9y
LmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgICAgICBm
YWlsZWQgPSB0cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWls
ZWQpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChyZXRhaW5lZERlbGVnYXRlLmdldCgpLCB7
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9
CisKK1RFU1QoV0tEb3dubG9hZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQoreworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVz
dERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAg
ICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJW
aWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7Cisg
ICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgfTsKKyAgICAgICAg
ZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAg
fTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRl
LCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2ZSBkb3dubG9hZCB0YXNr
cyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0
aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCitURVNUKFdLRG93bmxv
YWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7
ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGZpbmlz
aGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9
IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9
IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2Us
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVu
dGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7
CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAg
fTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3Qo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5p
c2hlZCk7CisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNoZWNrRmls
ZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAg
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorI2VuZGlm
CisKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVy
IHNlcnZlcih7IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0
byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBi
b29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdL
RG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZl
IGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVy
IHRydXN0IGV2YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yU2VjdXJlQ29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAgZmFpbGVkID0g
dHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNl
OworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tE
b3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRp
b25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKyAg
ICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcgc3Rh
cnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRl
bGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdl
KTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNF
KExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQg
dGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZh
bHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgor
ICAgIH0pOworfQorCit2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFj
dGlvbiwgc3RkOjppbml0aWFsaXplcl9saXN0PERvd25sb2FkQ2FsbGJhY2s+IGV4cGVjdGVkQ2Fs
bGJhY2tzKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rp
b24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIg
ICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmRvd25sb2Fk
ID0gJ2Rvd25sb2FkRmlsZW5hbWUnOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0iCisg
ICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpuaWxdOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24s
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgewor
ICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6QCJhYm91dDpibGFuayJdKQorICAgICAgICAgICAgRVhQRUNUX05VTEwoYWN0aW9uLmRv
d25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoYWN0aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUsICJkb3dubG9hZEZpbGVuYW1l
Iik7CisgICAgICAgICAgICBpZiAoZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbikgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJl
Y29tZURvd25sb2FkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5QWxsb3cpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVx
dWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxv
YWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3Bv
bnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2Ii
KTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShz
dWdnZXN0ZWRGaWxlbmFtZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAgX19ibG9jayBib29s
IGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3du
bG9hZCAqKSB7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZk
b25lKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiMTIz
Iik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgZXhwZWN0ZWRDYWxsYmFja3Mp
OworfQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBibG9iVGVzdChm
YWxzZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3Jp
dGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKKwor
ICAgIGJsb2JUZXN0KHRydWUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2VOb0Zp
bGVuYW1lKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rp
b24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIg
ICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7
IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48
L2JvZHk+IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBF
WFBFQ1RfTlVMTChhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUpOworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgfTsKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJi
bG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlP
cmlnaW4uaG9zdCwgIndlYmtpdC5vcmciKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1
Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihu
aWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRvcikKK3sKKyAgICBj
b25zdCBjaGFyKiBncmFuZGNoaWxkRnJhbWVIVE1MID0gIjxzY3JpcHQ+IgorICAgICJmdW5jdGlv
biBkb3dubG9hZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAg
ICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsi
CisgICAgIn0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwv
Ym9keT4iOworICAgIEhUVFBTZXJ2ZXIgZ3JhbmRjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAg
eyAiLyIsIHsgZ3JhbmRjaGlsZEZyYW1lSFRNTCB9IH0KKyAgICB9KTsKKyAgICBIVFRQU2VydmVy
IGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9pZnJhbWU+Iiwg
Z3JhbmRjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV0gfSB9CisgICAgfSk7CisgICAgTlNVUkxSZXF1
ZXN0ICpncmFuZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVy
LnJlcXVlc3QoKTsKKyAgICBOU1VSTFJlcXVlc3QgKmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0g
Y2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgdWludDE2X3QgZ3JhbmRjaGlsZEZyYW1l
U2VydmVyUG9ydCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCk7CisKKyAgICBOU1N0cmlu
ZyAqbWFpbkhUTUwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdo
dHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgY2hpbGRGcmFtZVNlcnZlci5wb3J0KCld
OworCisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkhUTUwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdXTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZv
aWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Cisg
ICAgICAgIGlmIChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAImh0dHA6Ly93ZWJraXQub3JnLyJdCisgICAgICAgICAgICB8fCBbcmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpjaGlsZEZyYW1lU2Vy
dmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddCisgICAgICAgICAgICB8fCBbcmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpncmFuZGNoaWxkRnJh
bWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIjEyNy4wLjAu
MSIpOworICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLnBv
cnQsIGdyYW5kY2hpbGRGcmFtZVNlcnZlclBvcnQpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJVbmtub3duIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZk
b25lKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMyOGNlMWU4OTY3
ZjVkYWIwZDg4OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBl
MjZjOTk0NjAwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGlj
IHZvaWQqIHByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRl
eHQ7CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNw
b25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFy
dFR5cGU6OkNvbnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAg
IGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QWxsb3cpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDk3NTg3ZDY1MDcyM2QwMmUz
ZWFlY2ZiYjUxNDM4YTk5ZTQ3OTIzODEuLjJjZmZjOWE3MDlmNTUwZGZhMWRkNWMzMWRiMjI5ODJi
NGFlMGQxYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzNzIsNiArMTM3Miw4IEBA
IFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZy
YW1lQXBwQm91bmQpCiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1
cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRX
b3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6
W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKICAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgICAgIGlmIChlcnJvcikK
KyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SICVAIiwgZXJyb3IpOwogICAgICAg
ICAgICAgaWYgKGlzTWFpbkZyYW1lKQogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNFcXVhbFRvU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS10ZXN0LWFib3V0LWJsYW5rLXN1YmZyYW1lIl0pOwogICAgICAgICAgICAg
ZWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0
NWQxZTkwNDBjM2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODll
OWY5NmNkNmFiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyAr
MTY2LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlv
blVSTDsKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9u
UmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZl
cnRUb0Rvd25sb2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQg
OiBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIo
c2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5k
ZXggYWUyYmM3ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0
OGZmY2M4ODVmODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBU
RVNUKFF1aWNrTG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNU
KFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmls
ZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhk
ZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50
VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBv
bGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNU
X0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcg
QEAgVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykK
ICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4g
MTMwNDAwCiBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZp
ZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlN
RVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxl
VVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3
TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZF0pOwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCks
IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVY
UEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtk
ZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdh
dGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBj
MGEwZWE2MGI4YzQ4NWIuLjMwOTM3NTAzOTczM2VjYjk2MDdhNWIwMjgyNDA1OTVjODhmNTU0ZTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRl
LmgKQEAgLTI0LDE3ICsyNCwzNSBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
LSNpbXBvcnQgPFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVz
dERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9h
ZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdy
aXRlRGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09M
LCBOU1N0cmluZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25s
b2FkRGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rv
d25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2Vu
dW0gY2xhc3MgRG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwK
KyAgICBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICBEaWRXcml0ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25SZXNwb25z
ZUJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25BY3Rpb24sCisgICAgTmF2aWdhdGlvblJl
c3BvbnNlLAorfTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0
PFdLRG93bmxvYWREZWxlZ2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93
bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4pKFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3dubG9h
ZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQgKiwg
TlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
IChebmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKShXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uQWN0aW9uICosIFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKShXS1dlYlZpZXcg
KiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikoV0tO
YXZpZ2F0aW9uQWN0aW9uICosIHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF4pKFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoOwor
LSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZDsKKwogQGVuZApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0K
aW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJhODAxZmRkMy4uMDUzMDkzNzM1
MTYwMzQxMmRlYWI0MmM2OGZkYzcxY2FmMGVkYjk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2OCArMjYsMTEzIEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCiAK
LUBpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZQorI2ltcG9ydCA8V2ViS2l0L1dL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogCi0tICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAgaWYgKF9kb3dubG9hZERpZFN0YXJ0KQot
ICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CitAaW1wbGVtZW50YXRpb24gVGVz
dERvd25sb2FkRGVsZWdhdGUgeworICAgIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBfY2FsbGJh
Y2tSZWNvcmQ7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAorLSAodm9pZClkb3du
bG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihO
U0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJl
cXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kp
KWRlY2lzaW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpCi0gICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJs
KTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRp
cmVjdCk7CisKKyAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsKKyAgICBf
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBk
ZWNpc2lvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQorLSAo
dm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5T
U3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBpZiAoX2RpZFJlY2Vp
dmVSZXNwb25zZSkKLSAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9u
c2UpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24pOworCisgICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSk7CisgICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25z
ZSwgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdCli
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURh
dGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFs
Qnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZQogeworICAgIC8vIGRpZFdyaXRlRGF0YSBpcyBjYWxsZWQgYSBub25k
ZXRlcm1pbmlzdGljIG51bWJlciBvZiB0aW1lcywgc28gb25seSByZWNvcmQgb25jZSBpbiBhIHNl
cmllcy4KKyAgICBpZiAoX2NhbGxiYWNrUmVjb3JkLmlzRW1wdHkoKSB8fCBfY2FsbGJhY2tSZWNv
cmQubGFzdCgpICE9IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSkKKyAgICAgICAgX2Nh
bGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpOworCiAg
ICAgaWYgKF9kaWRXcml0ZURhdGEpCiAgICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5
dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUp
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwq
KSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfY2Fs
bGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKTsKKworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAg
ICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVu
Z2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwp
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZAorLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Cisg
ICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gpOwor
CiAgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKICAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNo
KGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKWRvd25sb2FkOihX
S0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIHJl
c3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBw
ZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IpOworCiAgICAgaWYgKF9kaWRG
YWlsV2l0aEVycm9yKQotICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3Ip
OworICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IsIHJlc3VtZURhdGEp
OwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246
KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCi0g
ICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7CisgICAgX2NhbGxiYWNrUmVjb3Jk
LmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQp
OworCisgICAgaWYgKF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAg
IF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvbkFj
dGlvbiwgZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29t
cGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZp
Z2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNl
IGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBpZiAoX2Rp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgX2RpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBkb3dubG9hZCk7Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRl
Y2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lz
aW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
KG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCi0gICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVs
dEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
b25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tS
ZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24pOworCisgICAg
aWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQorICAgICAgICBfZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCBkZWNpc2lvbkhhbmRsZXIp
OworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKK30KKworLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2gKK3sKKyAg
ICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBBU1NFUlQoIV9kb3dubG9hZERp
ZEZpbmlzaCk7CisgICAgX2Rvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAg
ICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZmaW5pc2hlZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uCistIChW
ZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkCiB7Ci0gICAgaWYgKF9k
aWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0ZURlc3RpbmF0aW9uKGRvd25s
b2FkLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoX2NhbGxiYWNrUmVj
b3JkLCB7IH0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUxMjQ2MWVhMTJj
OWNhZGE2MTVkMWUyYzRhNTczMWYxZDE1ZDEzZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKworQGludGVyZmFjZSBUZXN0TGVnYWN5RG93
bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVsZWdhdGU+CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25sb2FkICop
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVE
YXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5T
U3RyaW5nICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWRE
aWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBOU0Vycm9yICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZENhbmNlbCkoX1dLRG93bmxv
YWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGlkQ3JlYXRlRGVzdGluYXRpb24pKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICopOworQGVuZApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc3YTkyNGJkZmU2OTVlMGI3OTE1Yjk1ZWZlOWYwNWRi
ZjFjYTA4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
aCIKKworQGltcGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlCisKKy0gKHZv
aWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAo
X2Rvd25sb2FkRGlkU3RhcnQpCisgICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsK
K30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCit7CisgICAgaWYgKF9kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTCkKKyAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKGRvd25sb2FkLCB1cmwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQor
eworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2ZVJlc3Bv
bnNlKGRvd25sb2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCit7CisgICAgaWYg
KF9kaWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3Jp
dHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQor
CistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0
aW9uKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwor
LSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAg
ICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93
bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZEZhaWxXaXRo
RXJyb3IpCisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7Cit9CisK
Ky0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7Cisg
ICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKKyAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRv
d25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisg
ICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxs
ZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5p
bCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENy
ZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uCit7CisgICAgaWYgKF9kaWRD
cmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgX2RpZENyZWF0ZURlc3RpbmF0aW9uKGRvd25sb2Fk
LCBkZXN0aW5hdGlvbik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggN2JhNjcyYWM5ZjkyNWY2MzI1YWEwN2ZhNmYxNjFhNTAyMzVmYmI4
Yy4uOTk2ZjE5NGY3YzQyOTkxYmZiNzM4YmEwMzg3M2EyYmY4NzZjNGRjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNs
dWRlIDxXZWJLaXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgogI2luY2x1ZGUgPFdlYktp
dC9XS0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ3JlZGVudGlhbC5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
RG93bmxvYWRSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUhhbmRsZVJlZi5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0hUVFBD
b29raWVTdG9yZVJlZi5oPgpAQCAtODAsNiArODIsNyBAQAogI2luY2x1ZGUgPHd0Zi9BdXRvZHJh
aW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1By
b2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMyLDYg
KzEzNSwzMyBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogICAgIHJldHVybiBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZygiTUlIRk1IRXdYREFOQmdrcWhraUc5dzBCQVFFRkFBTkxBREJJ
QWtFQW5YMFRJTEpyT01VdWUlMkJQdHdCUkU2WGZWJTBBV3RLUWJzc2h4azVaaGNVd2N3eXZjbklx
OWI4MlFoSmRvQUNkRDM0cnFmQ0FJTkQ0NmZYS1FVbmIwbXZLelFJRCUwQUFRQUJGaEZOYjNwcGJH
eGhTWE5OZVVaeWFXVnVaREFOQmdrcWhraUc5dzBCQVFRRkFBTkJBQUt2MkVleDJuJTJGUyUwQXIl
MkY3aUpOcm9XbFN6U010VGlRVEVCJTJCQURXSEdqOXUxeHJVck9pbHElMkZvMmN1UXhJZlpjTlpr
WUFrV1A0RHVicVclMEFpMCUyRiUyRnJnQnZtY28lM0QiKTsKIH0KIAordm9pZCBUZXN0Q29udHJv
bGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3Rh
cnQoZG93bmxvYWQpOworCisgICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudCB7CisgICAgICAg
IHsgMCwgY2xpZW50SW5mbyB9LAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
V3JpdGVEYXRhCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCwKKyAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbAorICAgIH07CisKKyAgICBXS0Rv
d25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOworfQorCit2b2lkIFRlc3RD
b250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBX
S05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKGRv
d25sb2FkLCBjbGllbnRJbmZvKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25z
ZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudElu
Zm8pOworfQorCiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJyZW50VGFzazsKIAogYm9vbCBB
c3luY1Rhc2s6OnJ1bigpCkBAIC0zMzYsNzIgKzM2Niw3MiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFn
ZUNvbgogCiAgICAgV0tQYWdlVUlDbGllbnRWOCBvdGhlclBhZ2VVSUNsaWVudCA9IHsKICAgICAg
ICAgeyA4LCB2aWV3IH0sCi0gICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzaG93UGFnZQorICAgICAgICBudWxscHRyLCAvLyBj
cmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8g
c2hvd1BhZ2UKICAgICAgICAgY2xvc2VPdGhlclBhZ2UsCi0gICAgICAgIDAsIC8vIHRha2VGb2N1
cworICAgICAgICBudWxscHRyLCAvLyB0YWtlRm9jdXMKICAgICAgICAgZm9jdXMsCiAgICAgICAg
IHVuZm9jdXMsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c1RleHQKLSAgICAgICAgMCwgLy8gbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAv
LyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVL
ZXlFdmVudAotICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50Ci0gICAgICAgIDAs
IC8vIHRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRUb29sYmFyc0FyZVZpc2li
bGUKLSAgICAgICAgMCwgLy8gbWVudUJhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRNZW51
QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHN0YXR1c0JhcklzVmlzaWJsZQotICAgICAgICAw
LCAvLyBzZXRTdGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gaXNSZXNpemFibGUKLSAg
ICAgICAgMCwgLy8gc2V0SXNSZXNpemFibGUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNj
cmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVu
SmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwg
Ly8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVs
bHB0ciwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICBudWxscHRyLCAvLyBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIG1p
c3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhhbmRs
ZUtleUV2ZW50CisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKKyAg
ICAgICAgbnVsbHB0ciwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8v
IHNldFRvb2xiYXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBtZW51QmFySXNWaXNp
YmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKKyAgICAgICAgbnVs
bHB0ciwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldFN0YXR1
c0JhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBpc1Jlc2l6YWJsZQorICAgICAgICBu
dWxscHRyLCAvLyBzZXRJc1Jlc2l6YWJsZQogICAgICAgICBnZXRXaW5kb3dGcmFtZSwKICAgICAg
ICAgc2V0V2luZG93RnJhbWUsCiAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCwK
LSAgICAgICAgMCwgLy8gZGlkRHJhdwotICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAg
ICAgIDAsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICBudWxscHRyLCAvLyBkaWRE
cmF3CisgICAgICAgIG51bGxwdHIsIC8vIHBhZ2VEaWRTY3JvbGwKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAgICAgIHJ1bk9wZW5QYW5lbCwKICAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgMCwg
Ly8gaGVhZGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGZvb3RlckhlaWdodAotICAgICAgICAwLCAv
LyBkcmF3SGVhZGVyCi0gICAgICAgIDAsIC8vIGRyYXdGb290ZXIKKyAgICAgICAgbnVsbHB0ciwg
Ly8gaGVhZGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGZvb3RlckhlaWdodAorICAgICAg
ICBudWxscHRyLCAvLyBkcmF3SGVhZGVyCisgICAgICAgIG51bGxwdHIsIC8vIGRyYXdGb290ZXIK
ICAgICAgICAgcHJpbnRGcmFtZSwKICAgICAgICAgcnVuTW9kYWwsCi0gICAgICAgIDAsIC8vIGRp
ZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQotICAgICAgICAwLCAvLyBzYXZlRGF0YVRv
RmlsZUluRG93bmxvYWRzRm9sZGVyCi0gICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFT
Y3JpcHQKLSAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
Ci0gICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Ci0gICAgICAgIDAsIC8vIGRl
Y2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ci0gICAgICAgIDAsIC8v
IHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCi0g
ICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNr
ZXIKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAg
IDAsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCi0gICAgICAgIDAsIC8vIGRpZEJlZ2luVHJhY2tp
bmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAvLyBkaWRSZWNvZ25pemVMb25n
TW91c2VQcmVzcwotICAgICAgICAwLCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzCi0gICAgICAgIDAsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgICAgICBu
dWxscHRyLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCisgICAgICAgIG51bGxw
dHIsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gY3Jl
YXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50CisgICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZv
ck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIG51bGxwdHIsIC8vIHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAg
IG51bGxwdHIsIC8vIHNob3dDb2xvclBpY2tlcgorICAgICAgICBudWxscHRyLCAvLyBoaWRlQ29s
b3JQaWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlj
a2VkCisgICAgICAgIG51bGxwdHIsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCisgICAgICAgIG51
bGxwdHIsIC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcworICAgICAg
ICBudWxscHRyLCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcworICAgICAgICBudWxscHRy
LCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCisgICAgICAgIG51
bGxwdHIsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCiAgICAgICAgIGRlY2lkZVBvbGljeUZv
clVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAwLCAvLyBkaWRDbGlja0F1dG9m
aWxsQnV0dG9uCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAotICAgICAgICAwLCAv
LyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0
Ci0gICAgICAgIDAsIC8vIHVudXNlZDUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2xpY2tBdXRv
ZmlsbEJ1dHRvbgorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKKyAgICAg
ICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8g
cnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBudWxscHRyLCAvLyB1bnVzZWQ1CiAgICAgICAg
IGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAotICAgICAgICAw
LCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJv
bXB0CisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIG51
bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJt
aXNzaW9uRm9yT3JpZ2luLAotICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwKLSAgICAgICAgMCwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lCisgICAgICAgIG51
bGxwdHIsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAorICAgICAgICBudWxscHRyLCAv
LyBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2Nr
LAotICAgICAgICAwLAorICAgICAgICBudWxscHRyLCAvLyBkaWRMb3NlUG9pbnRlckxvY2sKICAg
ICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlDbGll
bnQuYmFzZSk7CiAgICAgCkBAIC00MTAsMTYgKzQ0MCwxNiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFn
ZUNvbgogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIGRlY2lkZVBvbGljeUZv
clBsdWdpbkxvYWQsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9u
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAg
ICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKLSAg
ICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBk
aWRDb21taXROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZpbmlzaE5hdmlnYXRpb24KLSAg
ICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Ci0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8g
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRDb21taXROYXZpZ2F0
aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoRG9j
dW1lbnRMb2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24K
KyAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKICAgICAgICAg
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jhc2gsCkBAIC00
MjgsOSArNDU4LDEyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdl
KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIHdpbGxFbmRO
YXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAg
ICAgIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIDAsIC8vIHdl
YlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZp
Y2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcKKyAg
ICAgICAgbnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAgICAgICBudWxscHRy
LCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAgICAgY29weVNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwK
KyAgICAgICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCiAgICAgfTsK
ICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChuZXdQYWdlLCAmcGFnZU5hdmlnYXRp
b25DbGllbnQuYmFzZSk7CiAKQEAgLTc1MCwxNiArNzgzLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykK
ICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JQbHVn
aW5Mb2FkLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAg
ICAgICBudWxscHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24sCi0gICAgICAg
IDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8g
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRDb21taXROYXZpZ2F0aW9u
LAogICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsTmF2
aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQot
ICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAgICAgICAgMCwgLy8gZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENo
YW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgorICAgICAgICBudWxs
cHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyByZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlLAog
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCiAgICAgICAgIHByb2Nl
c3NEaWRDcmFzaCwKQEAgLTc2OCwyOCArODAxLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAg
ICAgd2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRFbmROYXZpZ2F0aW9uR2Vz
dHVyZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCwKLSAgICAg
ICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQotICAgICAgICAwLCAvLyBjb250ZW50UnVs
ZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZworICAgICAgICBudWxscHRyLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRlCisgICAg
ICAgIG51bGxwdHIsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgorICAgICAgICBjb3B5
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nLAorICAgICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkLAorICAgICAgICBudWxscHRyIC8vIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxv
YWQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KG1fbWFpbldlYlZp
ZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwotCi0gICAgV0tDb250ZXh0
RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsKLSAgICAgICAgeyAxLCB0aGlzIH0s
Ci0gICAgICAgIGRvd25sb2FkRGlkU3RhcnQsCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKLSAg
ICAgICAgMCwgLy8gZGlkUmVjZWl2ZURhdGEKLSAgICAgICAgMCwgLy8gc2hvdWxkRGVjb2RlU291
cmNlRGF0YU9mTUlNRVR5cGUKLSAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUsCi0gICAgICAgIDAsIC8vIGRpZENyZWF0ZURlc3RpbmF0aW9uCi0gICAgICAgIGRv
d25sb2FkRGlkRmluaXNoLAotICAgICAgICBkb3dubG9hZERpZEZhaWwsCi0gICAgICAgIGRvd25s
b2FkRGlkQ2FuY2VsLAotICAgICAgICAwLCAvLyBwcm9jZXNzRGlkQ3Jhc2g7Ci0gICAgICAgIGRv
d25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwKLSAgICB9OwotICAgIFdLQ29udGV4
dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25sb2FkQ2xpZW50LmJhc2UpOwogICAg
IAogICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KICAgICBXS1Bh
Z2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewpAQCAtMjA3
OSw0NSArMjA5OCwzNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogfQogCiAKLS8vIFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3Rh
cnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoY29udGV4dCwgZG93
bmxvYWQpOwotfQorLy8gV0tEb3dubG9hZENsaWVudAogICAgIAotV0tTdHJpbmdSZWYgVGVzdENv
bnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFt
ZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb250ZXh0
LCBkb3dubG9hZCwgZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLX0KLQotdm9pZCBUZXN0Q29u
dHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitXS1N0cmluZ1JlZiBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYg
c3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGlj
X2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRv
d25sb2FkRGlkRmluaXNoKGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBzdWdnZXN0ZWRGaWxl
bmFtZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmluaXNoKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChjb250ZXh0LCBkb3dubG9hZCwgZXJyb3IpOworICAg
IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3Is
IFdLRGF0YVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxU
ZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWRE
aWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZhaWwoZG93
bmxvYWQsIGVycm9yKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorYm9vbCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1VSTFJlcXVlc3RSZWYgbmV3
UmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChjb250ZXh0LCBkb3dubG9hZCwgdXJsKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQs
IG5ld1JlcXVlc3QpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQordm9pZCBUZXN0
Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogewog
ICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7CiB9CiAKLVdLU3Ry
aW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBi
b29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tTdHJpbmdSZWYgZmlsZW5hbWUpCiB7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0g
dG9XVEZTdHJpbmcoZmlsZW5hbWUpOwogCkBAIC0yMTMzLDI4ICsyMTQyLDMzIEBAIFdLU3RyaW5n
UmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHRSZWYsCiAgICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRlbXApCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCi0gICAgKmFsbG93T3ZlcndyaXRlID0gdHJ1ZTsKICAgICBTdHJpbmcg
dGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwog
ICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHN1Z2dlc3RlZEZp
bGVuYW1lID0gIlVua25vd24iOworICAgIAorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRlbXBv
cmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIGlmIChGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmls
ZShkZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyAiLyIg
KyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOworICAgIHJldHVybiB0b1dLKGRlc3RpbmF0
aW9uKS5sZWFrUmVmKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmlu
aXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93
bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQo
IkRvd25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlm
eURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tV
UkxSZWYgdXJsKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsK
KyAgICBhdXRvIHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0KSk7CiAg
ICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3VycmVudElu
dm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0ZWQg
dG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwpKSksICJcIi5c
biIpKTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtlU3RyaW5n
KCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tV
UkxDb3B5U3RyaW5nKHVybC5nZXQoKSkpKSwgIlwiLlxuIikpOworICAgIHJldHVybiB0cnVlOwog
fQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93
bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCiB7CiAgICAgaWYg
KG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9zKTsKQEAgLTIxNjgsMTMgKzIx
ODIsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycgogICAgIG1fY3VycmVudEludm9jYXRpb24t
Pm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCi17Ci0gICAgaWYgKG1fc2hv
dWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91
dHB1dFRleHQoIkRvd25sb2FkIGNhbmNlbGxlZC5cbiIpOwotICAgIG1fY3VycmVudEludm9jYXRp
b24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwotfQotCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwcm9j
ZXNzRGlkQ3Jhc2goKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtdWx0
aXBsZSB0aW1lcyB3aGVuIGNyYXNoIGxvZ3MgYXJlIGJlaW5nIHNhdmVkIG9uIFdpbmRvd3MsIHNv
CkBAIC0yNTA0LDcgKzI1MTEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZwogICAgIGF1dG8g
ZGVjaXNpb25GdW5jdGlvbiA9IFtzaG91bGRJZ25vcmUsIHJldGFpbmVkTGlzdGVuZXIsIHJldGFp
bmVkTmF2aWdhdGlvbkFjdGlvbiwgc2hvdWxkU3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5h
dmlnYXRpb24gPSBtX3Nob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9u
LCBzaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24gPSBtX3Nob3VsZFN3
YXBUb0RlZmF1bHRTZXNzaW9uT25OZXh0TmF2aWdhdGlvbl0oKSB7CiAgICAgICAgIGlmIChzaG91
bGRJZ25vcmUpCiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUocmV0YWlu
ZWRMaXN0ZW5lci5nZXQoKSk7Ci0gICAgICAgIGVsc2UgaWYgKFdLTmF2aWdhdGlvbkFjdGlvblNo
b3VsZFBlcmZvcm1Eb3dubG9hZChyZXRhaW5lZE5hdmlnYXRpb25BY3Rpb24uZ2V0KCkpKQorICAg
ICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZShyZXRh
aW5lZE5hdmlnYXRpb25BY3Rpb24uZ2V0KCkpKQogICAgICAgICAgICAgV0tGcmFtZVBvbGljeUxp
c3RlbmVyRG93bmxvYWQocmV0YWluZWRMaXN0ZW5lci5nZXQoKSk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgaWYgKHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0
aW9uIHx8IHNob3VsZFN3YXBUb0RlZmF1bHRTZXNzaW9uT25OZXh0TmF2aWdhdGlvbikgewpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGI1N2I4ZjdhMDU5NTIzZWNm
ODc3YWIwMTk3MjBkNGRiZTU4ZmNiNWYuLjc2ODFlMWU0MTliYTg5N2QxMjUxZTk4ZTJiMWZhZDM5
ZmFmNmYyMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTQ0
MiwxOSArNDQyLDE5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdh
dGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKik7CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZp
Z2F0aW9uUmVmKTsKIAotICAgIC8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Ci0gICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0
IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmKTsKLSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBm
aWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwot
ICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdL
Q29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBh
bGxvd092ZXJ3cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250
ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERp
ZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNv
bnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2Vs
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93
bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMg
dm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2Fk
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
LCBXS1VSTFJlZik7CisgICAgLy8gV0tEb3dubG9hZENsaWVudAorICAgIHN0YXRpYyB2b2lkIG5h
dmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIG5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9p
ZCBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoV0tEb3dubG9hZFJlZiwgY29uc3Qg
dm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0Rvd25sb2FkUmVmKTsKKyAgICBz
dGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUo
V0tEb3dubG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVm
IGZpbGVuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2Fk
UmVmKTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiwgV0tF
cnJvclJlZiwgV0tEYXRhUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZh
aWwoV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZik7CisgICAgc3RhdGljIGJvb2wgZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlc3BvbnNl
UmVmLCBXS1VSTFJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXF1ZXN0UmVm
KTsKICAgICAKICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQYWdlUmVmLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGFmZjQxNjRiYmZkYjkyYzY5Mzk3YmE2YjEzNThiNzAyZjc4ODJlMGUuLjkzMmI2MDNiYmQ1MTZj
MGUzNDZlYjI3NGE0MDVkM2IwMWI1ZjU4NWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0x
MS0xOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1kb3dubG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZp
bGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNv
bnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQ6CisgICAgICAg
IE5vdyB0aGF0IE5ldHdvcmtEYXRhVGFza0Jsb2I6OnN1Z2dlc3RlZEZpbGVuYW1lIGRvZXNuJ3Qg
c3VnZ2VzdCAidW5rbm93biIKKyAgICAgICAgdGhlIGNhcGl0YWxpemF0aW9uIGhhcyBjaGFuZ2Vk
IHRvICJVbmtub3duIiBmcm9tIE5TVVJMUmVzcG9uc2UncyBzdWdnZXN0ZWRGaWxlbmFtZS4KKwog
MjAyMC0xMS0xOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzAwMDkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25s
b2FkLWV4cGVjdGVkLnR4dAppbmRleCAwMmFmMmRlOWIxYzRiY2FjNTg2MmMxZGE1NmZiYjRiZTZh
MTZkMmE5Li4zNzVjMTkxMjlhZTYxYmEwNmU3ZDU0OGE4M2EzYjg2YTc2OTBiNjdkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxv
YWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBEb3dubG9h
ZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtu
b3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25v
d24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2IgVVJMCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10
cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50
aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0CmluZGV4IGJlZGM4ZGRhMDFjOGMxMjM3ZTEwNmM2ODUz
MzQwZjM3OTZmN2NlZTcuLmM1MTE3Nzk1YTU4YzA4ZmJlZTA2Y2IzOTQzMWNkYzMxZDBkYjU5YTUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEs
NSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBm
aWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZp
bGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUZXN0IHRoYXQgdXNl
ciB0cmlnZ2VyZWQgc3ludGhldGljIGNsaWNrcyBvbiBhbiBhbmNob3Igd2l0aCBhIGRvd25sb2Fk
IGF0dHJpYnV0ZSBhcmUgbm90IGlnbm9yZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3du
bG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5
bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CmluZGV4IDExMTQwZmQyMTg4N2I4NTEyMGRhYjE4M2Y5
ZmQ5YjNkMGY0N2FjNWUuLjEyMDI3YzNlMTBhZDhiMGMwMWJmYTdhNjExMjg2ZTg1NjI4YmU5MzEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZp
bGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dApA
QCAtMSw1ICsxLDUgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBz
dWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24iCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0
ZWQgZmlsZW5hbWUgIlVua25vd24iCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUaGUgZG93bmxvYWQg
c2hvdWxkIHN1Y2NlZWQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDExMTQwZmQyMTg4
N2I4NTEyMGRhYjE4M2Y5ZmQ5YjNkMGY0N2FjNWUuLjEyMDI3YzNlMTBhZDhiMGMwMWJmYTdhNjEx
Mjg2ZTg1NjI4YmU5MzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZp
bGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAK
IERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5h
bWUgInVua25vd24iCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVu
a25vd24iCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBUaGUgZG93bmxvYWQgc2hvdWxkIHN1Y2NlZWQu
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CmluZGV4
IDAyYWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFi
YTA2ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93
bmxvYWQtc2V0LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQu
Ci1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIK
K0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgog
RG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBVUkwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414617</attachid>
            <date>2020-11-19 14:08:29 -0800</date>
            <delta_ts>2020-11-20 13:01:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201119140825.patch</filename>
            <type>text/plain</type>
            <size>330515</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzODJhZmU1Yzk4MmE5Yjhh
NTdiODNjOTgwZGI3ZDIyMTRlODA0NjMuLjZjNzc4YzI5MmMwZTM3MTFlNzBiOTRkMDZkM2ZlNjZl
ZTViYjliZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkwIEBACisyMDIwLTExLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBTYWZhcmkgY3VycmVudGx5IHVzZXMgX1dLRG93bmxvYWQsIHdoaWNoIGhhcyBldm9s
dmVkIHN0cmFuZ2VseSBvdmVyIHRoZSBsYXN0IGRlY2FkZS4KKyAgICAgICAgSW4gb3JkZXIgdG8g
bWFrZSBhIG5pY2VyIGludGVyZmFjZSwgd2UgbmVlZCB0byBsZWFybiBmcm9tIHRob3NlIGxlc3Nv
bnMgYW5kIHRha2UgYSBzdGVwIGJhY2suCisgICAgICAgIEkgZGlkIHRoYXQsIGFuZCBoZXJlJ3Mg
d2hhdCBJIGNhbWUgdXAgd2l0aDogV0tEb3dubG9hZCBhbmQgV0tEb3dubG9hZERlbGVnYXRlIQor
CisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhlIGRlbGVn
YXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIHByb2Nl
c3MgcG9vbC4KKyAgICAgICAgMi4gIFdLRG93bmxvYWQgZG9lcyBub3QgY29uZm9ybSB0byBOU0Nv
cHlpbmcgYmVjYXVzZSB3ZSBoYXZlIE5TTWFwVGFibGUgaW5zdGVhZCBvZiBOU0RpY3Rpb25hcnku
CisgICAgICAgIDMuICBwdWJsaXNoUHJvZ3Jlc3NBdFVSTCBpcyBnb25lLiAgVGhhdCB3aWxsIGJl
IHJlaW1wbGVtZW50ZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVzZWQg
aXQuCisgICAgICAgIDQuICBjYW5jZWwgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGdldCB0
aGUgcmVzdW1lIGRhdGEgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBkaWRDYW5jZWwgdGhlbiBnZXR0
aW5nIGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4KKyAgICAgICAgNS4gIGRpZEZhaWxXaXRo
RXJyb3IgYWxzbyBnaXZlcyB5b3UgdGhlIHJlc3VtZSBkYXRhLCBzbyB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4gIFRoYXQncyBtb3JlIGFib3V0IGEg
ZmFpbC9jYW5jZWwKKyAgICAgICAgICAgIGV2ZW50IHRoYW4gYSBwcm9wZXJ0eSBvZiB0aGUgZG93
bmxvYWQuCisgICAgICAgIDYuICB3YXNVc2VySW5pdGlhdGVkIGlzIGdvbmUuICBJbnN0ZWFkLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMgYSBjYWxsYmFjayB0aGF0IGxpbmtzIGEgbmF2aWdhdGlv
biAod2hlcmUgX3dhc1VzZXJJbml0aWF0ZWQgaXMgZXhwb3NlZCkgdG8gdGhlIGRvd25sb2FkLgor
ICAgICAgICA3LiAgcmVkaXJlY3RDaGFpbiBpcyBhbHNvIGdvbmUuICBUaGF0IGNhbiBhbHNvIGJl
IGdvdHRlbiBmcm9tIHRoZSBsaW5rIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZCB0aGUgZG93bmxvYWQg
ZGVsZWdhdGUncyByZWRpcmVjdCBjYWxsYmFjay4KKyAgICAgICAgOC4gIF9kb3dubG9hZERpZFN0
YXJ0IGlzIGdvbmUuICBJbnN0ZWFkLCB3ZSBoYXZlIGNvbXBsZXRpb24gaGFuZGxlcnMgdGhhdCBl
eHBvc2UgYSBXS0Rvd25sb2FkIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBuZWVkIHRv
CisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUgdGhlbiBh
bnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdoaWNoIGlz
IGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0aGVyZSB3
aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRvd25sb2Fk
IG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgOS4gIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9yIGNhbmNl
bGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAgICAgICAg
ICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTAuIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2ZSBiZWVu
IG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGltZSBhbmQK
KyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQSS4gIGFs
bG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90IHJlYWxs
eSBuZWVkZWQuCisgICAgICAgIDExLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25lLiAgVGhh
dCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5lZWQgdG8g
a25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAgICAgICAg
IGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5pdGVseSBi
ZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTIuIHNob3VsZERlY29kZVNvdXJjZURhdGFP
Zk1JTUVUeXBlIGlzIGdvbmUuICBJdCdzIGFjdHVhbGx5IG5vdCBjYWxsZWQgc2luY2Ugd2UgYWRv
cHRlZCBOU1VSTFNlc3Npb24sIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSByZWxhdGVkIGRlYWQg
Y29kZS4KKyAgICAgICAgMTMuIG9yaWdpbmF0aW5nRnJhbWUgaXMgZ29uZS4gIE9uIF9XS0Rvd25s
b2FkIGl0IHdhcyBhY3R1YWxseSBhIG5vbi1udWxsIFdLRnJhbWVJbmZvIHRoYXQgb2Z0ZW4gY29u
dGFpbmVkIG5vIGluZm9ybWF0aW9uLiAgV2hlbiBpbmZvcm1hdGlvbiB3YXMgdGhlcmUsCisgICAg
ICAgICAgICB0aGUgaW5mb3JtYXRpb24gYWNjZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5IGRpZEJl
Y29tZURvd25sb2FkIHdoaWNoIGxpbmtzIHRoZSBXS05hdmlnYXRpb25SZXNwb25zZSB3aGljaCBo
YXMgZnJhbWUgaW5mbyBvbiBpdC4KKworICAgICAgICBJIHdyb3RlIEFQSSB0ZXN0cyBmb3IgZXZl
cnl0aGluZyBJIGNvdWxkIHRoaW5rIG9mLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkTWFu
YWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fk
cy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMv
Y29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6OnJlc3Vt
ZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2Fk
KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUgY29u
c3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05ldHdvcmtT
ZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9yOl0pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNoYXJlZC9B
UEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2Fz
dC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAgICAgICAq
IFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3dubG9hZENs
aWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVudDo6ZGlk
RmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERlbGV0ZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5h
dmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKToKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQu
aDoKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgor
ICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLRG93bmxvYWRHZXRUeXBlSUQpOgor
ICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKFdLRG93bmxvYWRDYW5j
ZWwpOgorICAgICAgICAoV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZSk6CisgICAgICAgIChX
S0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZCk6CisgICAgICAgIChXS0Rvd25sb2FkU2V0Q2xp
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwOgorICAgICAgICAo
V0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUpOgorICAgICAgICAoV0tOYXZp
Z2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50
KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRG93bmxvYWQubW06IEFkZGVkLgorICAgICAgICAoLVtXS0Rvd25sb2FkIGNhbmNl
bDpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBvcmlnaW5hbFJlcXVlc3RdKToKKyAgICAgICAg
KC1bV0tEb3dubG9hZCBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHNldERlbGVn
YXRlOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0tE
b3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rv
d25sb2FkRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Rvd25sb2FkSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uIF93YXNVc2Vy
SW5pdGlhdGVkXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25B
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9uIGRvd25sb2FkQXR0cmlidXRlXSk6
CisgICAgICAgICgtW1dLTmF2aWdhdGlvbkFjdGlvbiBfc2hvdWxkUGVyZm9ybURvd25sb2FkXSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25Qcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAoLVtXS1Byb2Nlc3NQb29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9y
ZTpvcmlnaW5hdGluZ1dlYlZpZXc6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3Vt
ZURvd25sb2FkRnJvbURhdGE6d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmll
dzpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IGRvd25sb2FkUmVxdWVzdDpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQubW06CisgICAgICAgICgtW19XS0Rvd25sb2FkIGluaXRXaXRoRG93
bmxvYWQyOl0pOgorICAgICAgICAoK1tfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDpd
KToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgY2FuY2VsXSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkIHB1Ymxpc2hQcm9ncmVzc0F0VVJMOl0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXF1
ZXN0XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZWRpcmVjdENoYWluXSk6CisgICAgICAgICgtW19XS0Rvd25s
b2FkIHdhc1VzZXJJbml0aWF0ZWRdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0
YV0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBvcmlnaW5hdGluZ0ZyYW1lXSk6CisgICAgICAg
ICgtW19XS0Rvd25sb2FkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgZGVh
bGxvY10pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENs
aWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tOgor
ICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgor
ICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xp
ZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAg
ICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAg
KFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0
OjpMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktp
dDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJL
aXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0
ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0
OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSk6CisgICAgICAg
IChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAg
ICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6
RG93bmxvYWRQcm94eTo6c2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RGlk
U3RhcnRDYWxsYmFjayk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFN1Z2dl
c3RlZEZpbGVuYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25s
b2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJ
dGVtU2VsZWN0ZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIwLTExLTE5ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbbWFjT1NdIElzc3VlIHNhbmRib3ggZXh0ZW5zaW9uIHRvIGF1ZGlvIHNlcnZpY2UgaWYg
TWVkaWEgaW4gdGhlIEdQVSBwcm9jZXNzIGlzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKaW5k
ZXggM2U3ZTU5NTg0ZmYyODAwMGUxMGQ5OWFlNDRhYmVjM2ZmYTIxMzlhMi4uOThlYTA3ZGFiMTNk
Njg5NjRmYTZhM2VmMWJhZWMyYjdlMWEwNDQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9I
ZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQpAQCAtNDAsMTQg
KzQwLDE0IEBAIHNldChXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCiAgICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZp
Z3VyYXRpb25SZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25uZWN0aW9uQ2xp
ZW50LmgKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAogICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRIaXN0b3J5Q2xpZW50LmgKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHRQcml2YXRlLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2Vy
LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmgKICAgICBVSVByb2Nlc3MvQVBJ
L0MvV0tDcmVkZW50aWFsVHlwZXMuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgK
KyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmgKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tGcmFtZUhhbmRsZVJlZi5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAppbmRleCAzMzIxNjM0
MGYyN2MxNjA1YzNjZDc0YmM2OTA3YjdkOTFiNDdiNzYyLi4yYzEzN2Y2N2YyYjQwZDc0YjE2YTM4
YmYwYjQwNzliMzUyZmZkMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKQEAgLTk0LDcgKzk0LDcg
QEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OmRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25s
b2FkSUQgZG93bmxvYWRJRCwgUmVmPE5ldHcKICAgICBtX2Rvd25sb2Fkc0FmdGVyRGVzdGluYXRp
b25EZWNpZGVkLnNldChkb3dubG9hZElELCBXVEZNb3ZlKG5ldHdvcmtEYXRhVGFzaykpOwogfQog
Ci12b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
JiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ2FsbERv
d25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQpCiB7CiAjaWYgIVBMQVRGT1JNKENP
Q09BKQogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xMDUsNiArMTA1LDExIEBAIHZvaWQgRG93
bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvCiAgICAgYXV0byBkb3dubG9hZCA9IG1ha2VVbmlxdWU8RG93bmxvYWQ+
KCp0aGlzLCBkb3dubG9hZElELCBudWxscHRyLCAqbmV0d29ya1Nlc3Npb24pOwogCiAgICAgZG93
bmxvYWQtPnJlc3VtZShyZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpKTsKKworICAgIC8vIEZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGxlZ2FjeSBkb3du
bG9hZCBBUEksIG9ubHkgc2VuZCBEaWRTdGFydCBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IEFQSS4K
KyAgICBpZiAoY2FsbERvd25sb2FkRGlkU3RhcnQgPT0gQ2FsbERvd25sb2FkRGlkU3RhcnQ6Olll
cykKKyAgICAgICAgZG93bmxvYWQtPnNlbmQoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRpZFN0
YXJ0KHsgfSwgeyB9KSk7CisKICAgICBBU1NFUlQoIW1fZG93bmxvYWRzLmNvbnRhaW5zKGRvd25s
b2FkSUQpKTsKICAgICBtX2Rvd25sb2Fkcy5hZGQoZG93bmxvYWRJRCwgV1RGTW92ZShkb3dubG9h
ZCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDJjZDE2MWIwYWMzZTc4OWUyMjQ2YzA1
YjAxNjVmMWM3MjY3OGZhNTAuLmM0ODFlYjVmNmQ0MjljYjA5YmJjNTI1OTZmZjU5YTdiZTU3MzI1
ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC02MCw2ICs2MCw4IEBAIGNsYXNzIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogY2xhc3MgTmV0d29ya0xvYWQ7CiBjbGFzcyBQZW5kaW5nRG93
bmxvYWQ7CiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sIHsgTm8sIFll
cyB9OworCiBjbGFzcyBEb3dubG9hZE1hbmFnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KERvd25sb2FkTWFuYWdlcik7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29udmVydE5ldHdvcmtMb2FkVG9Eb3dubG9hZChEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0xvYWQ+JiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiwgIFZlY3RvcjxSZWZQ
dHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4mJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZv
aWQgZG93bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCwgUmVmPE5ldHdvcmtEYXRh
VGFzaz4mJik7CiAKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3du
bG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93
bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgQ2FsbERvd25sb2FkRGlkU3RhcnQpOwogCiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChE
b3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCmlu
ZGV4IDk1ZjhkZWMzMDI1MWI4MGJhYTI5Y2U1OTA4NzNhN2FiYWVmZGE5Y2UuLjVmNzk5ZDVjMDVi
NmIxODQ4ZWM1MDMyZDg0MzA1MGJhNWIxZDZjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5t
bQpAQCAtNzEsNiArNzEsOCBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiAgICAgTlNEYXRhICp1
cGRhdGVkRGF0YSA9IFtOU1Byb3BlcnR5TGlzdFNlcmlhbGl6YXRpb24gZGF0YVdpdGhQcm9wZXJ0
eUxpc3Q6ZGljdGlvbmFyeSBmb3JtYXQ6TlNQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCBvcHRp
b25zOjAgZXJyb3I6bnVsbHB0cl07CiAjZW5kaWYKIAorICAgIC8vIEZJWE1FOiBVc2UgbnNEYXRh
IGluc3RlYWQgb2YgdXBkYXRlZERhdGEgb25jZSB3ZSd2ZSBtaWdyYXRlZCBmcm9tIF9XS0Rvd25s
b2FkIHRvIFdLRG93bmxvYWQKKyAgICAvLyBiZWNhdXNlIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIHNl
dCB0aGUgbG9jYWwgcGF0aCB3ZSBnb3QgZnJvbSB0aGUgZGF0YSBiYWNrIGludG8gdGhlIGRhdGEu
CiAgICAgbV9kb3dubG9hZFRhc2sgPSBbY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93
bmxvYWRzKCkuc2Vzc2lvbiBkb3dubG9hZFRhc2tXaXRoUmVzdW1lRGF0YTp1cGRhdGVkRGF0YV07
CiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IFttX2Rvd25sb2FkVGFzayB0YXNrSWRlbnRpZmll
cl07CiAgICAgQVNTRVJUKCFjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMo
KS5kb3dubG9hZE1hcC5jb250YWlucyh0YXNrSWRlbnRpZmllcikpOwpAQCAtODMsNyArODUsMjIg
QEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAogdm9pZCBEb3dubG9hZDo6cGxhdGZvcm1DYW5jZWxO
ZXR3b3JrTG9hZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChtX2Rvd25sb2FkVGFzayk7
Ci0gICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxv
Y2tQdHIoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChO
U0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxC
eVByb2R1Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtwYXRoID0gcmV0YWluUHRyKG1fZG93
bmxvYWRUYXNrLmdldCgpLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0
YWJsZSB7CisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICBpZiAo
cmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1ZGUgdGhl
IGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29yay4gQWRk
IGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5T
KFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1l
RGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFp
bHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAgICAg
ICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRhYmxlRGlj
dGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRX
aXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJp
bmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNz
XSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290
T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBmaW5p
c2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6cGF0aC5nZXQo
KSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgICAgICAg
ICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVx
dWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2Jq
ZWN0OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5
Il07CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2VuY29kZXIgZW5jb2RlZERhdGFdOworICAg
ICAgICB9CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocGF0aCk7CisjZW5kaWYKICAgICAg
ICAgYXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0YSA/IElQQzo6RGF0YVJlZmVy
ZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bWVEYXRhLmJ5dGVzKSwgcmVz
dW1lRGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7IH07CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0pLmdldCgpXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CmluZGV4IDhkODk3YTQyMzBhZmUyZTk4ZGRkYTljNGE5ZDIxMDE3NDc0YjM3OTIuLmI5MjA2ODJj
OWU0NzNiZjM1ZTAzZmYzYTYyZjcwNWQzZTFhYzIxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcApAQCAtNDQ2LDEwICs0
NDYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNldFBlbmRpbmdEb3dubG9hZExvY2F0
aW9uKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIFNhbgogCiBTdHJpbmcgTmV0d29ya0RhdGFUYXNr
QmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUoKSBjb25zdAogewotICAgIGlmICghbV9zdWdnZXN0ZWRG
aWxlbmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1lOwot
Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgIHJldHVybiBtX3N1Z2dlc3RlZEZpbGVuYW1l
OwogfQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OmRvd25sb2FkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOGE5ZDJmMzkz
OWU3MTg2YjgxZThhN2VmZDRiYmViNTBhNjNiMmY1OS4uYjRlYjEwYTA5ODQzZmZjNjQ1M2EwY2M0
YTljNzJmNGViZjhlZTc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIwNTMsOSArMjA1Myw5IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvCiAgICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRv
d25sb2FkSUQsIHJlcXVlc3QsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHN1Z2dlc3Rl
ZEZpbGVuYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERv
d25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2Fk
RGlkU3RhcnQpCiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpKTsKKyAgICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9u
SUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSksIGNhbGxEb3dubG9hZERpZFN0YXJ0KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMjA3OSwxMCArMjA3OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93
bmxvYWRMb2NhdGlvbihOZXR3b3JrRGF0YVRhc2smIG5ldHdvcmtEYXRhVGFzCiB7CiAgICAgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCA9IG5ldHdvcmtEYXRhVGFzay5wZW5kaW5nRG93bmxvYWRJRCgp
LnRvVUludDY0KCk7CiAKLSAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy8jYXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQt
RGlzcG9zaXRpb24gaGVhZGVyCi0gICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQg
ZmlsZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgotICAgIFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSA9IHJlc3BvbnNlLmlzQXR0YWNobWVudFdpdGhGaWxlbmFtZSgpID8gcmVzcG9u
c2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKSA6IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFt
ZSgpOwotICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5kRmls
ZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1lVHlw
ZSgpKTsKKyAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSBuZXR3b3JrRGF0YVRhc2suc3Vn
Z2VzdGVkRmlsZW5hbWUoKTsKIAogICAgIGRvd25sb2FkUHJveHlDb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UsIHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbmV0d29ya0RhdGFUYXNrID0gbWFrZVJlZihuZXR3b3Jr
RGF0YVRhc2spXSAoU3RyaW5nJiYgZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRl
KSBtdXRhYmxlIHsKICAgICAgICAgYXV0byBkb3dubG9hZElEID0gbmV0d29ya0RhdGFUYXNrLT5w
ZW5kaW5nRG93bmxvYWRJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5oCmluZGV4IGJlNTI2ZWZmMWU4YzkxZDM2ZWE4OWI4N2U3YjU2Nzk1OGE5NTZm
YjIuLjI5ZDRhNjgwMGVjNmFiMGQ4MGRiODMzZDU0ZDI3ZjBkNTc3YjhlOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTEwNiw2ICsxMDYs
NyBAQCBjbGFzcyBOZXR3b3JrUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBTdG9yYWdlTWFuYWdlclNl
dDsKIGNsYXNzIFdlYlNXU2VydmVyQ29ubmVjdGlvbjsKIGNsYXNzIFdlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjsKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwog
ZW51bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFz
cyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFG
ZXRjaE9wdGlvbiA6IHVpbnQ4X3Q7CkBAIC00MjEsNyArNDIyLDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNsZWFyRGlza0NhY2hlKFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25J
RCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lKTsKLSAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwg
Q2FsbERvd25sb2FkRGlkU3RhcnQpOwogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBwdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhE
b3dubG9hZElELCBjb25zdCBVUkwmLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCAwZjAxOTA1NmU1YjU3ZjUzMzRiOGNlNzM4MjZlMmZhMDU2ODg5M2JmLi5h
OWJiZWNlNWFhOGQ4N2IzNDkzMmE2MzkyY2Y1YWRlMjc4NzhlMTJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4K
QEAgLTQ4LDcgKzQ4LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgb2xkRG9tYWluLCBVUkwgbmV3RG9tYWluLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMpIC0+ICgpIEFzeW5jCiAKICAgICBEb3dubG9h
ZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93
bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGVudW06Ym9vbCBPcHRp
b25hbDxXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCi0gICAgUmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQorICAgIFJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2Vi
S2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgZW51
bTpib29sIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3RhcnQp
CiAgICAgQ2FuY2VsRG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIC0+IChJ
UEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSkgQXN5bmMKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBQdWJsaXNoRG93bmxvYWRQcm9ncmVzcyhXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCwgVVJMIHVybCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCA4YThhYjBiOWI4MzFjYWY0OGZhMjI0
NTMwOThhZmIyNGFhYThmNGRlLi5jYjY5NmYzMmE5M2U1ZDY2ZWI3MGNkMDQ4ZmViMTQxNmFiOTU4
N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC03NjgsNiArNzY4LDIwIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFsdWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2Em
IHNlc3Npb24sIFNlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAorI2lmIFVTRShMRUdBQ1lf
Q0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAg
ICAgIC8vIE1vamF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0
aGUgcmVzdW1lIGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAg
ICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFs
bG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAg
ICAgICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0Zh
aWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkg
PSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVy
IGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFy
eSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNs
YXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3Nd
LCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5
XSkpOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAg
ICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnRhc2suX3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUgZm9y
S2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgICAgICAgICAgYXV0
byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmlu
Z1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpk
aWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOwor
ICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAg
fQorI2VuZGlmCisKICAgICAgICAgYXV0byByZXN1bWVEYXRhUmVmZXJlbmNlID0gcmVzdW1lRGF0
YSA/IElQQzo6RGF0YVJlZmVyZW5jZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1
bWVEYXRhLmJ5dGVzKSwgcmVzdW1lRGF0YS5sZW5ndGggfSA6IElQQzo6RGF0YVJlZmVyZW5jZSB7
IH07CiAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKGVycm9yLCByZXN1bWVEYXRhUmVmZXJlbmNl
KTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1
NzNlZDNkOGVlOWJiZjQxMDMxNjhlNzlhMDU3ZjlkYmRiOWI4Njk1Li5lMjg3MGEwYWZkYzlmODUx
OGUxZDI5NDczYzNjNWI2MzI3NTkzODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQv
bWVzc2FnZXMucHkKQEAgLTY3Miw2ICs2NzIsNyBAQCBkZWYgaGVhZGVyc19mb3JfdHlwZSh0eXBl
KToKICAgICAgICAgJ1dlYktpdDo6QWN0aXZpdHlTdGF0ZUNoYW5nZUlEJzogWyciRHJhd2luZ0Fy
ZWFJbmZvLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkFsbG93T3ZlcndyaXRlJzogWyciRG93bmxv
YWRJRC5oIiddLAogICAgICAgICAnV2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBb
JyJTZXNzaW9uU3RhdGUuaCInXSwKKyAgICAgICAgJ1dlYktpdDo6Q2FsbERvd25sb2FkRGlkU3Rh
cnQnOiBbJyJEb3dubG9hZE1hbmFnZXIuaCInXSwKICAgICAgICAgJ1dlYktpdDo6Q29udGVudFdv
cmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCc6IFsnIkRvY3VtZW50RWRpdGluZ0Nv
bnRleHQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6RmluZE9wdGlvbnMnOiBbJyJXZWJGaW5kT3B0
aW9ucy5oIiddLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dl
YktpdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCmluZGV4IDFm
N2EzZGQzYzY5NzNlMTA5OTRmNWRjMTM3ZmFmNDA2YTI1ZWEyOWQuLjQxNWQ5MTY0NjU5NmNlZjI3
Zjg3MTgzZjUyY2RlMTkyMGZiNTA0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2Ev
V2ViS2l0LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbXBvcnQgPFdlYktpdC9XS0NvbnRlbnRSdWxl
TGlzdFN0b3JlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQg
PFdlYktpdC9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZERlbGVnYXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tFcnJvci5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZENvbmZpZ3VyYXRpb24u
aD4KICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRSZXN1bHQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKaW5kZXggN2Y4MGJhMTQ4YzBlOWU3YzFlNzA2NzNj
NTJhYzExZWIyMjIwYWNmNi4uNGExMTM2NDYxMWNmYmM3MGY5NjQ3NmFiMzFmOWUxNTFjNTkyOWFi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgKQEAg
LTEyNyw2ICsxMjcsMTIgQEAgYXV0byB0b0FQSShUKiB0KSAtPiBBUElUeXBlCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAodCkpOwogfQogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBUElUeXBlID0gdHlwZW5hbWUgSW1wbFR5cGVJ
bmZvPFQ+OjpBUElUeXBlPgorYXV0byB0b0FQSShUJiB0KSAtPiBBUElUeXBlCit7CisgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QVBJVHlwZT4oQVBJOjpPYmplY3Q6OndyYXAoJnQpKTsKK30K
KwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSW1wbFR5cGUgPSB0eXBlbmFtZSBBUElU
eXBlSW5mbzxUPjo6SW1wbFR5cGU+CiBhdXRvIHRvSW1wbChUIHQpIC0+IEltcGxUeXBlKgogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IGY4YTAyOGIwNmI1MTA2
MTA4ZGRjM2NiYjY4YTQwMWJmYTM1ZjdkYmUuLjdmMDU4NDU2ZGVlNzY0ODk4MWZkNDZmMWYwMDU3
Zjc1M2ZkNmUxY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAg
LTM1LDYgKzM1LDcgQEAKICNpbXBvcnQgIldLQ29udGVudFJ1bGVMaXN0U3RvcmVJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIVFRQQ29va2ll
U3RvcmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0FycmF5LmgiCkBAIC03Myw3ICs3NCw2IEBA
CiAjaW1wb3J0ICJfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVy
RmllbGRzSW50ZXJuYWwuaCIKLSNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0V4cGVyaW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVI
YW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCkBA
IC0yMjgsNyArMjI4LDcgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90IHNpemUsIFR5
cGUgdHlwZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkRvd25sb2FkOgotICAg
ICAgICB3cmFwcGVyID0gW19XS0Rvd25sb2FkIGFsbG9jXTsKKyAgICAgICAgd3JhcHBlciA9IFtX
S0Rvd25sb2FkIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFR5cGU6OkV4cGVy
aW1lbnRhbEZlYXR1cmU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAwOTE3ZjAxYmUxYzlmOGNhYTJhYmY3ZjBm
ODkwZjg5NWEzZjJlZjg2Li40ZWE0YWZiZDY5ZjE4MGQ3OGU1OWJmYWUzMjVjNGVmNjRmNDQ5MjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlcy50eHQKQEAgLTM3NCw3ICszNzQsNyBAQCBVSVByb2Nlc3MvQVBJL0MvV0tDb250
ZXh0LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwCiBV
SVByb2Nlc3MvQVBJL0MvV0tDb29raWVNYW5hZ2VyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ3Jl
ZGVudGlhbC5jcHAKLVVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxp
c3RlbmVyLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuY3BwCiBVSVByb2Nlc3MvQVBJL0Mv
V0tGcmFtZUhhbmRsZVJlZi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCA5OTUxODA3MzI4
MGU5Yzk1YTJiMjVmMDBiYzhiZmIzODg3NjIxMjQxLi4yNDgwNTMyZWVjZTFhNDkwNGJlZGM4Y2Rk
NGU5N2YxYmM5NTViODQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMDAsNiArMzAwLDcg
QEAgVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
Q29udGVudFdvcmxkLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mby5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRXJyb3IubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlv
bi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmgKaW5kZXggZDM3ZjYyODY4YjYx
Mjk3YTExYWZmZjM4MDJhODBiYTYxMmE0ZGNlNS4uZGZmNzNmYTY1YmY2ZmIwYWQxN2FmYTk5ZjU4
MmY5NDJmYWY3YTBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSURv
d25sb2FkQ2xpZW50LmgKQEAgLTQ5LDE4ICs0OSwyMCBAQCBlbnVtIGNsYXNzIEFsbG93T3Zlcndy
aXRlIDogYm9vbDsKIAogbmFtZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERhdGE7CisKIGNsYXNzIERv
d25sb2FkQ2xpZW50IDogcHVibGljIFJlZkNvdW50ZWQ8RG93bmxvYWRDbGllbnQ+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Eb3dubG9hZENs
aWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQ
cm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRl
Q2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2Fu
Y2VsKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdURjo6U3Ry
aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6
OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJ
OjpEYXRhKiByZXN1bWVEYXRhKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkQ2FuY2Vs
KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxT
ZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IGJi
YTg1OWFmMmU0MzVlOWYwOTI0ZjRhMzJlMTE3ZDk2Mzk1ZGJmOTUuLjBjNTY0ZDQ0NTRjODJkODk1
N2FmZWFlNzQ3YzBiNmYxNzBmNmJhZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YS5jYW5IYW5kbGVSZXF1ZXN0OyB9CiAgICAgYm9vbCBzaG91bGRPcGVuRXh0ZXJuYWxT
Y2hlbWVzKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZEFsbG93IHx8IG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpT
aG91bGRBbGxvd0V4dGVybmFsU2NoZW1lc0J1dE5vdEFwcExpbmtzOyB9CiAgICAgYm9vbCBzaG91
bGRPcGVuQXBwTGlua3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZE9wZW5BcHBMaW5rcyAmJiBt
X25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2Vi
Q29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3c7IH0KLSAgICBi
b29sIHNob3VsZFBlcmZvcm1Eb3dubG9hZCgpIGNvbnN0IHsgcmV0dXJuICFtX25hdmlnYXRpb25B
Y3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpOyB9CisgICAgY29uc3QgV1RGOjpT
dHJpbmcmIGRvd25sb2FkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0
aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZTsgfQogICAgIGJvb2wgaXNSZWRpcmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuaXNSZWRpcmVjdDsgfQogICAgIFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeTsgfQogCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHVuc2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbigpIHsgbV9zaG91bGRQZXJmb3JtU09B
dXRob3JpemF0aW9uID0gZmFsc2U7IH0KICNlbmRpZgogCisgICAgY29uc3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlv
bkRhdGE7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZv
KiBzb3VyY2VGcmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6
OlN0cmluZz4gdGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtz
LCBSZWZQdHI8VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIDogbV9zb3VyY2VGcmFt
ZShzb3VyY2VGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFj
OWU2YWUuLmQ4MzY2NGUwODIwNmM3ZmViZjI4MWU5MmNlZTQ5MjVmZjZhZGRmOWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAt
NTQsNiArNTQsNyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBEb3dubG9h
ZFByb3h5OwogY2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC05OSw2ICsxMDAsMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdl
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZT4pIHsgfQogCisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0
OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb25BY3Rpb24m
LCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RG93bmxv
YWRQcm94eSYpIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRl
Q2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVy
Zm9ybURlZmF1bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dMZWdh
Y3lUTFMoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5l
Z290aWF0ZU1vZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYp
IHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmlu
ZGV4IDdkMmU5MzQ0NjJjZjNiZGMxOWExOWI3ZGQzMWEwYzJhOWNlYmVkNGYuLjI2MTAxODhhOTc1
NjlkYjNlM2M3OGFlYjA0YTg1ODI1MTkzMmQxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBjbGFzcyBQb2xp
Y3lDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCi0g
ICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdl
YktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVj
dCopCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBSZWY8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2Vi
S2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0
KikKICAgICB7CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2
b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmluZyYs
IFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJ
OjpPYmplY3QqKQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBSZWY8QVBJ
OjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXVEY6OlN0cmluZyYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVz
ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3Bw
CmluZGV4IDNhMDgzY2E0ODY0NDNiZDg4MDYzM2E1YzI2MDc0ZTI2MmQxMTM0YmMuLmZmZDA3ZThj
Y2Q4YjA0MDY3MTRlZTg3MTBlYzIxMzA4MDlmZWM0ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApAQCAtNTUsOSArNTUsNiBAQAogI2luY2x1ZGUgIldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogCiBuYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRl
PD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U+IHsKLSAg
ICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCwgV0tDb250ZXh0
RG93bmxvYWRDbGllbnRWMT4gVmVyc2lvbnM7Ci19OwogdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50
VHJhaXRzPFdLQ29udGV4dEhpc3RvcnlDbGllbnRCYXNlPiB7CiAgICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLQ29udGV4dEhpc3RvcnlDbGllbnRWMD4gVmVyc2lvbnM7CiB9OwpAQCAtMTY4LDkwICsx
NjUsNiBAQCB2b2lkIFdLQ29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHRSZWYsIGNvbnN0IFdLQ29udGV4dEhpc3RvcnlDbAogICAgIH0KIH0KIAotdm9pZCBXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0
RG93bmxvYWRDbGllbnRCYXNlKiB3a0NsaWVudCkKLXsKLSAgICBjbGFzcyBMZWdhY3lEb3dubG9h
ZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2U+LCBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBleHBsaWNpdCBMZWdhY3lEb3dubG9hZENsaWVudChjb25zdCBXS0NvbnRleHREb3dubG9hZENs
aWVudEJhc2UqIGNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHQpCi0gICAgICAgICAgICA6IG1f
Y29udGV4dChjb250ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpbml0aWFsaXplKGNsaWVu
dCk7Ci0gICAgICAgIH0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBtX2NsaWVudC5kaWRTdGFydChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRv
d25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9h
ZFByb3h5KSwgV2ViS2l0Ojp0b0FQSSgmYXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVJlc3BvbnNlKG1fY29udGV4dCwg
V2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNw
b25zZTo6Y3JlYXRlKHJlc3BvbnNlKS5wdHIoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIHVpbnQ2NF90IGxlbmd0aCwgdWludDY0X3QsIHVpbnQ2NF90
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVE
YXRhKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVEYXRhKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIGxlbmd0
aCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5h
bAotICAgICAgICB7Ci0gICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWRQcm94
eSwgcmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7Ci0gICAgICAgICAgICBi
b29sIGFsbG93T3ZlcndyaXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBhdXRvIGRlc3RpbmF0aW9u
ID0gYWRvcHRXSyhtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJ
KGZpbGVuYW1lLmltcGwoKSksICZhbGxvd092ZXJ3cml0ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IFdl
YktpdDo6QWxsb3dPdmVyd3JpdGU6OlllcyA6IFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBX
ZWJLaXQ6OnRvV1RGU3RyaW5nKGRlc3RpbmF0aW9uLmdldCgpKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkUHJveHksIGNvbnN0IFN0cmluZyYgcGF0aCkgZmluYWwKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRDcmVhdGVEZXN0aW5hdGlvbihtX2NvbnRl
eHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKHBhdGguaW1w
bCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lk
IGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaChtX2NvbnRleHQs
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKSBmaW5h
bAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbChtX2NvbnRleHQs
IFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKGVycm9yKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGxlZ2FjeURp
ZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2FuY2VsKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZENhbmNlbChtX2NvbnRleHQsIFdl
YktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwot
ICAgICAgICB9Ci0gICAgICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZENyYXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3QpCi0gICAgICAg
ICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KG1fY29udGV4dCwgV2Vi
S2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9VUkxSZWYocmVxdWVzdC51cmwo
KS5zdHJpbmcoKS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgV0tDb250ZXh0UmVmIG1fY29udGV4dDsKLSAgICB9OwotICAgIFdlYktpdDo6dG9JbXBsKGNv
bnRleHQpLT5zZXRMZWdhY3lEb3dubG9hZENsaWVudChhZG9wdFJlZigqbmV3IExlZ2FjeURvd25s
b2FkQ2xpZW50KHdrQ2xpZW50LCBjb250ZXh0KSkpOwotfQotCiB2b2lkIFdLQ29udGV4dFNldENv
bm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIGNvbnN0IFdLQ29udGV4dENv
bm5lY3Rpb25DbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKICAgICBXZWJLaXQ6OnRvSW1wbChjb250
ZXh0UmVmKS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQod2tDbGllbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAppbmRleCBkYzJlMGQxOTIzMTVlZTU3MmQx
ZDFmNjc4YWJhNjFkNmMyNGQxMzkxLi40MzE1NjBkNjA3MzQ1YjU1NjdiMjc2MTNiOTdkNTAxMmY2
YjAyMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaApAQCAt
MjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLQ29u
dGV4dERvd25sb2FkQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dEhpc3RvcnlD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+CkBAIC0xMzgsNyArMTM3LDYgQEAg
V0tfRVhQT1JUIFdLQ29udGV4dFJlZiBXS0NvbnRleHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihX
S0NvbnRleHRDb25maWd1cmF0aW9uUmUKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0Q2xpZW50QmFzZSogY2xpZW50
KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudEJhc2Uq
IGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHRIaXN0b3J5Q2xpZW50QmFzZSogY2xpZW50
KTsKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCk7CiBX
S19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdLQ29udGV4dFJlZiBj
b250ZXh0LCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFzZSogY2xpZW50KTsKIAog
V0tfRVhQT1JUIFdLRG93bmxvYWRSZWYgV0tDb250ZXh0RG93bmxvYWRVUkxSZXF1ZXN0KFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkgV0tfQ19BUElfREVQUkVD
QVRFRDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dERvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHREb3dubG9hZENsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2Y5NmFi
ZWYxMTQ1ODQ2YjIxMTYxMTg1NWZiNzdiMzJkMWQ4NzcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
Q29udGV4dERvd25sb2FkQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBXS0NvbnRleHREb3dubG9hZENsaWVudF9oCi0jZGVmaW5lIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50X2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQot
dHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrKShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0Nv
bnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9h
ZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCB1aW50NjRfdCBsZW5ndGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwot
dHlwZWRlZiBib29sICgqV0tDb250ZXh0RG93bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZN
SU1FVHlwZUNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYgbWltZVR5cGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlw
ZWRlZiBXS1N0cmluZ1JlZiAoKldLQ29udGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0
ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3du
bG9hZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBwYXRoLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJh
Y2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkRmFp
bENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQg
KCpXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lk
ICgqV0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjaykoV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3QpKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJl
ZiB1cmwsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRl
eHREb3dubG9hZENsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25z
dCB2b2lkICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNsaWVudEluZm87Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZTsKLQotdHlw
ZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCB7Ci0gICAgV0tDb250ZXh0RG93
bmxvYWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
YXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAg
V0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFj
ayAgICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250
ZXh0RG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWRSZWNlaXZlUmVzcG9uc2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZl
RGF0YUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsK
LSAgICBXS0NvbnRleHREb3dubG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2Fs
bGJhY2sgICAgICAgICAgIHNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdL
Q29udGV4dERvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxs
YmFjayAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tD
b250ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICBkaWRDcmVhdGVEZXN0aW5hdGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZp
bmlzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsK
LSAgICBXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZEZhaWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAg
V0tDb250ZXh0RG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzRGlkQ3Jhc2g7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjA7
Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjEgewotICAgIFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS0NvbnRleHREb3dubG9hZERp
ZFN0YXJ0Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0
OwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q2FsbGJhY2sgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAg
IFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlk
UmVjZWl2ZURhdGFDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2
ZURhdGE7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1F
VHlwZUNhbGxiYWNrICAgICAgICAgICBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsK
LSAgICBXS0NvbnRleHREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lQ2FsbGJhY2sgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgZGlkQ3JlYXRlRGVzdGluYXRpb247Ci0gICAgV0tDb250ZXh0RG93bmxv
YWREaWRGaW5pc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRG
aW5pc2g7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlk
Q2FuY2VsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2FuY2Vs
OwotICAgIFdLQ29udGV4dERvd25sb2FkUHJvY2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvY2Vzc0RpZENyYXNoOwotCi0gICAgLy8gVmVyc2lvbiAxLgot
ICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0OwotfSBXS0NvbnRleHREb3du
bG9hZENsaWVudFYxOwotCi0jZW5kaWYgLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzBjMjg3YmIzNDcwNDczYWQ1YmM2NGZjZmQ1Mzg4NGM3NTJlYmVj
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
V0tEb3dubG9hZC5oIgotCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElEYXRh
LmgiCi0jaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKLSNpbmNsdWRlICJBUElVUkxSZXF1
ZXN0LmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0Owot
Ci1XS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4gdG9BUEkoRG93
bmxvYWRQcm94eTo6QVBJVHlwZSk7Ci19Ci0KLXVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rv
d25sb2FkUmVmKQotewotICAgIHJldHVybiAwOwotfQotCi1XS1VSTFJlcXVlc3RSZWYgV0tEb3du
bG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRv
QVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwoZG93bmxvYWQpLT5yZXF1ZXN0KCkp
LmxlYWtSZWYoKSk7Ci19Ci0KLVdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0YShXS0Rv
d25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQp
LT5sZWdhY3lSZXN1bWVEYXRhKCkpOwotfQotCi12b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+Y2FuY2Vs
KFtkb3dubG9hZCA9IG1ha2VSZWYoKnRvSW1wbChkb3dubG9hZCkpXSAoYXV0byopIHsKLSAgICAg
ICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7Ci0g
ICAgfSk7Ci19Ci0KLVdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCkt
Pm9yaWdpbmF0aW5nUGFnZSgpKTsKLX0KLQotV0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGly
ZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICBhdXRvJiByZWRpcmVjdENo
YWluID0gIHRvSW1wbChkb3dubG9hZCktPnJlZGlyZWN0Q2hhaW4oKTsKLSAgICBWZWN0b3I8UmVm
UHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKLSAgICB1cmxzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHko
cmVkaXJlY3RDaGFpbi5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcmVkaXJlY3RVUkwgOiByZWRp
cmVjdENoYWluKQotICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlVSTDo6Y3JlYXRl
KHJlZGlyZWN0VVJMLnN0cmluZygpKSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5Ojpj
cmVhdGUoV1RGTW92ZSh1cmxzKSkubGVha1JlZigpKTsKLX0KLQotYm9vbCBXS0Rvd25sb2FkR2V0
V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0
b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDQzZjcyMDI3OTNkNTRmNTQyYTM5MDkyMDRhM2M4MGRhY2E5YWQyMWUuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV0tEb3dubG9hZF9oCi0jZGVmaW5lIFdLRG93bmxvYWRfaAotCi0jaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJlY2F0ZWQuaD4K
LQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSNlbmRpZgotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VYUE9SVCBXS1R5
cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB1aW50NjRfdCBXS0Rvd25s
b2FkR2V0SUQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkgV0tfQ19BUElfREVQUkVDQVRFRDsKLVdL
X0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1lRGF0
YShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRDYW5j
ZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tQYWdlUmVmIFdLRG93bmxv
YWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQg
V0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3du
bG9hZCk7Ci1XS19FWFBPUlQgYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rv
d25sb2FkUmVmIGRvd25sb2FkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQot
I2VuZGlmIC8vIFdLRG93bmxvYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNjhhYjZhMDEzM2Y1NzhlYzU4OTM3
NjZhMDBmMGY3ZDQ1YTY5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV0tEb3dubG9hZENsaWVudF9oCisjZGVmaW5lIFdLRG93bmxvYWRDbGllbnRf
aAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCit0eXBlZGVmIGJvb2wgKCpXS0Rvd25s
b2FkV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
VVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
K3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2Us
IFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
K3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRXcml0ZURhdGEpKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGxvbmcgbG9uZyBieXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0b3RhbEJ5dGVzV3JpdHRl
biwgbG9uZyBsb25nIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZEZpbmlzaCkoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rv
d25sb2FkRGlkRmFpbFdpdGhFcnJvcikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJl
ZiBlcnJvciwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
Cit0eXBlZGVmIHN0cnVjdCBXS0Rvd25sb2FkQ2xpZW50QmFzZSB7CisgICAgaW50ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwor
ICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xpZW50SW5mbzsKK30gV0tEb3dubG9hZENsaWVudEJhc2U7CisKK3R5cGVkZWYgc3Ry
dWN0IFdLRG93bmxvYWRDbGllbnRWMCB7CisgICAgV0tEb3dubG9hZENsaWVudEJhc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8gVmVyc2lvbiAw
LgorICAgIFdLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAgICAgICAgICAgICAg
ICAgICAgICAgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb247CisgICAgV0tEb3dubG9hZERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAgICAgICAgICAgICAgICBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgV0tEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZTsKKyAgICBXS0Rvd25sb2FkRGlkV3JpdGVEYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZFdyaXRlRGF0YTsKKyAgICBXS0Rvd25sb2FkRGlkRmluaXNoICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKKyAgICBXS0Rvd25sb2Fk
RGlkRmFpbFdpdGhFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWxX
aXRoRXJyb3I7Cit9IFdLRG93bmxvYWRDbGllbnRWMDsKKworI2VuZGlmIC8qIFdLRG93bmxvYWRD
bGllbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tE
b3dubG9hZFJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
UmVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZWJjYzkyZDc5OWE1NWJhZDE3MTE1Y2I4NmE3YzhiYzg3MDQ2
MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tE
b3dubG9hZFJlZi5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkUmVmLmgiCisKKyNpbmNsdWRlICJB
UElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNpbmNsdWRlICJBUElEb3dubG9hZENs
aWVudC5oIgorI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJEb3dubG9hZFBy
b3h5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEb3dubG9hZENsaWVu
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCituYW1lc3BhY2UgQVBJIHsKK3RlbXBs
YXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0Rvd25sb2FkQ2xpZW50QmFzZT4geworICAgIHR5
cGVkZWYgc3RkOjp0dXBsZTxXS0Rvd25sb2FkQ2xpZW50VjA+IFZlcnNpb25zOworfTsKK30KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tEb3dubG9hZEdldFR5cGVJRCgp
Cit7CisgICAgcmV0dXJuIHRvQVBJKERvd25sb2FkUHJveHk6OkFQSVR5cGUpOworfQorCitXS1VS
TFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
Cit7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwoZG93
bmxvYWQpLT5yZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Cit9CisKK3ZvaWQgV0tEb3dubG9hZENhbmNl
bChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdL
RG93bmxvYWRDYW5jZWxDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gdG9JbXBsKGRv
d25sb2FkKS0+Y2FuY2VsKFtmdW5jdGlvbkNvbnRleHQsIGNhbGxiYWNrXShhdXRvKiByZXN1bWVE
YXRhKSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKHRvQVBJ
KHJlc3VtZURhdGEpLCBmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOworfQorCitXS1BhZ2VSZWYg
V0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQorewor
ICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1BhZ2UoKSk7Cit9
CisKK2Jvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9hZFJlZiBkb3du
bG9hZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+d2FzVXNlckluaXRpYXRlZCgp
OworfQorCit2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAgICBjbGFzcyBEb3dubG9hZENsaWVu
dCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0Rvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6
OkRvd25sb2FkQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IERvd25sb2Fk
Q2xpZW50KGNvbnN0IFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAgICAgfQorCisgICAgcHJpdmF0ZToK
KyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgeworICAg
ICAgICAgICAgICAgIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktp
dDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNw
YWNlQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0
b0FQSShkb3dubG9hZCksIHRvQVBJKGNoYWxsZW5nZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkV3JpdGVEYXRhKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFdyaXRlRGF0
YSh0b0FQSShkb3dubG9hZCksIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpIHsKKyAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywg
eyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBBUEk6OlN0cmluZyogZGVzdGluYXRpb24gPSB0b0ltcGwobV9jbGllbnQuZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UodG9BUEkoZG93bmxvYWQpLCB0b0FQSShyZXNwb25zZSksIHRvQVBJ
KHN1Z2dlc3RlZEZpbGVuYW1lLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOwor
ICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi0+c3RyaW5nKCkpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBk
b3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRGaW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmluaXNoKHRvQVBJKGRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiBy
ZXN1bWVEYXRhKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcih0b0FQSShkb3dubG9hZCksIHRvQVBJKGVycm9yKSwg
dG9BUEkocmVzdW1lRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0K
KworICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBkaWRGYWlsKGRvd25sb2Fk
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9jZXNzIGNyYXNo
ZWQgZHVyaW5nIGRvd25sb2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbV9jbGll
bnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24odG9BUEkoZG93bmxvYWQpLCB0b0FQSShyZXNw
b25zZSksIHRvQVBJKHJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0b0ltcGwoZG93bmxvYWQpLT5z
ZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVudChjbGllbnQpKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzA1OGQ2N2VmZmNmNGZhZGMwZmYwYTk0ZTYwY2I2ZTIxNTJmY2YwYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRG93bmxvYWRSZWZfaAorI2Rl
ZmluZSBXS0Rvd25sb2FkUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorCisjaWZuZGVmIF9fY3BsdXNwbHVzCisj
aW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJu
ICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQo
KTsKKworV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCk7CisKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWRDYW5jZWxD
YWxsYmFjaykoV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxv
YWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxiYWNr
IGNhbGxiYWNrKTsKK1dLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5n
UGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCBib29sIFdLRG93bmxvYWRH
ZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tfRVhQT1JUIHZv
aWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2Fk
Q2xpZW50QmFzZSogY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwor
I2VuZGlmIC8qIFdLRG93bmxvYWRSZWZfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5jcHAKaW5kZXggOGZmMzdlNWM4
N2JlODQ3MjFjYjFhODA4M2YzYTIwZjE1NTlhNTUwMS4uZTEzNzA2ZGU1MDNjOTdhNTM2Mjg3NWI1
YTc2YjQ5MDQxMGZiMzFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCkBAIC0zNiw3ICszNiwxMCBAQCBXS1R5
cGVJRCBXS05hdmlnYXRpb25BY3Rpb25HZXRUeXBlSUQoKQogICAgIHJldHVybiB0b0FQSShBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OkFQSVR5cGUpOwogfQogCi1ib29sIFdLTmF2aWdhdGlvbkFjdGlv
blNob3VsZFBlcmZvcm1Eb3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQorV0tT
dHJpbmdSZWYgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUoV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmIGFjdGlvbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGFjdGlvbiktPnNob3Vs
ZFBlcmZvcm1Eb3dubG9hZCgpOworICAgIGF1dG8mIGF0dHJpYnV0ZSA9IHRvSW1wbChhY3Rpb24p
LT5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiB0b0FQSShhdHRyaWJ1dGUuaW1wbCgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlv
bkFjdGlvblJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
QWN0aW9uUmVmLmgKaW5kZXggOWQ4ZmNmMWUxOTk3MTNiMWYwOWIzMjYyMGQyMTU3OTI0NTQ4NmU5
Yy4uNGMxM2Q2MzliZDdhZjI2OTEwYzNkNzAyMzczZDY1NDYxNTNiOTUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmgK
QEAgLTM0LDcgKzM0LDcgQEAgZXh0ZXJuICJDIiB7CiAKIFdLX0VYUE9SVCBXS1R5cGVJRCBXS05h
dmlnYXRpb25BY3Rpb25HZXRUeXBlSUQoKTsKIAotV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9u
QWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKFdLTmF2aWdhdGlvbkFjdGlvblJlZik7CitXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUo
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmIGFjdGlvbik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMDY0ODI2Y2IyNWUz
NTY0YTEzMDVkNDM0YjM4NDBhYTM0ZWZmYzk2ZC4uYzllOGIzMjYzNGRhOGU4MDg4YzkyM2ExNmQ5
YWI0MmE2ODViODg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgogI2luY2x1
ZGUgIkNvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXMuaCIKKyNpbmNsdWRlICJEb3du
bG9hZFByb3h5LmgiCiAjaW5jbHVkZSAiTGVnYWN5U2Vzc2lvblN0YXRlQ29kaW5nLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKQEAg
LTEyNDAsNyArMTI0MSw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VS
ZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IE5hdmlnYXRp
b25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViRnJhbWVQcm94eSogb3JpZ2lu
YXRpbmdGcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlc291
cmNlUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVl
c3QsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFJl
ZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgV2ViRnJhbWVQcm94
eSogb3JpZ2luYXRpbmdGcmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlc291cmNlUmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNv
dXJjZVJlcXVlc3QsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25f
ZGVwcmVjYXRlZEZvclVzZVdpdGhWMSAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKQEAgLTEyNTEs
MTQgKzEyNTIsMTQgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogICAgICAgICAgICAgUmVmPEFQ
STo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlc291cmNl
UmVxdWVzdCk7CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCi0gICAgICAgICAgICAgICAgbV9j
bGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyks
IHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5w
dHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSksIHRv
QVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBl
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmln
YXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0
b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSkKLSAgICAgICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjEodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJz
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5h
dGluZ0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZv
clVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0
YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRv
biksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEko
bGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
bmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRv
biksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShvcmlnaW5hbFJlcXVlc3QucHRyKCkp
LCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2Vy
RGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9B
UEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQ
SShvcmlnaW5hbFJlcXVlc3QucHRyKCkpLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlz
dGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CiAgICAgICAgIH0KIAotICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWY8QVBJOjpO
YXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewogICAgICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKQEAgLTEyNjcsNyArMTI2OCw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNs
aWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKIAog
ICAgICAgICAgICAgUmVmPEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVz
dDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRv
QVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlv
bkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VC
dXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksIHRv
QVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0
aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+
ZGF0YSgpLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1v
ZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb3VzZUJ1dHRvbiksIHRv
QVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVu
ZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVzb3VyY2VSZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQpAQCAtMjI1OSw2ICsyMjYwLDI3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZU5hdmlnYXRpb25DbGllCiAgICAg
ICAgICAgICByZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmlu
ZygpLCB1cmwpKTsKICAgICAgICAgfQogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRp
ZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRp
b25BY3Rpb24mIGFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9jbGllbnQubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdlKSwg
dG9BUEkoJmFjdGlvbiksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZSYgcmVzcG9uc2UsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9jbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmcmVzcG9uc2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURv
d25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9jbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCh0b0FQSSgm
cGFnZSksIHRvQVBJKCZkb3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKwogICAgICAgICB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoV2ViUGFnZVBy
b3h5JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMzgwNmQxODZhYTlm
Yjk3NzQ3YTczZDk3MzYwNmE1OGViNDE4OGI2MC4uYTRhYWZlNGE5MzViMzEwYTIyMDFiZjdiNGY3
NDU2NWU1NTJiODRhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzEsNyArNzEsMTMgQEAgdHlwZWRlZiB2
b2lkICgqV0tQYWdlTmF2aWdhdGlvbldlYlByb2Nlc3NEaWRUZXJtaW5hdGVDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFcKIHR5cGVkZWYgV0tEYXRhUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlX
ZWJDcnlwdG9NYXN0ZXJLZXlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwogCiB0eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tQYWdlTmF2aWdhdGlvbkNvcHlT
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmdDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIAorCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VO
YXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lkICgqV0tQYWdl
TmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBh
Z2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgdm9pZCAo
KldLUGFnZU5hdmlnYXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKwogdHlwZWRlZiBXS1BsdWdpbkxvYWRQb2xpY3kgKCpXS1BhZ2VOYXZpZ2F0aW9uRGVj
aWRlUG9saWN5Rm9yUGx1Z2luTG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tQbHVnaW5M
b2FkUG9saWN5IGN1cnJlbnRQbHVnaW5Mb2FkUG9saWN5LCBXS0RpY3Rpb25hcnlSZWYgcGx1Z2lu
SW5mb0RpY3Rpb25hcnksIFdLU3RyaW5nUmVmKiB1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogdHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlv
bkRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUpKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKQEAgLTIxMyw2ICsyMTksOSBAQCB0eXBlZGVmIHN0cnVjdCBXS1BhZ2VOYXZp
Z2F0aW9uQ2xpZW50VjMgewogCiAgICAgLy8gVmVyc2lvbiAzLgogICAgIFdLUGFnZU5hdmlnYXRp
b25Db3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2sgY29weVNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZzsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWRDYWxsYmFjayBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWQ7CisgICAgV0tQYWdlTmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWRDYWxsYmFj
ayBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZENhbGxiYWNrIGNvbnRleHRNZW51RGlkQ3Jl
YXRlRG93bmxvYWQ7CiB9IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMzsKIAogI2lmZGVmIF9fY3Bs
dXNwbHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tE
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kOGMzMzI4NTgyMTNkYzk3N2ZjOTM0NThkZjIxNzQwZGI0ZDQ2YTE0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93
bmxvYWQuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlv
bi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK0BjbGFz
cyBXS0ZyYW1lSW5mbzsKK0BjbGFzcyBXS1dlYlZpZXc7CitAcHJvdG9jb2wgV0tEb3dubG9hZERl
bGVnYXRlOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tEb3dubG9h
ZCA6IE5TT2JqZWN0CisKKy8qIEBhYnN0cmFjdCBUaGUgcmVxdWVzdCB1c2VkIHRvIGluaXRpYXRl
IHRoaXMgZG93bmxvYWQuCisgIEBkaXNjdXNzaW9uIElmIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHJl
ZGlyZWN0ZWQgdG8gYSBkaWZmZXJlbnQgVVJMLCBvcmlnaW5hbFJlcXVlc3QKKyAgd2lsbCBiZSB1
bmNoYW5nZWQgYWZ0ZXIgdGhlIGRvd25sb2FkIGZvbGxvd3MgdGhlIHJlZGlyZWN0LgorICovCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU1VSTFJlcXVlc3QgKm9y
aWdpbmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSB3ZWIgdmlldyB0aGF0IG9yaWdpbmF0
ZWQgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgd2Vh
aykgV0tXZWJWaWV3ICpvcmlnaW5hdGluZ1dlYlZpZXc7CisKKy8qIEBhYnN0cmFjdCBUaGUgZGVs
ZWdhdGUgdGhhdCByZWNlaXZlcyBwcm9ncmVzcyB1cGRhdGVzIGZvciB0aGlzIGRvd25sb2FkLiAq
LworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+IGRl
bGVnYXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBjYW5jZWxsYXRpb24gaXMgZmlu
aXNoZWQuCisgQGRpc2N1c3Npb24gVG8gYXR0ZW1wdCB0byByZXN1bWUgdGhlIGRvd25sb2FkLCBj
YWxsIFdLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOiB3aXRoIHRoZSBkYXRhIGdpdmVu
IHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4KKyBJZiBubyByZXN1bWUgYXR0ZW1wdCBpcyBwb3Nz
aWJsZSB3aXRoIHRoaXMgc2VydmVyLCBjb21wbGV0aW9uSGFuZGxlciB3aWxsIGJlIGNhbGxlZCB3
aXRoIG5pbC4KKyAqLworLSAodm9pZCljYW5jZWw6KHZvaWQoXiBfTnVsbGFibGUpKE5TRGF0YSAq
IF9OdWxsYWJsZSByZXN1bWVEYXRhKSljb21wbGV0aW9uSGFuZGxlcjsKKworQGVuZAorCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzOGIxM2RiMDAyNjAzMTI5YzMzMWMwNTAwZWNj
Mjc1MmU2MjVjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKKworI2ltcG9y
dCAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbXBvcnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCIKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRE
ZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tOU0RhdGEuaCIKKyNpbXBvcnQgIldLTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6RG93bmxvYWRDbGll
bnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IERvd25sb2FkQ2xpZW50KGlkIDxXS0Rvd25sb2Fk
RGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAg
ICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25k
c1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxl
bmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRXcml0
ZURhdGEoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlk
V3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KV0p
CisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmluaXNoKFttX2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWREaWRGaW5pc2g6KV0pCisgICAgICAgICwgbV9yZXNw
b25kc1RvRGlkRmFpbFdpdGhFcnJvcihbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihkb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6KV0pCisgICAgeworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZp
bmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMUmVxdWVzdD4gbnNSZXF1
ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpzdGF0aWNfY2FzdDxOU0hU
VFBVUkxSZXNwb25zZSAqPihyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkpIG5ld1JlcXVlc3Q6bnNS
ZXF1ZXN0LmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3JlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOikpXShXS0Rvd25sb2Fk
UmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2Vy
LT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAg
ICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRS
ZWRpcmVjdFBvbGljeUNhbmNlbDoKKyAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGNhc2UgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxs
b3c6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRp
b24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBXS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCkiLCAobG9uZylwb2xpY3ldOworICAgICAgICAgICAg
fQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgIHJldHVybiBjaGFsbGVuZ2UubGlzdGVuZXIo
KS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKworICAgICAgICBbbV9k
ZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihjaGFsbGVuZ2UpLCBjaGVja2VyID0gV2ViS2l0OjpD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpj
b21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKKyAg
ICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWw6Cisg
ICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCwg
Y3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3JlZGVudGlhbCkgOiBXZWJDb3JlOjpD
cmVkZW50aWFsKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZzoKKyAgICAgICAg
ICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOgorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQ
cm90ZWN0aW9uU3BhY2U6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNv
bXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCBOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCkiLCAobG9uZylkaXNwb3NpdGlvbl07
CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9CisKKyAgICB2b2lkIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBj
b25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRz
VG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6
c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9h
ZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25I
YW5kbGVyOikpXSAoTlNVUkwgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlm
IChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRs
ZXIoKTsKKworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICghZGVzdGluYXRpb24uaXNGaWxlVVJMKSB7
CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAImRlc3RpbmF0aW9uIG11c3QgYmUgYSBmaWxlIFVS
TCJdOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgTlNGaWxlTWFuYWdlciAqZmlsZU1hbmFnZXIgPSBbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl07CisgICAgICAgICAgICBpZiAoIVtmaWxlTWFuYWdlciBmaWxlRXhpc3RzQXRQYXRoOltk
ZXN0aW5hdGlvbiBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21wb25lbnRdLnBhdGhdKSB7CisgICAg
ICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0geworICAgICAg
ICAgICAgICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46
TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZv
Om5pbF0sIHsgfSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFtmaWxlTWFuYWdl
ciBmaWxlRXhpc3RzQXRQYXRoOmRlc3RpbmF0aW9uLnBhdGhdKSB7CisgICAgICAgICAgICAgICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtkb3dubG9hZF0geworICAgICAgICAgICAgICAgICAg
ICBkb3dubG9hZC0+ZGlkRmFpbChbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRv
bWFpbiBjb2RlOk5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlIHVzZXJJbmZvOm5pbF0sIHsgfSk7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24ucGF0aCk7CisgICAgICAgIH0pLmdldCgp
XTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dy
aXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRv
dGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZV07CisgICAgfQorCisgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8
fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmluaXNoOndyYXBwZXIoZG93bmxvYWQpXTsKKyAgICB9
CisKKyAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkg
ZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlk
RmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0
ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJy
b3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVzdW1lRGF0YSldOworICAgIH0KKworICAgIHZvaWQg
cHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisg
ICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRo
RXJyb3IpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxv
YWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFpbFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhE
b21haW46TlNVUkxFcnJvckRvbWFpbiBjb2RlOk5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxv
c3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRhOm5pbF07CisgICAgfQorCisgICAgV2Vha09iakNQ
dHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jl
c3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA6IDE7CisgICAgYm9vbCBtX3Jlc3Bv
bmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9y
ZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgOiAxOworICAgIGJvb2wgbV9y
ZXNwb25kc1RvRGlkV3JpdGVEYXRhIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZpbmlz
aCA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yIDogMTsKK307CisK
K0BpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2FkCisKKy0gKHZvaWQpY2FuY2VsOih2b2lkICheKShO
U0RhdGEgKnJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5j
YW5jZWwoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVy
KV0gKGF1dG8qIGRhdGEpIHsKKyAgICAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0g
KE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVxdWVzdAoreworICAgIHJldHVybiBfZG93bmxvYWQt
PnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRv
Tm90VXBkYXRlSFRUUEJvZHkpOworfQorCistIChXS1dlYlZpZXcgKilvcmlnaW5hdGluZ1dlYlZp
ZXcKK3sKKyAgICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsKKyAg
ICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGZyb21XZWJQYWdl
UHJveHkoKnBhZ2UpOworfQorCistIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQor
eworICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVs
ZWdhdGU6KGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgX2Rvd25sb2FkLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3du
bG9hZENsaWVudChkZWxlZ2F0ZSkpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX2Rv
d25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworI3By
YWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6T2Jq
ZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfZG93bmxvYWQ7Cit9CisKK0BlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkRGVs
ZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZTIxM2RkY2ZlMmZkNjVhMGI3ZWNiNjQ2MmE5NjdjNDE5ODk0
ZjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0
aW9uLmg+CisKK0BjbGFzcyBXS0Rvd25sb2FkOworCisvKiBAZW51bSBXS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3kKKyBAYWJzdHJhY3QgVGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lz
aW9uIGhhbmRsZXIgZnJvbSB0aGUgZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246
bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KKyBAY29uc3RhbnQgV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSByZWRpcmVjdC4KKyBAY29uc3RhbnQg
V0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIHJlZGlyZWN0LgorICov
Cit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpIHsK
KyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwsCisgICAgV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90b2NvbCBX
S0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qIEBhYnN0cmFjdCBJ
bnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbiBIVFRQIHJlZGlyZWN0aW9u
IHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZlZCB0
aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZWRpcmVjdGlvbiByZXNwb25zZS4K
KyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVlc3QgdGhhdCB3aWxsIGJlIHNlbnQuCisg
QHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3Qg
aW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CisgdG8gcHJvY2VlZCB3aXRoIHRoZSBy
ZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1l
dGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJlY3RzIHdpbGwgYmUgdGFrZW4uCisgKi8K
Ky0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3dubG9hZFJl
ZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdo
ZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hh
bGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZlZCB0aGUg
YXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1dGhlbnRp
Y2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRp
b24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0byB0aGUgY2hhbGxlbmdlLiBU
aGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBvZiB0aGUg
ZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLiBX
aGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVzZSwgb3Ig
bmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisgY3JlZGVudGlhbC4KKyBAZGlz
Y3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2aWV3
IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHdpdGggdGhlIE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9zaXRpb24u
CisgKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKilj
aGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21wbGV0aW9u
SGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMg
dG8gcmVzcG9uZCB0byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25s
b2FkIFRoZSBkb3dubG9hZCBmb3Igd2hpY2ggd2UgbmVlZCBhIGZpbGUgdG8gd2hpY2ggdG8gd3Jp
dGUuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgdGhpcyBkb3dubG9h
ZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QsCisgb3IgYSBzeW50aGVzaXplZCBy
ZXNwb25zZSBmb3IgYmxvYiBkb3dubG9hZHMuCisgQHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1lIFRo
ZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVSTCB0
byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUgZG93bmxvYWQuCisgQGRp
c2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNlIHdp
bGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRlbiBiZSB0aGUgc2FtZSBh
cyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250ZW50IGNhbiBzcGVjaWZ5
IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRoZSBkZXN0aW5hdGlvbiBm
aWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90IGV4
aXN0IGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2FuIGJlIHdyaXR0ZW4gdG8u
CisgKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZp
bGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1VSTCAqIF9OdWxsYWJsZSBkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXI7
CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBh
bmQgd3JpdHRlbiBkYXRhIHRvIHRoZSBkZXN0aW5hdGlvbi4KKyBAcGFyYW0gZG93bmxvYWQgVGhl
IGRvd25sb2FkIHRoYXQgaGFzIHdyaXR0ZW4gZGF0YS4KKyBAcGFyYW0gYnl0ZXNXcml0dGVuIFRo
ZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc1dyaXR0ZW4gVGhl
IHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgd3JpdHRl
bi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIHJlc3Vt
aW5nIGEgcHJldmlvdXMgZG93bmxvYWQsIHRoZW4KKyB0b3RhbEJ5dGVzV3JpdHRlbiB3aWxsIGJl
IGJ5dGVzV3JpdHRlbiBwbHVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYWQgYWxyZWFkeSBi
ZWVuIGRvd25sb2FkZWQuCisgSWYgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpcyB1bmtub3du
LCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIHdpbGwgYmUgLTEuCisgKi8KKy0gKHZvaWQpZG93
bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNX
cml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFs
Qnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsK
KworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZpbmlzaGVkIHN1
Y2Nlc3NmdWxseS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgZmluaXNoZWQu
CisgKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxvYWQgKilkb3dubG9hZDsK
KworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZhaWxlZC4KKyBA
cGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgaGFzIGZhaWxlZC4KKyBAcGFyYW0gZXJy
b3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUgcmVhc29uLgorIEBwYXJhbSByZXN1
bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdLV2ViVmlldyByZXN1bWVEb3dubG9h
ZFdpdGhEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlzIGRvd25sb2FkLgorICovCistICh2
b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNF
cnJvciAqKWVycm9yIHJlc3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJlc3VtZURhdGE7CisK
K0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZj
ODk0MjBlNmUyN2IxNDNkYjAyNTQwNWNiMzNiN2E5ZDdjNGFmOQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaApA
QCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgor
I2ltcG9ydCAiV0tEb3dubG9hZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94
eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLRG93bmxvYWQ7Cit9OworCit9CisKK0Bp
bnRlcmZhY2UgV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworICAgIFdlYWtP
YmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworfQorQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb24ubW0KaW5k
ZXggNzcwNzViZDY2NGJiMWI5MTU3ZDgwM2E0ZmJhZWIxMzhiNzNiZjM0My4uY2YzNTdkZjBhYTI3
MzA1ZDMwNmU0N2Q5NmQ0OGI2YWQzNGZjNjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uLm1tCkBAIC00NSw2ICs0NSwxMSBAQAogICAg
IHJldHVybiBfbmF2aWdhdGlvbi0+b3JpZ2luYWxSZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAorLSAo
Qk9PTClfd2FzVXNlckluaXRpYXRlZAoreworICAgIHJldHVybiBfbmF2aWdhdGlvbi0+d2FzVXNl
ckluaXRpYXRlZCgpOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAoV0tDb250
ZW50TW9kZSllZmZlY3RpdmVDb250ZW50TW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDkzNDA3MGUzZGU0
NDk4MmY1NzJiZDVhMTg4ZDEwY2I0OWNmNzIxMWYuLjkyZWYwZmY0ZTgxNjhmODU3MmQ3Mzg4OGNi
NmEwOTc4NDdiMjJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKIAorLyohIEBhYnN0
cmFjdCBUaGUgZG93bmxvYWQgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50IHRoYXQgY2F1c2VkIHRo
aXMgbmF2aWdhdGlvbi4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxh
YmxlLCBjb3B5KSBOU1N0cmluZyAqZG93bmxvYWRBdHRyaWJ1dGUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogI2lmICFUQVJHRVRfT1NfSVBI
T05FCiAKIC8qISBAYWJzdHJhY3QgVGhlIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVj
dCB3aGVuIHRoZSBuYXZpZ2F0aW9uIHdhcyByZXF1ZXN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCA0
ZDIwYzgwY2VjMjZhN2MyODY5MmFhODZkMzRiNDBhNmI3NTBmMGJlLi5iYmVlOGZlNmJmZWVhOTA4
NzM3NjFlYjllZWRjNjE5YTM2NmVlMzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTExNiw2ICsxMTYs
MTQgQEAgc3RhdGljIFdLU3ludGhldGljQ2xpY2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUo
V2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpTeW50aGUKICAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rp
b24tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6
OlVwZGF0ZUhUVFBCb2R5KTsKIH0KIAorLSAoTlNTdHJpbmcgKilkb3dubG9hZEF0dHJpYnV0ZQor
eworICAgIGF1dG8mIGF0dHJpYnV0ZSA9IF9uYXZpZ2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJp
YnV0ZSgpOworICAgIGlmIChhdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7
CisgICAgcmV0dXJuIGF0dHJpYnV0ZTsKK30KKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAt
IChXS1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhldGljQ2xpY2tUeXBlCiB7CkBAIC0xODcsNyAr
MTk1LDcgQEAgc3RhdGljIFdLU3ludGhldGljQ2xpY2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5
cGUoV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpTeW50aGUKIAogLSAoQk9PTClfc2hvdWxkUGVyZm9y
bURvd25sb2FkCiB7Ci0gICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3Jt
RG93bmxvYWQoKTsKKyAgICByZXR1cm4gIV9uYXZpZ2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJp
YnV0ZSgpLmlzTnVsbCgpOwogfQogCiAtIChCT09MKV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
QWN0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkFjdGlvblByaXZhdGUuaAppbmRleCA4NWZkOTZlNGRkMGZlZmU2YmNmN2ZlZTlkNzhj
NWU5OTJmNWJjMzcyLi41M2NjNWE5N2M3ZWE5MjU0YTMyNTA0YTRkZTY0ZjZjM2ZmM2U1YTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
QWN0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbGlja1R5cGUpIHsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfY2FuSGFuZGxlUmVxdWVzdDsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIF9zaG91bGRPcGVuQXBwTGlua3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xMSksIGlvcyg5LjApKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBf
c2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3Mo
MTMuMCkpOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRQZXJm
b3JtRG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiZG93bmxvYWRB
dHRyaWJ1dGUiLCBtYWNvcygxMC4xNSwgV0tfTUFDX1RCQSksIGlvcygxMy4wLCBXS19JT1NfVEJB
KSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkV4
dGVybmFsVVJMcyBXS19BUElfREVQUkVDQVRFRCgidXNlIF9zaG91bGRPcGVuRXh0ZXJuYWxTY2hl
bWVzIGFuZCBfc2hvdWxkT3BlbkFwcExpbmtzIiwgbWFjb3MoMTAuMTEsIDEwLjExKSwgaW9zKDku
MCwgOS4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKaW5kZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFi
ZTM1MTBlYjg4NGEwNTg3OC4uMTY4Yjc5ZWNlMDY4ZjhiY2NmYTZjYWIwYzAxZmU4MWUzZTZiMjU4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdh
dGlvbkRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkRlbGVnYXRlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIAorQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNs
YXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAg
LTQwLDIwICs0MSwyNCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogIHdlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29u
c3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0
aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyAgICBBbGxvdyB0
aGUgbmF2aWdhdGlvbiB0byBjb250aW51ZS4KKyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QmVjb21lRG93bmxvYWQgICAgVHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxv
YWQuCiAgKi8KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSkgewogICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUNhbmNlbCwKICAgICBXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvdywKKyAgICBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNv
bWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAv
KiEgQGVudW0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kKICBAYWJzdHJhY3QgVGhlIHBvbGlj
eSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9uIGhhbmRsZXIgZnJvbSB0aGUgd2ViVmlldzpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2Qu
CiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRo
ZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93
ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBjb25zdGFudCBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4gdGhlIG5hdmlnYXRpb24g
aW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2Fu
Y2VsLAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3csCisgICAgV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQSBjbGFzcyBjb25mb3JtaW5nIHRvIHRoZSBXS05hdmln
YXRpb25EZWxlZ2F0ZSBwcm90b2NvbCBjYW4gcHJvdmlkZQpAQCAtMTY0LDYgKzE2OSwyMiBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewog
ICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxk
QWxsb3dEZXByZWNhdGVkVExTOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyoKKyBA
YWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29t
ZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRoZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhl
IGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9uQWN0aW9uIFRoZSBhY3Rpb24gdGhhdCBpcyBi
ZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxv
YWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93
bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIg
dXNpbmcgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0g
d2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0g
bmF2aWdhdGlvblJlc3BvbnNlIFRoZSByZXNwb25zZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRv
IGEgZG93bmxvYWQuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyovCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmln
YXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tE
b3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMy
YTE1M2ViMTViNS4uOTkxM2QxNmMwYTk3NjA0OTk0NjRjYzQzZWJhM2U0ZjE5ZTdkMGQxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaApAQCAtNTgsMTEgKzU4LDExIEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpIHsKICAgICBf
V0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdub3JlLAogfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOwotc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlp
bmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlv
blBvbGljeURvd25sb2FkICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCIs
IG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsK
K3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRo
b3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93ICsgMik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExp
bmsgKyAxKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMg
Y29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19N
QUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBX
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCkBAIC04
OCw2ICs4OCw4IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkIChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWROZWdvdGlhdGVNb2Rlcm5UTFM6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfd2Vi
Vmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAvLyBJ
dGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRlZCB3aXRob3V0IG5hdmlnYXRpb24uCiAtICh2
b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXcg
d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRl
bSAqKWl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvblByaXZhdGUuaAppbmRleCA5MTU4OWQxMmE0MjM3Y2Q3M2JiNzNlZDVjOTdi
NjFjMTdhMWYxMzljLi5hN2E3ZDkyOWRmZjg3MDQzZTdmM2E2MDNmNjhkZTQwN2QwZDMwYWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmln
YXRpb25Qcml2YXRlLmgKQEAgLTI3LDQgKzI3LDUgQEAKIAogQGludGVyZmFjZSBXS05hdmlnYXRp
b24gKFdLUHJpdmF0ZSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNV
UkxSZXF1ZXN0ICpfcmVxdWVzdDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBfd2FzVXNlckluaXRpYXRlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA0ZjM2ZTIzMjY0MzcxMDIzZDM4ZjI4Mzgx
MDc1MWJjYmE5OTg1OWRjLi5mYWUzMWYzMWI3OTkxMjFkMGUxNzM3Y2QwNzIxMDg1NDk4MDIyMDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbC5tbQpAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpbXBvcnQgIkF1dG9tYXRpb25DbGllbnQu
aCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBvcnQgIkRvd25sb2FkTWFuYWdlci5oIgog
I2ltcG9ydCAiTGVnYWN5RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJTYW5kYm94VXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAiV0tEb3dubG9hZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFsLmgiCkBAIC00ODEsMTIg
KzQ4MywxMiBAQCBzdGF0aWMgV0tQcm9jZXNzUG9vbCAqc2hhcmVkUHJvY2Vzc1Bvb2w7CiAKIC0g
KF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2lu
YXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0dXJuIHdyYXBwZXIo
X3Byb2Nlc3NQb29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dl
YlZpZXcgX3BhZ2VdLCByZXF1ZXN0KSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+
X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVzdCkpXTsKIH0KIAogLSAo
X1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0
YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6
KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcK
IHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRh
U3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3Jl
YXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgpKTsKKyAgICByZXR1cm4g
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5y
ZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3Bh
Z2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBw
YXRoLCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0OjpObykpXTsKIH0KIAogLSAodm9pZClf
Z2V0QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlv
bkhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggN2M0ZmU0Y2Q4ZmI5YWZmYThjYTAzMTliOTQ4
OTNjMWY0ZTY4OTY2Yy4uZjI0OTgwYzljZmY2N2VjZDNiZWRlNzNmZTI0MDA4MThhYTUwYzA0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTYyLDcgKzYyLDcgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1Z2luTG9hZENsaWVudFBvbGljaWVz
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNlbmRpZgogCi1AcHJvcGVydHkgKG5v
bmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rvd25s
b2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRl
PiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJX
S0Rvd25sb2FkLmRvd25sb2FkRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlv
cyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9
X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9uRGVsZWdhdGU+IF9hdXRv
bWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlvcygxMC4wKSk7
CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBAIC04Myw4ICs4Myw5IEBACiAKIC0gKHZvaWQpX3Jl
Z2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdDooTlNTdHJpbmcgKilz
Y2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKLS0gKF9X
S0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3
ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRp
bmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vi
c2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0
aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCistIChfV0tEb3dubG9hZCAqKV9kb3dubG9h
ZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFTdG9yZTooV0tX
ZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS1dlYlZpZXcg
X2Rvd25sb2FkUmVxdWVzdCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tf
SU9TX1RCQSkpOworLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJW
aWV3Ll9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5kbGVyOiIsIG1hY29zKDEw
LjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHku
IFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJl
IHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VycyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRleCA3NjFhMWRhMGY2NWIzNjk5N2JhYjQ5ZTY2YzJj
MjhlOWZmMGIwYzhjLi42Y2M4YTc0ODEwODY1NjM1OGMyZGU4ODJkNjc0ZjFmMzkzMzkxMTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0z
OCw2ICszOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xhc3MgV0tCYWNrRm9yd2Fy
ZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOwogQGNsYXNzIFdLQ29udGVudFdv
cmxkOworQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGaW5kQ29uZmlndXJhdGlvbjsKIEBj
bGFzcyBXS0ZpbmRSZXN1bHQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CkBAIC00NTAsNiArNDUxLDE4
IEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUg
dXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAgKi8KICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVt
ZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlv
cygxMS4wKSk7CiAKKy8qIEBhYnN0cmFjdCBCZWdpbnMgYSBkb3dubG9hZCBpbiB0aGUgY29udGV4
dCBvZiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCB3ZWJwYWdlIGFzIGlmIHRoZSBXS05hdmlnYXRp
b25EZWxlZ2F0ZSB0dXJuZWQgYSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZCBpbnN0ZWFkCisg
QHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3Qgc3BlY2lmeWluZyB0aGUgVVJMIHRvIGRvd25sb2Fk
LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3du
bG9hZCBoYXMgc3RhcnRlZC4KKyAqLworLSAodm9pZClzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6
KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3du
bG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiBAYWJzdHJhY3QgUmVzdW1lcyBhIGRvd25sb2Fk
IHRoYXQgZmFpbGVkIG9yIHdhcyBjYW5jZWxsZWQuCisgQHBhcmFtIHJlc3VtZURhdGEgRGF0YSBm
cm9tIGEgV0tEb3dubG9hZERlbGVnYXRlJ3MgZGlkRmFpbFdpdGhFcnJvciBvciBhIFdLRG93bmxv
YWQncyBjYW5jZWwgY29tcGxldGlvbkhhbmRsZXIuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVy
IEEgYmxvY2sgY2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZXN1bWVkLgorICovCistICh2
b2lkKXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiBAYWJz
dHJhY3QgVGhlIG1lZGlhIHR5cGUgZm9yIHRoZSBXS1dlYlZpZXcKICBAZGlzY3Vzc2lvbiBUaGUg
dmFsdWUgb2YgbWVkaWFUeXBlIHdpbGwgb3ZlcnJpZGUgdGhlIG5vcm1hbCB2YWx1ZSBvZiB0aGUg
Q1NTIG1lZGlhIHByb3BlcnR5LgogIFNldHRpbmcgdGhlIHZhbHVlIHRvIG5pbCB3aWxsIHJlc3Rv
cmUgdGhlIG5vcm1hbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCmluZGV4IDJkZDdlYTVlYTljMTEzOTdiNzI3NDgxODI3NmE3NDhlMzBk
OWM2NzQuLjFiNDQ0NGE1NjIyN2E4MjM3ZjRhYWQ5MDIyZjUzYzJhMmFhMjNjZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTgsOSAr
NTgsMTEgQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRl
bnRXb3JsZEludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLRXJyb3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGaW5kQ29uZmlndXJhdGlvbi5oIgog
I2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRnJhbWVJbmZvUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJX
S0xheW91dE1vZGUuaCIKICNpbXBvcnQgIldLTWVkaWFQbGF5YmFja1N0YXRlLmgiCkBAIC03MDgs
NiArNzEwLDQyIEBAIHN0YXRpYyB2b2lkIGhhcmR3YXJlS2V5Ym9hcmRBdmFpbGFiaWxpdHlDaGFu
Z2VkQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsCiAgICAgcmV0dXJuIHdyYXBwZXIo
X3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMp
LCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2RpbmdOYW1lLCBiYXNlVVJM
LmFic29sdXRlU3RyaW5nKSk7CiB9CiAKKy0gKHZvaWQpc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93
bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+ZG93bmxvYWRSZXF1ZXN0
KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCistICh2b2lk
KXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1
dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZv
clJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgIFt1bmFyY2hpdmVy
IHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhj
ZXB0aW9uXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xh
c3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10s
IFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmls
XSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICBbdW5hcmNoaXZl
ciBmaW5pc2hEZWNvZGluZ107CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisKKyAgICBpZiAo
IXBhdGgpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2Vw
dGlvbiBmb3JtYXQ6QCJJbnZhbGlkIHJlc3VtZSBkYXRhIl07CisKKyNpZiBVU0UoTEVHQUNZX0NG
TkVUV09SS19ET1dOTE9BRFMpCisgICAgLy8gTW9qYXZlIENGTmV0d29yayBmYWlscyB0byByZXN1
bWUgYSBkb3dubG9hZCBpZiB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3QuCisgICAgLy8g
SWYgc29tZW9uZSBoYXMgcmVtb3ZlZCB0aGUgZGVzdGluYXRpb24gZmlsZSwgbWFrZSBhbiBlbXB0
eSBmaWxlIGF0IHRoYXQgbG9jYXRpb24uCisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVs
dE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6cGF0aF0pCisgICAgICAgIFtbTlNEYXRhIGRhdGFd
IHdyaXRlVG9GaWxlOnBhdGggYXRvbWljYWxseTpZRVNdOworI2VuZGlmCisKKyAgICBfcGFnZS0+
cmVzdW1lRG93bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRh
KSwgcGF0aCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5k
bGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3dubG9hZCkKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cit9CisKIC0gKFdLTmF2
aWdhdGlvbiAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0g
KilpdGVtCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0o
aXRlbS5faXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdkYWRlZTY0OTNlZjc2M2Ex
NjE4MDc1ZDBkYy4uNTBhNjJiNTczMjQwOWVlZGFlZDc4MGFiZWY3YTM4NzlmNzQ4YjhmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIs
IF9XS1JlY3RFZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxl
OworQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJw
YWdlUHJlZmVyZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggYjRkODI2
YjlhNzI0NzhmZDBjMDNlNmI0YjAxODlmMDcyOTljZWM3My4uZWE4MjAzMmExY2RhY2E2YjQ2ZTli
YzFmY2EwNWQ4ZGU5MDA0NWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogCiBAY2xhc3MgV0tGcmFt
ZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKLVdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9X
SVRIX1JFUExBQ0VNRU5UKCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBp
b3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLRG93bmxvYWQgOiBOU09iamVjdCA8
TlNDb3B5aW5nPgogCi0tICh2b2lkKWNhbmNlbDsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdp
dGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpY2FuY2VsOwogLSAodm9p
ZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KaW5kZXggZGZlZmUwZjE2NmE1NDlkZGU2NWJlMTAyMmVi
NWMxZmZkZWNjMmRiYy4uZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMyZTA4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5t
bQpAQCAtMjgsNjYgKzI4LDg3IEBACiAKICNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAj
aW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAj
aW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAKLUBpbXBsZW1lbnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJOjpPYmplY3RTdG9yYWdl
PFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfQkVHSU4KK3N0YXRpYyBOU01hcFRhYmxlPFdLRG93bmxvYWQgKiwgX1dLRG93bmxv
YWQgKj4gKmRvd25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFJldGFpblB0cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQoKSkKKyAg
ICAgICAgdGFibGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRhYmxl
XTsKKyAgICByZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxl
bWVudGF0aW9ucyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9XQVJOSU5H
U19FTkQKIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9h
ZDI6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJv
eHkoKTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICBfZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4gc2VsZjsKK30KIAotICAg
IFtzdXBlciBkZWFsbG9jXTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDoo
V0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVyID0g
W2Rvd25sb2FkV3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9hZF0pCisgICAgICAgIHJl
dHVybiB3cmFwcGVyOworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxvYWQg
YWxsb2NdIGluaXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07CisgICAgW2Rv
d25sb2FkV3JhcHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07Cisg
ICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7Ci0gICAgX2Rvd25sb2Fk
LT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7CisgICAg
X2Rvd25sb2FkLT5fZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxv
YWQtPl9kb3dubG9hZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVn
YWN5RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0KIAogLSAodm9pZClwdWJs
aXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93bmxvYWQtPnB1Ymxpc2hQ
cm9ncmVzcyhVUkwpOworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3Mo
VVJMKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfZG93
bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xp
Y3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9h
ZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2Vi
VmlldwogewotICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9yaWdp
bmF0aW5nUGFnZSgpKQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQt
Pl9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQ
YWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0
dXJuIG5pbDsKIH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgogewotICAg
IHJldHVybiBjcmVhdGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0
byYgdXJsKSAtPiBOU1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQt
Pl9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAqIHsK
ICAgICAgICAgcmV0dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09M
KXdhc1VzZXJJbml0aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT53YXNVc2VySW5pdGlh
dGVkKCk7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVk
KCk7CiB9CiAKIC0gKE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3
cmFwcGVyKF9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKF9kb3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwogfQog
CiAtIChXS0ZyYW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAgICByZXR1cm4gV2ViS2l0
Ojp3cmFwcGVyKCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3
cmFwcGVyKCZfZG93bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwogfQogCiAtIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3IEBACiAKIC0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQ7CisgICAgcmV0dXJu
ICpfZG93bmxvYWQtPl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggYTgz
ZjkwMjliNWM3M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFl
M2I5NzM4N2Y0NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBA
CiAKIEBwcm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRT
dGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVy
bCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VS
TFJlc3BvbnNlICopcmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlw
ZTooTlNTdHJpbmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBp
b3MoMTEuMykpOwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMu
NCksIGlvcyg4LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9h
ZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWRJbnRlcm5hbC5oCmluZGV4IGUxMjkwYjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDkyZDQw
MTIuLmNhOTRjMjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJu
YWwuaApAQCAtMjUsMTYgKzI1LDEyIEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAKLSNp
bXBvcnQgIkRvd25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0cnVj
dCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3Mg
PSBfV0tEb3dubG9hZDsKLX07CitAY2xhc3MgV0tEb3dubG9hZDsKIAorQGludGVyZmFjZSBfV0tE
b3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgUmV0YWluUHRyPFdLRG93bmxv
YWQ+IF9kb3dubG9hZDsKIH0KLQotQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+
CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRhMWZj
OGNkYWZlOTIxMTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxv
YWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktp
dERvd25sb2FkQ2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBw
cml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkg
b3ZlcnJpZGUKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBk
b3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFBy
b3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsKQEAg
LTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3RpbmF0
aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRG
YWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2Vi
Q29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAo
d2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmluZGV4
IDc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0ODg0
ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEyIEBA
IHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50
Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBsZWdh
Y3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0
X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5p
c2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFp
bChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0
YSopIGZpbmFsOwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5h
bDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggM2Qz
MWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjA3NTYyYWVlODhlNzY2OWY4
ZDkxODZmZGQ4MjRiNjM1OTU1YzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNp
bXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlN5
c3RlbVByZXZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tO
U1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtNDcsNiArNDgsOCBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KKwogTGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxf
V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUp
CiB7CkBAIC03Niw3ICs3OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lz
dGVtUHJldmlld0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5kaWYK
IAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0KERv
d25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQog
ICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTkw
LDcgKzkzLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2Rz
LmRvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0
OndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRE
aWRTdGFydDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlk
UmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgp
XTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdp
dGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgYnl0
ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEsOSBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50
NjRfdAogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0
ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRlRGF0
YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwog
fQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyArMTM0LDcgQEAg
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFr
ZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9k
b3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRs
ZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRlIF9kb3dubG9h
ZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdl
dCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
CkBAIC0xNjcsNyArMTcwLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRl
RGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY28KICNlbmRpZgogCiAg
ICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCi0g
ICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENy
ZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpXSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQpAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nl
c3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
XTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAK
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpAQCAtMjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUg
PSBOTzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAg
ICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Zmls
ZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgTlNTdHJpbmcg
KmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3Jp
dGVdOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDog
QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFr
ZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3Zlcndy
aXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVu
YW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25I
YW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0
b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBs
ZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2LDEwIEBAIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gp
Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAK
LXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKQogewogI2lmIFVT
RShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdE
b3dubG9hZCgpKSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjoK
ICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFp
bFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCkBAIC0yNjMsMTMgKzI2NiwxMyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdh
Y3lEaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3Ry
aW5nKCldXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCku
c3RyaW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwog
fQpAQCAtMzAxLDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VB
Y3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB9CiAjZW5kaWYK
IAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
aAppbmRleCAwNDJlNzg4NTQxMWQ0MTc3ZmNlOWM2NzVlZDhkNDhmMTJiYjNkNGQ2Li45Njc4Mzdh
ZmUxNGJkODM1NGM1NmQ2YmVmZTVkMjkxMzc2YWI4N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2LDYgKzEyNiwxMCBAQCBw
cml2YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29u
c3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVy
cmlkZTsKIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChX
ZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mLCBEb3dubG9hZFByb3h5JikgZmlu
YWw7CisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3dubG9hZFByb3h5JikgZmlu
YWw7CisgICAgICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQYWdlUHJv
eHkmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAg
ICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzUsNiArMjM5
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJl
c3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5y
ZXNwb25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3
IDogMTsKKyAgICAgICAgYm9vbCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgOiAx
OworICAgICAgICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkIDogMTsK
KyAgICAgICAgYm9vbCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgICAgICBib29s
IHdlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdp
dGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCBlN2NiMDgzYzRmZjJi
MzM5MDkzZDcxOTQ4M2I1OTRjODA1ZmQ1NGVjLi5iMzhmY2ZmZTIyZDdiY2I5OWI4ZjBlMGY3MGZl
OWY2ZGJmMmNkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRp
b25Db29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93
bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5o
IgpAQCAtMTg3LDYgKzE4OCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9u
RGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmln
YXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZl
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01h
c3RlcktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uQWN0aW9uOmRp
ZEJlY29tZURvd25sb2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25s
b2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dl
YlZpZXc6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlv
bkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxs
RW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5h
dmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwog
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdl
c3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6
d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC00NzIsMTEgKzQ3Niwx
MCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJOjpVUkxSZXF1ZXN0Ojpj
cmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICBpZiAoW05T
VVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVzdF0gfHwgd2ViUGFnZS0+
dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKSkgewot
ICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxv
YWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25sb2FkKCk7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRX
ZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24g
Y2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFn
ZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQor
ICAgICAgICAgICAgICAgIHx8IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJp
bmc6QCJibG9iIl0pIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKGRlZmF1bHRXZWJz
aXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KIApAQCAtNTU1LDkgKzU1OCwxMiBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19F
TkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiAg
ICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkOgorICAgICAgICAg
ICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExp
c3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBf
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICAgICAg
ICAgICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCB3ZWJQ
YWdlUHJveHksIFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgd2Vic2l0
ZVBvbGljaWVzID0gV1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAoYm9vbCBvcHRpbWl6ZWRM
b2FkKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQpIHsKQEAgLTY3MSw3ICs2
NzcsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZwogICAgICAgICAgICAgbG9jYWxMaXN0ZW5l
ci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIF9XS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkOgorICAgICAgICBjYXNlIFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CiAgICAgICAgICAgICBsb2NhbExpc3Rl
bmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwODUs
NiArMTA5MSw0MiBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdh
dGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAgIHJldHVybiBBUEk6OlN0
cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhr
ZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogfQogCit2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdh
dGlvbkFjdGlvbiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRp
ZEJlY29tZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOwor
ICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbbmF2
aWdhdGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IG5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBkaWRCZWNvbWVEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJQYWdl
UHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlvblJlc3BvbnNlLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25h
dmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmln
YXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0
ZS5nZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uUmVz
cG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29tZURvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWQpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQ
cm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpICBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQppbmRleCAzZjc3Y2M5OWY2YzhmYTlmYzI5MDg1YmM4NWUwOGIyN2VmNjAyNWNm
Li41OTk4Y2U1MWE1Nzc5NGExOWRjYTlmYmFiZTNlNzI5ZTRhNzcwNDM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQpA
QCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNz
UHJveHkuaCIKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKICNpbXBvcnQg
IkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBv
cnQgIk9iakNPYmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmViMzNlZDY3NmM5YzQ0NGE0
ZDcyYTYwMWY0Y2QwNzdmMzYuLmRjMTAxYjY2Y2IwY2UzZGFlZDhjYmIzMTFmNzcyMjQzZWEzODkx
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJveHk6OkRvd25sb2FkUHJv
eHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vic2l0ZURhdGFTdG9yCiB7
CiB9CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBkZWZhdWx0OworRG93bmxv
YWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2sp
CisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30KIAogc3RhdGljIFJlZlB0
cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQog
ewpAQCAtMTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkU3RhcnQoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlCiAgICAgaWYgKG1f
cmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWluLmxhc3QoKSAhPSByZXF1
ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5kKHJlcXVlc3QudXJsKCkp
OwogCi0gICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBpZiAobV9kaWRTdGFydENh
bGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7CisgICAgbV9jbGllbnQt
PmxlZ2FjeURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCkBAIC0xNDUsOCArMTUx
LDE2IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVE
YXRhKCp0aGlzLCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlKTsKIH0KIAotdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy8jYXMtYS1kb3dubG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhl
IENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBz
dWdnZXN0ZWQgZmlsZW5hbWUgZnJvbSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIGlmIChy
ZXNwb25zZS5pc0F0dGFjaG1lbnRXaXRoRmlsZW5hbWUoKSB8fCAoc3VnZ2VzdGVkRmlsZW5hbWUu
aXNFbXB0eSgpICYmIG1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIGVsc2Ug
aWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3VnZ2VzdGVkRmls
ZW5hbWUgPSBtX3N1Z2dlc3RlZEZpbGVuYW1lOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlN
RVR5cGVSZWdpc3RyeTo6YXBwZW5kRmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZp
bGVuYW1lLCByZXNwb25zZS5taW1lVHlwZSgpKTsKKwogICAgIG1fY2xpZW50LT5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChBbGxvd092
ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAg
ICAgICAgIGlmICghZGVzdGluYXRpb24uaXNOdWxsKCkpCkBAIC0xNzMsMTEgKzE4NywxNiBAQCB2
b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAgIG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0
ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3Ip
OworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRh
LmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNhdXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVj
dCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxvYWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVk
KCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFByb3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93
bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAgIG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2Ez
NWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uMzE4OTVmNTY1OTk5NzllZjMyY2RjMTZiYjg5NDM0NTBk
MTVhOTFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCkBAIC0xMDIsMTIgKzEwMiw5IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1l
SW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQ
STo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0K
LXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwg
V2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0K
LSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRD
bGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRD
YWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFj
aykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZvaWQg
c2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkgeyBt
X3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7IH0KIAogICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTExOCw3ICsxMTUs
MTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7CisgICAgdm9pZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4m
Jik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5
TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5
Kik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICBE
b3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYnNpdGVE
YXRhU3RvcmU+IG1fZGF0YVN0b3JlOwpAQCAtMTM0LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFVSTD4gbV9yZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVk
IHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzQ4N2Q0ZTM0
NGUxOGEyMDIzZDI5YmVjNDYwY2FjYWUwNTUyNTdlZC4uMDQ2YTZiNTAyZjBmNmE0Nzc4OWRkOTE0
YWYxNGZmNjFlZTE2YzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1h
cC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1l
SW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQog
I2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMGY4NzQyODk5MGRlMDAxMzQzNjcy
ZTI0OTQ4OTVhZDEzZDQzMzAyOC4uZjlhNDljNzU3N2VmY2VkYTM4NGIyYzg3Y2FmOGY4OTE4ZTVl
ZmRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2
ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5j
bHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5
LmgiCkBAIC0zMTMwLDcgKzMxMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNl
V29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogI2VuZGlm
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24s
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBw
b2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRp
b25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVm
UHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYgc2VuZGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0
aW9uSUQ6ICVsbHUsIHBvbGljeUFjdGlvbjogJXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQo
KSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVk
KXBvbGljeUFjdGlvbik7CiAKQEAgLTMxNzAsNyArMzE3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBCiAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFjdGlvbjo6RG93bmxvYWQ7CiAK
ICAgICBpZiAocG9saWN5QWN0aW9uICE9IFBvbGljeUFjdGlvbjo6VXNlIHx8ICFmcmFtZS5pc01h
aW5GcmFtZSgpIHx8ICFuYXZpZ2F0aW9uKSB7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShz
ZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5h
dmlnYXRpb24sIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBX
VEZNb3ZlKHNlbmRlcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTgzLDExICsz
MTg0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5h
dmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1h
a2VSZWYoKm5hdmlnYXRpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVm
KCksCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRo
aXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwK
ICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlv
blN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8g
cHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhh
c05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RG
TW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xp
Y2llcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzIyMywxMSArMzIyNCwxMSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNo
b3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNl
bmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nl
c3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5h
dmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9s
aWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlciksIFdURk1v
dmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRp
bnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFudDxS
ZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4m
JiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYm
IHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJ
bk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAg
IHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6
Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMyNDMsNiArMzI0NCwxOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2Fk
KSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBk
b3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1f
d2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMs
IG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJ
bmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9u
c2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlKV0gKGF1dG8qIGRvd25sb2Fk
UHJveHkpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIWRvd25sb2FkUHJveHkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihuYXZpZ2F0
aW9uQWN0aW9uT3JSZXNwb25zZSwKKyAgICAgICAgICAgICAgICBbJl0gKGNvbnN0IFJlZjxBUEk6
Ok5hdmlnYXRpb25SZXNwb25zZT4mIHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghcmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICBkb3dubG9hZFByb3h5LT5zZXRTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZS0+
ZG93bmxvYWRBdHRyaWJ1dGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNs
aWVudC0+bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIHJlc3BvbnNl
LmdldCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgICAgICAgICAgICAgfSwgWyZdIChjb25zdCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYgYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAg
IG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKCp0
aGlzLCBhY3Rpb24uZ2V0KCksICpkb3dubG9hZFByb3h5KTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICApOworICAgICAgICB9KTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAg
ICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNl
ckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2
aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC01MDk1LDEwICs1MTA5LDI5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgbmF2aWdhdGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFt
ZUluZm8ob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKTsKICAgICBuYXZpZ2F0aW9uLT5zZXREZXN0
aW5hdGlvbkZyYW1lU2VjdXJpdHlPcmlnaW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKIAor
ICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZy
YW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKKyAgICBXZWJGcmFtZVByb3h5KiBv
cmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9j
ZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0
cjsKKyAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShGcmFtZUluZm9EYXRhIHsgZnJhbWVJbmZvIH0sIHRoaXMpOworICAgIFJlZlB0cjxBUEk6OkZy
YW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGlu
Z0ZyYW1lID09ICZmcmFtZSkKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25G
cmFtZUluZm8uY29weVJlZigpOworICAgIGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgIGF1
dG8qIG9yaWdpbmF0aW5nUGFnZSA9IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFn
ZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cjsKKyAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSksIG9yaWdpbmF0aW5nUGFnZSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uCisgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpCisgICAg
ICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVl
c3QudXJsKCkuaG9zdCgpKQorICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0
aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CisKKyAgICBh
dXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAg
YXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGlu
YXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVl
c3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1
c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKKwogI2lmIEVOQUJM
RShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRl
clVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4g
cmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAg
ICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwg
bV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RG
TW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRp
b25JRCksIG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVy
KSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUxMTAsMTEgKzUxNDMsMTEgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXMKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2hvdWxkRXhw
ZWN0QXBwQm91bmREb21haW5SZXN1bHQgPSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3Vs
dDo6WWVzOwogI2VuZGlmCi0gICAgCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUu
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwg
bmF2aWdhdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5zZm9y
bUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxT
YWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKworICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJh
bWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rp
b24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dz
aW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBw
b2xpY3lBY3Rpb246ICV1LCBzYWZlQnJvd3NpbmdXYXJuaW5nOiAlZCwgaXNBcHBCb3VuZERvbWFp
bjogJWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24sICEhc2FmZUJy
b3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWluKTsKIAotICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZN
b3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBv
bGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBu
YXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGZyYW1lLT5p
c01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwb2xpY2llcykgewogICAgICAg
ICAgICAgICAgICAgICBpZiAoYXV0byogZGVmYXVsdFBvbGljaWVzID0gbV9jb25maWd1cmF0aW9u
LT5kZWZhdWx0V2Vic2l0ZVBvbGljaWVzKCkpCkBAIC01MTIzLDcgKzUxNTYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2NlcwogICAgICAgICAgICAgICAgIGlmIChwb2xpY2llcykKICAgICAgICAg
ICAgICAgICAgICAgbmF2aWdhdGlvbi0+c2V0RWZmZWN0aXZlQ29udGVudE1vZGUoZWZmZWN0aXZl
Q29udGVudE1vZGVBZnRlckFkanVzdGluZ1BvbGljaWVzKCpwb2xpY2llcywgbmF2aWdhdGlvbi0+
Y3VycmVudFJlcXVlc3QoKSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdU
Rk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBvbGlj
aWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgfTsKIAogI2lmIEVOQUJMRShBUFBfQk9V
TkRfRE9NQUlOUykKQEAgLTUxOTAsMTAgKzUyMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
cwogICAgIGF1dG8gcHJvdG9jb2wgPSBzaG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID8gZnJh
bWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sIDogcmVxdWVzdC51cmwoKS5wcm90b2NvbCgp
OwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGhvc3Qu
dG9TdHJpbmcoKSwgcHJvdG9jb2wudG9TdHJpbmcoKSwgbGlzdGVuZXIpOwogI2VuZGlmCi0gICAg
QVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0aW9uID0gZnJhbWUuaXNNYWluRnJhbWUo
KSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwotICAgIFdlYkZyYW1lUHJveHkqIG9yaWdp
bmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3Mt
PndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkgOiBudWxscHRyOwog
Ci0gICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVk
QWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byB3YXNQb3Rl
bnRpYWxseUluaXRpYXRlZEJ5VXNlciA9IG5hdmlnYXRpb24tPmlzTG9hZGVkV2l0aE5hdmlnYXRp
b25TaGFyZWQoKSB8fCB1c2VySW5pdGlhdGVkQWN0aXZpdHk7CiAgICAgaWYgKCFzZXNzaW9uSUQo
KS5pc0VwaGVtZXJhbCgpKQpAQCAtNTIwMSwyNCArNTIzMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzCiAjZW5kaWYKIAogICAgIGlmIChtX3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xp
Y3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwg
V1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFs
UmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAg
ICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMs
ICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwog
ICAgIGVsc2UgewotICAgICAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFt
ZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOwotICAgICAgICBSZWZQdHI8
QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKLSAgICAgICAgaWYgKCFmcm9tQVBJICYm
IG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOwotICAgICAgICBlbHNlIGlmICghZnJv
bUFQSSkgewotICAgICAgICAgICAgYXV0byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQ
YWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOwot
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZN
b3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNz
QXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KLSAgICAgICAgICAgICYmIGRl
c3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpCi0gICAgICAgICAgICAmJiAobV9tYWlu
RnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3Qo
KSkKLSAgICAgICAgICAgICYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlICE9
IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9yd2FyZDsKLQotICAgICAgICBhdXRvIG5h
dmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZy
YW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJl
cXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKLQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAg
ICAgaWYgKG1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb24gfHwgbV9zaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluQWxsTmF2aWdh
dGlvblBvbGljeURlY2lzaW9uKQogICAgICAgICAgICAgbmF2aWdhdGlvbkFjdGlvbi0+dW5zZXRT
aG91bGRQZXJmb3JtU09BdXRob3JpemF0aW9uKCk7CkBAIC01MzIwLDcgKzUzMzQsMTUgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUp
OwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAKLSAg
ICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3Rl
bmVySUQsIGZyYW1lSURdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQ
b2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2Fy
bmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291
cmNlRnJhbWVJbmZvOworICAgIGlmIChmcmFtZSkKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0g
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOworCisgICAg
YXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rp
dml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Cisg
ICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+
dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOworICAgIGF1dG8gbmF2aWdhdGlv
bkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwg
V1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVz
ZXJJbml0aWF0ZWRBY3Rpdml0eSkpOworICAgIAorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVm
KGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlv
bkFjdGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vi
c2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VS
VChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAh
c2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01MzI5LDI0ICs1MzUxLDEzIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsK
ICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNh
ZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpO
bykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQotICAgICAgICBtX3BvbGljeUNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
LSAgICBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUlu
Zm87Ci0gICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQ
STo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKLQotICAgICAg
ICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFj
dGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsK
LSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5G
cmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpOwotICAgICAgICBhdXRv
IG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBm
cmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKLQorICAgICAgICBtX3BvbGljeUNsaWVu
dC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRp
b25BY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5lciksIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOworICAgIGVsc2UKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSk7Ci0KLSAgICB9Ci0gICAgICAgIAogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LApAQCAtNTM2Nyw4ICs1Mzc4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVT
U0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVD
S19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25z
ZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2Fu
U2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0g
bWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlz
dGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nl
c3NdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
UmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pIG11dGFibGUgeworICAgICAgICBwcm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNh
ZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFi
bGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyog
aXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VX
aXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dh
cm5pbmcpOwpAQCAtNTM3NywxNCArNTM5MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAog
ICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFn
ZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5k
ZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92
ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBT
aG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lD
bGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgq
dGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3Zl
KGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNw
b25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwg
Y2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhp
cywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vz
cy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwot
ICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNjAyMyw2ICs2MDM0LDE4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAg
cGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5
Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNz
KCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMs
IHJlc3VtZURhdGEsIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7
IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVu
dFNpemUoc2l6ZSk7CkBAIC02NTkyLDE4ICs2NjE1LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVt
KQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykgewotICAgICAgICBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBV
UkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKLSAgICAgICAgcmV0dXJuOyAgICAKLSAgICB9Cisg
ICAgc3RydWN0IERvd25sb2FkSW5mbyB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICB9OworICAgIE9wdGlvbmFsPERvd25sb2FkSW5m
bz4gZG93bmxvYWRJbmZvOworICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRl
bVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7IG1fYWN0
aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRl
SW1hZ2VVUkwsIHsgfSB9fTsKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0
ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVzdFJlc3VsdCA9
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0
b3JlLCB0aGlzLCBVUkwoVVJMKCksIGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKSwgaGl0
VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTWVk
aWFUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKG1f
d2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgZG93bmxvYWRJbmZvID0ge3sgaGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwsIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1lIH19OworICAg
IH0KKyAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1l
ZGlhVG9EaXNrKQorICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMLCB7IH0g
fX07CisgICAgaWYgKGRvd25sb2FkSW5mbykgeworICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMs
IFVSTChVUkwoKSwgZG93bmxvYWRJbmZvLT51cmwpLCBkb3dubG9hZEluZm8tPnN1Z2dlc3RlZEZp
bGVuYW1lKTsKKyAgICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkKCp0aGlzLCAqZG93bmxvYWQpOworICAgICAgICB9KTsKICAgICB9CiAgICAgaWYgKGl0ZW0u
YWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7
CiAgICAgICAgIFRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
IVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggODc5ZjczMmIxMWNiMTIz
OTczODY1OGU4ZTU4ZmI4N2M1MDM0ZjJiOC4uOTIzMjNlNjcxNDZhZDE5Y2UwZjQyNmVjMGRlZmUz
ZmE2ZDlmYjQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEx
NjQsOCArMTE2NCw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVy
OwogICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA6IGJvb2wgeyBO
bywgWWVzIH07Ci0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7Ci0gICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CisgICAgdm9pZCBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBWYXJpYW50PFJlZjxBUEk6Ok5h
dmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+PiYmLCBSZWY8UG9s
aWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
PSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzOjpObyk7CisgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJv
eHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNl
bmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwogCkBAIC0xMjc5LDYgKzEyNzksOCBAQCBw
dWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMo
V2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+
JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcm
IHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDM2YjJkNmY3YTc1YTU2Yjg1NGM2OWU2MjBhYjc5OGY3NmU2MGE1MTYuLjBkY2NjYTY4NDI5MTMz
OGRjOWNlMmI0YWIwMjZiNWUxMTllODAyMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNDgsNyArMTE0OCw3IEBAIERvd25sb2FkUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBh
Z2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKLURvd25sb2FkUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJl
c3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewogICAg
IGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgUmVz
b3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwogCkBAIC0xMTU2LDcgKzExNTYs
NyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQogICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgZGF0
YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9h
ZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwg
ZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBw
YXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxvYWREaWRTdGFydCksIDApOwog
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCBhM2MyZGJmOTRmNTVlZjcwYzdlNzY3MDFhZTNmYzE4ODcyNDRk
YzA4Li42NWQ0Zjk4ZjE1MTU2MGQ1NjA0ODVjNWQxNWM5YjdiYzY0ZTA1YjZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTExNiw2ICsxMTYsNyBAQCBpbnQg
d2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwog
I2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBj
bGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIAogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4sIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMjA0LDcgKzIwNSw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYs
IFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotICAgIERvd25s
b2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFT
dG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAKICAg
ICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8QVBJ
OjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNzYxZDgzNTFlZmNiNTYxMTA5YzUzZjAw
ZTUwMDk3MDY2ZTIzYWU3Li5iODk1MmZjMDJlMzQ0YTg2MTkxOGJhOWQ4YjczYWNmZDNlZWI1ZjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIxOCw3ICsyMTgsNiBAQAogCQkxQTQzRTgyQTE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTAxODRENUZD
MTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHRE
b3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDgzMkND
MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDQTFBOUJDNDY1MDA4QjRERkUg
LyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJMUE0ODMyQ0UxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE0ODMyQ0QxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRJ
bnRlcm5hbC5oICovOyB9OwpAQCAtMzMxLDcgKzMzMCw3IEBACiAJCTFBQjdENENBMTI4OEFBQTcw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDODEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eS5oICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9h
ZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMu
aCAqLzsgfTsKLQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENzhCMTI4OENE
OUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxv
YWRSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUMxODQwMDgwOTAwRTlB
RTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBQjhBMUVFMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVEMTg0MDBB
Q0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkgLyog
V0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE4NSw2
ICsxMTg0LDcgQEAKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5
RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLzsgfTsKIAkJNUMyNjk1ODUy
MDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAwNDJGMTIw
MDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyOThEQTAxQzNERjAyMTAwNDcw
QUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9h
ZC5oICovOyB9OworCQk1QzJFQkRGQTI1NjQzODBCMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyRUJE
RjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzM1OUMwRDIxNTQ3MzlGMDA5RTc5
NDggLyogV0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM0NjA5RTcy
MjQzMTdCNDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NjA5RTIyMjQzMEU0QzAwOTk0
M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBf
V0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8qIF9XS0Nv
bnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi87IH07CkBAIC0xODI1LDYgKzE4MjUsOSBA
QAogCQlDRUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRTUEkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRTRBRTJBMUE1RENGNDMwMDAyRjQ5
QiAvKiBVSUtpdFNQSS5oICovOyB9OwogCQlEM0I5NDg0NzExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
UG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi87IH07CiAJCUQz
Qjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQ1MTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsKKwkJREYwQzVGMjgyNTJFQ0I4RTAw
RDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQTI1
MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OworCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBD
NUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmggKi87IH07CiAJCURG
NDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTBFMjNGMjJG
NTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjQ2MkUxMjIzRjMzOEJFMDBFRkYz
NUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tDb250ZW50
V29ybGRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJREY4NENFRTQyNDlBQTI0RDAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGODRDRUUyMjQ5QUEy
MUYwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gKi87IH07CkBAIC0yNDU0LDcgKzI0NTcsNiBA
QAogCQkxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0NUI5RTE4NEQ1
RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8q
IFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0RG93bmxvYWRDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0
IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ4MzJDMTFBOTY1QTNDMDA4QjRERkUgLyogV2Vic2l0ZURhdGFTdG9yZUNv
Y29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ4MzJDOTFB
OUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFSZWNvcmQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjUwLDggKzI2NTIsOCBAQAogCQkxQUI3RDVFOTEyODhC
OEMwMDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEb3dubG9h
ZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIv
RG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRG93bmxvYWRQcm94
eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Rvd25sb2FkUHJveHlN
ZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQkxQUI3RDc4
QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFB
QjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25s
b2FkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93bmxv
YWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFQjE4NDAwODA5
MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdlUG9saWN5Q2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZVBvbGljeUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFRjE4NDAwQjAwMDBFOUFFNjkgLyogV0tQ
YWdlRm9ybUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VG
b3JtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTIyLDYgKzQxMjQs
NyBAQAogCQk1QzJCMUFGMzIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRNb25pdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvd25sb2FkTW9uaXRvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY0MjIzQUI3MjgwMEI5MUNGNyAv
KiBEb3dubG9hZE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG93
bmxvYWRNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY1MjIz
QzFGRDIwMEI5MUNGNyAvKiBEb3dubG9hZFByb3h5TWFwQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb3h5TWFwQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIwNSAvKiBXS0Rv
d25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxv
YWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlDMEMyMTU0NzMy
MTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzQUVB
OEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01Mzg4LDYgKzUzOTEsMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBv
cHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQb3B1cE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tE
b3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRG93
bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI0MjUyRUNCOEQw
MEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjUyNTJF
Q0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkRGVsZWdhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8q
IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3JsZFByaXZhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcxQUM1ODAwRjlBMzdD
IC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzUzOCw2ICs3NTQ1LDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0QTAwMzY5NUYwIC8qIFdLQ29u
dGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2QjIyOUYyRDRCMDAzNjk1RjAg
LyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk1Q0UwQzM2QTIy
OUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvUHJpdmF0ZS5oICovLAor
CQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8sCisJCQkJREYw
QzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8sCisJCQkJREYwQzVGMjYy
NTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCURGMEM1RjI1
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywKIAkJCQkxQUY0NTky
RDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFBRjQ1OTJDMTk0NjRCMjAw
MEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0Njg4RkQwMDQ1MzdCMCAv
KiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTk1MDQsNyArOTUxNSw2IEBACiAJCQkJMUFFNTJG
OTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuY3BwICovLAog
CQkJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVm
LmggKi8sCiAJCQkJMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rp
b25DbGllbnQuaCAqLywKLQkJCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0
RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tD
b250ZXh0SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAv
KiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCUExRUEwMjM1MURBQkZG
N0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwICovLApAQCAtOTUxNSw4ICs5
NTI1LDkgQEAKIAkJCQk1MTJGNThGMTEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmNw
cCAqLywKIAkJCQk1MTJGNThGMjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tDcmVkZW50aWFsLmggKi8s
CiAJCQkJNTE4QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggKi8s
Ci0JCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuY3BwICovLAotCQkJ
CTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8sCisJCQkJNUMyRUJE
RjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLywKKwkJCQkxQUI3RDc4
QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8sCisJCQkJMUFCN0Q3OEIx
Mjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLywKIAkJCQlCQ0U0Njk1NzEyMTRF
REY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNwcCAqLywKIAkJCQlCQ0U0
Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmggKi8sCiAJ
CQkJQkNEMDEzOTgxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3BwICovLApAQCAtMTE4NDUs
NyArMTE4NTYsNiBAQAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEExRkEzNyAvKiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBNTE4NEQ1RkRB
MDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0
SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0NDVCOUYxODRENUZCNTAwNEIz
NDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Qzc5NUQ3MDIyOUYzNzNGMDAzRkYxQzQgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgg
aW4gSGVhZGVycyAqLywKQEAgLTExODc4LDggKzExODg4LDEyIEBACiAJCQkJQkM1RDI0QzUxNkNE
NzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tET01UZXh0SXRlcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAv
KiBXS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJCMjUyRUQ0
NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTYz
NzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJvZ3Jlc3MuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGNDA5QkExODFFNkU2NEJDMDA5REEyOEUgLyogV0tEcmFnRGVzdGlu
YXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y2NkNFMjFENkI3N0UwMDlFNUMz
RiAvKiBXS0VkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY0NTkyRjE5NDY0QjIw
MDBGOUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjU0NjAzYzMxYWVjMmQ3MTM4NjRhNzIz
ODUzMmJiOWY1MDgyM2VjYi4uZmJiMjY2MTQxYjg1MDFiMzU0MjBjYzI0MjIwMjg2ZjQ3YzM1OTgz
NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDk1IEBACisyMDIwLTExLTE5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBTUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0NworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OnNldENvbnRleHREb3dubG9hZENsaWVudCk6IERlbGV0ZWQuCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2Fk
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hl
cyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2Fk
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbToKKyAgICAgICAg
KC1bQmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAgKC1bQ29udmVydFJlc3BvbnNl
VG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9h
ZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3REb3du
bG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVnYXRlIHdlYlZpZXc6ZGlk
RmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoZG93bmxvYWRU
ZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMpOgorICAg
ICAgICAoc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrRmlsZUNvbnRl
bnRzKToKKyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCk6CisgICAgICAgICgtW0Rv
d25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om11
dGF0ZUZpbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQcm9ncmVzc1Rlc3RSdW5uZXIg
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3
YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0p
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1t
OgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25s
b2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2Fk
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOl0p
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpkZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRv
dGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0YTpdKToKKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpuYXZpZ2F0aW9uUmVzcG9uc2U6ZGlkQmVjb21l
RG93bmxvYWQ6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHRha2VDYWxsYmFja1JlY29yZF0pOgorICAg
ICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0
ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJv
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2Fk
RGlkQ2FuY2VsOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5k
bGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxv
YWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOiBDb3BpZWQgZnJvbSBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmguCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTogQ29waWVk
IGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbS4K
KyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6
XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKToKKyAgICAgICAgKC1b
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5
dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAgKC1bVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6Cisg
ICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpd
KToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURlc3Rp
bmF0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25s
b2FkU2hhcmVkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25BY3Rp
b25EaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpuYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCiAyMDIwLTExLTE5ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgYmxvY2stc3BhbW1l
cnMgYXV0b2luc3RhbGwgcmVxdWVzdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
U291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApp
bmRleCBkOTdmMjY2ZTQwNWVjZmFhNDE0MTk0NTk5MDg4YWQ1NDBiZDRkMDllLi5mNWE5ZDIxNzY1
ZjY4YWYyMmZmYjk0ZTM4NTIzZDdkNjQ5ZTQ1MWZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMu
bW0KIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rlc3RDb2NvYS5tbQog
Y29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2NvYS9UZXN0UHJv
dG9jb2wubW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDMxMDkyYzI2ZTM4ZWQ3YzE5MDc2ZWYyZTI4M2JiNzA3OGE2ZDQ4MzEuLjAxYTAxNjY0ZjBj
MDk5MDI5OGQ0NDU2NDgxZjI1N2VlMTMyNmQ4NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yMjE1LDggKzIyMTUsOCBAQAogCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNj
cmlwdER1cmluZ05hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUM2RTI3QTYyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRp
b24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDYW5vbmlj
YWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzcxNDg5NDIxMjNB
NDA3MDBGREUzQzUgLyogV0tXZWJzaXRlRGF0YXN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YXN0b3JlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25sb2Fk
RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERvd25sb2Fk
RGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENEMjQ0RkZDRTMwMDM4
MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2Ev
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3M0E4MUEyMzIzMDU5ODAwREVB
ODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0YWluUGFnZVBs
dWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYxRUIwMjY5QjAw
NzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI4MDEsNiArMjgwMSw4IEBACiAJCUQzQkU1RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dl
YlZpZXdHZXRDb250ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2ViVmlld0dldENvbnRlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlEQzY5QUE2MjFDRjc3QzY1MDBDNjI3MkYgLyogU2NvcGVkTGFtYmRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZExhbWJkYS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlv
bmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3RE
b3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERvd25sb2FkRGVs
ZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3du
bG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBh
dGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlERkI4RkYzMTI0OTJGNTFBMDBGMDBCMEQgLyogUHJlY29ubmVjdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWNvbm5lY3QubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAvKiBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNl
TG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMERDOTE1
NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJs
ZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0zMTIyLDggKzMxMjQsMTAgQEAKIAkJCQlDRTY0MENBNjIzNzBBNEYzMDBDNUNBQTQg
LyogVGVzdENvY29hLm1tICovLAogCQkJCTVDRTc1OTQ4MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0
Q29udGV4dE1lbnVEcml2ZXIuaCAqLywKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBDMTI0MDkgLyog
VGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAotCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVC
NyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAotCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4
MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3MDI1MzRFMTIw
MDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjZCQzQ2RjI1MzRF
MTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJNUM3MkU4Q0Qy
NDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJ
NUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1t
ICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUubW0gKi8sCiAJCQkJNTE2MjgxMjMyMzI1QzE3QTAwQkI3RTQyIC8qIFRlc3RQREZE
b2N1bWVudC5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKaW5kZXgg
Y2E2OTdhYzM1YTlhYTUyMGE1YjE5ZjVjN2I3NDNjMTdjODQ0YzUzOC4uYzQ1NzU4NjUwNWRiM2U0
ZGJhYmRiMDcxMmEwZTY2M2JkYjI5Yzc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9u
Q3Jhc2guY3BwCkBAIC0yOSw0MiArMjksNDEgQEAKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dL
RG93bmxvYWQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBib29sIGRpZERlY2lkZURlc3RpbmF0aW9uOwog
Ci1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLUGFnZVJlZiwg
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIs
IFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQogewog
ICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0KIAotc3RhdGlj
IFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJvb2wqLCBjb25z
dCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0
cmluZ1JlZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRpb24gPSB0cnVl
OwotICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwo
ZG93bmxvYWQsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1w
L1dlYktpdEFQSVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIikubGVha1JlZigp
OwogfQogCi1zdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVm
IGNvbnRleHQpCitzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZChXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdhdGlvblJlc3Bv
bnNlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGll
bnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLQog
ICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOwotCi0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCwgJmNsaWVu
dC5iYXNlKTsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xp
ZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRQYWdlUG9s
aWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlKQogewotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRW
MCBuYXZpZ2F0aW9uQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBuYXZpZ2F0
aW9uQ2xpZW50OwogICAgIG1lbXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6ZW9mKG5hdmln
YXRpb25DbGllbnQpKTsKIAotICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJzaW9uID0gMDsK
LSAgICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIG5hdmlnYXRpb25DbGllbnQuYmFz
ZS52ZXJzaW9uID0gMzsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZSA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTsKKyAgICBu
YXZpZ2F0aW9uQ2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CiAKICAgICBXS1BhZ2VTZXRQYWdlTmF2
aWdhdGlvbkNsaWVudChwYWdlLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIH0KQEAgLTcyLDcg
KzcxLDYgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkK
IFRFU1QoV2ViS2l0LCBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7CiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRleHRDcmVhdGVX
aXRoQ29uZmlndXJhdGlvbihudWxscHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50
KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5n
ZXQoKSk7CiAgICAgc2V0UGFnZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3du
bG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVu
dURvd25sb2FkLm1tCmluZGV4IDE1OTMwZTU0NmRiYWEzZGE5ZDVlZDIxNWI2YzhiOWNjNjEwOWFm
MGYuLjc1NTZmNjEyZDVlM2I5YmE0ZjRjZDZmNTI2Yzk1OGMxN2YzZjFmMjYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2Fk
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVu
dURvd25sb2FkLm1tCkBAIC0yOCw3ICsyOCw4IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tDb250
ZXh0TWVudUl0ZW0uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRSZWYu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2VDb250
ZXh0TWVudUNsaWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+
CkBAIC02MiwxMiArNjMsMTIgQEAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9z
ZWRNZW51KFdLUGFnZVJlZiBwYWdlLCBXS0FycmF5UmVmIHByb3Bvc2VkTWUKICAgICB9CiB9CiAK
LXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0
IHZvaWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHBy
b3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGlu
IHRoZSBIVE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50
eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2Fk
KTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAg
ICBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIEVYUEVDVF9FUShl
eHBlY3RlZE9yaWdpbmF0aW5nUGFnZSwgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShkb3du
bG9hZCkpOwpAQCAtNzYsMjUgKzc3LDI5IEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvCiAgICAg
cmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVudURvd25sb2Fk
IikubGVha1JlZigpOwogfQogCitzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkKFdLUGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAgbWVtc2V0
KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0g
MDsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRv
d25sb2FkLCAmY2xpZW50LmJhc2UpOworfQorCiAvLyBDaGVja3MgdGhhdCB0aGUgSFRNTCBkb3du
bG9hZCBhdHRyaWJ1dGUgaXMgdXNlZCBhcyBzdWdnZXN0ZWQgZmlsZW5hbWUgd2hlbiBzZWxlY3Rp
bmcKIC8vIHRoZSAiRG93bmxvYWQgTGlua2VkIEZpbGUiIGl0ZW0gaW4gdGhlIGNvbnRleHQgbWVu
dS4KIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRl
KQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRp
bDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdLQ29udGV4dERv
d25sb2FkQ2xpZW50VjAgY2xpZW50OwotICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xp
ZW50KSk7Ci0gICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dC5n
ZXQoKSwgJmNsaWVudC5iYXNlKTsKLQogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBw
YWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6
dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29u
dGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGll
bnRWMCBsb2FkZXJDbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNs
aWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkp
OwotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5i
YXNlLnZlcnNpb24gPSAzOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0g
ZGlkRmluaXNoTmF2aWdhdGlvbjsKKyAgICBsb2FkZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZCA9IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiAgICAgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7
CiAKICAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xpZW50OwpAQCAt
MTE0LDM0ICsxMTksMzggQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93
bmxvYWRBdHRyaWJ1dGUpCiAgICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0
aW9uKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZv
aWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNw
b25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqKQogewog
ICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3ZpZGVkIGFuZCBt
YXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRoZSBIVE1MLCBh
ZnRlciBzYW5pdGl6YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90ZXN0Ml9kb3du
bG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93
bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51
bGxwdHIsIG51bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVl
OwogCiAgICAgcmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVu
dURvd25sb2FkIikubGVha1JlZigpOwogfQogCi1URVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3du
bG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQorc3RhdGljIHZvaWQgY29udGV4
dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFz
aGVzKFdLUGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKLQotICAgIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRDbGllbnRWMCBj
bGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKICAgICBjbGll
bnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNv
bnRhaW5pbmdTbGFzaGVzOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQu
Z2V0KCksICZjbGllbnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5n
U2xhc2hlczsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2Up
OworfQorCitURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJp
YnV0ZVdpdGhTbGFzaGVzKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAog
ICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFn
ZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7
CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdl
dCgpKTsKIAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAg
V0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotICAgIGxvYWRlckNsaWVudC5iYXNl
LnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwogICAgIGxv
YWRlckNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKKyAg
ICBsb2FkZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IGNvbnRleHRNZW51
RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsK
ICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwgJmxvYWRl
ckNsaWVudC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29udGV4dE1l
bnVDbGllbnQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0NvbnRlbnRGaWx0ZXJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KaW5kZXggNDMzOTEzMTEwMWYyY2RkOTUwOTg2N2Vm
ZTk0NGY2ZTc3ZWYzOWVkYi4uZDE5NmMyYzkzYzkyY2FhYmQ3MzIzOTNiMzRjYWVlZTBhZTdiMzM5
MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250
ZW50RmlsdGVyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQ29udGVudEZpbHRlcmluZy5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIFRFU1QoQ29udGVudEZp
bHRlcmluZywgVVJMQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIAogLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAg
ZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
YWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCAzYWVmZWI4ZWMzMzVlMTAyMzJmZjhlNWM4MGM2
Zjc5YmQzNWVmYzA4Li41MTE1ZjcyNjZhMDkyNzhkMWQ4NzlkZTRkZmFhM2QwZjQ5OWI1OWI4IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQu
bW0KQEAgLTMzLDExICszMywxNSBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJU
ZXN0LmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgor
I2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tE
b3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CkBAIC0xNzQsNyArMTc4LDcgQEAgVEVTVChfV0tEb3du
bG9hZCwgRG93bmxvYWRSZXF1ZXN0KQogQGltcGxlbWVudGF0aW9uIENvbnZlcnRSZXNwb25zZVRv
RG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJl
c3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9u
SGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAg
ZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OwogfQogQGVuZAogCkBAIC05NzcsNyArOTgxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxv
YWRNb25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNo
TmF2aWdhdGlvbik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKF9XS0xlZ2FjeUVycm9yRG9tYWluLCBl
cnJvci5kb21haW4pOwogICAgIF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gWUVTOwot
ICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBvbGlj
eSAhPSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8IF9kaWRTdGFy
dERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC05ODUsNyArOTg5LDcg
QEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRNb25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQog
ewogICAgIEVYUEVDVF9GQUxTRShfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CiAgICAg
X2RpZEZpbmlzaE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3du
bG9hZCkKKyAgICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9
IHRydWU7CiB9CiAKQEAgLTEwMjQsNyArMTAyOCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5h
dmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmly
c3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCiAg
ICAgTlNVUkwgKnNlY29uZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2J1bmRs
ZS1maWxlL3NpbXBsZTIuaHRtbCJdOwotICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRl
IHNldFJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWRdOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6c2Vjb25kVVJMXV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMTA1MSw3ICsxMDU1LDcgQEAgVEVTVChXZWJLaXQsIERv
d25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9UUlVF
KFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKGZp
cnN0VVJMLmFic29sdXRlU3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAot
ICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5OldLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOwogICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMXV07CiAgICAgaXNE
b25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAt
MTE4OSwyNCArMTE5MywzMCBAQCBTdHJpbmcgbG9uZ1N0cmluZyhMQ2hhciBjKQogICAgIHJldHVy
biBTdHJpbmcodmVjdG9yLmRhdGEoKSwgbGVuZ3RoKTsKIH0KIAotVEVTVChfV0tEb3dubG9hZCwg
UmVzdW1lKQorZW51bSBjbGFzcyBJbmNsdWRlRVRhZyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVt
IGNsYXNzIFRlcm1pbmF0ZUFmdGVyRmlyc3RSZXBseSA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0
YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRl
RVRhZyBpbmNsdWRlRVRhZyA9IEluY2x1ZGVFVGFnOjpZZXMsIEZ1bmN0aW9uPHZvaWQoVGVzdFdl
YktpdEFQSTo6Q29ubmVjdGlvbik+JiYgdGVybWluYXRvciA9IG51bGxwdHIpCiB7Ci0gICAgdXNp
bmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5l
Y3Rpb25Db3VudCA9IDBdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgcmV0
dXJuIHsgW2luY2x1ZGVFVGFnLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKSwgY29u
bmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBt
dXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBj
YXNlIDE6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVj
dGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKLSAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQo
bWFrZVN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0g
ICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtpbmNsdWRlRVRhZywgY29ubmVjdGlvbiwgdGVybWluYXRv
ciA9IFdURk1vdmUodGVybWluYXRvcildIChWZWN0b3I8Y2hhcj4mJikgbXV0YWJsZSB7CisgICAg
ICAgICAgICAgICAgYXV0byByZXNwb25zZSA9IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAg
ICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVU
YWcgPT0gSW5jbHVkZUVUYWc6OlllcyA/ICJFVGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAg
ICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUu
dHh0XCJcclxuIgogICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKQotICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKFdURk1vdmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgdGVy
bWluYXRvciA9IFdURk1vdmUodGVybWluYXRvcildICgpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgICAgICBpZiAodGVybWluYXRvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0
b3IoY29ubmVjdGlvbik7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBjb25uZWN0aW9u
LnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkg
eworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3Rvcjxj
aGFyPiYmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJl
cXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7
CiAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAg
ICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKQEAgLTEyMjAsMTYg
KzEyMzAsNjQgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICB9KTsKKyAg
ICB9fTsKK30KKworc3RhdGljIHZvaWQgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhOU1VS
TCAqZmlsZSkKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAx
MDAwMHUpOworICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRlcyk7CisgICAgaWYgKGZp
bGVDb250ZW50cy5ieXRlcyAmJiBmaWxlQ29udGVudHMubGVuZ3RoID09IDEwMDAwdSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDUwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2En
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQorICAgICAg
ICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0
ZXMpW2ldLCAnYicpOworICAgIH0KK30KKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4geyBbXShUZXN0V2Vi
S2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNl
aXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAg
ICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIK
KyAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAg
ICAgKSk7CisgICAgICAgIH0pOworICAgIH19OworfQogCi0gICAgTlNVUkwgKnRlbXBEaXIgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkUmVzdW1lVGVzdCJdIGlzRGlyZWN0b3J5OllF
U107CitzdGF0aWMgdm9pZCBjaGVja0ZpbGVDb250ZW50cyhOU1VSTCAqZmlsZSwgY29uc3QgU3Ry
aW5nJiBleHBlY3RlZENvbnRlbnRzKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05T
RGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250
ZW50cy5sZW5ndGgsIGV4cGVjdGVkQ29udGVudHMubGVuZ3RoKCkpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlsZUNvbnRlbnRzLmxlbmd0aDsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sIGV4cGVjdGVk
Q29udGVudHNbaV0pOworfQorCitzdGF0aWMgTlNVUkwgKnRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1Rl
bXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25s
b2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVSTDp0ZW1wRGlyIHdpdGhJbnRlcm1lZGlhdGVEaXJl
Y3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwgZXJyb3I6bmlsXTsKLSAgICBOU1VSTCAqZXhwZWN0
ZWREb3dubG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJl
eGFtcGxlLnR4dCJdOwotICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3Zl
SXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOm5pbF07CisgICAgTlNVUkwgKmZp
bGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJd
OworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmZp
bGUgZXJyb3I6bmlsXTsKKyAgICByZXR1cm4gZmlsZTsKK30KKworVEVTVChfV0tEb3dubG9hZCwg
UmVzdW1lKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKIAogICAgIGF1dG8gbmF2aWdh
dGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAg
ICBuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQp
OwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIENhbGxiYWNrIDogdWludDhfdCB7IFN0YXJ0LCBX
cml0ZURhdGEsIERlY2lkZURlc3RpbmF0aW9uLCBDcmVhdGVEZXN0aW5hdGlvbiwgQ2FuY2VsLCBG
aW5pc2ggfTsKQEAgLTEyNDAsMTAgKzEyOTgsMTEgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1l
KQogICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rvd25sb2FkPiBkb3dubG9hZDsKICAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0RhdGE+IHJlc3VtZURhdGE7CiAKLSAgICBhdXRvIGRvd25sb2FkRGVs
ZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIGRv
d25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBuZXdd
KTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5h
bWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9PTCwgTlNTdHJpbmcgKikpIHsKICAgICAg
ICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOwotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgi
ZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9h
ZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkLCB1
aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQo
Q2FsbGJhY2s6OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcgKzEzMTcsNyBAQCBURVNUKF9XS0Rvd25s
b2FkLCBSZXN1bWUpCiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZENyZWF0
ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIHsK
ICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q3JlYXRlRGVzdGluYXRpb24pOwot
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0ucGF0aCk7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aCk7CiAgICAgfTsK
ICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25sb2FkRGlkQ2FuY2VsID0gXihfV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Q2Fu
Y2VsKTsKQEAgLTEyOTYsMTUgKzEzNTUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAg
ICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwogICAgIHVzbGVlcCgxMDAwMCk7CiAKLSAgICBOU0Rh
dGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmV4cGVjdGVk
RG93bmxvYWRGaWxlXTsKLSAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1
KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOwotICAgIGlmIChmaWxlQ29u
dGVudHMuYnl0ZXMpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA1MDAwOyBpKysp
Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250
ZW50cy5ieXRlcylbaV0sICdhJyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwg
MTAwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKLSAgICB9CisgICAgY2hlY2tSZXN1bWVk
RG93bmxvYWRDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSk7CiB9CiAKIEBpbnRlcmZhY2Ug
RG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGU+CkBAIC0xMzE0LDcgKzEzNjUsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKIHsKICAgICBpZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwuYWJz
b2x1dGVTdHJpbmcgaGFzU3VmZml4OkAiL2Rvd25sb2FkIl0pCi0gICAgICAgIGRlY2lzaW9uSGFu
ZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAg
IGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
KTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUFsbG93KTsKIH0KQEAgLTEzNzMsNCArMTQyNCwxMTk1IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFN1YmZyYW1lU2VjdXJpdHlPcmlnaW4pCiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keT48aWZyYW1lIHNyYz0naHR0cDovLzEy
Ny4wLjAuMTolZC9wYWdlJz48L2lmcmFtZT48L2JvZHk+Iiwgc2VydmVyLnBvcnQoKV0gYmFzZVVS
TDpuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKIH0KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBjaGVja0NhbGxiYWNrUmVjb3Jk
KFRlc3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSwgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+
IGV4cGVjdGVkQ2FsbGJhY2tzKQoreworICAgIGF1dG8gYWN0dWFsQ2FsbGJhY2tzID0gZGVsZWdh
dGUudGFrZUNhbGxiYWNrUmVjb3JkOworICAgIEVYUEVDVF9FUShhY3R1YWxDYWxsYmFja3Muc2l6
ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RkOjptaW4oYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6
ZSgpKTsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzW2ldLCBleHBlY3Rl
ZENhbGxiYWNrc1tpXSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmluaXNoU3VjY2Vzc2Z1bGx5
KQoreworICAgIGF1dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVn
YXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwg
V0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBO
U1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07
CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworc3RhdGljIHZvaWQgcmVz
dW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRhLCBOU1VSTCAqZGVzdGluYXRp
b24pCit7CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9h
ZDsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgY2hlY2tGaWxlQ29udGVudHMoZGVz
dGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICAgICAgYXV0byAqZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgICAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisKKyAgICAgICAgW3dlYlZp
ZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXN1bWVEYXRhIGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBk
b3dubG9hZDsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAg
ICAgICAgfV07CisgICAgICAgIHdoaWxlICghcmV0YWluZWREb3dubG9hZCkKKyAgICAgICAgICAg
IFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgICAgIAorICAgICAgICBfX2Jsb2NrIGJvb2wgZG93
bmxvYWRlZFNlY29uZDVrID0gZmFsc2U7CisgICAgICAgIEVYUEVDVF9OVUxMKHJldGFpbmVkRG93
bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOworICAgICAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0
YSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIGludDY0X3QgYnl0ZXNXcml0dGVuLCBpbnQ2NF90
IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuICsgNTAwMCwgdG90YWxCeXRlc1dy
aXR0ZW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUs
IDEwMDAwKTsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAg
ICAgICAgICBkb3dubG9hZGVkU2Vjb25kNWsgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBf
X2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2Fk
RGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgRVhQRUNU
X0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCksIGRvd25sb2FkKTsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGRvd25sb2FkZWRTZWNvbmQ1ayk7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgICAgICB9OworCisgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgICAg
ICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICAgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgICAgIH0pOworICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKS5v
cmlnaW5hdGluZ1dlYlZpZXcsIHdlYlZpZXcuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfTk9UX05V
TEwocmV0YWluZWREb3dubG9hZC5nZXQoKS5vcmlnaW5hdGluZ1dlYlZpZXcpOworICAgIH0KKyAg
ICBFWFBFQ1RfTk9UX05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgRVhQRUNUX05V
TEwocmV0YWluZWREb3dubG9hZC5nZXQoKS5vcmlnaW5hdGluZ1dlYlZpZXcpOworfQorCitzdGF0
aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUpCit7
CisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRGaXJzdDVrID0gZmFsc2U7CisgICAgQVNTRVJU
KCFkZWxlZ2F0ZS5kaWRXcml0ZURhdGEpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4o
V0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgIEVYUEVD
VF9FUShieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgRVhQRUNUX0VR
KHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAwKTsKKyAgICAgICAgaWYgKGJ5dGVzV3Jp
dHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxvYWRlZEZpcnN0NWsgPSB0cnVlOworICAg
IH07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZGVkRmlyc3Q1ayk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0
U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3
XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7
CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2Fk
LmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcg
Kiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0
Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJl
dGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0RhdGEg
KnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsK
KyAgICB9XTsKKworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGls
OjpzcGluUnVuTG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJldGFpbmVkUmVz
dW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIGNoZWNrQ2FsbGJhY2tS
ZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIEZhaWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoSW5jbHVkZUVUYWc6OlllcywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAg
ICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2Fk
PiByZXRhaW5lZERvd25sb2FkOworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWlu
ZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAq
ZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rp
b25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7Cisg
ICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6
OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1
bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIENhbmNlbE5v
UmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNs
dWRlRVRhZzo6Tm8pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25s
b2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3Ry
aW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdh
aXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVj
dGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93
bmxvYWQsIEZhaWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERv
d25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3du
bG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vLCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7Cisg
ICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tE
b3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rp
b25Mb3N0KTsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAg
ICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBG
SVhNRTogTWFrZSB0aGlzIHdvcmsgaW4gQ0ZOZXR3b3JrLgorI2lmIEhBVkUoQ0ZORVRfUkVTUE9O
U0VfQ0FMTEJBQ0tfV0lUSF9OT19DT05URU5UKQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZUFm
dGVyWmVyb0J5dGVzUmVjZWl2ZWQpCit7CisgICAgT3B0aW9uYWw8VGVzdFdlYktpdEFQSTo6Q29u
bmVjdGlvbj4gc2VydmVyQ29ubmVjdGlvbjsKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVj
dGlvbkNvdW50ID0gMCwgJnNlcnZlckNvbm5lY3Rpb25dKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rp
b24gY29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291
bnQpIHsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgc2VydmVyQ29ubmVjdGlvbiA9IGNv
bm5lY3Rpb247CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0o
VmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0
aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlv
bi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5
dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVj
dGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAg
T0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IlxyXG4iLCBsb25nU3RyaW5nPDEwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUu
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05h
dmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UgPSBbJl0oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2
ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsKKyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVj
dGlvbkxvc3QpOworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAg
IH07CisgICAgX19ibG9jayBib29sIGRvd25sb2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxl
Z2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25s
b2FkRmluaXNoZWQgPSB0cnVlOworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAg
ICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRG
aWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dl
YlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRG
aW5pc2hlZCk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxv
bmdTdHJpbmc8MTAwPigneCcpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUs
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKKyNl
bmRpZgorCit2b2lkIHRlc3RSZXN1bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVlc3QgKnNl
cnZlclJlcXVlc3QsIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0YXRlRmls
ZSkodm9pZCkpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisK
KyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0XTsKKyAgICB3YWl0Rm9yRmly
c3Q1ayhkZWxlZ2F0ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gbmlsOworCisgICAg
X19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFp
bmVkRG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFp
bmVkUmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFp
bmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykp
OworCisgICAgbXV0YXRlRmlsZSgpOworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZh
bHNlOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVE
YXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICAgICAgZGlkRmluaXNo
ID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBSZXN1bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBz
ZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29u
bmVjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsK
KyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVl
c3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3Ry
aW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisjaWYgIVVT
RShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgICAgICAgICAvLyBNb2phdmUg
Q0ZOZXR3b3JrIHNlbmRzIGEgcmFuZ2UgcmVxdWVzdCB3aGVuIHJlc3VtaW5nIGEgZG93bmxvYWQg
YWZ0ZXIgcmVtb3ZpbmcgYWxyZWFkeS1kb3dubG9hZGVkIGRhdGEuCisgICAgICAgICAgICAgICAg
RVhQRUNUX0ZBTFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZSIsIHJlcXVlc3Quc2l6
ZSgpKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQt
TGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAg
ICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAg
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCks
IGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsK
KyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6
ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwo
ZXJyb3IpOworICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8MTAwMDA+KCd4JykpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJl
c3VtZVdpdGhFeHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KFtjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAg
ICAgIGNhc2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtl
U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1MZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlz
cG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1
MDAwPignYScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAg
ICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAw
MC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNl
bmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFs
IENvbnRlbnRcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxu
IgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAw
MDA+KCdkJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRl
ck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsK
KyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9y
OiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW1soTlNTdHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0
cmluZzwzMDAwPignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10g
d3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIH0p
OworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIG1ha2VTdHJp
bmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJyksIGxvbmdTdHJp
bmc8NTAwMD4oJ2QnKSkpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhJbnZhbGlk
UmVzdW1lRGF0YSkKK3sKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9u
IGRpc2siIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYm9vbCBjYXVnaHRFeGNlcHRp
b24gPSBmYWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRX
aXRoRGF0YTpbQCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH1dOworICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1l
LCBOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9
IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGNhdWdodEV4Y2VwdGlvbik7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRh
aW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgX19i
bG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVk
RG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBzZXJ2ZXIuY2Fu
Y2VsKCk7CisgICAgCisgICAgcmV0YWluZWREb3dubG9hZCA9IG5pbDsKKyAgICBbd2ViVmlldyBy
ZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQuZGVsZWdhdGUpOwor
ICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWREb3dubG9hZCkKKyAgICAgICAgVXRpbDo6c3Bp
blJ1bkxvb3AoKTsKKworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZh
aWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVz
dW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVy
cm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5u
b3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VtZURhdGEpOwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW10o
Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBS
ZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5k
KG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1MDAwPign
YScpKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2Fk
RmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmll
dyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlv
bkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAq
LCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRf
dCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0
dGVuICE9IDUwMDApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNU
X0VRKHRvdGFsQnl0ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0
ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxv
YWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChXS0Rv
d25sb2FkLCBJbnZhbGlkQXJndW1lbnRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBjYXVnaHRFeGNlcHRpb24g
PSBmYWxzZTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxv
YWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmlu
ZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBA
dHJ5IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd2Via2l0Lm9yZy8iXSk7CisgICAgICAgICAgICB9IEBjYXRjaCAoTlNF
eGNlcHRpb24gKmUpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1lLCBO
U0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgICAgICAgICAgY2F1Z2h0RXhjZXB0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGls
OjpydW4oJmNhdWdodEV4Y2VwdGlvbik7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICB9
KTsKK30KKworc3RhdGljIEhUVFBTZXJ2ZXIgcmVkaXJlY3RTZXJ2ZXIoKQoreworICAgIHJldHVy
biB7eworICAgICAgICB7ICIvIiwgeyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvcmVkaXJlY3RUYXJn
ZXQiIH0sIHsgIkN1c3RvbS1OYW1lIiwgIkN1c3RvbS1WYWx1ZSIgfX0gfSB9LAorICAgICAgICB7
ICIvcmVkaXJlY3RUYXJnZXQiLCB7ICJoaSIgfSB9LAorICAgIH19OworfQorCitURVNUKFdLRG93
bmxvYWQsIFJlZGlyZWN0QWxsb3cpCit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZl
cigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5l
d10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVz
dCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgc2VydmVyUmVxdWVzdC5IVFRQQm9k
eSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAg
ICAKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWREb3dubG9hZCA9IGZhbHNlOworICAgIFt3ZWJW
aWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24g
PSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0
UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVxdWVzdC5IVFRQQm9keSk7IC8v
IEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25z
ZS5zdGF0dXNDb2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LmFsbEhlYWRlckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZl
clJlcXVlc3QuVVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0
Il0uYWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShzdWdnZXN0ZWRGaWxlbmFtZSwgInJlZGlyZWN0VGFyZ2V0LnR4dCIpOworICAgICAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5wYXRoLCAiL3JlZGlyZWN0VGFyZ2V0Iik7
CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVS
TC5wYXRoLCAiLyIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdp
bmFsUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBe
KFdLRG93bmxvYWQgKikgeworICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZERvd25sb2FkKTsKKwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaGkiKTsKKyAgICAK
KyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOworCisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxs
UmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlZGly
ZWN0Q2FuY2VsKQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgY2Fu
Y2VsbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0
ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxS
ZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7CisgICAgICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVS
TC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVz
Q29kZSwgMzAxKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFk
ZXJGaWVsZHNbQCJDdXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0
LlVSTCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29s
dXRlU3RyaW5nKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeUNhbmNlbCk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxX
aXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1l
RGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAg
ICAgICAgIGNhbmNlbGxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZjYW5jZWxsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7CisgICAgRVhQRUNUX0VRKHNlcnZlci50
b3RhbFJlcXVlc3RzKCksIDF1KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVl
c3RGYWlsdXJlKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSk7CisgICAgTlNVUkxSZXF1
ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBzZXJ2ZXIuY2FuY2Vs
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0
aFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vy
cm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAg
ICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigm
ZmFpbGVkKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3Q0MDQpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
eworICAgICAgICB7ICIvIiwgeyA0MDQsIHsgfSwgImh0dHAgYm9keSIgfSB9CisgICAgfSk7Cisg
ICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2Fk
V2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZp
bmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9
IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOwor
CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJodHRwIGJvZHki
KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoLAorICAg
IH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIE5ldHdvcmtQcm9jZXNzQ3Jhc2gpCit7CisgICAg
YXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVr
KGRlbGVnYXRlKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgdGVybWluYXRlZCA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAq
ZXJyb3IsIE5TRGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOwor
ICAgIH07CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJt
aW5hdGVOZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVy
KHsKKyAgICAgICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH0gfQorICAgIH0pOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxl
Z2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICos
IFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtk
ZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29udGVu
dHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXF1ZXN0
SFRUUEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3Qg
PSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXF1
ZXN0LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpyZXF1ZXN0IGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNU
X05VTEwoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdlIHBy
b2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFdLRG93bmxvYWQsIFBh
dGhNdXN0RXhpc3QpCit7CisgICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQ
YXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVu
dDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CisgICAgW1tOU0ZpbGVNYW5hZ2Vy
IGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6dGVtcERpciBlcnJvcjpuaWxdOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0
aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07CisKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2Fk
VGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7
CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAg
ZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQs
IEZpbGVNdXN0Tm90RXhpc3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGF1dG8gcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
cmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRh
dGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRl
VG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKworICAgIF9fYmxv
Y2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworICAgICAgICByZXRhaW5lZERlbGVn
YXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICpk
b3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgICAgICAgICAgcmV0YWluZWRE
ZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7CisgICAgICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFp
bGVkKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQocmV0YWluZWREZWxlZ2F0ZS5nZXQoKSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOwor
fQorCitURVNUKFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0cmluZykKK3sKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3Bv
bnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIH07CisgICAgICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWlu
LCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBO
U1VSTEVycm9yQ2FuY2VsbGVkKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAgICAg
IH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsK
KyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0
ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCisvLyBNb2phdmUgZG93bmxvYWQgdGFz
a3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVh
dGlvbi4KKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorVEVTVChXS0Rvd25s
b2FkLCBDaGFsbGVuZ2VTdWNjZXNzKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHt7ICIvIiwg
eyAiZG93bmxvYWQgY29udGVudCIgfX19LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCgpOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRv
d25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBmaW5p
c2hlZCA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2Ug
PSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBeKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdl
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhl
bnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBj
cmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0p
OworICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikp
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
IH07CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmlu
aXNoZWQpOworICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyAgICBjaGVja0Zp
bGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
ZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRh
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKyNlbmRp
ZgorCitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUpCit7CisgICAgSFRUUFNlcnZl
ciBzZXJ2ZXIoeyB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sg
Ym9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihX
S0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWlu
KTsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIC8vIE1vamF2
ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uLgorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxF
cnJvclNlY3VyZUNvbm5lY3Rpb25GYWlsZWQpOworI2Vsc2UKKyAgICAgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworI2VuZGlmCisgICAgICAgIGZhaWxlZCA9
IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBmYWxz
ZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBeKFdL
RG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIG5pbCk7Cisg
ICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisjaWYgIVVTRShMRUdB
Q1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5n
ZSk7CisjZW5kaWYKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisjaWYgIVVT
RShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZlIGRvd25sb2Fk
IHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2
YWx1YXRpb24uCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLAorI2VuZGlmCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IK
KyAgICB9KTsKK30KKwordm9pZCBibG9iVGVzdChib29sIGRvd25sb2FkRnJvbU5hdmlnYXRpb25B
Y3Rpb24sIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxEb3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENh
bGxiYWNrcykKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0
aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAi
ICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5kb3dubG9h
ZCA9ICdkb3dubG9hZEZpbGVuYW1lJzsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9Igor
ICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAg
ICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3Qo
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6bmlsXTsKKyAgICBhdXRvIGRl
bGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9u
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsK
KyAgICAgICAgaWYgKFthY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRv
U3RyaW5nOkAiYWJvdXQ6YmxhbmsiXSkKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5k
b3dubG9hZEF0dHJpYnV0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlLCAiZG93bmxvYWRGaWxlbmFt
ZSIpOworICAgICAgICAgICAgaWYgKGRvd25sb2FkRnJvbU5hdmlnYXRpb25BY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lC
ZWNvbWVEb3dubG9hZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoYWN0aW9uLnJl
cXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25s
b2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9X
S19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9i
Iik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
c3VnZ2VzdGVkRmlsZW5hbWUsICJkb3dubG9hZEZpbGVuYW1lIik7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93
bmxvYWQgKikgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgIjEy
MyIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIGV4cGVjdGVkQ2FsbGJhY2tz
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2UpCit7CisgICAgYmxvYlRlc3Qo
ZmFsc2UsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdy
aXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7CisK
KyAgICBibG9iVGVzdCh0cnVlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlTm9G
aWxlbmFtZSkKK3sKKyAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0
aW9uIGRvd25sb2FkQmxvYigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2EnKTsiCisgICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAi
ICAgIGEuaHJlZiA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygp
OyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+
PC9ib2R5PiI7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxX
aXRoU3RyaW5nOkAiaHR0cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwoYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAgIH07CisgICAgZGVs
ZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAq
LCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAi
YmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5
T3JpZ2luLmhvc3QsICJ3ZWJraXQub3JnIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KHJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShz
dWdnZXN0ZWRGaWxlbmFtZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
bmlsKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVE
b3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24KKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBTdWJmcmFtZU9yaWdpbmF0b3IpCit7CisgICAg
Y29uc3QgY2hhciogZ3JhbmRjaGlsZEZyYW1lSFRNTCA9ICI8c2NyaXB0PiIKKyAgICAiZnVuY3Rp
b24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIg
ICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7
IgorICAgICJ9IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48
L2JvZHk+IjsKKyAgICBIVFRQU2VydmVyIGdyYW5kY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAg
IHsgIi8iLCB7IGdyYW5kY2hpbGRGcmFtZUhUTUwgfSB9CisgICAgfSk7CisgICAgSFRUUFNlcnZl
ciBjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgW05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIs
IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCldIH0gfQorICAgIH0pOworICAgIE5TVVJMUmVx
dWVzdCAqZ3JhbmRjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZl
ci5yZXF1ZXN0KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9
IGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIHVpbnQxNl90IGdyYW5kY2hpbGRGcmFt
ZVNlcnZlclBvcnQgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpOworCisgICAgTlNTdHJp
bmcgKm1haW5IVE1MID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0n
aHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgp
XTsKKworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOm1haW5IVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8iXV07CisKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgewor
ICAgICAgICBpZiAoW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFs
VG9TdHJpbmc6QCJodHRwOi8vd2Via2l0Lm9yZy8iXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNl
LnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Y2hpbGRGcmFtZVNl
cnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNl
LnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Z3JhbmRjaGlsZEZy
YW1lU2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddKQorICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqcmVzcG9uc2UsIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5yZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICIxMjcuMC4w
LjEiKTsKKyAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5w
b3J0LCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0KTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihuaWwpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigm
ZG9uZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24KKyAgICB9KTsKK30KKworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjAwM2FjMjhjZTFlODk2
N2Y1ZGFiMGQ4ODhjYzc4Njg3NTExNjU2OS4uYjFiMTQ0ZmVhYzljN2FhZDJjMmEyYmExNmQyNjgw
ZTI2Yzk5NDYwMCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRp
YyB2b2lkKiBwcm9ncmVzc09ic2VydmluZ0NvbnRleHQgPSAmcHJvZ3Jlc3NPYnNlcnZpbmdDb250
ZXh0OwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3Rh
cnRUeXBlOjpDb252ZXJ0TG9hZFRvRG93bmxvYWQpCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihf
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lz
aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAg
ICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA5NzU4N2Q2NTA3MjNkMDJl
M2VhZWNmYmI1MTQzOGE5OWU0NzkyMzgxLi4yY2ZmYzlhNzA5ZjU1MGRmYTFkZDVjMzFkYjIyOTgy
YjRhZTBkMWM2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMzcyLDYgKzEzNzIsOCBA
QCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BG
cmFtZUFwcEJvdW5kKQogICAgICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0
dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50
V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
Oltpc01haW5GcmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAg
ICAgICAgICAgICBFWFBFQ1RfRkFMU0UoISFlcnJvcik7CisgICAgICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJFUlJPUiAlQCIsIGVycm9yKTsKICAgICAg
ICAgICAgIGlmIChpc01haW5GcmFtZSkKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVz
dWx0IGlzRXF1YWxUb1N0cmluZzpAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1i
cm93c2VyLXByaXZhY3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSJdKTsKICAgICAgICAgICAg
IGVsc2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCmluZGV4IGE3ZDRlNTNhMzUxNzky
NDVkMWU5MDQwYzNlYTU2ZTNhMDgyMjNmY2QuLjRlZTE5MjY3YjMwMDBmODk1YTk4ZDMwOTUxNzg5
ZTlmOTZjZDZhYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMTY2LDcg
KzE2Niw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGNsaWVudFJlZGlyZWN0RGVzdGluYXRp
b25VUkw7CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlv
blJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252
ZXJ0VG9Eb3dubG9hZCA/IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
IDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgZGVjaXNpb25IYW5kbGVy
KHNob3VsZENvbnZlcnRUb0Rvd25sb2FkID8gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQogCiAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmlu
ZGV4IGFlMmJjN2ZlNjY1MzRkNjc5YTQ4ZmI0MWY2MTNmM2UwOGEwODAxYmYuLmRmZTFkMzhjNjZj
NDhmZmNjODg1ZjgzMWZjMzAyZmI5NDk3YjUzNzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAg
VEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVT
VChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZp
bGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkXSk7CiAgICAgcnVuVGVzdERlY2lkZUJlZm9yZUxvYWRpbmco
ZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVu
dFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQ
b2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVD
VF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdhdGlvbl0pOwpAQCAtMzc5LDcgKzM3OSw3
IEBAIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcp
CiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+
IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2
aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUg
YWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcHJldmlld01J
TUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmls
ZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmll
d01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2FkaW5nKGRlbGVnYXRlLmdldCgp
LCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBF
WFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBb
ZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVn
YXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAppbmRleCA3YWFkMjNjM2VjNWI0MjE3NTFlZGM4NDAw
YzBhMGVhNjBiOGM0ODViLi4zMDkzNzUwMzk3MzNlY2I5NjA3YTViMDI4MjQwNTk1Yzg4ZjU1NGU3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0
ZS5oCkBAIC0yNCwxNyArMjQsMzUgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+
Ci0jaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogCi1AaW50ZXJmYWNlIFRl
c3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4KLUBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFydCkoX1dLRG93bmxv
YWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKLUBwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRX
cml0ZURhdGEpKF9XS0Rvd25sb2FkICosIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOwot
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9P
TCwgTlNTdHJpbmcgKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3du
bG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7Ci1A
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tE
b3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7Citl
bnVtIGNsYXNzIERvd25sb2FkQ2FsbGJhY2sgOiB1aW50OF90IHsKKyAgICBXaWxsUmVkaXJlY3Qs
CisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgRGVjaWRlRGVzdGluYXRpb24sCisg
ICAgRGlkV3JpdGVEYXRhLAorICAgIERpZEZpbmlzaCwKKyAgICBEaWRGYWlsV2l0aEVycm9yLAor
ICAgIE5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwKKyAgICBOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uLAorICAgIE5hdmlnYXRpb25S
ZXNwb25zZSwKK307CisKK0BpbnRlcmZhY2UgVGVzdERvd25sb2FkRGVsZWdhdGUgOiBOU09iamVj
dDxXS0Rvd25sb2FkRGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorCitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKShXS0Rv
d25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVxdWVzdCAqLCB2b2lkICheKShX
S0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShXS0Rvd25sb2FkICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoTlNVUkwgKikpOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKFdLRG93bmxv
YWQgKiwgaW50NjRfdCwgaW50NjRfdCwgaW50NjRfdCk7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkICopOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShXS0Rvd25sb2FkICos
IE5TRXJyb3IgKiwgTlNEYXRhICopOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3ICosIFdLTmF2
aWdhdGlvbkFjdGlvbiAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkoV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pKFdL
TmF2aWdhdGlvbkFjdGlvbiAqLCB2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlKShXS05hdmlnYXRpb25SZXNwb25zZSAqLCB2b2lkICheKShXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeSkpOworCistICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlzaDsK
Ky0gKFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQ7CisKIEBlbmQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdh
dGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
CmluZGV4IDFkYjVjZDgxMWFiNmY1ZDk5YjQxM2U2ZDIxYWFhMzAyYTgwMWZkZDMuLjA1MzA5Mzcz
NTE2MDM0MTJkZWFiNDJjNjhmZGM3MWNhZjBlZGI5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQpAQCAtMjYsNjggKzI2LDExMyBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgog
Ci1AaW1wbGVtZW50YXRpb24gVGVzdERvd25sb2FkRGVsZWdhdGUKKyNpbXBvcnQgPFdlYktpdC9X
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4KIAotLSAodm9pZClfZG93bmxvYWREaWRTdGFy
dDooX1dLRG93bmxvYWQgKilkb3dubG9hZAotewotICAgIGlmIChfZG93bmxvYWREaWRTdGFydCkK
LSAgICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworQGltcGxlbWVudGF0aW9uIFRl
c3REb3dubG9hZERlbGVnYXRlIHsKKyAgICBWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4gX2NhbGxi
YWNrUmVjb3JkOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwKKy0gKHZvaWQpZG93
bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjoo
TlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5
KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKQotICAgICAgICBfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVy
bCk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVk
aXJlY3QpOworCisgICAgQVNTRVJUKF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbik7CisgICAg
X3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKGRvd25sb2FkLCByZXNwb25zZSwgcmVxdWVzdCwg
ZGVjaXNpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKKy0g
KHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihO
U1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1VSTCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNl
aXZlUmVzcG9uc2UpCi0gICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJlc3Bv
bnNlKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShkb3dubG9hZCwgcmVzcG9u
c2UsIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3Qp
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVE
YXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3Rh
bEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUKIHsKKyAgICAvLyBkaWRXcml0ZURhdGEgaXMgY2FsbGVkIGEgbm9u
ZGV0ZXJtaW5pc3RpYyBudW1iZXIgb2YgdGltZXMsIHNvIG9ubHkgcmVjb3JkIG9uY2UgaW4gYSBz
ZXJpZXMuCisgICAgaWYgKF9jYWxsYmFja1JlY29yZC5pc0VtcHR5KCkgfHwgX2NhbGxiYWNrUmVj
b3JkLmxhc3QoKSAhPSBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpCisgICAgICAgIF9j
YWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKTsKKwog
ICAgIGlmIChfZGlkV3JpdGVEYXRhKQogICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBi
eXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
KTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpk
ZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
KikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKTsKLSAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX2Nh
bGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSk7CisKKyAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAg
ICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxl
bmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmls
KTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQKKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewor
ICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoKTsK
KwogICAgIGlmIChfZG93bmxvYWREaWRGaW5pc2gpCiAgICAgICAgIF9kb3dubG9hZERpZEZpbmlz
aChkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgorLSAodm9pZClkb3dubG9hZDoo
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciBy
ZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhCiB7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFw
cGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yKTsKKwogICAgIGlmIChfZGlk
RmFpbFdpdGhFcnJvcikKLSAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9y
KTsKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yLCByZXN1bWVEYXRh
KTsKIH0KIAotLSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxv
YWQKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRpZEJlY29tZURvd25sb2Fk
OihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBpZiAoX2Rvd25sb2FkRGlkQ2FuY2VsKQot
ICAgICAgICBfZG93bmxvYWREaWRDYW5jZWwoZG93bmxvYWQpOworICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2Fk
KTsKKworICAgIGlmIChfbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKQorICAgICAg
ICBfbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25B
Y3Rpb24sIGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNv
bXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2
aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25z
ZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYgKF9k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgIF9kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQpOworCisgICAgaWYgKF9uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKHdlYlZpZXcsIG5hdmlnYXRpb25SZXNwb25zZSwgZG93bmxvYWQpOworfQorCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNp
c2lvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25SZXNwb25zZSk7CisKKyAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZSkKKyAgICAgICAgX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZShuYXZpZ2F0aW9uUmVzcG9uc2UsIGRlY2lzaW9uSGFuZGxlcik7CiAgICAgZWxzZQotICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1
bHRIYW5kbGluZywgbmlsKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0
aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2NhbGxiYWNr
UmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uKTsKKworICAg
IGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikKKyAgICAgICAgX2RlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgZGVjaXNpb25IYW5kbGVy
KTsKKyAgICBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoCit7Cisg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgQVNTRVJUKCFfZG93bmxvYWRE
aWRGaW5pc2gpOworICAgIF9kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7Cisg
ICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZmluaXNoZWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRDcmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgorLSAo
VmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZAogewotICAgIGlmIChf
ZGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3du
bG9hZCwgZGVzdGluYXRpb24pOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKF9jYWxsYmFja1Jl
Y29yZCwgeyB9KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1MTI0NjFlYTEy
YzljYWRhNjE1ZDFlMmM0YTU3MzFmMWQxNWQxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKQEAgLTAsMCAr
MSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CisKK0BpbnRlcmZhY2UgVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgorQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAq
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRl
RGF0YSkoX1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBO
U1N0cmluZyAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2Fk
RGlkRmluaXNoKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25s
b2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRpZENyZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK0BlbmQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3N2E5MjRiZGZlNjk1ZTBiNzkxNWI5NWVmZTlmMDVk
YmYxY2EwODMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZQorCistICh2
b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYg
KF9kb3dubG9hZERpZFN0YXJ0KQorICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7
Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAoreworICAgIGlmIChfZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwpCisgICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTChkb3dubG9hZCwgdXJsKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UK
K3sKKyAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKKyAgICAgICAgX2RpZFJlY2VpdmVSZXNw
b25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3Rh
bEJ5dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQoreworICAgIGlm
IChfZGlkV3JpdGVEYXRhKQorICAgICAgICBfZGlkV3JpdGVEYXRhKGRvd25sb2FkLCBieXRlc1dy
aXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsKK30K
KworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5h
dGlvbikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoZG93bmxvYWQsIGZpbGVuYW1lLCBjb21wbGV0aW9uSGFuZGxlcik7Cit9CisK
Ky0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7Cisg
ICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKKyAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRv
d25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgaWYgKF9kaWRGYWlsV2l0
aEVycm9yKQorICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworfQor
CistICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorewor
ICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCisgICAgICAgIF9kb3dubG9hZERpZENhbmNlbChk
b3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQor
ICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFs
bGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBu
aWwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRD
cmVhdGVEZXN0aW5hdGlvbjooTlNTdHJpbmcgKilkZXN0aW5hdGlvbgoreworICAgIGlmIChfZGlk
Q3JlYXRlRGVzdGluYXRpb24pCisgICAgICAgIF9kaWRDcmVhdGVEZXN0aW5hdGlvbihkb3dubG9h
ZCwgZGVzdGluYXRpb24pOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IDdiYTY3MmFjOWY5MjVmNjMyNWFhMDdmYTZmMTYxYTUwMjM1ZmJi
OGMuLjk5NmYxOTRmN2M0Mjk5MWJmYjczOGJhMDM4NzNhMmJmODc2YzRkY2IgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5j
bHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaD4KICNpbmNsdWRlIDxXZWJL
aXQvV0tDb250ZXh0UHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NyZWRlbnRpYWwuaD4K
KyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYktpdC9X
S0Rvd25sb2FkUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVIYW5kbGVSZWYuaD4KICNp
bmNsdWRlIDxXZWJLaXQvV0tGcmFtZUluZm9SZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tIVFRQ
Q29va2llU3RvcmVSZWYuaD4KQEAgLTgwLDYgKzgyLDcgQEAKICNpbmNsdWRlIDx3dGYvQXV0b2Ry
YWluZWRQb29sLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVk
ZSA8d3RmL0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmg+CisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9Q
cm9jZXNzUHJpdmlsZWdlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTEzMiw2
ICsxMzUsMzMgQEAgc3RhdGljIFdLU3RyaW5nUmVmIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoV0tQYWdlUmVmLCBjb25zdCB2b2lkKikKICAgICByZXR1cm4gV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIk1JSEZNSEV3WERBTkJna3Foa2lHOXcwQkFRRUZBQU5MQURC
SUFrRUFuWDBUSUxKck9NVXVlJTJCUHR3QlJFNlhmViUwQVd0S1Fic3NoeGs1WmhjVXdjd3l2Y25J
cTliODJRaEpkb0FDZEQzNHJxZkNBSU5ENDZmWEtRVW5iMG12S3pRSUQlMEFBUUFCRmhGTmIzcHBi
R3hoU1hOTmVVWnlhV1Z1WkRBTkJna3Foa2lHOXcwQkFRUUZBQU5CQUFLdjJFZXgybiUyRlMlMEFy
JTJGN2lKTnJvV2xTelNNdFRpUVRFQiUyQkFEV0hHajl1MXhyVXJPaWxxJTJGbzJjdVF4SWZaY05a
a1lBa1dQNER1YnFXJTBBaTAlMkYlMkZyZ0J2bWNvJTNEIik7CiB9CiAKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6Om5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHN0YXRpY19jYXN0PFRlc3RD
b250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0
YXJ0KGRvd25sb2FkKTsKKworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQgeworICAgICAg
ICB7IDAsIGNsaWVudEluZm8gfSwKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwsCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUsCisgICAgICAgIG51bGxwdHIsIC8vIGRp
ZFdyaXRlRGF0YQorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2gsCisg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwKKyAgICB9OworCisgICAgV0tE
b3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKwordm9pZCBUZXN0
Q29udHJvbGxlcjo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwg
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIG5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZChk
b3dubG9hZCwgY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKGRvd25sb2FkLCBjbGllbnRJ
bmZvKTsKK30KKwogQXN5bmNUYXNrKiBBc3luY1Rhc2s6Om1fY3VycmVudFRhc2s7CiAKIGJvb2wg
QXN5bmNUYXNrOjpydW4oKQpAQCAtMzM2LDcyICszNjYsNzIgQEAgV0tQYWdlUmVmIFRlc3RDb250
cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1Bh
Z2VDb24KIAogICAgIFdLUGFnZVVJQ2xpZW50Vjggb3RoZXJQYWdlVUlDbGllbnQgPSB7CiAgICAg
ICAgIHsgOCwgdmlldyB9LAotICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gc2hvd1BhZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8g
Y3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8v
IHNob3dQYWdlCiAgICAgICAgIGNsb3NlT3RoZXJQYWdlLAotICAgICAgICAwLCAvLyB0YWtlRm9j
dXMKKyAgICAgICAgbnVsbHB0ciwgLy8gdGFrZUZvY3VzCiAgICAgICAgIGZvY3VzLAogICAgICAg
ICB1bmZvY3VzLAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZv
clVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzZXRTdGF0dXNUZXh0Ci0gICAgICAgIDAsIC8vIG1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwg
Ly8gbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWQKLSAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxl
S2V5RXZlbnQKLSAgICAgICAgMCwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVudAotICAgICAgICAw
LCAvLyB0b29sYmFyc0FyZVZpc2libGUKLSAgICAgICAgMCwgLy8gc2V0VG9vbGJhcnNBcmVWaXNp
YmxlCi0gICAgICAgIDAsIC8vIG1lbnVCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc2V0TWVu
dUJhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBzdGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAg
MCwgLy8gc2V0U3RhdHVzQmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIGlzUmVzaXphYmxlCi0g
ICAgICAgIDAsIC8vIHNldElzUmVzaXphYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFT
Y3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIHJ1
bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIs
IC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51
bGxwdHIsIC8vIHNldFN0YXR1c1RleHQKKyAgICAgICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBt
aXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZAorICAgICAgICBudWxscHRyLCAvLyBkaWROb3RIYW5k
bGVLZXlFdmVudAorICAgICAgICBudWxscHRyLCAvLyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50Cisg
ICAgICAgIG51bGxwdHIsIC8vIHRvb2xiYXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRyLCAv
LyBzZXRUb29sYmFyc0FyZVZpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gbWVudUJhcklzVmlz
aWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRNZW51QmFySXNWaXNpYmxlCisgICAgICAgIG51
bGxwdHIsIC8vIHN0YXR1c0JhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0
dXNCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNSZXNpemFibGUKKyAgICAgICAg
bnVsbHB0ciwgLy8gc2V0SXNSZXNpemFibGUKICAgICAgICAgZ2V0V2luZG93RnJhbWUsCiAgICAg
ICAgIHNldFdpbmRvd0ZyYW1lLAogICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWws
Ci0gICAgICAgIDAsIC8vIGRpZERyYXcKLSAgICAgICAgMCwgLy8gcGFnZURpZFNjcm9sbAotICAg
ICAgICAwLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlk
RHJhdworICAgICAgICBudWxscHRyLCAvLyBwYWdlRGlkU2Nyb2xsCisgICAgICAgIG51bGxwdHIs
IC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQogICAgICAgICBydW5PcGVuUGFuZWwsCiAgICAgICAg
IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QsCi0gICAgICAgIDAs
IC8vIGhlYWRlckhlaWdodAotICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKLSAgICAgICAgMCwg
Ly8gZHJhd0hlYWRlcgotICAgICAgICAwLCAvLyBkcmF3Rm9vdGVyCisgICAgICAgIG51bGxwdHIs
IC8vIGhlYWRlckhlaWdodAorICAgICAgICBudWxscHRyLCAvLyBmb290ZXJIZWlnaHQKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZHJhd0hlYWRlcgorICAgICAgICBudWxscHRyLCAvLyBkcmF3Rm9vdGVy
CiAgICAgICAgIHByaW50RnJhbWUsCiAgICAgICAgIHJ1bk1vZGFsLAotICAgICAgICAwLCAvLyBk
aWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKLSAgICAgICAgMCwgLy8gc2F2ZURhdGFU
b0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgotICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZh
U2NyaXB0Ci0gICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MQotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudAotICAgICAgICAwLCAvLyBk
ZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAotICAgICAgICAwLCAv
LyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQot
ICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKLSAgICAgICAgMCwgLy8gaGlkZUNvbG9yUGlj
a2VyCi0gICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAg
ICAwLCAvLyBwaW5uZWRTdGF0ZURpZENoYW5nZQotICAgICAgICAwLCAvLyBkaWRCZWdpblRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwgLy8gZGlkUmVjb2duaXplTG9u
Z01vdXNlUHJlc3MKLSAgICAgICAgMCwgLy8gZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcwotICAgICAgICAwLCAvLyBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZQorICAgICAg
ICBudWxscHRyLCAvLyBkaWRDb21wbGV0ZVJ1YmJlckJhbmRGb3JNYWluRnJhbWUKKyAgICAgICAg
bnVsbHB0ciwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcgorICAgICAgICBudWxs
cHRyLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0CisgICAgICAgIG51bGxwdHIsIC8vIGNy
ZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAgICBudWxscHRyLCAvLyBt
b3VzZURpZE1vdmVPdmVyRWxlbWVudAorICAgICAgICBudWxscHRyLCAvLyBkZWNpZGVQb2xpY3lG
b3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAorICAgICAgICBudWxscHRyLCAvLyB1bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMQorICAgICAg
ICBudWxscHRyLCAvLyBzaG93Q29sb3JQaWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gaGlkZUNv
bG9yUGlja2VyCisgICAgICAgIG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xp
Y2tlZAorICAgICAgICBudWxscHRyLCAvLyBwaW5uZWRTdGF0ZURpZENoYW5nZQorICAgICAgICBu
dWxscHRyLCAvLyBkaWRCZWdpblRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkUmVjb2duaXplTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkQ2FuY2VsVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcworICAgICAgICBu
dWxscHRyLCAvLyBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZQogICAgICAgICBkZWNpZGVQb2xpY3lG
b3JVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgMCwgLy8gZGlkQ2xpY2tBdXRv
ZmlsbEJ1dHRvbgotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKLSAgICAgICAgMCwg
Ly8gcnVuSmF2YVNjcmlwdENvbmZpcm0KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFByb21w
dAotICAgICAgICAwLCAvLyB1bnVzZWQ1CisgICAgICAgIG51bGxwdHIsIC8vIGRpZENsaWNrQXV0
b2ZpbGxCdXR0b24KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0CisgICAg
ICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIG51bGxwdHIsIC8v
IHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gdW51c2VkNQogICAgICAg
ICBjcmVhdGVPdGhlclBhZ2UsCiAgICAgICAgIHJ1bkphdmFTY3JpcHRBbGVydCwKLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdFBy
b21wdAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQorICAgICAgICBu
dWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0CiAgICAgICAgIGNoZWNrVXNlck1lZGlhUGVy
bWlzc2lvbkZvck9yaWdpbiwKLSAgICAgICAgMCwgLy8gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsCi0gICAgICAgIDAsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZQorICAgICAgICBu
dWxscHRyLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lCiAgICAgICAgIHJlcXVlc3RQb2ludGVyTG9j
aywKLSAgICAgICAgMCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTG9zZVBvaW50ZXJMb2NrCiAg
ICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQobmV3UGFnZSwgJm90aGVyUGFnZVVJQ2xp
ZW50LmJhc2UpOwogICAgIApAQCAtNDEwLDE2ICs0NDAsMTYgQEAgV0tQYWdlUmVmIFRlc3RDb250
cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1Bh
Z2VDb24KICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBkZWNpZGVQb2xpY3lG
b3JQbHVnaW5Mb2FkLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlv
bgorICAgICAgICBudWxscHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAg
ICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24sCi0g
ICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8g
ZGlkQ29tbWl0TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGaW5pc2hOYXZpZ2F0aW9uCi0g
ICAgICAgIDAsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZhaWxQcm92
aXNpb25hbExvYWRJblN1YmZyYW1lCi0gICAgICAgIDAsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9h
ZAotICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8v
IHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQ
cm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29tbWl0TmF2aWdh
dGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hOYXZpZ2F0aW9uCisgICAgICAgIG51
bGxwdHIsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRJblN1YmZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERv
Y3VtZW50TG9hZAorICAgICAgICBudWxscHRyLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
CisgICAgICAgIG51bGxwdHIsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCiAgICAgICAg
IGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgcHJvY2Vzc0RpZENyYXNoLApAQCAt
NDI4LDkgKzQ1OCwxMiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFn
ZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogICAgICAgICB3aWxsRW5k
TmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAg
ICAgICBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90LAotICAgICAgICAwLCAvLyB3
ZWJQcm9jZXNzRGlkVGVybWluYXRlCi0gICAgICAgIDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlm
aWNhdGlvbgotICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisg
ICAgICAgIG51bGxwdHIsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0
ciwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcsCisgICAgICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNv
bWVEb3dubG9hZCwKKyAgICAgICAgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQs
CisgICAgICAgIG51bGxwdHIgLy8gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZAogICAgIH07
CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobmV3UGFnZSwgJnBhZ2VOYXZpZ2F0
aW9uQ2xpZW50LmJhc2UpOwogCkBAIC03NTAsMTYgKzc4MywxNiBAQCB2b2lkIFRlc3RDb250cm9s
bGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
CiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1
Z2luTG9hZCwKLSAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uLAotICAgICAg
ICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkQ29tbWl0TmF2aWdhdGlv
biwKICAgICAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbE5h
dmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUK
LSAgICAgICAgMCwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAgIDAsIC8vIGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRD
aGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2UKICAgICAgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwK
ICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9j
ZXNzRGlkQ3Jhc2gsCkBAIC03NjgsMjggKzgwMSwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
cmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiAgICAg
ICAgIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdl
c3R1cmUsCiAgICAgICAgIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAg
ICAgIDAsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29udGVudFJ1
bGVMaXN0Tm90aWZpY2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAg
ICAgICBudWxscHRyLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAgICAgY29w
eVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdhdGlvbkFj
dGlvbkRpZEJlY29tZURvd25sb2FkLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCwKKyAgICAgICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChtX21haW5XZWJW
aWV3LT5wYWdlKCksICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKLQotICAgIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50VjEgZG93bmxvYWRDbGllbnQgPSB7Ci0gICAgICAgIHsgMSwgdGhpcyB9
LAotICAgICAgICBkb3dubG9hZERpZFN0YXJ0LAotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlCi0g
ICAgICAgIDAsIC8vIGRpZFJlY2VpdmVEYXRhCi0gICAgICAgIDAsIC8vIHNob3VsZERlY29kZVNv
dXJjZURhdGFPZk1JTUVUeXBlCi0gICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lLAotICAgICAgICAwLCAvLyBkaWRDcmVhdGVEZXN0aW5hdGlvbgotICAgICAgICBk
b3dubG9hZERpZEZpbmlzaCwKLSAgICAgICAgZG93bmxvYWREaWRGYWlsLAotICAgICAgICBkb3du
bG9hZERpZENhbmNlbCwKLSAgICAgICAgMCwgLy8gcHJvY2Vzc0RpZENyYXNoOwotICAgICAgICBk
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMCi0gICAgfTsKLSAgICBXS0NvbnRl
eHRTZXREb3dubG9hZENsaWVudChjb250ZXh0KCksICZkb3dubG9hZENsaWVudC5iYXNlKTsKICAg
ICAKICAgICAvLyB0aGlzIHNob3VsZCBqdXN0IGJlIGRvbmUgb24gdGhlIHBhZ2U/CiAgICAgV0tQ
YWdlSW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudCA9IHsKQEAgLTIw
NzksNDUgKzIwOTgsMzUgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdLUGFnZVJlZiBwYWdlLCBXS0F1dGhlbnQKIH0KIAogCi0vLyBXS0Nv
bnRleHREb3dubG9hZENsaWVudAotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQotewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFN0YXJ0KGNvbnRleHQsIGRv
d25sb2FkKTsKLX0KKy8vIFdLRG93bmxvYWRDbGllbnQKICAgICAKLVdLU3RyaW5nUmVmIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5h
bWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29udGV4
dCwgZG93bmxvYWQsIGZpbGVuYW1lLCBhbGxvd092ZXJ3cml0ZSk7Ci19Ci0KLXZvaWQgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorV0tTdHJpbmdSZWYgVGVz
dENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLU3RyaW5nUmVm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRp
Y19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
b3dubG9hZERpZEZpbmlzaChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgc3VnZ2VzdGVkRmls
ZW5hbWUpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3Is
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZpbmlzaChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQog
ewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZEZhaWwoY29udGV4dCwgZG93bmxvYWQsIGVycm9yKTsKKyAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi12b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9y
LCBXS0RhdGFSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2Fk
RGlkQ2FuY2VsKGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJv
bGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGRv
d25sb2FkLCBlcnJvcik7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK2Jvb2wg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIG5l
d1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoY29udGV4dCwgZG93bmxvYWQsIHVybCk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2Fk
LCBuZXdSZXF1ZXN0KTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFy
dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3ZvaWQgVGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKIHsK
ICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgc3RhcnRlZC5cbiIpOwogfQogCi1XS1N0
cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwg
Ym9vbComIGFsbG93T3ZlcndyaXRlKQorV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLU3RyaW5nUmVmIGZpbGVuYW1lKQogewogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9
IHRvV1RGU3RyaW5nKGZpbGVuYW1lKTsKIApAQCAtMjEzMywyOCArMjE0MiwzMyBAQCBXS1N0cmlu
Z1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUoV0tDb250ZXh0UmVmLAogICAgIGlmICghZHVtcFJlbmRlclRyZWVUZW1wKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgICphbGxvd092ZXJ3cml0ZSA9IHRydWU7CiAgICAgU3RyaW5n
IHRlbXBvcmFyeUZvbGRlciA9IFN0cmluZzo6ZnJvbVVURjgoZHVtcFJlbmRlclRyZWVUZW1wKTsK
ICAgICBpZiAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQogICAgICAgICBzdWdnZXN0ZWRG
aWxlbmFtZSA9ICJVbmtub3duIjsKKyAgICAKKyAgICBTdHJpbmcgZGVzdGluYXRpb24gPSB0ZW1w
b3JhcnlGb2xkZXIgKyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBpZiAoRmlsZVN5c3Rl
bTo6ZmlsZUV4aXN0cyhkZXN0aW5hdGlvbikpCisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZp
bGUoZGVzdGluYXRpb24pOwogCi0gICAgcmV0dXJuIHRvV0sodGVtcG9yYXJ5Rm9sZGVyICsgIi8i
ICsgc3VnZ2VzdGVkRmlsZW5hbWUpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gdG9XSyhkZXN0aW5h
dGlvbikubGVha1JlZigpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZp
bmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCit2b2lkIFRlc3RDb250cm9sbGVyOjpk
b3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rv
d25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0
KCJEb3dubG9hZCBjb21wbGV0ZWQuXG4iKTsKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5ub3Rp
ZnlEb3dubG9hZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdL
VVJMUmVmIHVybCkKK2Jvb2wgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpCiB7
CisgICAgYXV0byB1cmwgPSBhZG9wdFdLKFdLVVJMUmVxdWVzdENvcHlVUkwocmVxdWVzdCkpOwog
ICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVk
IHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsKSkpLCAiXCIu
XG4iKSk7CisgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmlu
ZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdL
VVJMQ29weVN0cmluZyh1cmwuZ2V0KCkpKSksICJcIi5cbiIpKTsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnJvcikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRv
d25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQogewogICAgIGlm
IChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKSB7CiAgICAgICAgIG1fY3VycmVudEludm9j
YXRpb24tPm91dHB1dFRleHQoIkRvd25sb2FkIGZhaWxlZC5cbiJfcyk7CkBAIC0yMTY4LDEzICsy
MTgyLDYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBlcnIKICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5ub3RpZnlEb3dubG9hZERvbmUoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQotewotICAgIGlmIChtX3No
b3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQotICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5v
dXRwdXRUZXh0KCJEb3dubG9hZCBjYW5jZWxsZWQuXG4iKTsKLSAgICBtX2N1cnJlbnRJbnZvY2F0
aW9uLT5ub3RpZnlEb3dubG9hZERvbmUoKTsKLX0KLQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cHJv
Y2Vzc0RpZENyYXNoKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgbXVs
dGlwbGUgdGltZXMgd2hlbiBjcmFzaCBsb2dzIGFyZSBiZWluZyBzYXZlZCBvbiBXaW5kb3dzLCBz
bwpAQCAtMjUwNCw3ICsyNTExLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWcKICAgICBhdXRv
IGRlY2lzaW9uRnVuY3Rpb24gPSBbc2hvdWxkSWdub3JlLCByZXRhaW5lZExpc3RlbmVyLCByZXRh
aW5lZE5hdmlnYXRpb25BY3Rpb24sIHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHRO
YXZpZ2F0aW9uID0gbV9zaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlv
biwgc2hvdWxkU3dhcFRvRGVmYXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uID0gbV9zaG91bGRT
d2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb25dKCkgewogICAgICAgICBpZiAoc2hv
dWxkSWdub3JlKQogICAgICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKHJldGFp
bmVkTGlzdGVuZXIuZ2V0KCkpOwotICAgICAgICBlbHNlIGlmIChXS05hdmlnYXRpb25BY3Rpb25T
aG91bGRQZXJmb3JtRG93bmxvYWQocmV0YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKKyAg
ICAgICAgZWxzZSBpZiAoV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUocmV0
YWluZWROYXZpZ2F0aW9uQWN0aW9uLmdldCgpKSkKICAgICAgICAgICAgIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lckRvd25sb2FkKHJldGFpbmVkTGlzdGVuZXIuZ2V0KCkpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIGlmIChzaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdh
dGlvbiB8fCBzaG91bGRTd2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24pIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCBiNTdiOGY3YTA1OTUyM2Vj
Zjg3N2FiMDE5NzIwZDRkYmU1OGZjYjVmLi43NjgxZTFlNDE5YmE4OTdkMTI1MWU5OGUyYjFmYWQz
OWZhZjZmMjI1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC00
NDIsMTkgKzQ0MiwxOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaE5hdmln
YXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCopOwogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1BhZ2VSZWYsIFdLTmF2
aWdhdGlvblJlZik7CiAKLSAgICAvLyBXS0NvbnRleHREb3dubG9hZENsaWVudAotICAgIHN0YXRp
YyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYg
YWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWRE
aWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBk
b3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBj
b25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZENhbmNl
bChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRv
d25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYs
IFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
ZiwgV0tVUkxSZWYpOworICAgIC8vIFdLRG93bmxvYWRDbGllbnQKKyAgICBzdGF0aWMgdm9pZCBu
YXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25B
Y3Rpb25SZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBu
YXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZv
aWQgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYsIGNvbnN0
IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tEb3dubG9hZFJlZik7CisgICAg
c3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBXS1N0cmluZ1JlZiBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1Jl
ZiBmaWxlbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9h
ZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9h
ZFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdL
RXJyb3JSZWYsIFdLRGF0YVJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxvYWREaWRG
YWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOworICAgIHN0YXRpYyBib29sIGRvd25sb2Fk
RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXNwb25z
ZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7CisgICAgYm9vbCBkb3dubG9hZERp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJl
Zik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdLUGFnZVJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhZmY0MTY0YmJmZGI5MmM2OTM5N2JhNmIxMzU4YjcwMmY3ODgyZTBlLi4wNjM0ZTk0ZDI2MTZk
OTMwNzQyY2U0ZmYyOWQ5OWRmNTEwMDA4MWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAt
MTEtMTkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBJbnRyb2R1Y2UgbmV3IGRvd25sb2FkIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJh
ZHkgRWlkc29uLgorCisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWRvd25sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29u
dmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
Tm93IHRoYXQgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5hbWUgZG9lc24ndCBz
dWdnZXN0ICJ1bmtub3duIgorICAgICAgICB0aGUgY2FwaXRhbGl6YXRpb24gaGFzIGNoYW5nZWQg
dG8gIlVua25vd24iIGZyb20gTlNVUkxSZXNwb25zZSdzIHN1Z2dlc3RlZEZpbGVuYW1lLgorCiAy
MDIwLTExLTE5ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3MDAwOS4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxv
YWQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFjNGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmEx
NmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgzYTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9h
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1l
bnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIERvd25sb2Fk
IHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25v
d24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93
bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBVUkwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC11c2VyLXRy
aWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRo
ZXRpYy1jbGljay1leHBlY3RlZC50eHQKaW5kZXggYmVkYzhkZGEwMWM4YzEyMzdlMTA2YzY4NTMz
NDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVhNThjMDhmYmVlMDZjYjM5NDMxY2RjMzFkMGRiNTlhNSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2Fk
LXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1
IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZp
bGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmls
ZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRlc3QgdGhhdCB1c2Vy
IHRyaWdnZXJlZCBzeW50aGV0aWMgY2xpY2tzIG9uIGFuIGFuY2hvciB3aXRoIGEgZG93bmxvYWQg
YXR0cmlidXRlIGFyZSBub3QgaWdub3JlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25s
b2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1hc3lu
Yy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlm
ZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9y
LWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3Rl
ZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBz
aG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxl
LWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3
Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEy
ODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmls
ZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAog
RG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFt
ZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5r
bm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4K
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5j
aG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKaW5kZXgg
MDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJh
MDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3du
bG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4K
LURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgor
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBE
b3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414708</attachid>
            <date>2020-11-20 13:01:55 -0800</date>
            <delta_ts>2020-12-03 16:36:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201120130154.patch</filename>
            <type>text/plain</type>
            <size>331018</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzODJhZmU1Yzk4MmE5Yjhh
NTdiODNjOTgwZGI3ZDIyMTRlODA0NjMuLmY1YmY5NjdiMWYwM2Y0MzA1NTU3YzM1MzZlZjgzNDQz
OTgzZjc0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg3IEBACisyMDIwLTExLTE5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBTYWZhcmkgY3VycmVudGx5IHVzZXMgX1dLRG93bmxvYWQsIHdoaWNoIGhhcyBldm9s
dmVkIHN0cmFuZ2VseSBvdmVyIHRoZSBsYXN0IGRlY2FkZS4KKyAgICAgICAgSW4gb3JkZXIgdG8g
bWFrZSBhIG5pY2VyIGludGVyZmFjZSwgd2UgbmVlZCB0byBsZWFybiBmcm9tIHRob3NlIGxlc3Nv
bnMgYW5kIHRha2UgYSBzdGVwIGJhY2suCisgICAgICAgIEkgZGlkIHRoYXQsIGFuZCBoZXJlJ3Mg
d2hhdCBJIGNhbWUgdXAgd2l0aDogV0tEb3dubG9hZCBhbmQgV0tEb3dubG9hZERlbGVnYXRlIQor
CisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhlIGRlbGVn
YXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIHByb2Nl
c3MgcG9vbC4KKyAgICAgICAgMi4gIFdLRG93bmxvYWQgZG9lcyBub3QgY29uZm9ybSB0byBOU0Nv
cHlpbmcgYmVjYXVzZSB3ZSBoYXZlIE5TTWFwVGFibGUgaW5zdGVhZCBvZiBOU0RpY3Rpb25hcnku
CisgICAgICAgIDMuICBwdWJsaXNoUHJvZ3Jlc3NBdFVSTCBpcyBnb25lLiAgVGhhdCB3aWxsIGJl
IHJlaW1wbGVtZW50ZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVzZWQg
aXQuCisgICAgICAgIDQuICBjYW5jZWwgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGdldCB0
aGUgcmVzdW1lIGRhdGEgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBkaWRDYW5jZWwgdGhlbiBnZXR0
aW5nIGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4KKyAgICAgICAgNS4gIGRpZEZhaWxXaXRo
RXJyb3IgYWxzbyBnaXZlcyB5b3UgdGhlIHJlc3VtZSBkYXRhLCBzbyB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4gIFRoYXQncyBtb3JlIGFib3V0IGEg
ZmFpbC9jYW5jZWwKKyAgICAgICAgICAgIGV2ZW50IHRoYW4gYSBwcm9wZXJ0eSBvZiB0aGUgZG93
bmxvYWQuCisgICAgICAgIDYuICB3YXNVc2VySW5pdGlhdGVkIGlzIGdvbmUuICBJbnN0ZWFkLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMgYSBjYWxsYmFjayB0aGF0IGxpbmtzIGEgbmF2aWdhdGlv
biBhY3Rpb24gKHdoZXJlIF9pc1VzZXJJbml0aWF0ZWQgaXMgZXhwb3NlZCkgdG8gdGhlIGRvd25s
b2FkLgorICAgICAgICA3LiAgcmVkaXJlY3RDaGFpbiBpcyBhbHNvIGdvbmUuICBUaGF0IGNhbiBh
bHNvIGJlIGdvdHRlbiBmcm9tIHRoZSBsaW5rIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZCB0aGUgZG93
bmxvYWQgZGVsZWdhdGUncyByZWRpcmVjdCBjYWxsYmFjay4KKyAgICAgICAgOC4gIF9kb3dubG9h
ZERpZFN0YXJ0IGlzIGdvbmUuICBJbnN0ZWFkLCB3ZSBoYXZlIGNvbXBsZXRpb24gaGFuZGxlcnMg
dGhhdCBleHBvc2UgYSBXS0Rvd25sb2FkIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBu
ZWVkIHRvCisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUg
dGhlbiBhbnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdo
aWNoIGlzIGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0
aGVyZSB3aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRv
d25sb2FkIG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgOS4gIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9y
IGNhbmNlbGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAg
ICAgICAgICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTAuIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2
ZSBiZWVuIG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGlt
ZSBhbmQKKyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQ
SS4gIGFsbG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90
IHJlYWxseSBuZWVkZWQuCisgICAgICAgIDExLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25l
LiAgVGhhdCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5l
ZWQgdG8ga25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAg
ICAgICAgIGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5p
dGVseSBiZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTIuIHNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlIGlzIGdvbmUuICBJdCdzIGFjdHVhbGx5IG5vdCBjYWxsZWQgc2luY2Ug
d2UgYWRvcHRlZCBOU1VSTFNlc3Npb24sIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSByZWxhdGVk
IGRlYWQgY29kZS4KKyAgICAgICAgMTMuIG9yaWdpbmF0aW5nRnJhbWUgaXMgZ29uZS4gIE9uIF9X
S0Rvd25sb2FkIGl0IHdhcyBhY3R1YWxseSBhIG5vbi1udWxsIFdLRnJhbWVJbmZvIHRoYXQgb2Z0
ZW4gY29udGFpbmVkIG5vIGluZm9ybWF0aW9uLiAgV2hlbiBpbmZvcm1hdGlvbiB3YXMgdGhlcmUs
CisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24gYWNjZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5
IGRpZEJlY29tZURvd25sb2FkIHdoaWNoIGxpbmtzIHRoZSBXS05hdmlnYXRpb25SZXNwb25zZSB3
aGljaCBoYXMgZnJhbWUgaW5mbyBvbiBpdC4KKworICAgICAgICBJIHdyb3RlIEFQSSB0ZXN0cyBm
b3IgZXZlcnl0aGluZyBJIGNvdWxkIHRoaW5rIG9mLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5h
bWUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9y
Ol0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLRG93bmxvYWRHZXRUeXBl
SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKFdLRG93bmxv
YWRDYW5jZWwpOgorICAgICAgICAoV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZSk6CisgICAg
ICAgIChXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZCk6CisgICAgICAgIChXS0Rvd25sb2Fk
U2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwOgorICAg
ICAgICAoV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlUG9saWN5
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW06IEFkZGVkLgorICAgICAgICAoLVtXS0Rvd25sb2Fk
IGNhbmNlbDpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBvcmlnaW5hbFJlcXVlc3RdKToKKyAg
ICAgICAgKC1bV0tEb3dubG9hZCBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHNl
dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25B
Y3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVdKToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9u
IF9zaG91bGRQZXJmb3JtRG93bmxvYWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25s
b2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0
YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOl0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBj
YW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6
CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJlcXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxv
YWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0
Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVEYXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdh
Y3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlk
U3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTEtMTkgIFBlciBBcm5lIFZvbGxh
biAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10gSXNzdWUgc2FuZGJveCBl
eHRlbnNpb24gdG8gYXVkaW8gc2VydmljZSBpZiBNZWRpYSBpbiB0aGUgR1BVIHByb2Nlc3MgaXMg
bm90IGVuYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCAzZTdlNTk1ODRmZjI4MDAwZTEwZDk5YWU0
NGFiZWMzZmZhMjEzOWEyLi45OGVhMDdkYWIxM2Q2ODk2NGZhNmEzZWYxYmFlYzJiN2UxYTA0NDY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdC9IZWFkZXJzLmNtYWtlCkBAIC00MCwxNCArNDAsMTQgQEAgc2V0KFdlYktpdF9QVUJMSUNf
RlJBTUVXT1JLX0hFQURFUlMKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaAotICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHREb3dubG9hZENsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dEhp
c3RvcnlDbGllbnQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dFByaXZhdGUuaAogICAgIFVJ
UHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Ny
ZWRlbnRpYWwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxUeXBlcy5oCi0gICAg
VUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25s
b2FkQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRiYzY5MDdiN2Q5MWI0
N2I3NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQyZjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6ZG93
bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBSZWY8TmV0dwog
ICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRvd25sb2FkSUQsIFdU
Rk1vdmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBh
dGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCit2
b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWRE
aWRTdGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
QEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2Fk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBhdXRvIGRv
d25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2FkSUQsIG51bGxwdHIs
ICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJlc3VtZURhdGEsIHBh
dGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAgLy8gRm9yIGNvbXBh
dGliaWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBzZW5kIERpZFN0YXJ0
IGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93bmxvYWREaWRTdGFy
dCA9PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3dubG9hZC0+c2VuZChN
ZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsKKwogICAgIEFTU0VS
VCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1fZG93bmxvYWRzLmFk
ZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
aW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1MC4uYzQ4MWViNWY2
ZDQyOWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgKQEAgLTYw
LDYgKzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiBjbGFzcyBO
ZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBjbGFzcyBDYWxsRG93
bmxvYWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERvd25sb2FkTWFuYWdl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2VyKTsKIApAQCAtODYs
NyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xvYWRUb0Rvd25sb2Fk
KERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwgUmVzcG9uc2VDb21w
bGV0aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRl
ZChEb3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAgIHZvaWQgcmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxv
YWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7
CiAKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09B
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggOTVmOGRlYzMwMjUxYjgwYmFhMjljZTU5
MDg3M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQzMDUwYmE1YjFkNmM2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29j
b2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4IEBAIHZvaWQgRG93
bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05TUHJvcGVydHlMaXN0
U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5IGZvcm1hdDpOU1By
b3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKICNlbmRp
ZgogCisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRhdGVkRGF0YSBvbmNl
IHdlJ3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gV0tEb3dubG9hZAorICAgIC8vIGJl
Y2F1c2UgdGhlcmUncyBubyByZWFzb24gdG8gc2V0IHRoZSBsb2NhbCBwYXRoIHdlIGdvdCBmcm9t
IHRoZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0YS4KICAgICBtX2Rvd25sb2FkVGFzayA9IFtjb2Nv
YVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5zZXNzaW9uIGRvd25sb2FkVGFz
a1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJZGVudGlmaWVyID0g
W21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKICAgICBBU1NFUlQoIWNvY29hU2Vzc2lv
bi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNvbnRhaW5zKHRhc2tJ
ZGVudGlmaWVyKSk7CkBAIC04Myw3ICs4NSwyMiBAQCB2b2lkIERvd25sb2FkOjpyZXN1bWUoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsCiB2
b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKG1fZG93bmxvYWRUYXNrKTsKLSAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2Vs
QnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0YSkgbXV0YWJsZSB7
CisgICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1lRGF0YTptYWtlQmxv
Y2tQdHIoW3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCkuX3BhdGhUb0Rvd25s
b2FkVGFza0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyNpZiBVU0UoTEVHQUNZX0NGTkVU
V09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAv
LyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJl
c3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAg
ICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10g
aW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAg
ICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJl
UG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRv
cHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNv
ZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xh
c3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10s
IFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmls
XSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsK
KyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtk
aWN0aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3Vt
ZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tO
U0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7Cisg
ICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6
QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEg
PSBbZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIFVOVVNF
RF9QQVJBTShwYXRoKTsKKyNlbmRpZgogICAgICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2Ug
PSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWlu
dDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRh
UmVmZXJlbmNlIHsgfTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdW1lRGF0YVJlZmVy
ZW5jZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggOGQ4OTdhNDIzMGFmZTJlOThkZGRh
OWM0YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4MmM5ZTQ3M2JmMzVlMDNmZjNhNjJmNzA1ZDNlMWFj
MjE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwCkBAIC00NDYsMTAgKzQ0Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
U2FuCiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSgpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICByZXR1cm4gInVua25vd24iX3M7Cisg
ICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgTmV0d29ya0RhdGFUYXNr
QmxvYjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCA4YTlkMmYzOTM5ZTcxODZiODFlOGE3ZWZkNGJiZWI1MGE2M2Iy
ZjU5Li5iNGViMTBhMDk4NDNmZmM2NDUzYTBjYzRhOWM3MmY0ZWJmOGVlNzhmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjA1Myw5
ICsyMDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2Fk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0
OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxs
RG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAgICBkb3dubG9hZE1h
bmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlc3VtZURhdGEs
IHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAgIGRvd25sb2FkTWFu
YWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwg
cGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERvd25sb2FkRGlkU3Rh
cnQpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9hZChEb3dubG9hZElE
IGRvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDc5LDEwICsyMDc5LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5ldHdvcmtEYXRhVGFz
ayYgbmV0d29ya0RhdGFUYXMKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gbmV0d29y
a0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkudG9VSW50NjQoKTsKIAotICAgIC8vIEFzIHBl
ciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2FkIChzdGVwIDIpLCB0
aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXIKLSAgICAvLyBz
aG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRoZSBkb3dubG9hZCBh
dHRyaWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2UuaXNBdHRh
Y2htZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpIDogbmV0
d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2VzdGVkRmlsZW5hbWUg
PSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2Vz
dGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIFN0cmluZyBzdWdnZXN0ZWRG
aWxlbmFtZSA9IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogCiAgICAgZG93
bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpEb3du
bG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25z
ZSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBuZXR3
b3JrRGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdvcmtEYXRhVGFzayldIChTdHJpbmcmJiBkZXN0aW5h
dGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
QWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAgICAgICBhdXRvIGRv
d25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYmU1MjZlZmYx
ZThjOTFkMzZlYTg5Yjg3ZTdiNTY3OTU4YTk1NmZiMi4uMjlkNGE2ODAwZWM2YWIwZDgwZGI4MzNk
NTRkMjdmMGQ1NzdiOGU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOworZW51bSBjbGFzcyBD
YWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3VsZEdyYW5kZmF0aGVy
U3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50
OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKQEAgLTQy
MSw3ICs0MjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUg
bW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4s
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
cmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUm
Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAgICAg
dm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0IFVSTCYsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDBmMDE5MDU2ZTViNTdm
NTMzNGI4Y2U3MzgyNmUyZmEwNTY4ODkzYmYuLmE5YmJlY2U1YWE4ZDg3YjM0OTMyYTYzOTJjZjVh
ZGUyNzg3OGUxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDgsNyArNDgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVuYW1lT3JpZ2luSW5XZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvbGREb21haW4sIFVSTCBuZXdE
b21haW4sIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0ZURhdGFUeXBl
cykgLT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0cmluZyBzdWdnZXN0
ZWRGaWxlbmFtZSkKLSAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1l
RGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0OjpDYWxsRG93bmxvYWRE
aWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKICAgICBDYW5jZWxEb3dubG9hZChXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRh
KSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3dubG9hZFByb2dyZXNz
KFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJLaXQ6OlNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CmluZGV4IDhhOGFiMGI5YjgzMWNhZjQ4ZmEyMjQ1MzA5OGFmYjI0YWFhOGY0ZGUuLmNiNjk2ZjMy
YTkzZTVkNjZlYjcwY2QwNDhmZWIxNDE2YWI5NTg3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAg
LTc2OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2
YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2UKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAg
ICBpZiAocmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRvZXMgbm90IGluY2x1
ZGUgdGhlIGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBmcm9tIENGTmV0d29y
ay4gQWRkIGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVuYXJjaGl2ZXIgPSBh
ZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6
cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIHNldERlY29k
aW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsK
KyAgICAgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGljX2Nhc3Q8TlNNdXRh
YmxlRGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1Nl
dCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBb
TlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJM
IGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hp
dmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAgICBbdW5hcmNoaXZl
ciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dGFz
ay5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSBmb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZv
TG9jYWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllFU10pOworICAgICAg
ICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rpb25hcnkuZ2V0KCkgZm9yS2V5OkAiTlNL
ZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgICAgICAgICByZXN1bWVEYXRhID0gW2Vu
Y29kZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9CisjZW5kaWYKKwogICAgICAgICBhdXRvIHJl
c3VtZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3Rh
dGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxl
bmd0aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgZG93bmxvYWQtPmRpZEZh
aWwoZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDU3M2VkM2Q4ZWU5YmJmNDEwMzE2OGU3OWEwNTdm
OWRiZGI5Yjg2OTUuLmUyODcwYTBhZmRjOWY4NTE4ZTFkMjk0NzNjM2M1YjYzMjc1OTM4MTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIv
U291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtNjcyLDYgKzY3Miw3
IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2ViS2l0OjpBY3Rpdml0
eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAgICAgICAgJ1dlYktp
dDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAgICAgICdXZWJLaXQ6
OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5oIiddLAorICAgICAg
ICAnV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2FkTWFuYWdlci5oIidd
LAogICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzogWyciQ29udGVudFdv
cmxkU2hhcmVkLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRS
ZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAgICAgICAnV2ViS2l0
OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3M2UxMDk5NGY1ZGMxMzdmYWY0
MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJjZGUxOTIwZmI1MDRjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzAsNiArMzAsOCBAQAog
I2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KICNpbXBvcnQgPFdlYktp
dC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJl
c3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRB
UElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApp
bmRleCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3M2M1MmFjMTFlYjIyMjBhY2Y2Li40YTExMzY0NjEx
Y2ZiYzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5YWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtMTI3LDYgKzEyNywxMiBAQCBhdXRvIHRvQVBJ
KFQqIHQpIC0+IEFQSVR5cGUKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBlPihB
UEk6Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88VD46OkFQSVR5cGU+CithdXRvIHRvQVBJ
KFQmIHQpIC0+IEFQSVR5cGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxBUElUeXBl
PihBUEk6Ok9iamVjdDo6d3JhcCgmdCkpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPFQ+OjpJbXBsVHlwZT4KIGF1dG8g
dG9JbXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElP
YmplY3QubW0KaW5kZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAxYmZhMzVmN2RiZS4u
N2YwNTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAogI2ltcG9ydCAiV0tD
b250ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5oIgor
I2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TQXJyYXkuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNz
aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFs
LmgiCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5oIgotI2ltcG9ydCAi
X1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVudGFsRmVhdHVyZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBbX1dLRG93bmxvYWQg
YWxsb2NdOworICAgICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2NdOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cmlu
ZGV4IDA5MTdmMDFiZTFjOWY4Y2FhMmFiZjdmMGY4OTBmODk1YTNmMmVmODYuLjRlYTRhZmJkNjlm
MTgwZDc4ZTU5YmZhZTMyNWM0ZWY2NGY0NDkyMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzc0LDcgKzM3
NCw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFn
ZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAotVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWQuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0Mv
V0tGcmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVmLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CmluZGV4IDk5NTE4MDczMjgwZTljOTVhMmIyNWYwMGJjOGJmYjM4ODc2MjEy
NDEuLjI0ODA1MzJlZWNlMWE0OTA0YmVkYzhjZGQ0ZTk3ZjFiYzk1NWI4NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29u
dGVudFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVMaXN0U3Rv
cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCitVSVByb2Nlc3MvQVBJL0NvY29h
L1dLRG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
RmluZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxv
YWRDbGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4MGJhNjEyYTRkY2U1
Li5kZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApAQCAtNDksMTggKzQ5
LDIwIEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBuYW1lc3BhY2UgQVBJ
IHsKIAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgUmVmQ291
bnRlZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsg
Y2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwg
dWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWwo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYmJhODU5YWYyZTQzNWU5ZjA5MjRmNGEzMmUxMTdk
OTYzOTVkYmY5NS4uMGM1NjRkNDQ1NGM4MmQ4OTU3YWZlYWU3NDdjMGI2ZjE3MGY2YmFmNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5o
CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBib29sIGNhbkhhbmRsZVJlcXVlc3QoKSBj
b25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmNhbkhhbmRsZVJlcXVlc3Q7IH0K
ICAgICBib29sIHNob3VsZE9wZW5FeHRlcm5hbFNjaGVtZXMoKSBjb25zdCB7IHJldHVybiBtX25h
dmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0gV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3cgfHwgbV9uYXZpZ2F0
aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93RXh0ZXJuYWxTY2hlbWVzQnV0
Tm90QXBwTGlua3M7IH0KICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcygpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkT3BlbkFwcExpbmtzICYmIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvdzsgfQotICAgIGJvb2wgc2hvdWxkUGVyZm9ybURvd25sb2FkKCkg
Y29uc3QgeyByZXR1cm4gIW1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUu
aXNOdWxsKCk7IH0KKyAgICBjb25zdCBXVEY6OlN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlOyB9
CiAgICAgYm9vbCBpc1JlZGlyZWN0KCkgY29uc3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5pc1JlZGlyZWN0OyB9CiAgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9uYXZp
Z2F0aW9uQWN0aW9uRGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OyB9CiAKQEAgLTcx
LDYgKzcxLDggQEAgcHVibGljOgogICAgIHZvaWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3Jp
emF0aW9uKCkgeyBtX3Nob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2Vu
ZGlmCiAKKyAgICBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5m
byogdGFyZ2V0RnJhbWUsIE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5h
bFVSTCwgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9u
PiYmIHVzZXJJbml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdh
dGlvbikKICAgICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4
NmRiZTg4NmEwNzQyMmJmODNiN2FmY2ZjYmM2YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgx
ZTkyY2VlNDkyNWZmNmFkZGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtOwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2Vi
RnJhbWVQcm94eTsKQEAgLTk5LDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRp
b25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBOYXZpZ2F0aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgTmF2aWdhdGlvbkFjdGlvbiYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsg
Y2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1
ZSk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmgKaW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5Yjdk
ZDMxYTBjMmE5Y2ViZWQ0Zi4uMjYxMDE4OGE5NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApA
QCAtNTAsMTEgKzUwLDExIEBAIGNsYXNzIFBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+UG9saWN5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXIt
PnVzZSgpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29u
c3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YktpdDo6V2ViRnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktp
dDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCop
CiAgICAgewogICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMz
YTVjMjYwNzRlMjYyZDExMzRiYy4uZmZkMDdlOGNjZDhiMDQwNjcxNGVlODcxMGVjMjEzMDgwOWZl
YzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBA
IC01NSw5ICs1NSw2IEBACiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Lmgi
CiAKIG5hbWVzcGFjZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRl
eHREb3dubG9hZENsaWVudFYwLCBXS0NvbnRleHREb3dubG9hZENsaWVudFYxPiBWZXJzaW9uczsK
LX07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRUcmFpdHM8V0tDb250ZXh0SGlzdG9yeUNsaWVu
dEJhc2U+IHsKICAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8V0tDb250ZXh0SGlzdG9yeUNsaWVudFYw
PiBWZXJzaW9uczsKIH07CkBAIC0xNjgsOTAgKzE2NSw2IEBAIHZvaWQgV0tDb250ZXh0U2V0SGlz
dG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0SGlzdG9y
eUNsCiAgICAgfQogfQogCi12b2lkIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBjb25zdCBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UqIHdrQ2xpZW50
KQotewotICAgIGNsYXNzIExlZ2FjeURvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVibGljIEFQSTo6
Q2xpZW50PFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZT4sIHB1YmxpYyBBUEk6OkRvd25sb2Fk
Q2xpZW50IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IExlZ2FjeURvd25sb2FkQ2xp
ZW50KGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50LCBXS0NvbnRleHRS
ZWYgY29udGV4dCkKLSAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKLSAgICAgICAgfQotICAgIHByaXZhdGU6
Ci0gICAgICAgIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFN0YXJ0
KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFN0YXJ0
KG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBXZWJL
aXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX2Nv
bnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKCZhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAg
ICAgICAgfQotICAgICAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVS
ZXNwb25zZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5k
aWRSZWNlaXZlUmVzcG9uc2UobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5
KSwgV2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpLnB0cigp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRp
ZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0
X3QgbGVuZ3RoLCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZURhdGEobV9jb250ZXh0LCBXZWJLaXQ6
OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbGVuZ3RoLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRlLCBXVEY6OlN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRp
ZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZFByb3h5LCByZXNwb25zZSk7Ci0gICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKQotICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpObywgeyB9KTsKLSAgICAgICAgICAgIGJvb2wgYWxsb3dPdmVyd3JpdGUgPSBmYWxzZTsK
LSAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb24gPSBhZG9wdFdLKG1fY2xpZW50LmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgm
ZG93bmxvYWRQcm94eSksIFdlYktpdDo6dG9BUEkoZmlsZW5hbWUuaW1wbCgpKSwgJmFsbG93T3Zl
cndyaXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6WWVzIDog
V2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIFdlYktpdDo6dG9XVEZTdHJpbmcoZGVzdGluYXRp
b24uZ2V0KCkpKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9u
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgU3RyaW5nJiBwYXRo
KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENyZWF0ZURl
c3RpbmF0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50
LmRpZENyZWF0ZURlc3RpbmF0aW9uKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQ
cm94eSksIFdlYktpdDo6dG9BUEkocGF0aC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRGaW5pc2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94
eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBk
aWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkRmFpbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBtX2NsaWVudC5kaWRGYWlsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94
eSksIFdlYktpdDo6dG9BUEkoZXJyb3IpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAg
ICAgICB9Ci0gICAgICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKFdlYktpdDo6RG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRDYW5jZWwpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9j
bGllbnQuZGlkQ2FuY2VsKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBwcm9j
ZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fY2xpZW50LnByb2Nlc3NEaWRDcmFzaCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jh
c2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fY2xpZW50LmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3QobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwg
V2ViS2l0Ojp0b1VSTFJlZihyZXF1ZXN0LnVybCgpLnN0cmluZygpLmltcGwoKSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKLSAgICAgICAgfQotICAgICAgICBXS0NvbnRleHRSZWYgbV9jb250ZXh0Owot
ICAgIH07Ci0gICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dCktPnNldExlZ2FjeURvd25sb2FkQ2xp
ZW50KGFkb3B0UmVmKCpuZXcgTGVnYWN5RG93bmxvYWRDbGllbnQod2tDbGllbnQsIGNvbnRleHQp
KSk7Ci19Ci0KIHZvaWQgV0tDb250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYg
Y29udGV4dFJlZiwgY29uc3QgV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIHdrQ2xpZW50
KQogewogICAgIFdlYktpdDo6dG9JbXBsKGNvbnRleHRSZWYpLT5pbml0aWFsaXplQ29ubmVjdGlv
bkNsaWVudCh3a0NsaWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4
dC5oCmluZGV4IGRjMmUwZDE5MjMxNWVlNTcyZDFkMWY2NzhhYmE2MWQ2YzI0ZDEzOTEuLjQzMTU2
MGQ2MDczNDViNTU2N2IyNzYxM2I5N2Q1MDEyZjZiMDIwZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbm5lY3Rpb25DbGll
bnQuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9X
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJl
Y2F0ZWQuaD4KQEAgLTEzOCw3ICsxMzcsNiBAQCBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29u
dGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZQogV0tf
RVhQT1JUIHZvaWQgV0tDb250ZXh0U2V0Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25z
dCBXS0NvbnRleHRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
U2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29u
dGV4dEluamVjdGVkQnVuZGxlQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dFNldEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29u
dGV4dEhpc3RvcnlDbGllbnRCYXNlKiBjbGllbnQpOwotV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0
U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERv
d25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNldENv
bm5lY3Rpb25DbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dENvbm5l
Y3Rpb25DbGllbnRCYXNlKiBjbGllbnQpOwogCiBXS19FWFBPUlQgV0tEb3dubG9hZFJlZiBXS0Nv
bnRleHREb3dubG9hZFVSTFJlcXVlc3QoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0KSBXS19DX0FQSV9ERVBSRUNBVEVEOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZjk2YWJlZjExNDU4NDZiMjExNjExODU1ZmI3N2IzMmQx
ZDg3NzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaAorKysg
L2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50X2gKLSNkZWZpbmUgV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotCi0j
aW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotCi10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3du
bG9hZERpZFN0YXJ0Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29u
dGV4dERvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2spKFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVJlc3Bv
bnNlQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5
cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjaykoV0tD
b250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIHVpbnQ2NF90IGxlbmd0
aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIGJvb2wgKCpXS0NvbnRleHREb3du
bG9hZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2spKFdLQ29udGV4dFJl
ZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBtaW1lVHlwZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIFdLU3RyaW5nUmVmICgqV0tDb250ZXh0
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrKShX
S0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYg
ZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
LXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb25DYWxs
YmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3Ry
aW5nUmVmIHBhdGgsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tD
b250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2
b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRGYWlsQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25sb2FkRGlkQ2FuY2Vs
KShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZFByb2Nlc3NE
aWRDcmFzaENhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRE
b3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCkoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSB7Ci0gICAg
aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLX0gV0tDb250
ZXh0RG93bmxvYWRDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS0NvbnRleHREb3dubG9h
ZENsaWVudFYwIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0KLSAgICAvLyBWZXJzaW9uIDAuCi0g
ICAgV0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRTdGFydDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVSZXNwb25z
ZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVSZXNwb25zZTsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOwotICAgIFdLQ29udGV4dERvd25sb2FkU2hvdWxk
RGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAgICAgICAgc2hvdWxkRGVjb2Rl
U291cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENyZWF0ZURlc3Rp
bmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRpZENyZWF0ZURlc3RpbmF0aW9u
OwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlkRmluaXNoOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmFp
bENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbDsKLSAg
ICBXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpZENhbmNlbDsKLSAgICBXS0NvbnRleHREb3dubG9hZFByb2Nlc3NEaWRD
cmFzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NEaWRDcmFzaDsK
LX0gV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMDsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0
RG93bmxvYWRDbGllbnRWMSB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lv
biAwLgotICAgIFdLQ29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjayAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkU3RhcnQ7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VDYWxsYmFjayAgICAgICAgICBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZl
UmVzcG9uc2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlUmVzcG9u
c2U7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlRGF0YTsKLSAgICBXS0NvbnRleHREb3dubG9h
ZFNob3VsZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlQ2FsbGJhY2sgICAgICAgICAgIHNob3Vs
ZERlY29kZVNvdXJjZURhdGFPZk1JTUVUeXBlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDYWxsYmFjayAgICAgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDcmVh
dGVEZXN0aW5hdGlvbkNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICBkaWRDcmVhdGVEZXN0
aW5hdGlvbjsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKLSAgICBXS0NvbnRleHREb3dubG9h
ZERpZEZhaWxDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZh
aWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRDYW5jZWwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaWRDYW5jZWw7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRQcm9j
ZXNzRGlkQ3Jhc2hDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzRGlk
Q3Jhc2g7Ci0KLSAgICAvLyBWZXJzaW9uIDEuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3QgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3Q7Ci19IFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjE7Ci0KLSNlbmRpZiAvLyBX
S0NvbnRleHREb3dubG9hZENsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGMyODdiYjM0
NzA0NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmViZWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkLmgiCi0KLSNpbmNsdWRlICJB
UElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBUElEb3dubG9hZENs
aWVudC5oIgotI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlICJEb3dubG9hZFBy
b3h5LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5Lmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBl
SUQoKQotewotICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKLX0KLQot
dWludDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYpCi17Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRl
KHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQotV0tEYXRhUmVm
IFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPmxlZ2FjeVJlc3VtZURhdGEoKSk7Ci19Ci0K
LXZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJl
dHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqdG9JbXBs
KGRvd25sb2FkKSldIChhdXRvKikgewotICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5
RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsKLSAgICB9KTsKLX0KLQotV0tQYWdlUmVmIFdLRG93
bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICBy
ZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOwotfQotCi1X
S0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKQotewotICAgIGF1dG8mIHJlZGlyZWN0Q2hhaW4gPSAgdG9JbXBsKGRvd25sb2FkKS0+cmVk
aXJlY3RDaGFpbigpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1cmxzOwotICAg
IHVybHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWRpcmVjdENoYWluLnNpemUoKSk7Ci0gICAg
Zm9yIChhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0Q2hhaW4pCi0gICAgICAgIHVybHMudW5j
aGVja2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUocmVkaXJlY3RVUkwuc3RyaW5nKCkpKTsKLSAg
ICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMpKS5sZWFrUmVm
KCkpOwotfQotCi1ib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0
aWF0ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmNzIwMjc5M2Q1NGY1NDJhMzkwOTIwNGEz
YzgwZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKKysrIC9kZXYv
bnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0Rvd25sb2FkX2gK
LSNkZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0jaW5j
bHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgotCi0jaWZuZGVmIF9fY3BsdXNwbHVzCi0jaW5j
bHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJD
IiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKTsK
LQotV0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKSBXS19DX0FQSV9ERVBSRUNBVEVEOwotV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rv
d25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tE
YXRhUmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwot
V0tfRVhQT1JUIHZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsK
LVdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVk
aXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBib29sIFdLRG93
bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV0tEb3dubG9hZF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWE2OGFiNmEwMTMzZjU3OGVjNTg5Mzc2NmEwMGYwZjdkNDVhNjkwNQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQu
aApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Rvd25sb2FkQ2xpZW50
X2gKKyNkZWZpbmUgV0tEb3dubG9hZENsaWVudF9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CisKK3R5cGVkZWYgYm9vbCAoKldLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tV
UkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRl
ZiB2b2lkICgqV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiBjaGFsbGVu
Z2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLRG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5h
bWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERp
ZFdyaXRlRGF0YSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgbG9uZyBsb25nIGJ5dGVzV3JpdHRl
biwgbG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rv
d25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRGYWlsV2l0aEVycm9yKShXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYgcmVzdW1lRGF0
YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdLRG93bmxvYWRD
bGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOworfSBXS0Rvd25s
b2FkQ2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tEb3dubG9hZENsaWVudFYwIHsKKyAg
ICBXS0Rvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tEb3dubG9hZFdpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICB3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjsKKyAgICBXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKKyAgICBX
S0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgICAgICAgICAgICAgICAgICAg
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOworICAgIFdLRG93bmxvYWREaWRXcml0ZURh
dGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3JpdGVEYXRhOworICAg
IFdLRG93bmxvYWREaWRGaW5pc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlkRmluaXNoOworICAgIFdLRG93bmxvYWREaWRGYWlsV2l0aEVycm9yICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbFdpdGhFcnJvcjsKK30gV0tEb3dubG9hZENsaWVu
dFYwOworCisjZW5kaWYgLyogV0tEb3dubG9hZENsaWVudF9oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlYmNjOTJk
Nzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcwNDYzMzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcApAQCAtMCwwICsxLDE1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldL
RG93bmxvYWRSZWYuaCIKKworI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJRGF0
YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJVVJMUmVx
dWVzdC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCisKK25hbWVzcGFjZSBBUEkgewordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdL
RG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLRG93bmxvYWRD
bGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitX
S1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoRG93bmxv
YWRQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJl
cXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9BUEkoJkFQSTo6
VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigp
KTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxiYWNrIGNhbGxi
YWNrKQoreworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Z1bmN0aW9uQ29u
dGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3VtZURhdGEpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNr
KQorICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdW1lRGF0YSksIGZ1bmN0aW9uQ29udGV4
dCk7CisgICAgfSk7Cit9CisKK1dLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdl
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3du
bG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKK30KKworYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNl
ckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVybiB0b0ltcGwo
ZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKK3ZvaWQgV0tEb3dubG9hZFNldENs
aWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50
KQoreworICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGljIEFQSTo6Q2xpZW50PFdLRG93
bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoY29uc3QgV0tEb3dubG9hZENsaWVu
dEJhc2UqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQp
OworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICAKKyAgICAgICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3du
bG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIG92
ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLmxpc3Rl
bmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoY2hhbGxl
bmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0
X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVEYXRhKHRvQVBJKGRvd25sb2FkKSwgYnl0ZXNXcml0
dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRv
d25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikg
b3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBkZXN0aW5hdGlvbiA9
IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSh0b0FQSShkb3du
bG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUuaW1wbCgpKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9u
KSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8s
IGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZEZp
bmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkoZG93bmxvYWQpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRG
YWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsV2l0aEVycm9yKHRv
QVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3IpLCB0b0FQSShyZXN1bWVEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcHJvY2Vzc0RpZENy
YXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBX
ZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5yZXF1ZXN0KCku
dXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQiIH0sIG51bGxw
dHIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkocmVxdWVzdCksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbykpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRvSW1wbChkb3dubG9hZCktPnNldENsaWVudChhZG9wdFJlZigqbmV3IERvd25s
b2FkQ2xpZW50KGNsaWVudCkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLRG93bmxvYWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDU4ZDY3ZWZmY2Y0ZmFkYzBmZjBhOTRlNjBj
YjZlMjE1MmZjZjBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV0tEb3dubG9hZFJlZl9oCisjZGVmaW5lIFdLRG93bmxvYWRSZWZfaAorCisjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50
Lmg+CisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRib29sLmg+CisjZW5kaWYK
KworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQg
V0tUeXBlSUQgV0tEb3dubG9hZEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tVUkxSZXF1ZXN0
UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKKwordHlw
ZWRlZiB2b2lkICgqV0tEb3dubG9hZENhbmNlbENhbGxiYWNrKShXS0RhdGFSZWYgcmVzdW1lRGF0
YSwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxv
YWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250
ZXh0LCBXS0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spOworV0tfRVhQT1JUIFdLUGFn
ZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
OworV0tfRVhQT1JUIGJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkU2V0Q2xpZW50KFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOworCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tEb3dubG9hZFJlZl9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25B
Y3Rpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9u
QWN0aW9uUmVmLmNwcAppbmRleCA4ZmYzN2U1Yzg3YmU4NDcyMWNiMWE4MDgzZjNhMjBmMTU1OWE1
NTAxLi5lMTM3MDZkZTUwM2M5N2E1MzYyODc1YjVhNzZiNDkwNDEwZmIzMWViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJl
Zi5jcHAKQEAgLTM2LDcgKzM2LDEwIEBAIFdLVHlwZUlEIFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5
cGVJRCgpCiAgICAgcmV0dXJuIHRvQVBJKEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6QVBJVHlwZSk7
CiB9CiAKLWJvb2wgV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKFdLTmF2
aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24pCitXS1N0cmluZ1JlZiBXS05hdmlnYXRpb25BY3Rpb25H
ZXREb3dubG9hZEF0dHJpYnV0ZShXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9uKQogewotICAg
IHJldHVybiB0b0ltcGwoYWN0aW9uKS0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAgYXV0
byYgYXR0cmlidXRlID0gdG9JbXBsKGFjdGlvbiktPmRvd25sb2FkQXR0cmlidXRlKCk7CisgICAg
aWYgKGF0dHJpYnV0ZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHRvQVBJKGF0dHJpYnV0ZS5pbXBsKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaAppbmRleCA5ZDhmY2YxZTE5
OTcxM2IxZjA5YjMyNjIwZDIxNTc5MjQ1NDg2ZTljLi40YzEzZDYzOWJkN2FmMjY5MTBjM2Q3MDIz
NzNkNjU0NjE1M2I5NTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaApAQCAtMzQsNyArMzQsNyBAQCBleHRlcm4gIkMi
IHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJRCgpOwog
Ci1XS19FWFBPUlQgYm9vbCBXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93bmxvYWQo
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS05hdmlnYXRp
b25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZShXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9u
KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCAwNjQ4MjZjYjI1ZTM1NjRhMTMwNWQ0MzRiMzg0MGFhMzRlZmZjOTZk
Li5jOWU4YjMyNjM0ZGE4ZTgwODhjOTIzYTE2ZDlhYjQyYTY4NWI4ODllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJMZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtMTI0MCw3ICsxMjQxLDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xp
Y3lDbGllbnRCYXNlKgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBu
YXZpZ2F0aW9uQWN0aW9uLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxICYmICFt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTI1MSwxNCArMTI1MiwxNCBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNs
aWVudEJhc2UqCiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJ
OjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
bW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5k
YXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0
dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgZWxzZSBp
ZiAobV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0
cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSks
IHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0
aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5h
dmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSks
IHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQ
SShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
LT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCku
bW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwg
dG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRv
QVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlv
bkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTI2Nyw3ICsxMjY4LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogCiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1
ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsK
IAotICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRv
QVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkp
LCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJh
bWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZy
YW1lTmFtZS5pbXBsKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBm
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCkBAIC0yMjU5LDYgKzIyNjAsMjcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICAgICAgICAgIHJldHVybiBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXpl
SW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlk
QmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmYWN0aW9uKSwgdG9BUEkoJmRvd25s
b2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiByZXNwb25zZSwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRvQVBJKCZyZXNwb25zZSksIHRvQVBJKCZk
b3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9h
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZGlkQmVn
aW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRp
b25DbGllbnQuaAppbmRleCAzODA2ZDE4NmFhOWZiOTc3NDdhNzNkOTczNjA2YTU4ZWI0MTg4YjYw
Li5hNGFhZmU0YTkzNWIzMTBhMjIwMWJmN2I0Zjc0NTY1ZTU1MmI4NGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5o
CkBAIC03MSw3ICs3MSwxMyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uV2ViUHJv
Y2Vzc0RpZFRlcm1pbmF0ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgVwogdHlwZWRlZiBXS0Rh
dGFSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29weVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgV0tTdHJp
bmdSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0g
ICAgCisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmln
YXRpb25BY3Rpb24sIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYg
bmF2aWdhdGlvblJlc3BvbnNlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51
RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCiB0eXBlZGVmIFdLUGx1Z2luTG9h
ZFBvbGljeSAoKldLUGFnZU5hdmlnYXRpb25EZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkQ2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpbkxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQ
b2xpY3ksIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGljdGlvbmFyeSwgV0tTdHJpbmdSZWYq
IHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uRGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSko
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtMjEzLDYgKzIxOSw5
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyB7CiAKICAgICAvLyBW
ZXJzaW9uIDMuCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmdDYWxsYmFjayBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
OworICAgIFdLUGFnZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5h
dmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkOworICAgIFdLUGFnZU5hdmlnYXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkQ2FsbGJhY2sgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKIH0gV0tQYWdlTmF2aWdh
dGlvbkNsaWVudFYzOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwOWNlMjEzNzBjOWU5
ZmRhMjZmN2Y1ZjJlNDQzY2NlNDEzMzVlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOworQGNsYXNzIFdLV2Vi
VmlldzsKK0Bwcm90b2NvbCBXS0Rvd25sb2FkRGVsZWdhdGU7CisKK05TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKQorQGludGVyZmFjZSBXS0Rvd25sb2FkIDogTlNPYmplY3QKKworLyogQGFic3RyYWN0
IFRoZSByZXF1ZXN0IHVzZWQgdG8gaW5pdGlhdGUgdGhpcyBkb3dubG9hZC4KKyAgQGRpc2N1c3Np
b24gSWYgdGhlIG9yaWdpbmFsIHJlcXVlc3QgcmVkaXJlY3RlZCB0byBhIGRpZmZlcmVudCBVUkws
IG9yaWdpbmFsUmVxdWVzdAorICB3aWxsIGJlIHVuY2hhbmdlZCBhZnRlciB0aGUgZG93bmxvYWQg
Zm9sbG93cyB0aGUgcmVkaXJlY3QuCisgKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgbnVsbGFibGUpIE5TVVJMUmVxdWVzdCAqb3JpZ2luYWxSZXF1ZXN0OworCisvKiBAYWJzdHJh
Y3QgVGhlIHdlYiB2aWV3IHRoYXQgb3JpZ2luYXRlZCB0aGlzIGRvd25sb2FkLiAqLworQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCB3ZWFrKSBXS1dlYlZpZXcgKm9yaWdpbmF0aW5nV2Vi
VmlldzsKKworLyogQGFic3RyYWN0IFRoZSBsb2NhdGlvbiB0byB3aGljaCB0aGUgZG93bmxvYWRl
ZCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgZmlsZSBV
UkwgZnJvbSBXS0Rvd25sb2FkRGVsZWdhdGUncyBkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoKKyAqLworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTCAqZGVzdGluYXRpb247CisK
Ky8qIEBhYnN0cmFjdCBUaGUgZGVsZWdhdGUgdGhhdCByZWNlaXZlcyBwcm9ncmVzcyB1cGRhdGVz
IGZvciB0aGlzIGRvd25sb2FkLiAqLworQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIGlkIDxX
S0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlOworCisvKiBAYWJzdHJhY3QgQ2FuY2VsIHRoZSBk
b3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hl
biBjYW5jZWxsYXRpb24gaXMgZmluaXNoZWQuCisgQGRpc2N1c3Npb24gVG8gYXR0ZW1wdCB0byBy
ZXN1bWUgdGhlIGRvd25sb2FkLCBjYWxsIFdLV2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRh
OiB3aXRoIHRoZSBkYXRhIGdpdmVuIHRvIHRoZSBjb21wbGV0aW9uSGFuZGxlci4KKyBJZiBubyBy
ZXN1bWUgYXR0ZW1wdCBpcyBwb3NzaWJsZSB3aXRoIHRoaXMgc2VydmVyLCBjb21wbGV0aW9uSGFu
ZGxlciB3aWxsIGJlIGNhbGxlZCB3aXRoIG5pbC4KKyAqLworLSAodm9pZCljYW5jZWw6KHZvaWQo
XiBfTnVsbGFibGUpKE5TRGF0YSAqIF9OdWxsYWJsZSByZXN1bWVEYXRhKSljb21wbGV0aW9uSGFu
ZGxlcjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYwYzFjZGJj
MTE2MDM3MGM3ZTFjOTMzZjU4MDU5OTgxMWVmYTk5MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCkBAIC0wLDAgKzEsMjM4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0Rvd25sb2Fk
SW50ZXJuYWwuaCIKKworI2ltcG9ydCAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbXBvcnQgIkNv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIK
KyNpbXBvcnQgIldLRG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV0tOU0RhdGEuaCIKKyNp
bXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgorI2ltcG9ydCAiV0tXZWJW
aWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8d3RmL1dlYWtPYmpDUHRyLmg+CisKK2NsYXNzIERvd25sb2FkQ2xpZW50IGZpbmFsIDogcHVi
bGljIEFQSTo6RG93bmxvYWRDbGllbnQgeworcHVibGljOgorICAgIGV4cGxpY2l0IERvd25sb2Fk
Q2xpZW50KGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGVs
ZWdhdGUoZGVsZWdhdGUpCisgICAgICAgICwgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24oW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KV0p
CisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAg
LCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZShbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAgICAgICAg
LCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmluaXNoKFtt
X2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWREaWRGaW5pc2g6
KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcihbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOnJlc3Vt
ZURhdGE6KV0pCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHdpbGxTZW5kUmVx
dWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUg
fHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKQorICAgICAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIFJl
dGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJlcXVlc3QubnNVUkxSZXF1ZXN0KFdl
YkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb246c3RhdGljX2Nhc3Q8TlNIVFRQVVJMUmVzcG9uc2UgKj4ocmVzcG9uc2UubnNV
UkxSZXNwb25zZSgpKSBuZXdSZXF1ZXN0Om5zUmVxdWVzdC5nZXQoKSBkZWNpc2lvbkhhbmRsZXI6
bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBz
ZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRl
Y2lzaW9uSGFuZGxlcjopKV0oV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5IHBvbGljeSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2Fs
bGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlk
Q2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGljeSkgewor
ICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWw6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICBjYXNl
IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAgICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhj
ZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5ICglbGQpIiwg
KGxvbmcpcG9saWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0K
KworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgY2hhbGxlbmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFt
X3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgICAg
ICByZXR1cm4gY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VB
bmRDb250aW51ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoY2hhbGxlbmdl
KSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoYWxsZW5nZSA9IG1ha2VSZWYoY2hh
bGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlz
dGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWwgPyBXZWJDb3JlOjpDcmVkZW50
aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlhbCgpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZv
cm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigp
LmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29t
cGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9u
OjpDYW5jZWwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlOgorICAgICAgICAgICAg
ICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENv
bnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
ICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9KS5n
ZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdU
Rjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlm
ICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092
ZXJ3cml0ZTo6Tm8sIHsgfSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZCkgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxS
ZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVuYW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25I
YW5kbGVyOm1ha2VCbG9ja1B0cihbZG93bmxvYWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktp
dDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCku
Z2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpz
dWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMICpkZXN0aW5hdGlv
bikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJI
YXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hl
Y2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICAgICAgICAgIGlmICghZGVz
dGluYXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoIWRlc3RpbmF0aW9uLmlzRmlsZVVSTCkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAg
IFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJk
ZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVNYW5hZ2Vy
ID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgICAgICAgICAgaWYgKCFbZmls
ZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbZGVzdGluYXRpb24gVVJMQnlEZWxldGluZ0xhc3RQ
YXRoQ29tcG9uZW50XS5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZh
aWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVy
cm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVy
d3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0aW5hdGlv
bi5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbZG93
bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05TRXJyb3Ig
ZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fubm90Q3Jl
YXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7
IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0
aW9uLnBhdGgpOworICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNl
aXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dy
aXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFt
X3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
W21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkV3JpdGVEYXRhOmJ5dGVz
V3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOworICAgIH0KKworICAgIHZv
aWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAg
eworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZpbmlzaCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlz
aDp3cmFwcGVyKGRvd25sb2FkKV07CisgICAgfQorCisgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6
RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVy
cm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkg
ZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCkgcmVzdW1lRGF0YTp3cmFwcGVyKHJlc3Vt
ZURhdGEpXTsKKyAgICB9CisKKyAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxX
aXRoRXJyb3I6W05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpO
U1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0IHVzZXJJbmZvOm5pbF0gcmVzdW1lRGF0YTpu
aWxdOworICAgIH0KKworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4g
bV9kZWxlZ2F0ZTsKKworICAgIGJvb2wgbV9yZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24gOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSA6IDE7Cisg
ICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2ggOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1Rv
RGlkRmFpbFdpdGhFcnJvciA6IDE7Cit9OworCitAaW1wbGVtZW50YXRpb24gV0tEb3dubG9hZAor
CistICh2b2lkKWNhbmNlbDoodm9pZCAoXikoTlNEYXRhICpyZXN1bWVEYXRhKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkYXRhKSB7CisgICAgICAgIGlm
IChjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBw
ZXIoZGF0YSkpOworICAgIH0pOworfQorCistIChOU1VSTFJlcXVlc3QgKilvcmlnaW5hbFJlcXVl
c3QKK3sKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNv
cmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKK30KKworLSAo
TlNVUkwgKilkZXN0aW5hdGlvbgoreworICAgIGF1dG8mIGRlc3RpbmF0aW9uUGF0aCA9IF9kb3du
bG9hZC0+ZGVzdGluYXRpb25GaWxlbmFtZSgpOworICAgIGlmIChkZXN0aW5hdGlvblBhdGguaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6ZGVzdGluYXRpb25QYXRoXTsKK30KKworLSAoV0tXZWJWaWV3ICopb3JpZ2luYXRpbmdX
ZWJWaWV3Cit7CisgICAgYXV0byogcGFnZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBmcm9tV2Vi
UGFnZVByb3h5KCpwYWdlKTsKK30KKworLSAoaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4pZGVsZWdh
dGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOworfQorCistICh2b2lkKXNl
dERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIF9kZWxl
Z2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0Q2xpZW50KGFkb3B0UmVmKCpuZXcg
RG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAg
IF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
KyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9h
ZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGUyMTNkZGNmZTJmZDY1YTBiN2VjYjY0NjJhOTY3YzQx
OTg5NGYzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsKKworLyogQGVudW0gV0tEb3dubG9hZFJl
ZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRoZSBk
ZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCisgQGNvbnN0YW50IFdLRG93
bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgcmVkaXJlY3QuCisgQGNvbnN0
YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93ICAgIEFsbG93IHRoZSByZWRpcmVjdC4K
KyAqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5
KSB7CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIFdLRG93bmxvYWRS
ZWRpcmVjdFBvbGljeUFsbG93LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9j
b2wgV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCisvKiBAYWJzdHJh
Y3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRUUCByZWRpcmVj
dGlvbiByZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2
ZWQgdGhlIHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rpb24gcmVzcG9u
c2UuCisgQHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2lsbCBiZSBzZW50
LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBt
dXN0IGludm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2NlZWQgd2l0aCB0
aGUgcmVkaXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhp
cyBtZXRob2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJlIHRha2VuLgor
ICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDoo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tl
ZCB3aGVuIHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9u
IGNoYWxsZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2ZWQg
dGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY2hhbGxlbmdlIFRoZSBhdXRo
ZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21w
bGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5n
ZS4gVGhlCisgZGlzcG9zaXRpb24gYXJndW1lbnQgaXMgb25lIG9mIHRoZSBjb25zdGFudHMgb2Yg
dGhlIGVudW1lcmF0ZWQgdHlwZQorIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
bi4gV2hlbiBkaXNwb3NpdGlvbiBpcyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwKKyB0aGUgY3JlZGVudGlhbCBhcmd1bWVudCBpcyB0aGUgY3JlZGVudGlhbCB0byB1c2Us
IG9yIG5pbCB0byBpbmRpY2F0ZSBjb250aW51aW5nIHdpdGhvdXQgYQorIGNyZWRlbnRpYWwuCisg
QGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIg
dmlldyB3aWxsIHJlc3BvbmQgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB3aXRoIHRo
ZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlIGRpc3Bvc2l0
aW9uLgorICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxl
dGlvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5l
ZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBk
b3dubG9hZCBUaGUgZG93bmxvYWQgZm9yIHdoaWNoIHdlIG5lZWQgYSBmaWxlIHRvIHdoaWNoIHRv
IHdyaXRlLgorIEBwYXJhbSByZXNwb25zZSBUaGUgc2VydmVyIHJlc3BvbnNlIGlmIHRoaXMgZG93
bmxvYWQgd2FzIHRoZSByZXN1bHQgb2YgYW4gSFRUUCByZXF1ZXN0LAorIG9yIGEgc3ludGhlc2l6
ZWQgcmVzcG9uc2UgZm9yIGJsb2IgZG93bmxvYWRzLgorIEBwYXJhbSBzdWdnZXN0ZWRGaWxlbmFt
ZSBUaGUgc3VnZ2VzdGVkIGZpbGVuYW1lLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUg
Y29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB3aXRoCisgZWl0aGVyIGEgZmlsZSBV
UkwgdG8gYmVnaW4gdGhlIGRvd25sb2FkIG9yIG5pbCB0byBjYW5jZWwgdGhlIGRvd25sb2FkLgor
IEBkaXNjdXNzaW9uIElmIHRoaXMgaXMgYSBkb3dubG9hZCBvZiBhIGJsb2IgVVJMLCByZXNwb25z
ZSB3aWxsIGJlIG51bGwuICBzdWdnZXN0ZWRGaWxlbmFtZQorIHdpbGwgb2Z0ZW4gYmUgdGhlIHNh
bWUgYXMgcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsIGJ1dCB3ZWIgY29udGVudCBjYW4gc3Bl
Y2lmeSB0aGUKKyBzdWdnZXN0ZWQgZG93bmxvYWQgZmlsZW5hbWUuICBJZiB0aGUgZGVzdGluYXRp
b24gZmlsZSBVUkwgaXMgbm9uLW51bGwsIGl0IG11c3QgYmUgYSBmaWxlCisgdGhhdCBkb2VzIG5v
dCBleGlzdCBpbiBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZXhpc3QgYW5kIGNhbiBiZSB3cml0dGVu
IHRvLgorICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0
ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoTlNVUkwgKiBfTnVsbGFibGUgZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2
ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUgZGVzdGluYXRpb24uCisgQHBhcmFtIGRvd25sb2Fk
IFRoZSBkb3dubG9hZCB0aGF0IGhhcyB3cml0dGVuIGRhdGEuCisgQHBhcmFtIGJ5dGVzV3JpdHRl
biBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uCisgQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVu
IFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdy
aXR0ZW4uCisgQGRpc2N1c3Npb24gSWYgdGhpcyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBy
ZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2FkLCB0aGVuCisgdG90YWxCeXRlc1dyaXR0ZW4gd2ls
bCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVh
ZHkgYmVlbiBkb3dubG9hZGVkLgorIElmIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5r
bm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSB3aWxsIGJlIC0xLgorICovCistICh2b2lk
KWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5
dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmaW5pc2hl
ZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGZpbmlz
aGVkLgorICovCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxv
YWQ7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmYWlsZWQu
CisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhhcyBmYWlsZWQuCisgQHBhcmFt
IGVycm9yIFRoZSBlcnJvciBpbmRpY2F0aW5nIHRoZSBmYWlsdXJlIHJlYXNvbi4KKyBAcGFyYW0g
cmVzdW1lRGF0YSBUaGlzIGRhdGEgY2FuIGJlIHBhc3NlZCB0byBXS1dlYlZpZXcgcmVzdW1lRG93
bmxvYWRXaXRoRGF0YTogdG8gYXR0ZW1wdCB0byByZXN1bWUgdGhpcyBkb3dubG9hZC4KKyAqLwor
LSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6
KE5TRXJyb3IgKillcnJvciByZXN1bWVEYXRhOihudWxsYWJsZSBOU0RhdGEgKilyZXN1bWVEYXRh
OworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWRJbnRlcm5hbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA2Yzg5NDIwZTZlMjdiMTQzZGIwMjU0MDVjYjMzYjdhOWQ3YzRhZjkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFs
LmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHku
aCIKKyNpbXBvcnQgIldLRG93bmxvYWQuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2Fk
UHJveHk+IHsKKyAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBXS0Rvd25sb2FkOworfTsKKworfQor
CitAaW50ZXJmYWNlIFdLRG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQ
STo6T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBX
ZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24uaAppbmRleCA5MzQwNzBlM2RlNDQ5ODJmNTcyYmQ1YTE4OGQxMGNiNDljZjcyMTFm
Li45MmVmMGZmNGU4MTY4Zjg1NzJkNzM4ODhjYjZhMDk3ODQ3YjIyZGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5o
CkBAIC03Niw2ICs3NiwxMCBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3Mo
OC4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CiAKKy8qISBAYWJzdHJhY3QgVGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBv
ZiB0aGUgZWxlbWVudCB0aGF0IGNhdXNlZCB0aGlzIG5hdmlnYXRpb24uCisqLworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBudWxsYWJsZSwgY29weSkgTlNTdHJpbmcgKmRvd25sb2Fk
QXR0cmlidXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKICNpZiAhVEFSR0VUX09TX0lQSE9ORQogCiAvKiEgQGFic3RyYWN0IFRoZSBtb2Rp
ZmllciBrZXlzIHRoYXQgd2VyZSBpbiBlZmZlY3Qgd2hlbiB0aGUgbmF2aWdhdGlvbiB3YXMgcmVx
dWVzdGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXggNGQyMGM4MGNlYzI2YTdjMjg2OTJhYTg2ZDM0YjQw
YTZiNzUwZjBiZS4uYmJlZThmZTZiZmVlYTkwODczNzYxZWI5ZWVkYzYxOWEzNjZlZTM4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uQWN0aW9uLm1tCkBAIC0xMTYsNiArMTE2LDE0IEBAIHN0YXRpYyBXS1N5bnRoZXRpY0NsaWNr
VHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91c2VFdmVudDo6U3ludGhl
CiAgICAgcmV0dXJuIF9uYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdl
YkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpVcGRhdGVIVFRQQm9keSk7CiB9CiAKKy0gKE5T
U3RyaW5nICopZG93bmxvYWRBdHRyaWJ1dGUKK3sKKyAgICBhdXRvJiBhdHRyaWJ1dGUgPSBfbmF2
aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBpZiAoYXR0cmlidXRlLmlz
TnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBhdHRyaWJ1dGU7Cit9CisK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoV0tTeW50aGV0aWNDbGlja1R5cGUpX3N5bnRo
ZXRpY0NsaWNrVHlwZQogewpAQCAtMTg3LDcgKzE5NSw3IEBAIHN0YXRpYyBXS1N5bnRoZXRpY0Ns
aWNrVHlwZSB0b1dLU3ludGhldGljQ2xpY2tUeXBlKFdlYktpdDo6V2ViTW91c2VFdmVudDo6U3lu
dGhlCiAKIC0gKEJPT0wpX3Nob3VsZFBlcmZvcm1Eb3dubG9hZAogewotICAgIHJldHVybiBfbmF2
aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCk7CisgICAgcmV0dXJuICFfbmF2
aWdhdGlvbkFjdGlvbi0+ZG93bmxvYWRBdHRyaWJ1dGUoKS5pc051bGwoKTsKIH0KIAogLSAoQk9P
TClfc2hvdWxkT3BlbkV4dGVybmFsVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKaW5kZXgg
ODVmZDk2ZTRkZDBmZWZlNmJjZjdmZWU5ZDc4YzVlOTkyZjViYzM3Mi4uNTNjYzVhOTdjN2VhOTI1
NGEzMjUwNGE0ZGU2NGY2YzNmZjNlNWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCkBA
IC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU3ludGhldGljQ2xp
Y2tUeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2NhbkhhbmRs
ZVJlcXVlc3Q7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9w
ZW5FeHRlcm5hbFNjaGVtZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjAp
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkFwcExp
bmtzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3dubG9hZCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9ERVBSRUNBVEVE
X1dJVEhfUkVQTEFDRU1FTlQoImRvd25sb2FkQXR0cmlidXRlIiwgbWFjb3MoMTAuMTUsIFdLX01B
Q19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHMgV0tfQVBJX0RFUFJFQ0FURUQo
InVzZSBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBhbmQgX3Nob3VsZE9wZW5BcHBMaW5rcyIs
IG1hY29zKDEwLjExLCAxMC4xMSksIGlvcyg5LjAsIDkuMCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCmlu
ZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2UxYmUzNTEwZWI4ODRhMDU4NzguLjE2OGI3OWVjZTA2
OGY4YmNjZmE2Y2FiMGMwMWZlODFlM2U2YjI1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCkBAIC0yOSw2
ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25BY3Rpb247CiBAY2xh
c3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBAIC00MCwyMCArNDEsMjQgQEAgTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KICB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVj
aXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gY29udGludWUuCisg
QGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2FkICAgIFR1cm4g
dGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJ
bnRlZ2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICAgICBXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csCisgICAg
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEBlbnVtIFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5CiAgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRoZSBkZWNpc2lv
biBoYW5kbGVyIGZyb20gdGhlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdhdGlvbiB0byBj
b250aW51ZS4KKyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3du
bG9hZCAgICBUdXJuIHRoZSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAqLwogdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAgICBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUFsbG93LAorICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwK
IH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEEgY2xh
c3MgY29uZm9ybWluZyB0byB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgcHJvdG9jb2wgY2FuIHBy
b3ZpZGUKQEAgLTE2NCw2ICsxNjksMjIgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAqLwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93RGVwcmVjYXRlZFRMUzoodm9pZCAoXiko
Qk9PTCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qCisgQGFic3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBU
aGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlv
bkFjdGlvbiBUaGUgYWN0aW9uIHRoYXQgaXMgYmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4K
KyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkLgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKilu
YXZpZ2F0aW9uQWN0aW9uIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwor
LyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IHRoYXQgY3Jl
YXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRpb25SZXNwb25zZSBUaGUgcmVzcG9u
c2UgdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9h
ZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVz
cG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKIE5T
X0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IGYw
OWMyYThlNmE1Yjc4NTViZmY5ZWE1ZmMzMjEzMmExNTNlYjE1YjUuLjk5MTNkMTZjMGE5NzYwNDk5
NDY0Y2M0M2ViYTNlNGYxOWU3ZDBkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgK
QEAgLTU4LDExICs1OCwxMSBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tTT0F1dGhv
cml6YXRpb25Mb2FkUG9saWN5KSB7CiAgICAgX1dLU09BdXRob3JpemF0aW9uTG9hZFBvbGljeUln
bm9yZSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7CiAKLXN0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3cgKyAxKTsKLXN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCArIDEpOworc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
RG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlv
cyg4LjAsIFdLX0lPU19UQkEpKSA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2
aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDIpOwogc3Rh
dGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE0LjQpLCBpb3MoMTIuMikpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd0luTmV3
UHJvY2VzcyA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKF9XS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rICsgMSk7CiAKLXN0YXRpYyBjb25zdCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZCA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvdyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIFdLX0FQSV9ERVBS
RUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEp
KSA9IChXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lBbGxvdyArIDEpOwogCiBAcHJvdG9jb2wgV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlIDxX
S05hdmlnYXRpb25EZWxlZ2F0ZT4KIApAQCAtODgsNiArODgsOCBAQCBzdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBz
aG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkTmVnb3RpYXRlTW9kZXJuVExTOihO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7CisKIC0gKHZvaWQpX3dlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJl
OihXS1dlYlZpZXcgKil3ZWJWaWV3OwogLy8gSXRlbSBpcyBuaWwgaWYgdGhlIGdlc3R1cmUgZW5k
ZWQgd2l0aG91dCBuYXZpZ2F0aW9uLgogLSAodm9pZClfd2ViVmlld0RpZEVuZE5hdmlnYXRpb25H
ZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExp
c3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCA0ZjM2ZTIzMjY0
MzcxMDIzZDM4ZjI4MzgxMDc1MWJjYmE5OTg1OWRjLi5mYWUzMWYzMWI3OTkxMjFkMGUxNzM3Y2Qw
NzIxMDg1NDk4MDIyMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMjgsMTEgKzI4LDEzIEBACiAKICNpbXBvcnQgIkF1
dG9tYXRpb25DbGllbnQuaCIKICNpbXBvcnQgIkNhY2hlTW9kZWwuaCIKKyNpbXBvcnQgIkRvd25s
b2FkTWFuYWdlci5oIgogI2ltcG9ydCAiTGVnYWN5RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIlBsdWdpblByb2Nlc3NNYW5hZ2VyLmgiCiAjaW1wb3J0ICJT
YW5kYm94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9y
dCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFTdG9yZUludGVybmFs
LmgiCkBAIC00ODEsMTIgKzQ4MywxMiBAQCBzdGF0aWMgV0tQcm9jZXNzUG9vbCAqc2hhcmVkUHJv
Y2Vzc1Bvb2w7CiAKIC0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAg
cmV0dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0
ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0KSk7CisgICAgcmV0dXJuIFtfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+ZG93bmxv
YWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgcmVxdWVz
dCkpXTsKIH0KIAogLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTooTlNE
YXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcKIHsKLSAgICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPnJlc3Vt
ZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0s
IEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1lRGF0YSkuZ2V0KCksIHBhdGgp
KTsKKyAgICByZXR1cm4gW19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIo
X3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9y
ZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlc3Vt
ZURhdGEpLmdldCgpLCBwYXRoLCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0OjpObykpXTsK
IH0KIAogLSAodm9pZClfZ2V0QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGlu
ZzoocGlkX3QpcGlkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcg
Kj4gKikpY29tcGxldGlvbkhhbmRsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggN2M0ZmU0Y2Q4ZmI5
YWZmYThjYTAzMTliOTQ4OTNjMWY0ZTY4OTY2Yy4uZjI0OTgwYzljZmY2N2VjZDNiZWRlNzNmZTI0
MDA4MThhYTUwYzA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTYyLDcgKzYyLDcgQEAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNEaWN0aW9uYXJ5ICpfcGx1Z2luTG9h
ZENsaWVudFBvbGljaWVzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMpKTsKICNlbmRpZgog
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRl
OikgaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlOworQHByb3BlcnR5
IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tE
b3dubG9hZERlbGVnYXRlPiBfZG93bmxvYWREZWxlZ2F0ZSBXS19BUElfREVQUkVDQVRFRF9XSVRI
X1JFUExBQ0VNRU5UKCJXS0Rvd25sb2FkLmRvd25sb2FkRGVsZWdhdGUiLCBtYWNvcygxMC4xMCwg
V0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCB3ZWFrLCBzZXR0ZXI9X3NldEF1dG9tYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tBdXRvbWF0aW9u
RGVsZWdhdGU+IF9hdXRvbWF0aW9uRGVsZWdhdGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MiksIGlvcygxMC4wKSk7CiAKICNpZiBUQVJHRVRfT1NfSVBIT05FCkBAIC04Myw4ICs4Myw5IEBA
CiAKIC0gKHZvaWQpX3JlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dDooTlNTdHJpbmcgKilzY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygx
Mi4wKSk7CiAKLS0gKF9XS0Rvd25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRh
U3RvcmUgb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tIChfV0tEb3dubG9h
ZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVE
YXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcg
KilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCistIChfV0tEb3du
bG9hZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0
ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJXS1dlYlZpZXcgX2Rvd25sb2FkUmVxdWVzdCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJB
KSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOworLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxv
YWRGcm9tRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNp
dGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGlu
Z1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBM
QUNFTUVOVCgiV0tXZWJWaWV3Ll9yZXN1bWVEb3dubG9hZFdpdGhEYXRhOmNvbXBsZXRpb25IYW5k
bGVyOiIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwog
CiAvLyBUZXN0IG9ubHkuIFNob3VsZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVu
dCBwcm9jZXNzZXMgYXJlIHJ1bm5pbmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2Vy
cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRleCA3NjFhMWRhMGY2NWIz
Njk5N2JhYjQ5ZTY2YzJjMjhlOWZmMGIwYzhjLi42Y2M4YTc0ODEwODY1NjM1OGMyZGU4ODJkNjc0
ZjFmMzkzMzkxMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oCkBAIC0zOCw2ICszOCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xh
c3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOwogQGNs
YXNzIFdLQ29udGVudFdvcmxkOworQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGaW5kQ29u
ZmlndXJhdGlvbjsKIEBjbGFzcyBXS0ZpbmRSZXN1bHQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CkBA
IC00NTAsNiArNDUxLDE4IEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2Vi
QXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAgKi8KICsgKEJPT0wp
aGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSk7CiAKKy8qIEBhYnN0cmFjdCBCZWdpbnMgYSBkb3dubG9h
ZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudGx5IGRpc3BsYXllZCB3ZWJwYWdlIGFzIGlm
IHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSB0dXJuZWQgYSBuYXZpZ2F0aW9uIGludG8gYSBkb3du
bG9hZCBpbnN0ZWFkCisgQHBhcmFtIHJlcXVlc3QgVGhlIHJlcXVlc3Qgc3BlY2lmeWluZyB0aGUg
VVJMIHRvIGRvd25sb2FkLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxl
ZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgc3RhcnRlZC4KKyAqLworLSAodm9pZClzdGFydERvd25s
b2FkV2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisvKiBAYWJzdHJhY3QgUmVz
dW1lcyBhIGRvd25sb2FkIHRoYXQgZmFpbGVkIG9yIHdhcyBjYW5jZWxsZWQuCisgQHBhcmFtIHJl
c3VtZURhdGEgRGF0YSBmcm9tIGEgV0tEb3dubG9hZERlbGVnYXRlJ3MgZGlkRmFpbFdpdGhFcnJv
ciBvciBhIFdLRG93bmxvYWQncyBjYW5jZWwgY29tcGxldGlvbkhhbmRsZXIuCisgQHBhcmFtIGNv
bXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgY2FsbGVkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZXN1
bWVkLgorICovCistICh2b2lkKXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworCiAvKiBAYWJzdHJhY3QgVGhlIG1lZGlhIHR5cGUgZm9yIHRoZSBXS1dlYlZpZXcKICBA
ZGlzY3Vzc2lvbiBUaGUgdmFsdWUgb2YgbWVkaWFUeXBlIHdpbGwgb3ZlcnJpZGUgdGhlIG5vcm1h
bCB2YWx1ZSBvZiB0aGUgQ1NTIG1lZGlhIHByb3BlcnR5LgogIFNldHRpbmcgdGhlIHZhbHVlIHRv
IG5pbCB3aWxsIHJlc3RvcmUgdGhlIG5vcm1hbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDJkZDdlYTVlYTljMTEzOTdiNzI3
NDgxODI3NmE3NDhlMzBkOWM2NzQuLjFiNDQ0NGE1NjIyN2E4MjM3ZjRhYWQ5MDIyZjUzYzJhMmFh
MjNjZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQpAQCAtNTgsOSArNTgsMTEgQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAj
aW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50
ZXJuYWwuaCIKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGaW5kQ29u
ZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKyNpbXBvcnQg
IldLRnJhbWVJbmZvUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRl
LmgiCiAjaW1wb3J0ICJXS0xheW91dE1vZGUuaCIKICNpbXBvcnQgIldLTWVkaWFQbGF5YmFja1N0
YXRlLmgiCkBAIC03MDgsNiArNzEwLDQyIEBAIHN0YXRpYyB2b2lkIGhhcmR3YXJlS2V5Ym9hcmRB
dmFpbGFiaWxpdHlDaGFuZ2VkQ2FsbGJhY2soQ0ZOb3RpZmljYXRpb25DZW50ZXJSZWYsCiAgICAg
cmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmxvYWREYXRhKHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhf
dCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBNSU1FVHlwZSwgY2hhcmFjdGVyRW5jb2Rp
bmdOYW1lLCBiYXNlVVJMLmFic29sdXRlU3RyaW5nKSk7CiB9CiAKKy0gKHZvaWQpc3RhcnREb3du
bG9hZFdpdGhSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+
ZG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93
bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0p
OworfQorCistICh2b2lkKXJlc3VtZURvd25sb2FkV2l0aERhdGE6KE5TRGF0YSAqKXJlc3VtZURh
dGEgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZl
ciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOwor
ICAgIFt1bmFyY2hpdmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVy
ZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsKKyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBb
dW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltO
U0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtO
U051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1
ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsK
KyAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgTlNTdHJpbmcgKnBhdGggPSBb
ZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRo
Il07CisKKyAgICBpZiAoIXBhdGgpCisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFs
aWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIHJlc3VtZSBkYXRhIl07CisKKyNp
ZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgLy8gTW9qYXZlIENGTmV0d29y
ayBmYWlscyB0byByZXN1bWUgYSBkb3dubG9hZCBpZiB0aGUgZGVzdGluYXRpb24gZG9lcyBub3Qg
ZXhpc3QuCisgICAgLy8gSWYgc29tZW9uZSBoYXMgcmVtb3ZlZCB0aGUgZGVzdGluYXRpb24gZmls
ZSwgbWFrZSBhbiBlbXB0eSBmaWxlIGF0IHRoYXQgbG9jYXRpb24uCisgICAgaWYgKCFbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6cGF0aF0pCisgICAgICAg
IFtbTlNEYXRhIGRhdGFdIHdyaXRlVG9GaWxlOnBhdGggYXRvbWljYWxseTpZRVNdOworI2VuZGlm
CisKKyAgICBfcGFnZS0+cmVzdW1lRG93bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29w
eWluZyhyZXN1bWVEYXRhKSwgcGF0aCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3du
bG9hZCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7
Cit9CisKIC0gKFdLTmF2aWdhdGlvbiAqKWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tG
b3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9C
YWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRlbSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdk
YWRlZTY0OTNlZjc2M2ExNjE4MDc1ZDBkYy4uNTBhNjJiNTczMjQwOWVlZGFlZDc4MGFiZWY3YTM4
NzlmNzQ4YjhmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xMDksNiArMTA5LDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdLQnJvd3Np
bmdDb250ZXh0SGFuZGxlOworQGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGcmFtZUluZm87
CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVyZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5p
ZmVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
LmgKaW5kZXggYjRkODI2YjlhNzI0NzhmZDBjMDNlNmI0YjAxODlmMDcyOTljZWM3My4uZWE4MjAz
MmExY2RhY2E2YjQ2ZTliYzFmY2EwNWQ4ZGU5MDA0NWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKQEAgLTI4LDEyICsyOCwxNCBAQAog
CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLRG93bmxv
YWQ7CiAKLVdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xB
U1NfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAs
IFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLRG93bmxv
YWQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgogCi0tICh2b2lkKWNhbmNlbDsKKysgKGluc3RhbmNl
dHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQp
Y2FuY2VsOwogLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQubW0KaW5kZXggZGZlZmUwZjE2NmE1
NDlkZGU2NWJlMTAyMmViNWMxZmZkZWNjMmRiYy4uZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDky
N2Y1MGQ4YjMyZTA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZC5tbQpAQCAtMjgsNjYgKzI4LDg3IEBACiAKICNpbXBvcnQgIkFQSURvd25s
b2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25s
b2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLTlNEYXRhLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3Rm
L1dlYWtPYmpDUHRyLmg+CiAKLUBpbXBsZW1lbnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJ
OjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KK3N0YXRpYyBOU01hcFRhYmxlPFdLRG93bmxv
YWQgKiwgX1dLRG93bmxvYWQgKj4gKmRvd25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0
YWJsZS5nZXQoKSkKKyAgICAgICAgdGFibGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFr
T2JqZWN0c01hcFRhYmxlXTsKKyAgICByZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJk
ZXByZWNhdGVkLWltcGxlbWVudGF0aW9ucyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQK
K0lHTk9SRV9XQVJOSU5HU19FTkQKIAotLSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhEb3dubG9hZDI6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIF9kb3dubG9h
ZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBfZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4g
c2VsZjsKK30KIAotICAgIFtzdXBlciBkZWFsbG9jXTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9h
ZFdpdGhEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25s
b2FkICp3cmFwcGVyID0gW2Rvd25sb2FkV3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9h
ZF0pCisgICAgICAgIHJldHVybiB3cmFwcGVyOworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0g
W1tbX1dLRG93bmxvYWQgYWxsb2NdIGluaXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVs
ZWFzZV07CisgICAgW2Rvd25sb2FkV3JhcHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktl
eTpkb3dubG9hZF07CisgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7
Ci0gICAgX2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0g
KGF1dG8qKSB7CisgICAgX2Rvd25sb2FkLT5fZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBt
YWtlUmVmKCpfZG93bmxvYWQtPl9kb3dubG9hZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9h
ZC0+Y2xpZW50KCkubGVnYWN5RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0K
IAogLSAodm9pZClwdWJsaXNoUHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93
bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwpOworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5w
dWJsaXNoUHJvZ3Jlc3MoVVJMKTsKIH0KIAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewot
ICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRU
UEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93
bmxvYWQtPl9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9k
eVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAq
KW9yaWdpbmF0aW5nV2ViVmlldwogewotICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBf
ZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1Bh
Z2UgPSBfZG93bmxvYWQtPl9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJl
dHVybiBbW2Zyb21XZWJQYWdlUHJveHkoKm9yaWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVs
ZWFzZV07CiAgICAgcmV0dXJuIG5pbDsKIH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJl
Y3RDaGFpbgogewotICAgIHJldHVybiBjcmVhdGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RD
aGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNB
cnJheShfZG93bmxvYWQtPl9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJs
KSAtPiBOU1VSTCAqIHsKICAgICAgICAgcmV0dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgp
OwogfQogCiAtIChCT09MKXdhc1VzZXJJbml0aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2Fk
LT53YXNVc2VySW5pdGlhdGVkKCk7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53
YXNVc2VySW5pdGlhdGVkKCk7CiB9CiAKIC0gKE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICBy
ZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9kb3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9kb3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1
bWVEYXRhKCkpOwogfQogCiAtIChXS0ZyYW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAg
ICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZfZG93bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkp
OwogfQogCiAtIChpZCljb3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3
IEBACiAKIC0gKEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxv
YWQ7CisgICAgcmV0dXJuICpfZG93bmxvYWQtPl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVn
YXRlLmgKaW5kZXggYTgzZjkwMjliNWM3M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVl
YWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBA
IC0zMSw2ICszMSw4IEBACiAKIEBwcm90b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVj
dD4KIEBvcHRpb25hbAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9p
ZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEu
MykpOwogLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2
ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAt
IChCT09MKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3Vy
Y2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dL
RG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZTooTlNTdHJpbmcgKilmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3Zlcndy
aXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNv
cygxMC4xMCwgMTAuMTMuNCksIGlvcyg4LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCmluZGV4IGUxMjkwYjNlNTUzYWVjZWQyMmQ0ZmM2
ZDkwODYzNDM3MDkyZDQwMTIuLmNhOTRjMjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3du
bG9hZEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaApAQCAtMjUsMTYgKzI1LDEyIEBACiAKICNpbXBvcnQgIl9XS0Rv
d25sb2FkLmgiCiAKLSNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLT2JqZWN0
LmgiCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi10
ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKLSAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBfV0tEb3dubG9hZDsKLX07CitAY2xhc3MgV0tEb3dubG9hZDsKIAor
QGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgUmV0
YWluUHRyPFdLRG93bmxvYWQ+IF9kb3dubG9hZDsKIH0KLQotQGludGVyZmFjZSBfV0tEb3dubG9h
ZCAoKSA8V0tPYmplY3Q+CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDlj
OWU1ZDk2NTU2ZTRhMWZjOGNkYWZlOTIxMTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4
NmMyNzAxYjE0NjRhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2ds
aWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJs
aWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdl
YktpdERvd25sb2FkPiBkb3dubG9hZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25s
b2FkKCZkb3dubG9hZFByb3h5KTsKICAgICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25s
b2FkLmdldCgpKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXRE
b3dubG9hZERlc3RpbmF0aW9uQ3JlYXRlZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQog
Ci0gICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSBvdmVycmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRh
Kikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25s
b2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkp
OwogICAgICAgICBpZiAod2Via2l0RG93bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25s
b2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5oCmluZGV4IDc1ZDUxMjIxZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUu
LmI3ZjY0OTMxMGE0ODg0ZjkyZjUxNjVkMGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAt
NDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoKICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6
OkRvd25sb2FkQ2xpZW50Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7
CisgICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1
aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBkaWRGaW5pc2goRG93bmxvYWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFp
bChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIEFQSTo6RGF0YSopIGZpbmFsOwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25s
b2FkUHJveHkmKSBmaW5hbDsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
RG93bmxvYWRQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGll
bnQubW0KaW5kZXggM2QzMWJkYmY0M2EzNmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjA3
NTYyYWVlODhlNzY2OWY4ZDkxODZmZGQ4MjRiNjM1OTU1YzZiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMz
LDYgKzMzLDcgQEAKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcu
aCIKICNpbXBvcnQgIlN5c3RlbVByZXZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0Rvd25s
b2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgogI2ltcG9ydCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpA
QCAtNDcsNiArNDgsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KKwogTGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50KGlkIDxfV0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVs
ZWdhdGUoZGVsZWdhdGUpCiB7CkBAIC03Niw3ICs3OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3
Q29udHJvbGxlciogc3lzdGVtUHJldmlld0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQCiB9CiAjZW5kaWYKIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6Omxl
Z2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZ
U1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25s
b2FkKCkpIHsKQEAgLTkwLDcgKzkzLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlk
U3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9k
b3dubG9hZERpZFN0YXJ0OndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWREaWRTdGFydDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAg
dm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHksIGNvbnMKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRo
b2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2Uu
bnNVUkxSZXNwb25zZSgpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3du
bG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEsOSBAQCB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCB1aW50NjRfdAogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRXcml0ZURhdGFUb3RhbEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJv
eHkpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRl
c1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9h
ZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNX
cml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNX
cml0dGVuXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpi
eXRlc1dyaXR0ZW5dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0x
MzEsNyArMTM0LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBD
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQo
KSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBw
ZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSwgY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2Rl
bGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50
aWFsKSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcsNyArMTcwLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRpb24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y28KICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRl
RGVzdGluYXRpb24pCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFw
cGVyKGRvd25sb2FkUHJveHkpXSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KQpAQCAtMTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQog
I2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jh
c2gpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0Rp
ZENyYXNoOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxv
YWRQcm94eSYKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wg
YWxsb3dPdmVyd3JpdGUgPSBOTzsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KLSAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rv
d25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAg
ICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0
ZTomYWxsb3dPdmVyd3JpdGVdOwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092
ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxv
YWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRs
ZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChC
T09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAg
ICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRl
c3RpbmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2
LDEwIEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93
bmxvYWREaWRGaW5pc2gpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlk
RmluaXNoOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpXV07CiB9CiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJy
b3IpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRh
dGEqKQogewogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5p
c1N5c3RlbVByZXZpZXdEb3dubG9hZCgpKSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjoKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkRmFpbCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWRQcm94eSldIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0K
IAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpCkBAIC0yNjMsMTMgKzI2NiwxMyBAQCB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkK
ICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQot
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpbX1dLRG93bmxv
YWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2
b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICht
X2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQot
ICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJl
cXVlc3QudXJsKCkuc3RyaW5nKCldXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltf
V0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5n
OnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOwogfQpAQCAtMzAxLDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRva2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93
bmxvCiB9CiAjZW5kaWYKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaAppbmRleCAwNDJlNzg4NTQxMWQ0MTc3ZmNlOWM2NzVlZDhkNDhmMTJi
YjNkNGQ2Li45Njc4MzdhZmUxNGJkODM1NGM1NmQ2YmVmZTVkMjkxMzc2YWI4N2E3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2
LDYgKzEyNiwxMCBAQCBwcml2YXRlOgogCiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtl
eVNpemVJbmRleCwgY29uc3QgUmVmUHRyPEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBj
b25zdCBVUkwmKSBvdmVycmlkZTsKIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRC
ZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mLCBEb3du
bG9hZFByb3h5JikgZmluYWw7CisgICAgICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3du
bG9hZFByb3h5JikgZmluYWw7CisgICAgICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZChXZWJQYWdlUHJveHkmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisKICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICAgICAgdm9pZCBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcm
IHV0aSkgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWUoY29uc3QgV2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7
CkBAIC0yMzUsNiArMjM5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJv
Y2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9j
ZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0
ZXJLZXlGb3JXZWJWaWV3IDogMTsKKyAgICAgICAgYm9vbCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWQgOiAxOworICAgICAgICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkIDogMTsKKyAgICAgICAgYm9vbCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2Fk
OwogICAgICAgICBib29sIHdlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25U
b0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZp
Z2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRl
eCBlN2NiMDgzYzRmZjJiMzM5MDkzZDcxOTQ4M2I1OTRjODA1ZmQ1NGVjLi5iMzhmY2ZmZTIyZDdi
Y2I5OWI4ZjBlMGY3MGZlOWY2ZGJmMmNkNTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0
ICJTT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExp
c3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIK
KyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJX
S05TRGljdGlvbmFyeS5oIgpAQCAtMTg3LDYgKzE4OCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0
ZSkKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUg
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBt
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25s
b2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZp
Z2F0aW9uQWN0aW9uOmRpZEJlY29tZURvd25sb2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNl
OmRpZEJlY29tZURvd25sb2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5j
b250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDopXTsKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdl
c3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Rp
ZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0Zv
cndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2Fy
ZExpc3RJdGVtOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
RW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2
aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBA
IC00NzIsMTEgKzQ3NiwxMCBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVu
dDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIoQVBJ
OjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0gICAg
ICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVxdWVz
dF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVS
TF0uc2NoZW1lKSkgewotICAgICAgICAgICAgICAgIGlmIChuYXZpZ2F0aW9uQWN0aW9uLT5zaG91
bGRQZXJmb3JtRG93bmxvYWQoKSkKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmRvd25s
b2FkKCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5l
ci0+dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOworICAgICAgICAgICAgaWYgKFtO
U1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdCisgICAgICAgICAg
ICAgICAgfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0
IFVSTF0uc2NoZW1lKQorICAgICAgICAgICAgICAgIHx8IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJibG9iIl0pIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKGRlZmF1bHRXZWJzaXRlUG9saWNpZXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KIApAQCAtNTU1LDkgKzU1OCwxMiBAQCBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0JFR0lOCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25s
b2FkOgorICAgICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAg
ICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CisK
ICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5n
QXBwTGluazoKICAgICAgICAgICAgIHRyeVNPQXV0aG9yaXphdGlvbihXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb24pLCB3ZWJQYWdlUHJveHksIFtsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsb2NhbExp
c3RlbmVyKSwgd2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZShhcGlXZWJzaXRlUG9saWNpZXMpXSAo
Ym9vbCBvcHRpbWl6ZWRMb2FkKSB7CiAgICAgICAgICAgICAgICAgaWYgKG9wdGltaXplZExvYWQp
IHsKQEAgLTY3MSw3ICs2NzcsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZwogICAgICAgICAg
ICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBjYXNlIF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkOgorICAgICAg
ICBjYXNlIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CiAgICAgICAg
ICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTEwODUsNiArMTA5MSw0MiBAQCBSZWZQdHI8QVBJOjpTdHJpbmc+IE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbgogICAg
IHJldHVybiBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVy
bCkpOwogfQogCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlv
bkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7Cisg
ICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2
aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9u
KSBkaWRCZWNvbWVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKK3ZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYgbmF2aWdhdGlv
blJlc3BvbnNlLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9u
RGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsK
KyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW25h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmll
dyBuYXZpZ2F0aW9uUmVzcG9uc2U6d3JhcHBlcihuYXZpZ2F0aW9uUmVzcG9uc2UpIGRpZEJlY29t
ZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViUGFnZVBy
b3h5JiwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMuY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBt
X25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5h
dmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgW3N0YXRpY19jYXN0PGlk
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkp
ICBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgY29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykK
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRTdGFydExvYWRGb3JR
dWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQppbmRleCAzZjc3Y2M5OWY2YzhmYTlmYzI5MDg1YmM4
NWUwOGIyN2VmNjAyNWNmLi41OTk4Y2U1MWE1Nzc5NGExOWRjYTlmYmFiZTNlNzI5ZTRhNzcwNDM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQpAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1w
b3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRT
UEkuaCIKICNpbXBvcnQgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDI5YzE3YmVi
MzNlZDY3NmM5YzQ0NGE0ZDcyYTYwMWY0Y2QwNzdmMzYuLmM2MWJiM2ZkMmVlMDQ2ZjM4MjRjNDBh
Yjk5MTgxYzBmY2VlMmExOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTU5LDcgKzU5LDExIEBAIERvd25sb2FkUHJv
eHk6OkRvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2Vi
c2l0ZURhdGFTdG9yCiB7CiB9CiAKLURvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkgPSBk
ZWZhdWx0OworRG93bmxvYWRQcm94eTo6fkRvd25sb2FkUHJveHkoKQoreworICAgIGlmIChtX2Rp
ZFN0YXJ0Q2FsbGJhY2spCisgICAgICAgIG1fZGlkU3RhcnRDYWxsYmFjayhudWxscHRyKTsKK30K
IAogc3RhdGljIFJlZlB0cjxBUEk6OkRhdGE+IGNyZWF0ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewpAQCAtMTE3LDcgKzEyMSw5IEBAIHZvaWQgRG93bmxvYWRQcm94eTo6
ZGlkU3RhcnQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1
Z2dlCiAgICAgaWYgKG1fcmVkaXJlY3RDaGFpbi5pc0VtcHR5KCkgfHwgbV9yZWRpcmVjdENoYWlu
Lmxhc3QoKSAhPSByZXF1ZXN0LnVybCgpKQogICAgICAgICBtX3JlZGlyZWN0Q2hhaW4uYXBwZW5k
KHJlcXVlc3QudXJsKCkpOwogCi0gICAgbV9jbGllbnQtPmRpZFN0YXJ0KCp0aGlzKTsKKyAgICBp
ZiAobV9kaWRTdGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sodGhpcyk7
CisgICAgbV9jbGllbnQtPmxlZ2FjeURpZFN0YXJ0KCp0aGlzKTsKIH0KIAogdm9pZCBEb3dubG9h
ZFByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQp
CkBAIC0xNDUsMTMgKzE1MSwyMiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVEYXRh
KHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaQogICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YSgqdGhpcywgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLXZvaWQgRG93bmxvYWRQcm94eTo6
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUs
IEFsbG93T3ZlcndyaXRlKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgRG93bmxvYWRQcm94
eTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFN0cmluZyYmIHN1Z2dlc3RlZEZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBB
bGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9jbGllbnQtPmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKCp0aGlzLCByZXNwb25zZSwgUmVz
b3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXplU3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmls
ZW5hbWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
KEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRpb24pIG11dGFi
bGUgeworICAgIC8vIEFzIHBlciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRv
d25sb2FkIChzdGVwIDIpLCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlv
biBoZWFkZXIKKyAgICAvLyBzaG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBm
cm9tIHRoZSBkb3dubG9hZCBhdHRyaWJ1dGUuCisgICAgaWYgKHJlc3BvbnNlLmlzQXR0YWNobWVu
dFdpdGhGaWxlbmFtZSgpIHx8IChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkgJiYgbV9zdWdn
ZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpKQorICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IHJl
c3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CisgICAgZWxzZSBpZiAoIW1fc3VnZ2VzdGVkRmls
ZW5hbWUuaXNFbXB0eSgpKQorICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IG1fc3VnZ2VzdGVk
RmlsZW5hbWU7CisgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBl
bmRGaWxlRXh0ZW5zaW9uSWZOZWNlc3Nhcnkoc3VnZ2VzdGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1p
bWVUeXBlKCkpOworCisgICAgbV9jbGllbnQtPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKCp0aGlzLCByZXNwb25zZSwgUmVzb3VyY2VSZXNwb25zZUJhc2U6OnNhbml0aXpl
U3VnZ2VzdGVkRmlsZW5hbWUoc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUsIFN0cmluZyBkZXN0aW5h
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlOwogICAgICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzTnVsbCgpKQogICAg
ICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGRlc3RpbmF0aW9uLCBTYW5k
Ym94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwog
CisgICAgICAgIHNldERlc3RpbmF0aW9uRmlsZW5hbWUoZGVzdGluYXRpb24pOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihkZXN0aW5hdGlvbiwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKSwgYWxsb3dPdmVyd3JpdGUpOwogICAgIH0pOwogfQpAQCAtMTczLDExICsxODgsMTYgQEAg
dm9pZCBEb3dubG9hZFByb3h5OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKIHsKICAgICBtX2xlZ2FjeVJlc3VtZURhdGEgPSBjcmVh
dGVEYXRhKHJlc3VtZURhdGEpOwogCi0gICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9y
KTsKKyAgICBtX2NsaWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3IsIG1fbGVnYWN5UmVzdW1lRGF0
YS5nZXQoKSk7CiAKICAgICAvLyBUaGlzIGNhbiBjYXVzZSB0aGUgRG93bmxvYWRQcm94eSBvYmpl
Y3QgdG8gYmUgZGVsZXRlZC4KICAgICBtX2Rvd25sb2FkUHJveHlNYXAuZG93bmxvYWRGaW5pc2hl
ZCgqdGhpcyk7CiB9CiAKK3ZvaWQgRG93bmxvYWRQcm94eTo6c2V0Q2xpZW50KFJlZjxBUEk6OkRv
d25sb2FkQ2xpZW50PiYmIGNsaWVudCkKK3sKKyAgICBtX2NsaWVudCA9IFdURk1vdmUoY2xpZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDA3MThlODkzYWIyNTViYjNh
MzVkZjdlZGE5YzMyOTJjMWY3MThhNGMuLjhjYzc4NmViYTYzYTg4ZjJlZDZjMjFjNTFhZGUyZjI2
YTQ5YjFiYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuaApAQCAtODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYXNV
c2VySW5pdGlhdGVkKGJvb2wgdmFsdWUpIHsgbV93YXNVc2VySW5pdGlhdGVkID0gdmFsdWU7IH0K
ICAgICBib29sIHdhc1VzZXJJbml0aWF0ZWQoKSBjb25zdCB7IHJldHVybiBtX3dhc1VzZXJJbml0
aWF0ZWQ7IH0KIAotICAgIFN0cmluZyBkZXN0aW5hdGlvbkZpbGVuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9kZXN0aW5hdGlvbkZpbGVuYW1lOyB9CisgICAgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
bkZpbGVuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kZXN0aW5hdGlvbkZpbGVuYW1lOyB9CiAgICAg
dm9pZCBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZCkgeyBtX2Rlc3RpbmF0
aW9uRmlsZW5hbWUgPSBkOyB9CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCkBAIC0xMDIsMTIg
KzEwMiw5IEBAIHB1YmxpYzoKICAgICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1
cm4gbV9mcmFtZUluZm8uZ2V0KCk7IH0KIAogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVu
dCgpIHsgcmV0dXJuIG1fY2xpZW50LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQg
RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6
RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBG
cmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRD
bGllbnQ+JiYpOworICAgIHZvaWQgc2V0RGlkU3RhcnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKERvd25sb2FkUHJveHkqKT4mJiBjYWxsYmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQorICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSkgeyBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3Vn
Z2VzdGVkRmlsZW5hbWU7IH0KIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBk
aWRTdGFydChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lKTsKQEAgLTExOCw3ICsxMTUsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZEZpbmlzaCgpOwogICAgIHZvaWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIHdp
bGxTZW5kUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAg
IHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFs
bG93T3ZlcndyaXRlKT4mJik7CisgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgU3RyaW5nJiYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgRG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYs
IEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFnZVByb3h5Kik7CisKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgorICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25s
b2FkUHJveHlNYXA7CiAgICAgUmVmUHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0b3JlOwpA
QCAtMTM0LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9yZWRpcmVjdENo
YWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAgIFJlZjxBUEk6
OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3du
bG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzQ4N2Q0ZTM0NGUxOGEyMDIzZDI5YmVjNDYwY2FjYWUw
NTUyNTdlZC4uMDQ2YTZiNTAyZjBmNmE0Nzc4OWRkOTE0YWYxNGZmNjFlZTE2YzFiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVBy
b3RvY29sTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xN
YW5hZ2VyUHJveHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMGY4NzQyODk5MGRlMDAxMzQzNjcyZTI0OTQ4OTVhZDEzZDQzMzAyOC4uNzc5
ZDkwNTAyODdiMTRmYjFkOTIyMDNlYjhkM2Y1NjRlMTU5NDJkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIK
ICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTMwLDcgKzMxMzEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUs
IFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRp
b24qIG5hdmlnYXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFj
dGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVz
PiYmIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uOiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0aW9uSUQ6ICVsbHUsIHBvbGljeUFjdGlv
bjogJXUiLCBmcmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CiAKQEAgLTMx
NzAsNyArMzE3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIHBvbGljeUFj
dGlvbiA9IFBvbGljeUFjdGlvbjo6RG93bmxvYWQ7CiAKICAgICBpZiAocG9saWN5QWN0aW9uICE9
IFBvbGljeUFjdGlvbjo6VXNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpIHx8ICFuYXZpZ2F0aW9u
KSB7Ci0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUocG9saWNp
ZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0zMTgzLDExICszMTg0LDExIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2wo
KS5wcm9jZXNzRm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3Mu
Y29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1v
dmUod2Vic2l0ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBzb3Vy
Y2VQcm9jZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCisgICAgcHJvY2VzcygpLnByb2Nl
c3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQ
cm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9u
KSwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHNvdXJjZVBy
b2Nlc3MgPSBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAgICAgICAgcG9saWNpZXMgPSBXVEZN
b3ZlKHBvbGljaWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlv
biwgU3VzcGVuZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0
cmluZyYgcmVhc29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFz
IGJlZW4gZGVzdHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlz
Q2xvc2VkKCkgfHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUo
c2VuZGVyKSk7CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMzIyMywxMSArMzIyNCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihw
b2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0
ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxI
YW5kbGUpLCBzaG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6
OlllcyA6IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFBy
b2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRp
b25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91
bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdl
UHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vi
c2l0ZVBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25h
bDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxD
b250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGlj
aWVzPiYmIHdlYnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2U+LCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNw
b25zZSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9
KTsKQEAgLTMyNDMsNiArMzI0NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYg
KGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBh
IGRvd25sb2FkIHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5vcmlnaW5hdGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBk
b3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRy
KCp0aGlzKSwgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb25PclJlc3BvbnNlKV0gKGF1dG8qIGRvd25sb2FkUHJveHkpIHsKKyAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMgfHwgIWRvd25sb2FkUHJveHkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwKKyAg
ICAgICAgICAgICAgICBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4mIHJl
c3BvbnNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UtPmRvd25sb2FkQXR0
cmlidXRlKCkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZFByb3h5
LT5zZXRTdWdnZXN0ZWRGaWxlbmFtZShyZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQoKnRoaXMsIHJlc3BvbnNlLmdldCgpLCAqZG93bmxvYWRQcm94eSk7
CisgICAgICAgICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9u
PiYgYWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2
aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKCp0aGlzLCBhY3Rpb24uZ2V0KCksICpkb3du
bG9hZFByb3h5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9
KTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdh
c1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAg
ICAgIGRvd25sb2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hh
aW4oKSk7CkBAIC01MDk1LDEwICs1MTA5LDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgbmF2aWdhdGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFtZUluZm8ob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhKTsKICAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZyYW1lU2VjdXJpdHlPcmln
aW4oZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luKTsKIAorICAgIEFQSTo6TmF2aWdhdGlvbiogbWFp
bkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgp
IDogbnVsbHB0cjsKKyAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBhdXRvIGRlc3RpbmF0aW9u
RnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShGcmFtZUluZm9EYXRhIHsgZnJhbWVJ
bmZvIH0sIHRoaXMpOworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZv
OworICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKKyAgICAg
ICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOworICAg
IGVsc2UgaWYgKCFmcm9tQVBJKSB7CisgICAgICAgIGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IG9y
aWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDog
bnVsbHB0cjsKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0
ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7Cisg
ICAgfQorCisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0Fw
cExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCisgICAgICAgICYmIGRlc3RpbmF0
aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgpCisgICAgICAgICYmIChtX21haW5GcmFtZSAmJiBt
X21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpKQorICAgICAg
ICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0
eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51
c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0g
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdU
Rjo6bnVsbG9wdCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJs
KCksIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBt
YWluRnJhbWVOYXZpZ2F0aW9uKTsKKwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAg
ICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVl
c3QpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgIkln
bm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMg
aGFuZGxlZCBieSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmln
YXRpb24obmF2aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAg
cmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2
aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAg
LTUxMTAsMTEgKzUxNDMsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICNpZiBFTkFCTEUo
QVBQX0JPVU5EX0RPTUFJTlMpCiAgICAgc2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQg
PSBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6WWVzOwogI2VuZGlmCi0gICAgCi0g
ICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihm
cmFtZSksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgZnJhbWVJbmZvLCB1
c2VyRGF0YU9iamVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRh
dGEub2JqZWN0KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNh
ZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVm
KGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNl
bmRlciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFP
YmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGlj
aWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3Np
bmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3Vu
ZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJh
bWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lBY3Rpb246ICV1LCBzYWZlQnJv
d3NpbmdXYXJuaW5nOiAlZCwgaXNBcHBCb3VuZERvbWFpbjogJWQiLCBmcmFtZS0+ZnJhbWVJRCgp
LnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAs
ICh1bnNpZ25lZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJv
dW5kRG9tYWluKTsKIAotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24s
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xp
Y2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVy
ID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92
ZShuYXZpZ2F0aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNp
ZXMgPSBtYWtlUmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFwb2xpY2llcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byog
ZGVmYXVsdFBvbGljaWVzID0gbV9jb25maWd1cmF0aW9uLT5kZWZhdWx0V2Vic2l0ZVBvbGljaWVz
KCkpCkBAIC01MTIzLDcgKzUxNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAg
ICAgICAgICAgIGlmIChwb2xpY2llcykKICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbi0+
c2V0RWZmZWN0aXZlQ29udGVudE1vZGUoZWZmZWN0aXZlQ29udGVudE1vZGVBZnRlckFkanVzdGlu
Z1BvbGljaWVzKCpwb2xpY2llcywgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSkpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
cG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAg
ICAgICByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIGZyYW1lLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsK
ICAgICAgICAgfTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxOTAsMTAg
KzUyMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGF1dG8gcHJvdG9jb2wgPSBz
aG91bGRTZW5kU2VjdXJpdHlPcmlnaW5EYXRhID8gZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnBy
b3RvY29sIDogcmVxdWVzdC51cmwoKS5wcm90b2NvbCgpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9y
ZS0+YmVnaW5BcHBCb3VuZERvbWFpbkNoZWNrKGhvc3QudG9TdHJpbmcoKSwgcHJvdG9jb2wudG9T
dHJpbmcoKSwgbGlzdGVuZXIpOwogI2VuZGlmCi0gICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJh
bWVOYXZpZ2F0aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBu
dWxscHRyOwotICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuZnJhbWVJRCkgOiBudWxscHRyOwogCi0gICAgYXV0byB1c2VySW5pdGlhdGVk
QWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlv
bkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgYXV0byB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlciA9
IG5hdmlnYXRpb24tPmlzTG9hZGVkV2l0aE5hdmlnYXRpb25TaGFyZWQoKSB8fCB1c2VySW5pdGlh
dGVkQWN0aXZpdHk7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQpAQCAtNTIw
MSwyNCArNTIzMSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjZW5kaWYKIAogICAgIGlm
IChtX3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0
KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJl
cXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRv
IGRlc3RpbmF0aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZy
YW1lSW5mbyksIHRoaXMpOwotICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZy
YW1lSW5mbzsKLSAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZy
YW1lKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8u
Y29weVJlZigpOwotICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkgewotICAgICAgICAgICAgYXV0
byogb3JpZ2luYXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdl
KCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyOwotICAgICAgICAgICAgc291cmNlRnJhbWVJ
bmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHNob3Vs
ZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24KLSAgICAgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZvLT5pc01h
aW5GcmFtZSgpCi0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVy
bCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKLSAgICAgICAgICAgICYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBl
OjpCYWNrRm9yd2FyZDsKLQotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5h
dmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291
cmNlRnJhbWVJbmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5B
cHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0
aW9uKTsKLQogI2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAgaWYgKG1fc2hvdWxkU3VwcHJlc3NT
T0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gfHwgbV9zaG91bGRT
dXBwcmVzc1NPQXV0aG9yaXphdGlvbkluQWxsTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKQogICAg
ICAgICAgICAgbmF2aWdhdGlvbkFjdGlvbi0+dW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0
aW9uKCk7CkBAIC01MzIwLDcgKzUzMzQsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAg
ICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJM
KG1fcHJvY2VzcywgcmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJl
ZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURdIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVC
cm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUg
eworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgIGlmIChm
cmFtZSkKKyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShX
VEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3Qu
dXJsKCkuaG9zdCgpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlv
bkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFt
ZUluZm8uZ2V0KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsg
fSwgc2hvdWxkT3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOwor
ICAgIAorICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3Rl
bmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmll
ciwgbGlzdGVuZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5n
V2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRy
IGhlcmUgb25jZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2ll
cyBnbyBhd2F5LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNT
RVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBA
IC01MzI5LDI0ICs1MzUxLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJ
RCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdU
Rk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0
aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3Zl
KHNlbmRlcikpOwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNo
b3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5
Q2xpZW50KQotICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFt
ZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUmVm
UHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Ci0gICAgICAgIGlmIChmcmFtZSkK
LSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShmcmFtZUluZm8pLCB0aGlzKTsKLQotICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rp
dml0eSA9IG1fcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJl
cXVlc3QudXJsKCkuaG9zdCgpOwotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6
Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwg
c291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVz
dCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0
aXZpdHkpKTsKLQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCksIHJlcXVlc3Qs
IGZyYW1lTmFtZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxl
c1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKICAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlz
LCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0KLSAg
ICB9Ci0gICAgICAgIAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2UoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLApAQCAtNTM2Nyw4ICs1Mzc4LDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2Vzcywg
cmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2Uu
dXJsKCkpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0
aW9uSUQgPyBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVs
bHB0cjsKKyAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3Bv
bnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRo
aXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0
dHJpYnV0ZSk7CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xp
Y3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdl
YlBhZ2VJRCwgZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdU
Rk1vdmUobmF2aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5p
bmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBw
cm9jZXNzLCBuYXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTog
QXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xp
ZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2Fm
ZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM3NywxNCArNTM5
MCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxp
c3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIAotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5nZXQoKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdU
Rk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91
bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFp
blJlc3VsdDo6Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwg
cmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVs
c2UgewotICAgICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJl
c3BvbnNlOjpjcmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyks
IHRoaXMpLmdldCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9h
ZEF0dHJpYnV0ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVz
cG9uc2UpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAt
NjAyMyw2ICs2MDM0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVl
c3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25s
b2FkUmVxdWVzdChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3du
bG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgYXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVE
b3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENhbGxE
b3dubG9hZERpZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERlc3RpbmF0aW9uRmlsZW5h
bWUocGF0aCk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3Qo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93
bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3Jl
KCksIHRoaXMsIHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFj
ayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGll
bnQoKS5kaWRDaGFuZ2VDb250ZW50U2l6ZShzaXplKTsKQEAgLTY1OTIsMTggKzY2MTYsMjYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9E
aXNrKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNp
dGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHRE
YXRhLndlYkhpdFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwotICAgICAgICBy
ZXR1cm47ICAgIAotICAgIH0KKyAgICBzdHJ1Y3QgRG93bmxvYWRJbmZvIHsKKyAgICAgICAgU3Ry
aW5nIHVybDsKKyAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIH07CisgICAg
T3B0aW9uYWw8RG93bmxvYWRJbmZvPiBkb3dubG9hZEluZm87CisgICAgaWYgKGl0ZW0uYWN0aW9u
KCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykKKyAgICAgICAgZG93
bmxvYWRJbmZvID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RS
ZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCwgeyB9IH19OwogICAgIGlmIChpdGVtLmFjdGlv
bigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaykgewogICAgICAgICBh
dXRvJiBoaXRUZXN0UmVzdWx0ID0gbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3du
bG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3VsdC5h
YnNvbHV0ZUxpbmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1l
bnVJdGVtVGFnRG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1f
YWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29s
dXRlTWVkaWFVUkwpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBkb3dubG9hZEluZm8gPSB7
eyBoaXRUZXN0UmVzdWx0LmFic29sdXRlTGlua1VSTCwgaGl0VGVzdFJlc3VsdC5saW5rU3VnZ2Vz
dGVkRmlsZW5hbWUgfX07CisgICAgfQorICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRN
ZW51SXRlbVRhZ0Rvd25sb2FkTWVkaWFUb0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFi
c29sdXRlTWVkaWFVUkwsIHsgfSB9fTsKKyAgICBpZiAoZG93bmxvYWRJbmZvKSB7CisgICAgICAg
IGF1dG8mIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKG1fd2Vi
c2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBkb3dubG9hZEluZm8tPnVybCksIGRvd25s
b2FkSW5mby0+c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFy
dENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8qIGRv
d25sb2FkKSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoKnRoaXMsICpkb3dubG9hZCk7CisgICAgICAgIH0pOwog
ICAgIH0KICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1Nw
ZWxsaW5nV2hpbGVUeXBpbmcpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCA4NzlmNzMyYjExY2IxMjM5NzM4NjU4ZThlNThmYjg3YzUwMzRmMmI4Li45MjMyM2U2NzE0
NmFkMTljZTBmNDI2ZWMwZGVmZTNmYTZkOWZiNDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTE2NCw4ICsxMTY0LDggQEAgcHVibGljOgogCiAgICAgY2xhc3Mg
UG9saWN5RGVjaXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzIDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVj
aXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9u
YWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA9IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKLSAgICB2b2lkIHJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJ
OjpOYXZpZ2F0aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94
eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2Vu
ZGVyPiYmKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYs
IFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlv
bkFjdGlvbj4+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1v
dmVkSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKQEAg
LTEyNzksNiArMTI3OSw4IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IGNyZWF0aW9uUGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5Jiwg
UmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCByZXN1bWVEb3du
bG9hZChjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOworICAgIHZvaWQgZG93bmxv
YWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKERvd25sb2FkUHJveHkqKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5n
VG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5jcHAKaW5kZXggMzZiMmQ2ZjdhNzVhNTZiODU0YzY5ZTYyMGFiNzk4Zjc2ZTYw
YTUxNi4uMGRjY2NhNjg0MjkxMzM4ZGM5Y2UyYjRhYjAyNmI1ZTExOWU4MDIzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE0OCw3ICsxMTQ4LDcg
QEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3Rv
cmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3gKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0K
IAotRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3Qg
QVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5
JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25s
b2FkRGlkU3RhcnQpCiB7CiAgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2Fk
UHJveHkoZGF0YVN0b3JlLCBSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7
CiAKQEAgLTExNTYsNyArMTE1Niw3IEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpy
ZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhCiAgICAgaWYg
KCFwYXRoLmlzRW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
KHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAKLSAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBk
b3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBh
dGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICBkYXRhU3RvcmUubmV0d29ya1By
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0
YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0
YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNhbGxEb3du
bG9hZERpZFN0YXJ0KSwgMCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGEzYzJkYmY5NGY1NWVmNzBj
N2U3NjcwMWFlM2ZjMTg4NzI0NGRjMDguLjY1ZDRmOThmMTUxNTYwZDU2MDQ4NWM1ZDE1YzliN2Jj
NjRlMDViNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAt
MTE2LDYgKzExNiw3IEBAIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHdlYlByb2Nl
c3NUaHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKIAorZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRT
dGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBi
b29sOwogCiBjbGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sPiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlByb2Nlc3NQb29sPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC0yMDQs
NyArMjA1LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBEb3dubG9hZFByb3h5JiBkb3dubG9h
ZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IHsgfSk7Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFT
dG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBEb3dubG9hZFByb3h5JiByZXN1bWVE
b3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwg
Y29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENhbGxEb3du
bG9hZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhKFJlZlB0cjxBUEk6Ok9iamVjdD4mJiB1c2VyRGF0YSkgeyBtX2luamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IFdURk1vdmUodXNlckRhdGEpOyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3NjFk
ODM1MWVmY2I1NjExMDljNTNmMDBlNTAwOTcwNjZlMjNhZTcuLmI4OTUyZmMwMmUzNDRhODYxOTE4
YmE5ZDhiNzNhY2ZkM2VlYjVmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE4LDcgKzIxOCw2IEBACiAJCTFBNDNFODJBMTg4RjND
REMwMDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDNFODI4MTg4RjNDREMwMDlFNEQz
MCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyog
V0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTFBNDQ1QkExMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRI
aXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBNDQ1
QkEzMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTIxODRENUZDRjAw
NEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8q
IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRD
b25uZWN0aW9uQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUE0ODMyQ0MxQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNv
cmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDgz
MkNBMUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTQ4MzJDRTFBOUJDNDg0MDA4
QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDRDFBOUJDNDg0MDA4QjRERkUgLyog
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggKi87IH07CkBAIC0zMzEsNyArMzMwLDcgQEAK
IAkJMUFCN0Q0Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM4MTI4OEFBQTcwMENG
RDA4QyAvKiBEb3dubG9hZFByb3h5LmggKi87IH07CiAJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4
QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBE
b3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCN0Q2MUExMjg4QjlE
OTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERv
d25sb2FkUHJveHlNZXNzYWdlcy5oICovOyB9OwotCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMg
LyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUI3RDc4RDEyODhDRDlB
MDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRS
ZWYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QUI4QTFFQzE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFQjE4NDAwODA5MDBF
OUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFn
ZVBvbGljeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCOEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUYw
MTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRjE4NDAwQjAwMDBFOUFFNjkgLyog
V0tQYWdlRm9ybUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0xMTg1LDYgKzExODQsNyBAQAogCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVC
QjEgLyogTmV0d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5o
ICovOyB9OwogCQk1QzI2OTU4NTIwMDQzMjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0
ZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUMyNjk1ODQyMDA0MkYxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZh
dGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
QzI5OERBMDFDM0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RFRjI5MDA0NzBB
RkUgLyogUGVuZGluZ0Rvd25sb2FkLmggKi87IH07CisJCTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIw
NSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVD
MzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1NDczMjEwMDlFNzk0OCAv
KiBXS0RlcHJlY2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1QzQ2MDlFNzIyNDMxN0I0MDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0
QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUM0NjA5RTgy
MjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzQ2MDlFNDIyNDMw
RTREMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCAqLzsgfTsK
QEAgLTE4MjUsNiArMTgyNSw5IEBACiAJCUNFRTRBRTJCMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtp
dFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VF
NEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07CiAJCUQzQjk0ODQ3MTFG
RjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1
cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBv
cHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oICovOyB9Owor
CQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURC
IC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7
IH07IH07CisJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI2
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJCMjUyRUQ0NDAwMEQ5MjFE
QiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IERGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50
ZXJuYWwuaCAqLzsgfTsKIAkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVGIC8qIFdLSFRUUENvb2tp
ZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURG
NDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNDYyRTExMjNGMzM4QUQw
MEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjg0Q0VFNDI0OUFBMjREMDA5MDk2RjYgLyog
V0tQREZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREY4NENFRTIyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVEVmlldy5tbSAqLzsgfTsK
QEAgLTI0NTQsNyArMjQ1Nyw2IEBACiAJCTFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRs
ZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0NUJB
MDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRIaXN0b3J5Q2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRl
eHREb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nv
bnRleHREb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ0
NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkMxMUE5NjVBM0MwMDhCNERGRSAv
KiBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBNDgzMkM5MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3Jk
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0
YVJlY29yZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2NTAsOCArMjY1Miw4
IEBACiAJCTFBQjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5Lm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHkubWVzc2FnZXMuaW47IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBE
b3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZE
MDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBEb3dubG9hZFByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dl
YktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07Ci0JCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tEb3dubG9hZC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAv
KiBXS0Rvd25sb2FkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93
bmxvYWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUFCN0Q3OEMxMjg4Q0Q5
QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tEb3dubG9hZFJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2FkZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZGVyQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVEMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1Bh
Z2VQb2xpY3lDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdl
UG9saWN5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVGMTg0
MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZUZvcm1DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTQxMjIsNiArNDEyNCw3IEBACiAJCTVDMkIxQUYzMjIzQUI3MjgwMEI5MUNGNyAvKiBE
b3dubG9hZE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
RG93bmxvYWRNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFB
RjQyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERvd25sb2FkUHJveHlNYXBDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERvd25sb2FkUHJv
eHlNYXBDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyRUJERjkyNTY0
MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlUG9s
aWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NjA5RTIyMjQz
MEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzODgsNiArNTM5MSwxMCBAQAogCQlEM0I5NDg0MzExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5
NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJT
ZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vh
cmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjIzMjUy
RUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUw
RTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tD
b250ZW50V29ybGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29udGVudFdvcmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4
QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03NTM4LDYgKzc1NDUsMTAgQEAKIAkJCQk1Q0UwQzM2ODIyOUYy
RDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAogCQkJCTVDRTBD
MzZCMjI5RjJENEIwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5o
ICovLAogCQkJCTVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVu
dEluZm9Qcml2YXRlLmggKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93
bmxvYWQuaCAqLywKKwkJCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5t
bSAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRl
LmggKi8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5h
bC5oICovLAogCQkJCTFBRjQ1OTJEMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggKi8sCiAJ
CQkJMUFGNDU5MkMxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gKi8sCiAJCQkJMUEyRDI1
MkExOTQ2ODhGRDAwNDUzN0IwIC8qIFdLRXJyb3JJbnRlcm5hbC5oICovLApAQCAtOTUwNCw3ICs5
NTE1LDYgQEAKIAkJCQkxQUU1MkY5MzE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJMUFFNTJGOTQxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCAqLywKIAkJCQkxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQg
LyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovLAotCQkJCTFBNDQ1QkEyMTg0RDVGQ0Yw
MDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovLAogCQkJCTFBNDQ1QkEwMTg0
RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJMUE0NDVC
OUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8s
CiAJCQkJQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0ZW5lci5j
cHAgKi8sCkBAIC05NTE1LDggKzk1MjUsOSBAQAogCQkJCTUxMkY1OEYxMTJBODhBNTQwMDYyOTUz
MCAvKiBXS0NyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYyOTUzMCAv
KiBXS0NyZWRlbnRpYWwuaCAqLywKIAkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tD
cmVkZW50aWFsVHlwZXMuaCAqLywKLQkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tE
b3dubG9hZC5jcHAgKi8sCi0JCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxv
YWQuaCAqLywKKwkJCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVu
dC5oICovLAorCQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmNw
cCAqLywKKwkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oICov
LAogCQkJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVu
ZXIuY3BwICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNz
aW9uTGlzdGVuZXIuaCAqLywKIAkJCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyogV0tGcmFt
ZS5jcHAgKi8sCkBAIC0xMTg0NSw3ICsxMTg1Niw2IEBACiAJCQkJQkNCOUUyNEIxMTIwRTE1QzAw
QTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgxOTIwMjY3
MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250
ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QkExMTg0RDVGQzEw
MDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFDNCAvKiBXS0NvbnRl
eHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMTE4NzgsOCArMTE4ODgsMTIg
QEAKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEgLyogV0tET01SYW5nZVByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAvKiBXS0RPTVRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRGNSAvKiBXS0RPTVRl
eHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhD
IC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4MjUyRUNCOEUwMEQ5
MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJFQkRGQTI1NjQzODBC
MDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJREYwQzVG
MkEyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8qIFdLRG93bmxvYWRQ
cm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MDlCQTE4MUU2RTY0QkMwMDlE
QTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVD
RjY2Q0UyMUQ2Qjc3RTAwOUU1QzNGIC8qIFdLRWRpdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRjQ1OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNTQ2
MDNjMzFhZWMyZDcxMzg2NGE3MjM4NTMyYmI5ZjUwODIzZWNiLi5mYmIyNjYxNDFiODUwMWIzNTQy
MGNjMjQyMjAyODZmNDdjMzU5ODM2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMjAtMTEtMTkgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3
IGRvd25sb2FkIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFz
aC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0UGFn
ZVBvbGljeUNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOiBEZWxldGVk
LgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0Q29udGV4dERvd25sb2FkQ2xpZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1l
bnVEb3dubG9hZC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNvbnRleHRN
ZW51RGlkQ3JlYXRlRG93bmxvYWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNvbnRleHRN
ZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hl
cyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nLm1tOgorICAgICAgICAoLVtCZWNvbWVEb3dubG9hZERlbGVnYXRlIHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tOgorICAgICAg
ICAoLVtDb252ZXJ0UmVzcG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlRGVs
ZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToK
KyAgICAgICAgKC1bVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hl
RGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoVEVTVCk6
CisgICAgICAgIChkb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hlY2tSZXN1bWVkRG93
bmxvYWRDb250ZW50cyk6CisgICAgICAgIChzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAg
ICAgICAoY2hlY2tGaWxlQ29udGVudHMpOgorICAgICAgICAodGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KToKKyAgICAgICAgKC1bRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bXV0YXRlRmlsZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAgICAoLVtEb3dubG9h
ZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKC1bUFNPTk5h
dmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdERvd25s
b2FkRGVsZWdhdGUgZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVz
dDpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRv
d25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3RlZEZpbGVuYW1lOmNv
bXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3du
bG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDpdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVE
YXRhOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3Om5hdmlnYXRp
b25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9hZDpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3YWl0Rm9yRG93
bmxvYWREaWRGaW5pc2hdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgdGFrZUNh
bGxiYWNrUmVjb3JkXSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9h
ZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpk
aWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpd
KTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRG
aW5pc2g6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3du
bG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3du
bG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVs
ZWdhdGUuaC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlLm1tLgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZSBfZG93bmxvYWREaWRTdGFydDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOgorICAgICAg
ICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3Bv
bnNlOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6
ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6
XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNo
Ol0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlk
RmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkRGlkQ2FuY2VsOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93
bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpuYXZp
Z2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2gpOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKToKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6CisK
IDIwMjAtMTEtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBibG9jay1zcGFtbWVycyBhdXRvaW5zdGFsbCByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGQ5N2YyNjZlNDA1ZWNmYWE0MTQxOTQ1OTkwODhhZDU0
MGJkNGQwOWUuLmY1YTlkMjE3NjVmNjhhZjIyZmZiOTRlMzg1MjNkN2Q2NDllNDUxZmMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI3LDYgKzI3LDcgQEAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbkV4dHJhcy5tbQogY29jb2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQog
Y29jb2EvVGVzdENvY29hLm1tCiBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorY29jb2Ev
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KIGNvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUubW0KIGNvY29hL1Rlc3RQcm90b2NvbC5tbQogY29jb2EvVGVzdFVJRGVsZWdhdGUubW0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzEwOTJjMjZlMzhlZDdjMTkwNzZlZjJlMjgzYmI3MDc4
YTZkNDgzMS4uMDFhMDE2NjRmMGMwOTkwMjk4ZDQ0NTY0ODFmMjU3ZWUxMzI2ZDg3NCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIyMTUsOCArMjIxNSw4IEBACiAJCTVDNjlCREQ0MUY4MkE3
RUIwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZFMjdBNjIyNEVFQkVBMDAxMjg3MzYg
LyogVVJMQ2Fub25pY2FsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFVSTENhbm9uaWNhbGl6YXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDNzE0ODk0MjEyM0E0MDcwMEZERTNDNSAvKiBXS1dlYnNpdGVEYXRhc3RvcmUubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhc3Rv
cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNzJFOENEMjQ0RkZDRTMwMDM4
MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2Fk
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0UyNDRGRkNF
NDAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVn
YXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IG5hbWUgPSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUTFNEZXByZWNhdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3NTcxNUYyMjEyNDlCRDAwQjlFNUFDIC8qIEJ1bmRsZVJl
dGFpblBhZ2VQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBCdW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Qzc5NjQwRjFFQjAyNjlCMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRNb2RpZmllcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgwMSw2ICsyODAxLDggQEAKIAkJRDNCRTVFMzQxRTRD
RTg1RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3R2V0Q29udGVudHMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDNjlBQTYyMUNGNzdDNjUwMEM2MjcyRiAvKiBTY29wZWRM
YW1iZGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NvcGVkTGFt
YmRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0QjI3MzgyMUE0NzcyNzAw
OUJEMUNBIC8qIFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlv
bmFyeUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ2RjI1MzRF
MTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERl
bGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCQzQ3MDI1MzRFMTIw
MDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdERv
d25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGQjhGRjMxMjQ5MkY1MUEwMEYwMEIwRCAvKiBQ
cmVjb25uZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJl
Y29ubmVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEOUYxNTVCMjU0
ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVE
aXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxMjIwREM5MTU1QjI4N0QwMDEzRTJGQyAvKiBNZW1vcnlDYWNoZURpc2FibGVX
aXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMxMjIsOCArMzEyNCwxMCBAQAogCQkJCUNFNjQw
Q0E2MjM3MEE0RjMwMEM1Q0FBNCAvKiBUZXN0Q29jb2EubW0gKi8sCiAJCQkJNUNFNzU5NDgyMkE4
ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5oICovLAogCQkJCTVDRTc1OTQ3
MjJBODgzQTUwMEMxMjQwOSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIubW0gKi8sCi0JCQkJNUM3
MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCi0JCQkJ
NUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAor
CQkJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICov
LAorCQkJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5t
bSAqLywKKwkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUuaCAqLywKKwkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJMkQxQzA0QTUxRDc2Mjk4QjAwMEE2ODE2IC8q
IFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCAqLywKIAkJCQkyRDFDMDRBNjFENzYyOThCMDAwQTY4
MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJCQk1MTYyODEyMzIzMjVDMTdB
MDBCQjdFNDIgLyogVGVzdFBERkRvY3VtZW50LmggKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5h
dGlvbkNyYXNoLmNwcAppbmRleCBjYTY5N2FjMzVhOWFhNTIwYTViMTlmNWM3Yjc0M2MxN2M4NDRj
NTM4Li5jNDU3NTg2NTA1ZGIzZTRkYmFiZGIwNzEyYTBlNjYzYmRiMjljNzdkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uQ3Jhc2guY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25s
b2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKQEAgLTI5LDQyICsyOSw0MSBAQAogCiAjaW5j
bHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIK
LSNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25s
b2FkUmVmLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogc3RhdGljIGJvb2wgZGlk
RGVjaWRlRGVzdGluYXRpb247CiAKLXN0YXRpYyB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3N0YXRpYyB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXS1BhZ2VSZWYsIFdLTmF2aWdhdGlv
blJlc3BvbnNlUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgbGlzdGVuZXIsIFdLVHlwZVJl
ZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQobGlz
dGVuZXIpOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0
cmluZ1JlZiwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
VVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBkaWREZWNp
ZGVEZXN0aW5hdGlvbiA9IHRydWU7Ci0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7Cisg
ICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgcmV0
dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0
aW9uQ3Jhc2giKS5sZWFrUmVmKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHNldENvbnRleHREb3dubG9h
ZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkKK3N0YXRpYyB2b2lkIG5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25SZXNwb25z
ZVJlZiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7
CisgICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwg
c2l6ZW9mKGNsaWVudCkpOwotCiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xp
ZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENs
aWVudChjb250ZXh0LCAmY2xpZW50LmJhc2UpOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlv
bldpdGhSZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwor
ICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7CiB9CiAKIHN0
YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiB7Ci0gICAgV0tQ
YWdlTmF2aWdhdGlvbkNsaWVudFYwIG5hdmlnYXRpb25DbGllbnQ7CisgICAgV0tQYWdlTmF2aWdh
dGlvbkNsaWVudFYzIG5hdmlnYXRpb25DbGllbnQ7CiAgICAgbWVtc2V0KCZuYXZpZ2F0aW9uQ2xp
ZW50LCAwLCBzaXplb2YobmF2aWdhdGlvbkNsaWVudCkpOwogCi0gICAgbmF2aWdhdGlvbkNsaWVu
dC5iYXNlLnZlcnNpb24gPSAwOwotICAgIG5hdmlnYXRpb25DbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb247CisgICAg
bmF2aWdhdGlvbkNsaWVudC5iYXNlLnZlcnNpb24gPSAzOworICAgIG5hdmlnYXRpb25DbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOworICAgIG5hdmlnYXRpb25DbGllbnQubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgPSBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZDsKIAog
ICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHBhZ2UsICZuYXZpZ2F0aW9uQ2xpZW50
LmJhc2UpOwogfQpAQCAtNzIsNyArNzEsNiBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlUG9saWN5Q2xp
ZW50KFdLUGFnZVJlZiBwYWdlKQogVEVTVChXZWJLaXQsIERvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25DcmFzaCkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9w
dFdLKFdLQ29udGV4dENyZWF0ZVdpdGhDb25maWd1cmF0aW9uKG51bGxwdHIpKTsKLSAgICBzZXRD
b250ZXh0RG93bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZp
ZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKICAgICBzZXRQYWdlUG9saWN5Q2xpZW50KHdlYlZp
ZXcucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0KaW5kZXggMTU5MzBlNTQ2ZGJhYTNkYTlk
NWVkMjE1YjZjOGI5Y2M2MTA5YWYwZi4uNzU1NmY2MTJkNWUzYjliYTRmNGNkNmY1MjZjOTU4YzE3
ZjNmMWYyNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFj
L0NvbnRleHRNZW51RG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0KQEAgLTI4LDcgKzI4LDggQEAKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNp
bXBvcnQgPFdlYktpdC9XS0NvbnRleHRNZW51SXRlbS5oPgotI2ltcG9ydCA8V2ViS2l0L1dLRG93
bmxvYWQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUGFnZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cmVmZXJlbmNlc1ByaXZhdGUuaD4KQEAgLTYyLDEyICs2MywxMiBAQCBzdGF0aWMgdm9pZCBnZXRD
b250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnUoV0tQYWdlUmVmIHBhZ2UsIFdLQXJyYXlSZWYgcHJv
cG9zZWRNZQogICAgIH0KIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0
YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShX
S0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdn
ZXN0ZWQgZmlsZW5hbWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBk
b3dubG9hZCBhdHRyaWJ1dGUgaW4gdGhlIEhUTUwuCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJkb3du
bG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAotICAgIFdLRG93
bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQsIG51
bGxwdHIsIG51bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRpb24gPSB0cnVl
OwogCiAgICAgRVhQRUNUX0VRKGV4cGVjdGVkT3JpZ2luYXRpbmdQYWdlLCBXS0Rvd25sb2FkR2V0
T3JpZ2luYXRpbmdQYWdlKGRvd25sb2FkKSk7CkBAIC03NiwyNSArNzcsMjkgQEAgc3RhdGljIFdL
U3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4
dFJlZiwgV0tEb3dubG8KICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0
L0NvbnRleHRNZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgV0tEb3dubG9hZENsaWVudFYw
IGNsaWVudDsKKyAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOworICAgIGNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhS
ZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOworICAgIFdL
RG93bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7Cit9CisKIC8vIENoZWNr
cyB0aGF0IHRoZSBIVE1MIGRvd25sb2FkIGF0dHJpYnV0ZSBpcyB1c2VkIGFzIHN1Z2dlc3RlZCBm
aWxlbmFtZSB3aGVuIHNlbGVjdGluZwogLy8gdGhlICJEb3dubG9hZCBMaW5rZWQgRmlsZSIgaXRl
bSBpbiB0aGUgY29udGV4dCBtZW51LgogVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRI
VE1MRG93bmxvYWRBdHRyaWJ1dGUpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBj
b250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkp
OwogCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7Ci0gICAgbWVtc2V0KCZj
bGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKLSAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsK
LSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHRTZXREb3du
bG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOwotCiAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVX
aXRoSWRlbnRpZmllcihVdGlsOjp0b1dLKCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9y
bVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAg
V0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50VjMgbG9hZGVyQ2xpZW50OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBz
aXplb2YobG9hZGVyQ2xpZW50KSk7Ci0gICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
CisgICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CiAgICAgbG9hZGVyQ2xpZW50LmRp
ZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRGaW5pc2hOYXZpZ2F0aW9uOworICAgIGxvYWRlckNsaWVu
dC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkID0gY29udGV4dE1lbnVEaWRDcmVhdGVEb3du
bG9hZDsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2UoKSwg
JmxvYWRlckNsaWVudC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMgY29u
dGV4dE1lbnVDbGllbnQ7CkBAIC0xMTQsMzQgKzExOSwzOCBAQCBURVNUKFdlYktpdCwgQ29udGV4
dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZSkKICAgICBVdGlsOjpydW4oJmRpZERl
Y2lkZURvd25sb2FkRGVzdGluYXRpb24pOwogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0NvbnRl
eHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFt
ZSwgY29uc3Qgdm9pZCopCiB7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBzdWdnZXN0ZWQgZmlsZW5h
bWUgaXMgcHJvdmlkZWQgYW5kIG1hdGNoZXMgdGhlIHZhbHVlIG9mIHRoZSBkb3dubG9hZCBhdHRy
aWJ1dGUgaW4gdGhlIEhUTUwsIGFmdGVyIHNhbml0aXphdGlvbi4KICAgICBFWFBFQ1RfV0tfU1RS
RVEoInRlc3QxX3Rlc3QyX2Rvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmls
ZW5hbWUpOwogCi0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CisgICAgV0tEb3dubG9h
ZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgZGlkRGVjaWRlRG93bmxv
YWREZXN0aW5hdGlvbiA9IHRydWU7CiAKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJL
aXRBUElUZXN0L0NvbnRleHRNZW51RG93bmxvYWQiKS5sZWFrUmVmKCk7CiB9CiAKLVRFU1QoV2Vi
S2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRlV2l0aFNsYXNoZXMp
CitzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250
ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aEluamVjdGVk
QnVuZGxlKCkpOwotCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMCBjbGllbnQ7CisgICAg
V0tEb3dubG9hZENsaWVudFYwIGNsaWVudDsKICAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9m
KGNsaWVudCkpOwogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7Ci0gICAgV0tDb250ZXh0U2V0RG93
bmxvYWRDbGllbnQoY29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKKyAgICBjbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzOworICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93
bmxvYWQsICZjbGllbnQuYmFzZSk7Cit9CisKK1RFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25s
b2FkSFRNTERvd25sb2FkQXR0cmlidXRlV2l0aFNsYXNoZXMpCit7CisgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0V2l0aElu
amVjdGVkQnVuZGxlKCkpOwogCiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VH
cm91cCA9IGFkb3B0V0soV0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihVdGlsOjp0b1dL
KCJNeUdyb3VwIikuZ2V0KCkpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0
LmdldCgpLCBwYWdlR3JvdXAuZ2V0KCkpOwogCi0gICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYw
IGxvYWRlckNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbG9hZGVyQ2xpZW50
OwogICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7Ci0g
ICAgbG9hZGVyQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgbG9hZGVyQ2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDM7CiAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaE5hdmlnYXRpb24gPSBkaWRG
aW5pc2hOYXZpZ2F0aW9uOworICAgIGxvYWRlckNsaWVudC5jb250ZXh0TWVudURpZENyZWF0ZURv
d25sb2FkID0gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUNvbnRhaW5pbmdTbGFzaGVzOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdl
YlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdlQ29udGV4dE1l
bnVDbGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQppbmRleCA0MzM5
MTMxMTAxZjJjZGQ5NTA5ODY3ZWZlOTQ0ZjZlNzdlZjM5ZWRiLi5kMTk2YzJjOTNjOTJjYWFiZDcz
MjM5M2IzNGNhZWVlMGFlN2IzMzkyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCkBAIC0xNTEsNyArMTUx
LDcgQEAgVEVTVChDb250ZW50RmlsdGVyaW5nLCBVUkxBZnRlclNlcnZlclJlZGlyZWN0KQogCiAt
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBk
ZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNp
c2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlv
biAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCmluZGV4IDNhZWZlYjhl
YzMzNWUxMDIzMmZmOGU1YzgwYzZmNzliZDM1ZWZjMDguLmYzM2E5YzcxZTQzNmZlNjI1NmY5YmE4
YzkyNjA1MDg1ODA1NjM5NWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzMsMTEgKzMzLDE1IEBACiAjaW1wb3J0ICJUQ1BT
ZXJ2ZXIuaCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFByb3RvY29sLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVzcG9uc2UuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclBy
aXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaD4K
KyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRpb25SZXNwb25zZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KQEAgLTE3NCw3ICsx
NzgsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3QpCiBAaW1wbGVtZW50YXRp
b24gQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZQogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJl
Y29tZURvd25sb2FkKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCk7CiB9CiBAZW5kCiAKQEAgLTk3Nyw3ICs5ODEsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JSZXR1cm5Ub0ZvcmVncm91bmQpCiAgICAgRVhQ
RUNUX0ZBTFNFKF9kaWRGaW5pc2hOYXZpZ2F0aW9uKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoX1dL
TGVnYWN5RXJyb3JEb21haW4sIGVycm9yLmRvbWFpbik7CiAgICAgX2RpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAg
ICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9
CiAKQEAgLTk4NSw3ICs5ODksNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZE1vbml0b3JS
ZXR1cm5Ub0ZvcmVncm91bmQpCiB7CiAgICAgRVhQRUNUX0ZBTFNFKF9kaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uKTsKICAgICBfZGlkRmluaXNoTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAo
X3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9h
ZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtMTAyNCw3ICsxMDI4LDcgQEAgVEVT
VChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1lbW9yeUNhY2hlKQogICAg
IEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5h
YnNvbHV0ZVN0cmluZyk7CiAKICAgICBOU1VSTCAqc2Vjb25kVVJMID0gW05TVVJMIFVSTFdpdGhT
dHJpbmc6QCJodHRwOi8vYnVuZGxlLWZpbGUvc2ltcGxlMi5odG1sIl07Ci0gICAgW2RlbGVnYXRl
IHNldFJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CkBAIC0xMDUxLDcgKzEwNTUs
NyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9uc2VGcm9tTWVtb3J5Q2Fj
aGUpCiAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVTdHJpbmcsIFt3ZWJWaWV3IFVSTF0u
YWJzb2x1dGVTdHJpbmcpOwogCi0gICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5Ol9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKKyAgICBbZGVsZWdhdGUgc2V0
UmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07
CiAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpz
ZWNvbmRVUkxdXTsKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmlzRG9uZSk7CkBAIC0xMTg5LDI0ICsxMTkzLDMwIEBAIFN0cmluZyBsb25nU3RyaW5n
KExDaGFyIGMpCiAgICAgcmV0dXJuIFN0cmluZyh2ZWN0b3IuZGF0YSgpLCBsZW5ndGgpOwogfQog
Ci1URVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCitlbnVtIGNsYXNzIEluY2x1ZGVFVGFnIDogYm9v
bCB7IE5vLCBZZXMgfTsKK2VudW0gY2xhc3MgVGVybWluYXRlQWZ0ZXJGaXJzdFJlcGx5IDogYm9v
bCB7IE5vLCBZZXMgfTsKKworc3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgZG93bmxv
YWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnIGluY2x1ZGVFVGFnID0gSW5jbHVkZUVUYWc6Olllcywg
RnVuY3Rpb248dm9pZChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uKT4mJiB0ZXJtaW5hdG9yID0g
bnVsbHB0cikKIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKLSAgICBIVFRQ
U2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0gMF0oQ29ubmVjdGlvbiBjb25uZWN0aW9u
KSBtdXRhYmxlIHsKKyAgICByZXR1cm4geyBbaW5jbHVkZUVUYWcsIHRlcm1pbmF0b3IgPSBXVEZN
b3ZlKHRlcm1pbmF0b3IpLCBjb25uZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25u
ZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlv
bkNvdW50KSB7CiAgICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgewotICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKLSAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgor
ICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2luY2x1ZGVFVGFnLCBj
b25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKFZlY3RvcjxjaGFy
PiYmKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iLAorICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRlRVRhZyA9PSBJbmNsdWRlRVRhZzo6WWVzID8gIkVUYWc6IHRlc3Rc
clxuIiA6ICIiLAogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMDAwXHJc
biIKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7
IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJcclxu
IiwgbG9uZ1N0cmluZzw1MDAwPignYScpCi0gICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQoV1RGTW92ZShyZXNwb25z
ZSksIFtjb25uZWN0aW9uLCB0ZXJtaW5hdG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdG9yKQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGVybWluYXRvcihjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgMjoKLSAg
ICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9uXShWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxu
IiwgcmVxdWVzdC5zaXplKCkpKTsKICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFr
ZVN0cmluZygKICAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRl
bnRcclxuIgpAQCAtMTIyMCwxNiArMTIzMCw2NCBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUp
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAg
ICAgICAgfQotICAgIH0pOworICAgIH19OworfQorCitzdGF0aWMgdm9pZCBjaGVja1Jlc3VtZWRE
b3dubG9hZENvbnRlbnRzKE5TVVJMICpmaWxlKQoreworICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRz
ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6ZmlsZV07CisgICAgRVhQRUNUX0VRKGZp
bGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7CisgICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRz
LmJ5dGVzKTsKKyAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzICYmIGZpbGVDb250ZW50cy5sZW5n
dGggPT0gMTAwMDB1KSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsr
KQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29u
dGVudHMuYnl0ZXMpW2ldLCAnYScpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8
IDEwMDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7CisgICAgfQorfQorCitzdGF0aWMgVGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlciBzaW1wbGVEb3dubG9hZFRlc3RTZXJ2ZXIoKQoreworICAg
IHJldHVybiB7IFtdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAg
ICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNo
YXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICJFVGFnOiB0
ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAg
ICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1c
ImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzw1
MDAwPignYScpCisgICAgICAgICAgICApKTsKKyAgICAgICAgfSk7CisgICAgfX07Cit9CiAKLSAg
ICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGly
ZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxvYWRSZXN1bWVU
ZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKK3N0YXRpYyB2b2lkIGNoZWNrRmlsZUNvbnRlbnRzKE5T
VVJMICpmaWxlLCBjb25zdCBTdHJpbmcmIGV4cGVjdGVkQ29udGVudHMpCit7CisgICAgTlNEYXRh
ICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAg
ICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgZXhwZWN0ZWRDb250ZW50cy5sZW5ndGgo
KSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlQ29udGVudHMubGVuZ3RoOyBpKysp
CisgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRz
LmJ5dGVzKVtpXSwgZXhwZWN0ZWRDb250ZW50c1tpXSk7Cit9CisKK3N0YXRpYyBOU1VSTCAqdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKICAgICBbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGNyZWF0ZURpcmVjdG9yeUF0VVJMOnRlbXBEaXIg
d2l0aEludGVybWVkaWF0ZURpcmVjdG9yaWVzOllFUyBhdHRyaWJ1dGVzOm5pbCBlcnJvcjpuaWxd
OwotICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5k
aW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il07Ci0gICAgW1tOU0ZpbGVNYW5hZ2VyIGRl
ZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6
bmlsXTsKKyAgICBOU1VSTCAqZmlsZSA9IFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBv
bmVudDpAImV4YW1wbGUudHh0Il07CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2Vy
XSByZW1vdmVJdGVtQXRVUkw6ZmlsZSBlcnJvcjpuaWxdOworICAgIHJldHVybiBmaWxlOworfQor
CitURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCit7CisgICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEk7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OwogCiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIG5ld10pOwogICAgIG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKS5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgfTsKIAogICAgIGVudW0gY2xhc3MgQ2FsbGJhY2sg
OiB1aW50OF90IHsgU3RhcnQsIFdyaXRlRGF0YSwgRGVjaWRlRGVzdGluYXRpb24sIENyZWF0ZURl
c3RpbmF0aW9uLCBDYW5jZWwsIEZpbmlzaCB9OwpAQCAtMTI0MCwxMCArMTI5OCwxMSBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgX19ibG9jayBSZXRhaW5QdHI8X1dLRG93bmxvYWQ+
IGRvd25sb2FkOwogICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmVzdW1lRGF0YTsKIAot
ICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3REb3dubG9hZERlbGVnYXRl
IG5ld10pOworICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlIG5ld10pOwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBeKF9XS0Rvd25sb2FkICosIE5TU3Ry
aW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MLCBO
U1N0cmluZyAqKSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbik7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgW3RlbXBEaXIgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OnN1Z2dlc3RlZEZpbGVuYW1lXS5wYXRoKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJleGFtcGxlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBleHBlY3RlZERvd25sb2FkRmlsZS5wYXRoKTsK
ICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZGlkV3JpdGVEYXRhID0gXihfV0tE
b3dubG9hZCAqZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxC
eXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIHsKICAgICAg
ICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6V3JpdGVEYXRhKTsKQEAgLTEyNTgsNyArMTMx
Nyw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICB9OwogICAgIGRvd25sb2FkRGVs
ZWdhdGUuZ2V0KCkuZGlkQ3JlYXRlRGVzdGluYXRpb24gPSBeKF9XS0Rvd25sb2FkICosIE5TU3Ry
aW5nICpkZXN0aW5hdGlvbikgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpD
cmVhdGVEZXN0aW5hdGlvbik7Ci0gICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwg
W3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXS5wYXRo
KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBleHBlY3RlZERvd25sb2Fk
RmlsZS5wYXRoKTsKICAgICB9OwogICAgIGRvd25sb2FkRGVsZWdhdGUuZ2V0KCkuZG93bmxvYWRE
aWRDYW5jZWwgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCkgewogICAgICAgICBjYWxsYmFja3Mu
YXBwZW5kKENhbGxiYWNrOjpDYW5jZWwpOwpAQCAtMTI5NiwxNSArMTM1NSw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIFJlc3VtZSkKICAgICBVdGlsOjpzcGluUnVuTG9vcCgxMCk7CiAgICAgdXNsZWVw
KDEwMDAwKTsKIAotICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENv
bnRlbnRzT2ZVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGVdOwotICAgIEVYUEVDVF9FUShmaWxlQ29u
dGVudHMubGVuZ3RoLCAxMDAwMHUpOwotICAgIEVYUEVDVF9UUlVFKGZpbGVDb250ZW50cy5ieXRl
cyk7Ci0gICAgaWYgKGZpbGVDb250ZW50cy5ieXRlcykgewotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IDUwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxj
b25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOwotICAg
IH0KKyAgICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxl
KTsKIH0KIAogQGludGVyZmFjZSBEb3dubG9hZFRlc3RTY2hlbWVEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4KQEAgLTEzMTQsNyArMTM2NSw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIFJlc3VtZSkKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2
aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewogICAgIGlmIChbbmF2aWdhdGlvblJlc3Bv
bnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBoYXNTdWZmaXg6QCIvZG93bmxvYWQiXSkK
LSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwogfQpAQCAtMTM3Myw0ICsxNDI0LDEx
OTkgQEAgVEVTVChfV0tEb3dubG9hZCwgU3ViZnJhbWVTZWN1cml0eU9yaWdpbikKICAgICBbd2Vi
VmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxib2R5Pjxp
ZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkL3BhZ2UnPjwvaWZyYW1lPjwvYm9keT4iLCBz
ZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOm5pbF07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZpc0RvbmUpOwogfQorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyB2b2lk
IGNoZWNrQ2FsbGJhY2tSZWNvcmQoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRlbGVnYXRlLCBWZWN0
b3I8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgYXV0byBhY3R1
YWxDYWxsYmFja3MgPSBkZWxlZ2F0ZS50YWtlQ2FsbGJhY2tSZWNvcmQ7CisgICAgRVhQRUNUX0VR
KGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGQ6Om1pbihhY3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBl
eHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOyBpKyspCisgICAgICAgIEVYUEVDVF9FUShhY3R1YWxD
YWxsYmFja3NbaV0sIGV4cGVjdGVkQ2FsbGJhY2tzW2ldKTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBGaW5pc2hTdWNjZXNzZnVsbHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBzaW1wbGVEb3dubG9h
ZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmls
ZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmll
dyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRl
bGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxv
YWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hd
OworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJp
bmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7Cisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOwor
fQorCitzdGF0aWMgdm9pZCByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChOU0RhdGEgKnJlc3VtZURh
dGEsIE5TVVJMICpkZXN0aW5hdGlvbikKK3sKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25s
b2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBj
aGVja0ZpbGVDb250ZW50cyhkZXN0aW5hdGlvbiwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKwor
ICAgICAgICBhdXRvICpkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXdd
KTsKKworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJlc3VtZURhdGEg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAg
cmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICAgICAgRVhQRUNUX05VTEwoZG93
bmxvYWQuZGVsZWdhdGUpOworICAgICAgICB9XTsKKyAgICAgICAgd2hpbGUgKCFyZXRhaW5lZERv
d25sb2FkKQorICAgICAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICAgICAgCisgICAg
ICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkU2Vjb25kNWsgPSBmYWxzZTsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSk7CisgICAgICAgIHJldGFp
bmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfTsKKyAgICAgICAg
ZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgaW50NjRfdCBi
eXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRh
aW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4g
KyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRl
biA9PSA1MDAwKQorICAgICAgICAgICAgICAgIGRvd25sb2FkZWRTZWNvbmQ1ayA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICAg
ICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKSwgZG93bmxvYWQp
OworICAgICAgICAgICAgRVhQRUNUX1RSVUUoZG93bmxvYWRlZFNlY29uZDVrKTsKKyAgICAgICAg
ICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAgIH07CisKKyAgICAgICAgVXRpbDo6cnVuKCZk
aWRGaW5pc2gpOworCisgICAgICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoZGVzdGlu
YXRpb24pOworICAgICAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICAgICAgfSk7CisgICAgICAgIEVYUEVDVF9FUShyZXRh
aW5lZERvd25sb2FkLmdldCgpLm9yaWdpbmF0aW5nV2ViVmlldywgd2ViVmlldy5nZXQoKSk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLm9yaWdpbmF0aW5n
V2ViVmlldyk7CisgICAgfQorICAgIEVYUEVDVF9OT1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdl
dCgpKTsKKyAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLm9yaWdpbmF0aW5n
V2ViVmlldyk7Cit9CisKK3N0YXRpYyB2b2lkIHdhaXRGb3JGaXJzdDVrKFRlc3REb3dubG9hZERl
bGVnYXRlICpkZWxlZ2F0ZSkKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZEZpcnN0NWsg
PSBmYWxzZTsKKyAgICBBU1NFUlQoIWRlbGVnYXRlLmRpZFdyaXRlRGF0YSk7CisgICAgZGVsZWdh
dGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3QgYnl0ZXNXcml0dGVuLCBp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIHsKKyAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4p
OworICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOwor
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICBkb3dubG9hZGVk
Rmlyc3Q1ayA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvd25sb2FkZWRGaXJzdDVr
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBDYW5jZWxBbmRSZXN1bWUpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9h
ZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9h
ZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9fYmxvY2sg
UmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25s
b2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3Vt
ZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3Vt
ZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5kRmluaXNo
RG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAgfSk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbEFuZFJlc3VtZSkKK3sKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6WWVzLCBbJl0gKFRlc3RX
ZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9yRmlyc3Q1
ayhkZWxlZ2F0ZSk7CisgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAgfSk7Cisg
ICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0
KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sg
UmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgX19ibG9jayBSZXRh
aW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUubmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25S
ZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25s
b2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25s
b2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWRE
b3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVy
cm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVz
dW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5lZERvd25s
b2FkLmdldCgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJM
RXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgcmV0YWluZWRSZXN1bWVE
YXRhID0gcmVzdW1lRGF0YTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1l
RGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hE
b3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgQ2FuY2VsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gc2VydmVyID0gZG93
bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpObyk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93
bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVy
LnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBjYW5jZWw6XihOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdW1lRGF0YSk7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2En
KSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVE
ZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisgICAg
fSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8sIFsmXSAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JG
aXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9
KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19i
bG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJl
c3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJM
RXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVz
dW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9Owor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1
bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxv
bmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9y
CisgICAgfSk7Cit9CisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBpbiBDRk5ldHdvcmsuCisj
aWYgSEFWRShDRk5FVF9SRVNQT05TRV9DQUxMQkFDS19XSVRIX05PX0NPTlRFTlQpCisKK1RFU1Qo
V0tEb3dubG9hZCwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKK3sKKyAgICBPcHRpb25h
bDxUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOworICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVjdGlvbl0oVGVz
dFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dp
dGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICBz
ZXJ2ZXJDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVj
ZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24uc2VuZCgKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4i
CisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50
eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIgorICAgICAgICAgICAgICAgICk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6Cisg
ICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+
JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5zdHIocmVxdWVz
dC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXplKCkpKTsKKyAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAgICAg
ICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0
ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDBcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8MTAwPigneCcpCisgICAgICAg
ICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVn
YXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5l
d10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdh
dGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9
IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfTsKKyAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IFsmXShXS0Rvd25sb2Fk
ICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnRlcm1pbmF0ZSgpOworICAgIH07Cisg
ICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVs
ZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwg
TlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21h
aW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0
YSA9IHJlc3VtZURhdGE7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRGaW5pc2hl
ZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2Fk
ICopIHsKKyAgICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxlICghcmV0YWlu
ZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIAorICAgIEVY
UEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6ZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShkb3dubG9h
ZEZpbmlzaGVkKTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVk
UmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAg
VXRpbDo6cnVuKCZkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBl
Y3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOworCisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5p
c2gKKyAgICB9KTsKK30KKworI2VuZGlmCisKK3ZvaWQgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdE
aXNrKE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRG
aWxlLCB2b2lkKF5tdXRhdGVGaWxlKSh2b2lkKSkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4g
cmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlc3RpbmF0aW9uKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChkb3dubG9hZC5kZXN0aW5hdGlvbik7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQuZGVzdGluYXRpb24uYWJzb2x1dGVTdHJpbmcs
IGV4cGVjdGVkRG93bmxvYWRGaWxlLmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgfTsKKyAgICB9
OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyUmVxdWVzdF07CisgICAgd2FpdEZv
ckZpcnN0NWsoZGVsZWdhdGUpOworICAgIGRlbGVnYXRlLmRpZFdyaXRlRGF0YSA9IG5pbDsKKwor
ICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFty
ZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBy
ZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFy
ZXRhaW5lZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPign
YScpKTsKKworICAgIG11dGF0ZUZpbGUoKTsKKworICAgIF9fYmxvY2sgYm9vbCBkaWRGaW5pc2gg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOnJldGFpbmVkUmVz
dW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5kZXN0aW5hdGlvbi5hYnNvbHV0ZVN0
cmluZywgZXhwZWN0ZWREb3dubG9hZEZpbGUuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZp
bmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOwor
ICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3Vt
ZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29u
bmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBt
dXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBj
YXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVj
dG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQt
TGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0
aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4o
J2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRU
UFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsg
c2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciByZW1v
dmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsKKyNl
bmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEw
MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAg
ICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERv
d25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7Cisg
ICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9u
Z1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEV4
dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rp
b25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJs
ZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3Rvcjxj
aGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisg
ICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAg
ICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjog
YXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdhJykK
KyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1
ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNU
X1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCBy
ZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3Ry
aW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxy
XG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2QnKQor
ICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0g
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdE
aXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsK
KyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbWyhOU1N0
cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+
KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJM
OmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25nU3Ry
aW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAwPign
ZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVEYXRh
KQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNl
OworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZFdpdGhEYXRhOltA
ImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBAY2F0Y2ggKE5T
RXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxp
ZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTsKKyAg
ICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxv
YWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBe
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9h
ZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25s
b2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2Fp
dEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBj
YW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRh
ID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkK
KyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAg
ICAKKyAgICByZXRhaW5lZERvd25sb2FkID0gbmlsOworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25s
b2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25s
b2FkOworICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgfV07Cisg
ICAgd2hpbGUgKCFyZXRhaW5lZERvd25sb2FkKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgp
OworCisgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4p
OworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENvbm5lY3RU
b0hvc3QpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgIGRv
bmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxv
YWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBVbmtu
b3duQ29udGVudExlbmd0aCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbXShDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1d
KFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygiSFRUUC8xLjEgMjAwIE9LXHJcblxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpKTsKKyAg
ICAgICAgfSk7CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdh
dGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBX
S05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5T
U3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsK
KyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICosIGludDY0X3Qg
Ynl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCBpbnQ2NF90IHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGUpIHsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gNTAw
MCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxC
eXRlc1dyaXR0ZW4sIDUwMDApOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGUsIC0xKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9Owor
ICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIElu
dmFsaWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOwor
ICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZp
ZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNw
b25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEB0cnkgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnLyJdKTsKKyAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2F1
Z2h0RXhjZXB0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgIH0pOworfQorCitz
dGF0aWMgSFRUUFNlcnZlciByZWRpcmVjdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHt7CisgICAg
ICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRpcmVjdFRhcmdldCIgfSwgeyAi
Q3VzdG9tLU5hbWUiLCAiQ3VzdG9tLVZhbHVlIiB9fSB9IH0sCisgICAgICAgIHsgIi9yZWRpcmVj
dFRhcmdldCIsIHsgImhpIiB9IH0sCisgICAgfX07Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVk
aXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJs
ZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9k
eSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIAorICAgIF9f
YmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnRE
b3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3du
bG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7
CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdl
IHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwu
YWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0Nv
ZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVy
RmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5V
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0
ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3lBbGxvdyk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dl
c3RlZEZpbGVuYW1lLCAicmVkaXJlY3RUYXJnZXQudHh0Iik7CisgICAgICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEocmVzcG9uc2UuVVJMLnBhdGgsICIvcmVkaXJlY3RUYXJnZXQiKTsKKyAgICAgICAg
ICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnBhdGgsICIv
Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwor
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAg
ICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9h
ZCAqKSB7CisgICAgICAgICAgICBmaW5pc2hlZERvd25sb2FkID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkRG93bmxvYWQpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJoaSIpOworICAgIAorICAgIEVYUEVD
VF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAydSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVkaXJlY3RDYW5jZWwp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSByZWRpcmVjdFNlcnZlcigpOworICAgIE5TVVJMUmVxdWVz
dCAqc2VydmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBjYW5jZWxsZWQgPSBm
YWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
IGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICpy
ZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRl
U3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXNDb2RlLCAzMDEp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRlckZpZWxkc1tA
IkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QuVVJMIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJpbmcp
OworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5
Q2FuY2VsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQ
RUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAgY2Fu
Y2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNhbmNl
bGxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVxdWVz
dHMoKSwgMXUpOworfQorCitURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEZhaWx1cmUp
Cit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKnNlcnZl
clJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29s
IGZhaWxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpz
ZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgICAgIGZhaWxl
ZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOwor
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQs
IERvd25sb2FkUmVxdWVzdDQwNCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAg
IHsgIi8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0KKyAgICB9KTsKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29s
IGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImh0dHAgYm9keSIpOworCisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gsCisgICAgfSk7Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKK3sKKyAgICBhdXRvIHNlcnZl
ciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUp
OworICAgIAorICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7CisgICAgZGVsZWdh
dGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNE
YXRhICopIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJv
ckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0d29y
a0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgdGVybWluYXRlZCA9IHRydWU7CisgICAgfTsKKyAg
ICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0ZU5ldHdv
cmtQcm9jZXNzXTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWQpOworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFN1Z2dl
c3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAg
ICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CisgICAgfSk7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5T
U3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAi
MTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnN1
Z2dlc3RlZEZpbGVuYW1lLCAiMTI3LjAuMC4xLnR4dCIpOworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsKKyAgICBjaGVja0NhbGxiYWNrUmVj
b3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rp
b24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlcXVlc3RIVFRQQm9keSkK
K3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtbc2VydmVy
LnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0b3JlbGVhc2VdOworICAgIHJlcXVlc3QuSFRUUEJv
ZHkgPSBbQCJib2R5IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Cisg
ICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfTlVMTChkb3du
bG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkgd2Fu
dCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUGF0aE11c3RFeGlz
dCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W05TVGVt
cG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiRG93bmxv
YWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1h
bmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOm5pbF07CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiZXhhbXBsZS50eHQiXTsKKworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVy
KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5k
aWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEg
KikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJv
ckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNh
bm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmlsZU11c3RO
b3RFeGlzdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAg
IE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgp
OworICAgIF9fYmxvY2sgYXV0byByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSByZXRhaW5lZERl
bGVnYXRlLmdldCgpOworCisgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNr
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBl
Y3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworCisgICAgX19ibG9jayBib29sIGZh
aWxlZCA9IGZhbHNlOworICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCku
ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKworICAgICAgICAgICAgcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10pOworICAgICAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBy
ZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlLmdl
dCgpLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqKSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgICAgICBmYWlsZWQgPSB0
cnVlOworICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworCisg
ICAgY2hlY2tDYWxsYmFja1JlY29yZChyZXRhaW5lZERlbGVnYXRlLmdldCgpLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgRGVzdGluYXRpb25OdWxsU3RyaW5nKQoreworICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0
ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdL
TmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNT
dHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUu
ZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRh
ICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJy
b3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JD
YW5jZWxsZWQpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6
OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBj
YWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorI2lm
ICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCitURVNUKFdLRG93bmxvYWQsIENoYWxs
ZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8iLCB7ICJkb3dubG9h
ZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgTlNVUkwg
KmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAg
X19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRG
aW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1
ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3du
bG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxG
b3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgICAg
IHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwg
TlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBb
d2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZCk7Cisg
ICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3Rp
bmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorI2VuZGlmCisKK1RFU1Qo
V0tEb3dubG9hZCwgQ2hhbGxlbmdlRmFpbHVyZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7
IH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGZhaWxl
ZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQg
KmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworI2lmIFVT
RShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgLy8gTW9qYXZlIGRvd25sb2Fk
IHRhc2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2
YWx1YXRpb24uCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yU2VjdXJl
Q29ubmVjdGlvbkZhaWxlZCk7CisjZWxzZQorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
TlNVUkxFcnJvckNhbmNlbGxlZCk7CisjZW5kaWYKKyAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5nZSA9IGZhbHNlOworICAgIGRl
bGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENy
ZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RT
ZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKKyAgICAgICAgcmVj
ZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9h
ZFdpdGhSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNFKExFR0FDWV9DRk5FVFdP
UktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyNlbmRp
ZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNpZiAhVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9u
J3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4K
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisjZW5k
aWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOwor
fQorCit2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbiwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PERvd25sb2FkQ2FsbGJhY2s+IGV4cGVjdGVkQ2FsbGJhY2tzKQor
eworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxv
YWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVm
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmRvd25sb2FkID0gJ2Rvd25s
b2FkRmlsZW5hbWUnOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0iCisgICAgIjwvc2Ny
aXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOworICAgIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpuaWxdOworICAgIGF1dG8gZGVsZWdhdGUgPSBb
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBp
ZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJh
Ym91dDpibGFuayJdKQorICAgICAgICAgICAgRVhQRUNUX05VTEwoYWN0aW9uLmRvd25sb2FkQXR0
cmlidXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoYWN0
aW9uLnJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUsICJkb3dubG9hZEZpbGVuYW1lIik7CisgICAg
ICAgICAgICBpZiAoZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbikgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25s
b2FkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cp
OworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwu
c2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2lu
YWxSZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRC
ZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNw
b25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJl
c3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19T
VFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiMTIzIik7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgZXhwZWN0ZWRDYWxsYmFja3MpOworfQorCitU
RVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBibG9iVGVzdChmYWxzZSwgewor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKKworICAgIGJsb2JU
ZXN0KHRydWUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2VOb0ZpbGVuYW1lKQor
eworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxv
YWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVm
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9
IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwczovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9u
SGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBFWFBFQ1RfTlVM
TChhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9z
dCwgIndlYmtpdC5vcmciKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZp
bGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRvcikKK3sKKyAgICBjb25zdCBjaGFy
KiBncmFuZGNoaWxkRnJhbWVIVE1MID0gIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9h
ZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7
IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0i
CisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOwor
ICAgIEhUVFBTZXJ2ZXIgZ3JhbmRjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsg
Z3JhbmRjaGlsZEZyYW1lSFRNTCB9IH0KKyAgICB9KTsKKyAgICBIVFRQU2VydmVyIGNoaWxkRnJh
bWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgZ3JhbmRjaGls
ZEZyYW1lU2VydmVyLnBvcnQoKV0gfSB9CisgICAgfSk7CisgICAgTlNVUkxSZXF1ZXN0ICpncmFu
ZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3Qo
KTsKKyAgICBOU1VSTFJlcXVlc3QgKmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gY2hpbGRGcmFt
ZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgdWludDE2X3QgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9y
dCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCk7CisKKyAgICBOU1N0cmluZyAqbWFpbkhU
TUwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3
LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgY2hpbGRGcmFtZVNlcnZlci5wb3J0KCldOworCisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkhUTUwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnLyJdXTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7CisgICAgICAgIGlm
IChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnLyJdCisgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpjaGlsZEZyYW1lU2VydmVyUmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmddCisgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpncmFuZGNoaWxkRnJhbWVTZXJ2ZXJS
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25z
ZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3Bv
bnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
UShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIjEyNy4wLjAuMSIpOworICAg
ICAgICBFWFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLnBvcnQsIGdyYW5k
Y2hpbGRGcmFtZVNlcnZlclBvcnQpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0
ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJl
c3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2Vz
dGVkRmlsZW5hbWUsICJVbmtub3duIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5h
dGlvbgorICAgIH0pOworfQorCit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWRQcm9ncmVzcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbQppbmRleCBmMDAzYWMyOGNlMWU4OTY3ZjVkYWIwZDg4
OGNjNzg2ODc1MTE2NTY5Li5iMWIxNDRmZWFjOWM3YWFkMmMyYTJiYTE2ZDI2ODBlMjZjOTk0NjAw
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkUHJvZ3Jlc3MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZFByb2dyZXNzLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIHZvaWQqIHBy
b2dyZXNzT2JzZXJ2aW5nQ29udGV4dCA9ICZwcm9ncmVzc09ic2VydmluZ0NvbnRleHQ7CiAtICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKIHsKICAgICBpZiAobV9zdGFydFR5cGUgPT0gRG93bmxvYWRTdGFydFR5cGU6OkNv
bnZlcnRMb2FkVG9Eb3dubG9hZCkKLSAgICAgICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKKyAgICAgICAgZGVjaXNpb25IYW5kbGVy
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogICAgIGVsc2UKICAg
ICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDk3NTg3ZDY1MDcyM2QwMmUzZWFlY2ZiYjUx
NDM4YTk5ZTQ3OTIzODEuLjJjZmZjOWE3MDlmNTUwZGZhMWRkNWMzMWRiMjI5ODJiNGFlMGQxYzYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTEzNzIsNiArMTM3Miw4IEBAIFRFU1QoSW5B
cHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91
bmQpCiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9jYXRp
b24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFpbkZy
YW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKICAgICAgICAgICAg
IEVYUEVDVF9GQUxTRSghIWVycm9yKTsKKyAgICAgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkVSUk9SICVAIiwgZXJyb3IpOwogICAgICAgICAgICAgaWYg
KGlzTWFpbkZyYW1lKQogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVh
bFRvU3RyaW5nOkAiaW4tYXBwLWJyb3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS10ZXN0LWFib3V0LWJsYW5rLXN1YmZyYW1lIl0pOwogICAgICAgICAgICAgZWxzZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYTdkNGU1M2EzNTE3OTI0NWQxZTkwNDBj
M2VhNTZlM2EwODIyM2ZjZC4uNGVlMTkyNjdiMzAwMGY4OTVhOThkMzA5NTE3ODllOWY5NmNkNmFi
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9j
ZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCkBAIC0xNjYsNyArMTY2LDcgQEAg
c3RhdGljIFJldGFpblB0cjxOU1VSTD4gY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTDsKIAog
LSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2Ug
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVj
aXNpb25IYW5kbGVyCiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rvd25s
b2FkID8gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29u
dmVydFRvRG93bmxvYWQgPyBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2Fk
IDogV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CiAKIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KaW5kZXggYWUyYmM3
ZmU2NjUzNGQ2NzlhNDhmYjQxZjYxM2YzZTA4YTA4MDFiZi4uZGZlMWQzOGM2NmM0OGZmY2M4ODVm
ODMxZmMzMDJmYjk0OTdiNTM3MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0KQEAgLTM2NCw3ICszNjQsNyBAQCBURVNUKFF1aWNr
TG9vaywgQ2FuY2VsUmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogCiBURVNUKFF1aWNrTG9v
aywgRG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVs
ZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdl
c0RvY3VtZW50VVJMIHJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVj
b21lRG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQmVmb3JlTG9hZGluZyhkZWxlZ2F0ZS5n
ZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CiAg
ICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5n
ZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtk
ZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CkBAIC0zNzksNyArMzc5LDcgQEAgVEVTVChR
dWlja0xvb2ssIERvd25sb2FkUmVzcG9uc2VCZWZvcmVMb2FkaW5nUHJldmlldykKICNpZiBQTEFU
Rk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID4gMTMwNDAwCiBU
RVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiB7Ci0g
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlNRVR5cGU6cGFn
ZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5T
KFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2Vz
RG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5cGUg
cmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF0p
OwogICAgIHJ1blRlc3REZWNpZGVBZnRlckxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9FUShX
ZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBu
YXZpZ2F0aW9uRXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmlu
aXNoTmF2aWdhdGlvbl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5oCmluZGV4IDdhYWQyM2MzZWM1YjQyMTc1MWVkYzg0MDBjMGEwZWE2MGI4
YzQ4NWIuLjMwOTM3NTAzOTczM2VjYjk2MDdhNWIwMjgyNDA1OTVjODhmNTU0ZTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKQEAgLTI0
LDE3ICsyNCwzNSBAQAogICovCiAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KLSNpbXBvcnQg
PFdlYktpdC9fV0tEb3dubG9hZERlbGVnYXRlLmg+CiAKLUBpbnRlcmZhY2UgVGVzdERvd25sb2Fk
RGVsZWdhdGUgOiBOU09iamVjdDxfV0tEb3dubG9hZERlbGVnYXRlPgotQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZFN0YXJ0KShfV0tEb3dubG9hZCAqKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwpKF9XS0Rvd25sb2FkICosIE5TVVJMICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kaWRSZWNlaXZlUmVzcG9uc2UpKF9XS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSko
X1dLRG93bmxvYWQgKiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCk7Ci1AcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqLCB2b2lkICheKShCT09MLCBOU1N0cmlu
ZyAqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkRmlu
aXNoKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChe
ZGlkRmFpbFdpdGhFcnJvcikoX1dLRG93bmxvYWQgKiwgTlNFcnJvciAqKTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRDYW5jZWwpKF9XS0Rvd25sb2FkICop
OwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpKF9XS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwqKSk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZENy
ZWF0ZURlc3RpbmF0aW9uKShfV0tEb3dubG9hZCAqLCBOU1N0cmluZyAqKTsKK2VudW0gY2xhc3Mg
RG93bmxvYWRDYWxsYmFjayA6IHVpbnQ4X3QgeworICAgIFdpbGxSZWRpcmVjdCwKKyAgICBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICBEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICBEaWRXcml0
ZURhdGEsCisgICAgRGlkRmluaXNoLAorICAgIERpZEZhaWxXaXRoRXJyb3IsCisgICAgTmF2aWdh
dGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAorICAgIE5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkLAorICAgIE5hdmlnYXRpb25BY3Rpb24sCisgICAgTmF2aWdhdGlvblJlc3BvbnNlLAor
fTsKKworQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PFdLRG93bmxv
YWREZWxlZ2F0ZSwgV0tOYXZpZ2F0aW9uRGVsZWdhdGU+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkIChed2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWQgKiwg
TlNIVFRQVVJMUmVzcG9uc2UgKiwgTlNVUkxSZXF1ZXN0ICosIHZvaWQgKF4pKFdLRG93bmxvYWRS
ZWRpcmVjdFBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFdyaXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2
NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAq
LCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0
aW9uICosIFdLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
Xm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKShXS1dlYlZpZXcgKiwgV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikoV0tOYXZpZ2F0aW9u
QWN0aW9uICosIHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpOworQHByb3BlcnR5
IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICosIHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZvckRvd25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9y
PERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxsYmFja1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRi
NWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEzMDJhODAxZmRkMy4uMDUzMDkzNzM1MTYwMzQxMmRl
YWI0MmM2OGZkYzcxY2FmMGVkYjk0YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCkBAIC0yNiw2OCArMjYsMTEzIEBACiAjaW1wb3J0
ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3REb3dubG9hZERlbGVnYXRlLmgiCiAKLUBpbXBsZW1l
bnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZQorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZS5oPgogCi0tICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3du
bG9hZCAqKWRvd25sb2FkCi17Ci0gICAgaWYgKF9kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBf
ZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CitAaW1wbGVtZW50YXRpb24gVGVzdERvd25sb2Fk
RGVsZWdhdGUgeworICAgIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBfY2FsbGJhY2tSZWNvcmQ7
CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybAorLSAodm9pZClkb3dubG9hZDooV0tE
b3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxS
ZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVj
aXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9u
SGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAg
ICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgdXJsKTsKKyAgICBf
Y2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisK
KyAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQsIHJlc3BvbnNlLCByZXF1ZXN0LCBkZWNpc2lvbkhh
bmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQorLSAodm9pZClkb3du
bG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
OihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ugc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICop
c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0
aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25z
ZSkKLSAgICAgICAgX2RpZFJlY2VpdmVSZXNwb25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworICAg
IF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRp
b24pOworCisgICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSk7CisgICAg
X2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSwgc3VnZ2Vz
dGVkRmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0
ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKKy0g
KHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0
X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0
dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZQogeworICAgIC8vIGRpZFdyaXRlRGF0YSBpcyBjYWxsZWQgYSBub25kZXRlcm1pbmlz
dGljIG51bWJlciBvZiB0aW1lcywgc28gb25seSByZWNvcmQgb25jZSBpbiBhIHNlcmllcy4KKyAg
ICBpZiAoX2NhbGxiYWNrUmVjb3JkLmlzRW1wdHkoKSB8fCBfY2FsbGJhY2tSZWNvcmQubGFzdCgp
ICE9IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSkKKyAgICAgICAgX2NhbGxiYWNrUmVj
b3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEpOworCiAgICAgaWYgKF9k
aWRXcml0ZURhdGEpCiAgICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRl
biwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi0t
ICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9u
KSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0
aW9uSGFuZGxlcgogewotICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUpOwotICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShk
b3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfY2FsbGJhY2tSZWNv
cmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKwor
ICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBlbHNlCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJM
U2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwogfQogCi0t
ICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9p
ZClkb3dubG9hZERpZEZpbmlzaDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7CisgICAgX2NhbGxi
YWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gpOworCiAgICAgaWYg
KF9kb3dubG9hZERpZEZpbmlzaCkKICAgICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2Fk
KTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFp
bFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6
KE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IpOworCiAgICAgaWYgKF9kaWRGYWlsV2l0aEVy
cm9yKQotICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworICAgICAg
ICBfZGlkRmFpbFdpdGhFcnJvcihkb3dubG9hZCwgZXJyb3IsIHJlc3VtZURhdGEpOwogfQogCi0t
ICh2b2lkKV9kb3dubG9hZERpZENhbmNlbDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdh
dGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZAogewotICAgIGlmIChfZG93bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIF9k
b3dubG9hZERpZENhbmNlbChkb3dubG9hZCk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQpOworCisgICAg
aWYgKF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIF9uYXZpZ2F0
aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvbkFjdGlvbiwgZG93
bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhh
bmRsZXIKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uUmVz
cG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRpZEJlY29t
ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKLSAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2VCZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKQorICAgICAgICBfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQo
d2ViVmlldywgbmF2aWdhdGlvblJlc3BvbnNlLCBkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvblJlc3BvbnNlKTsKKworICAgIGlmIChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRp
b25SZXNwb25zZSwgZGVjaXNpb25IYW5kbGVyKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5n
LCBuaWwpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24g
KiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBw
ZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24pOworCisgICAgaWYgKF9kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQorICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCBkZWNpc2lvbkhhbmRsZXIpOworICAgIGVs
c2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
KTsKK30KKworLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2gKK3sKKyAgICBfX2Jsb2Nr
IGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBBU1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7
CisgICAgX2Rvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAgZmlu
aXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5p
c2hlZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRp
ZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uCistIChWZWN0b3I8RG93
bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkCiB7Ci0gICAgaWYgKF9kaWRDcmVhdGVE
ZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0
aW5hdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UoX2NhbGxiYWNrUmVjb3JkLCB7IH0p
OwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDUxMjQ2MWVhMTJjOWNhZGE2MTVk
MWUyYzRhNTczMWYxZDE1ZDEzZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KKworQGludGVyZmFjZSBUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVsZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25sb2FkICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
dm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAq
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tE
b3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9u
YXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICop
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gp
KF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRG
YWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBOU0Vycm9yICopOworQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZENhbmNlbCkoX1dLRG93bmxvYWQgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
LCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRl
RGVzdGluYXRpb24pKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICopOworQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODc3YTkyNGJkZmU2OTVlMGI3OTE1Yjk1ZWZlOWYwNWRiZjFjYTA4Mwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURv
d25sb2FkRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCIKKworQGlt
cGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlCisKKy0gKHZvaWQpX2Rvd25s
b2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2Fk
RGlkU3RhcnQpCisgICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsKK30KKworLSAo
dm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCit7CisgICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTCkKKyAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25s
b2FkLCB1cmwpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZQoreworICAgIGlm
IChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAgICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25s
b2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0
dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRl
Oih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCit7CisgICAgaWYgKF9kaWRXcml0
ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOworfQorCistICh2b2lk
KV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21w
bGV0aW9uSGFuZGxlcgoreworICAgIEFTU0VSVChfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRpb25IYW5kbGVyKTsKK30KKworLSAodm9pZClf
ZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rv
d25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwor
fQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0
aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCisg
ICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9k
b3dubG9hZERpZENhbmNlbCkKKyAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsK
K30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICop
Y2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29t
cGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cit9CisK
Ky0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3Rp
bmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uCit7CisgICAgaWYgKF9kaWRDcmVhdGVEZXN0
aW5hdGlvbikKKyAgICAgICAgX2RpZENyZWF0ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5h
dGlvbik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKaW5kZXggN2JhNjcyYWM5ZjkyNWY2MzI1YWEwN2ZhNmYxNjFhNTAyMzVmYmI4Yy4uOTk2ZjE5
NGY3YzQyOTkxYmZiNzM4YmEwMzg3M2EyYmY4NzZjNGRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJL
aXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRl
eHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRS
ZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFtZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUgPFdl
YktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0hUVFBDb29raWVTdG9y
ZVJlZi5oPgpAQCAtODAsNiArODIsNyBAQAogI2luY2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4KKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2
aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMyLDYgKzEzNSwzMyBA
QCBzdGF0aWMgV0tTdHJpbmdSZWYgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZygiTUlIRk1IRXdYREFOQmdrcWhraUc5dzBCQVFFRkFBTkxBREJJQWtFQW5YMFRJ
TEpyT01VdWUlMkJQdHdCUkU2WGZWJTBBV3RLUWJzc2h4azVaaGNVd2N3eXZjbklxOWI4MlFoSmRv
QUNkRDM0cnFmQ0FJTkQ0NmZYS1FVbmIwbXZLelFJRCUwQUFRQUJGaEZOYjNwcGJHeGhTWE5OZVVa
eWFXVnVaREFOQmdrcWhraUc5dzBCQVFRRkFBTkJBQUt2MkVleDJuJTJGUyUwQXIlMkY3aUpOcm9X
bFN6U010VGlRVEVCJTJCQURXSEdqOXUxeHJVck9pbHElMkZvMmN1UXhJZlpjTlprWUFrV1A0RHVi
cVclMEFpMCUyRiUyRnJnQnZtY28lM0QiKTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2
aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoZG93bmxv
YWQpOworCisgICAgV0tEb3dubG9hZENsaWVudFYwIGNsaWVudCB7CisgICAgICAgIHsgMCwgY2xp
ZW50SW5mbyB9LAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTCwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkV3JpdGVEYXRh
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaCwKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbAorICAgIH07CisKKyAgICBXS0Rvd25sb2FkU2V0
Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOworfQorCit2b2lkIFRlc3RDb250cm9sbGVy
OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRp
b25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKGRvd25sb2FkLCBj
bGllbnRJbmZvKTsKK30KKwordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBuYXZp
Z2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudEluZm8pOworfQor
CiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJyZW50VGFzazsKIAogYm9vbCBBc3luY1Rhc2s6
OnJ1bigpCkBAIC0zMzYsNzIgKzM2Niw3MiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAg
ICAgV0tQYWdlVUlDbGllbnRWOCBvdGhlclBhZ2VVSUNsaWVudCA9IHsKICAgICAgICAgeyA4LCB2
aWV3IH0sCi0gICAgICAgIDAsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MAotICAgICAgICAwLCAvLyBzaG93UGFnZQorICAgICAgICBudWxscHRyLCAvLyBjcmVhdGVOZXdQ
YWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvd1BhZ2UK
ICAgICAgICAgY2xvc2VPdGhlclBhZ2UsCi0gICAgICAgIDAsIC8vIHRha2VGb2N1cworICAgICAg
ICBudWxscHRyLCAvLyB0YWtlRm9jdXMKICAgICAgICAgZm9jdXMsCiAgICAgICAgIHVuZm9jdXMs
Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYw
Ci0gICAgICAgIDAsIC8vIHNldFN0YXR1c1RleHQKLSAgICAgICAgMCwgLy8gbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBtaXNzaW5n
UGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVLZXlFdmVudAot
ICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVXaGVlbEV2ZW50Ci0gICAgICAgIDAsIC8vIHRvb2xi
YXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRUb29sYmFyc0FyZVZpc2libGUKLSAgICAg
ICAgMCwgLy8gbWVudUJhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRNZW51QmFySXNWaXNp
YmxlCi0gICAgICAgIDAsIC8vIHN0YXR1c0JhcklzVmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRT
dGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gaXNSZXNpemFibGUKLSAgICAgICAgMCwg
Ly8gc2V0SXNSZXNpemFibGUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlw
dEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2
YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8g
c2V0U3RhdHVzVGV4dAorICAgICAgICBudWxscHRyLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAgICAgIG51bGxwdHIsIC8vIG1pc3NpbmdQbHVn
aW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKKyAgICAgICAgbnVs
bHB0ciwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldFRvb2xi
YXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBtZW51QmFySXNWaXNpYmxlCisgICAg
ICAgIG51bGxwdHIsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8g
c3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldFN0YXR1c0JhcklzVmlz
aWJsZQorICAgICAgICBudWxscHRyLCAvLyBpc1Jlc2l6YWJsZQorICAgICAgICBudWxscHRyLCAv
LyBzZXRJc1Jlc2l6YWJsZQogICAgICAgICBnZXRXaW5kb3dGcmFtZSwKICAgICAgICAgc2V0V2lu
ZG93RnJhbWUsCiAgICAgICAgIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCwKLSAgICAgICAg
MCwgLy8gZGlkRHJhdwotICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAgICAgIDAsIC8v
IGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAgICBudWxscHRyLCAvLyBkaWREcmF3CisgICAg
ICAgIG51bGxwdHIsIC8vIHBhZ2VEaWRTY3JvbGwKKyAgICAgICAgbnVsbHB0ciwgLy8gZXhjZWVk
ZWREYXRhYmFzZVF1b3RhCiAgICAgICAgIHJ1bk9wZW5QYW5lbCwKICAgICAgICAgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCwKLSAgICAgICAgMCwgLy8gaGVhZGVy
SGVpZ2h0Ci0gICAgICAgIDAsIC8vIGZvb3RlckhlaWdodAotICAgICAgICAwLCAvLyBkcmF3SGVh
ZGVyCi0gICAgICAgIDAsIC8vIGRyYXdGb290ZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gaGVhZGVy
SGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGZvb3RlckhlaWdodAorICAgICAgICBudWxscHRy
LCAvLyBkcmF3SGVhZGVyCisgICAgICAgIG51bGxwdHIsIC8vIGRyYXdGb290ZXIKICAgICAgICAg
cHJpbnRGcmFtZSwKICAgICAgICAgcnVuTW9kYWwsCi0gICAgICAgIDAsIC8vIGRpZENvbXBsZXRl
UnViYmVyQmFuZEZvck1haW5GcmFtZQotICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93
bmxvYWRzRm9sZGVyCi0gICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKLSAg
ICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAg
IDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Ci0gICAgICAgIDAsIC8vIGRlY2lkZVBvbGlj
eUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ci0gICAgICAgIDAsIC8vIHVuYXZhaWxh
YmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIDAs
IC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyBoaWRlQ29sb3JQaWNrZXIKLSAgICAg
ICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAgIDAsIC8vIHBp
bm5lZFN0YXRlRGlkQ2hhbmdlCi0gICAgICAgIDAsIC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRp
YWxMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVz
cwotICAgICAgICAwLCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNz
Ci0gICAgICAgIDAsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIs
IC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQorICAgICAgICBudWxscHRyLCAv
LyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCisgICAgICAgIG51bGxwdHIsIC8vIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFn
ZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50CisgICAgICAgIG51bGxwdHIsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAgIG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIs
IC8vIHNob3dDb2xvclBpY2tlcgorICAgICAgICBudWxscHRyLCAvLyBoaWRlQ29sb3JQaWNrZXIK
KyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCisgICAg
ICAgIG51bGxwdHIsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcworICAgICAgICBudWxscHRy
LCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcworICAgICAgICBudWxscHRyLCAvLyBkaWRD
YW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8v
IGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAwLCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9u
Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAotICAgICAgICAwLCAvLyBydW5KYXZh
U2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAg
IDAsIC8vIHVudXNlZDUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRv
bgorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnQKKyAgICAgICAgbnVsbHB0
ciwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNj
cmlwdFByb21wdAorICAgICAgICBudWxscHRyLCAvLyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90
aGVyUGFnZSwKICAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAotICAgICAgICAwLCAvLyBydW5K
YXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0CisgICAg
ICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCisgICAgICAgIG51bGxwdHIsIC8v
IHJ1bkphdmFTY3JpcHRQcm9tcHQKICAgICAgICAgY2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9y
T3JpZ2luLAotICAgICAgICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKLSAgICAg
ICAgMCwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lCisgICAgICAgIG51bGxwdHIsIC8v
IHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAorICAgICAgICBudWxscHRyLCAvLyBmdWxsc2Ny
ZWVuTWF5UmV0dXJuVG9JbmxpbmUKICAgICAgICAgcmVxdWVzdFBvaW50ZXJMb2NrLAotICAgICAg
ICAwLAorICAgICAgICBudWxscHRyLCAvLyBkaWRMb3NlUG9pbnRlckxvY2sKICAgICB9OwogICAg
IFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdlLCAmb3RoZXJQYWdlVUlDbGllbnQuYmFzZSk7
CiAgICAgCkBAIC00MTAsMTYgKzQ0MCwxNiBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogICAg
ICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclBsdWdpbkxv
YWQsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAgICAgIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKLSAgICAgICAgMCwg
Ly8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRDb21taXRO
YXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZpbmlzaE5hdmlnYXRpb24KLSAgICAgICAgMCwg
Ly8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAg
IDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gcmVuZGVyaW5n
UHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRDb21taXROYXZpZ2F0aW9uCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8g
ZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2Fk
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24KKyAgICAgICAg
bnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKICAgICAgICAgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwKICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9jZXNzRGlkQ3Jhc2gsCkBAIC00MjgsOSArNDU4
LDEyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3Jt
V2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIHdpbGxFbmROYXZpZ2F0aW9u
R2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZFJl
bW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QsCi0gICAgICAgIDAsIC8vIHdlYlByb2Nlc3NE
aWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCi0g
ICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcKKyAgICAgICAgbnVs
bHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQorICAgICAgICBudWxscHRyLCAvLyBjb250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
LAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAg
bnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkCiAgICAgfTsKICAgICBXS1Bh
Z2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChuZXdQYWdlLCAmcGFnZU5hdmlnYXRpb25DbGllbnQu
YmFzZSk7CiAKQEAgLTc1MCwxNiArNzgzLDE2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkLAot
ICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxs
cHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24sCi0gICAgICAgIDAsIC8vIGRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBkaWRDb21taXROYXZpZ2F0aW9uLAogICAgICAg
ICBkaWRGaW5pc2hOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgot
ICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQotICAgICAgICAw
LCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQorICAg
ICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRG
aW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQog
ICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlLAogICAgICAgICBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCiAgICAgICAgIHByb2Nlc3NEaWRDcmFz
aCwKQEAgLTc2OCwyOCArODAxLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZp
ZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgd2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAg
ICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCwKLSAgICAgICAgMCwgLy8g
d2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQotICAgICAgICAwLCAvLyBjb250ZW50UnVsZUxpc3ROb3Rp
ZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZwor
ICAgICAgICBudWxscHRyLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRlCisgICAgICAgIG51bGxw
dHIsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgorICAgICAgICBjb3B5U2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nLAorICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWQsCisgICAgICAgIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
LAorICAgICAgICBudWxscHRyIC8vIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQKICAgICB9
OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2Uo
KSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2UpOwotCi0gICAgV0tDb250ZXh0RG93bmxvYWRD
bGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsKLSAgICAgICAgeyAxLCB0aGlzIH0sCi0gICAgICAg
IGRvd25sb2FkRGlkU3RhcnQsCi0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlUmVzcG9uc2UKLSAgICAgICAgMCwg
Ly8gZGlkUmVjZWl2ZURhdGEKLSAgICAgICAgMCwgLy8gc2hvdWxkRGVjb2RlU291cmNlRGF0YU9m
TUlNRVR5cGUKLSAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUs
Ci0gICAgICAgIDAsIC8vIGRpZENyZWF0ZURlc3RpbmF0aW9uCi0gICAgICAgIGRvd25sb2FkRGlk
RmluaXNoLAotICAgICAgICBkb3dubG9hZERpZEZhaWwsCi0gICAgICAgIGRvd25sb2FkRGlkQ2Fu
Y2VsLAotICAgICAgICAwLCAvLyBwcm9jZXNzRGlkQ3Jhc2g7Ci0gICAgICAgIGRvd25sb2FkRGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwKLSAgICB9OwotICAgIFdLQ29udGV4dFNldERvd25s
b2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25sb2FkQ2xpZW50LmJhc2UpOwogICAgIAogICAgIC8v
IHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0aGUgcGFnZT8KICAgICBXS1BhZ2VJbmplY3Rl
ZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxlQ2xpZW50ID0gewpAQCAtMjA3OSw0NSArMjA5
OCwzNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVudAogfQogCiAKLS8vIFdLQ29udGV4dERvd25s
b2FkQ2xpZW50Ci0KLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkU3RhcnQoY29udGV4dCwgZG93bmxvYWQpOwot
fQorLy8gV0tEb3dubG9hZENsaWVudAogICAgIAotV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCog
YWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykp
LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb250ZXh0LCBkb3dubG9h
ZCwgZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsKLX0KLQotdm9pZCBUZXN0Q29udHJvbGxlcjo6
ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxl
cjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlk
RmluaXNoKGNvbnRleHQsIGRvd25sb2FkKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3Rh
dGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PmRvd25sb2FkRGlkRmFpbChjb250ZXh0LCBkb3dubG9hZCwgZXJyb3IpOworICAgIHN0YXRpY19j
YXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3du
bG9hZERpZEZpbmlzaChkb3dubG9hZCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25s
b2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRGYWlsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIFdLRGF0YVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJv
bGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwo
Y29udGV4dCwgZG93bmxvYWQpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZhaWwoZG93bmxvYWQsIGVy
cm9yKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorYm9vbCBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1VSTFJlcXVlc3RSZWYgbmV3UmVxdWVzdCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTChjb250ZXh0LCBkb3dubG9hZCwgdXJsKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSkt
PmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIG5ld1JlcXVl
c3QpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQordm9pZCBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRTdGFydChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQogewogICAgIGlmICht
X3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9u
LT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVkLlxuIik7CiB9CiAKLVdLU3RyaW5nUmVmIFRl
c3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxs
b3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdS
ZWYgZmlsZW5hbWUpCiB7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gdG9XVEZTdHJp
bmcoZmlsZW5hbWUpOwogCkBAIC0yMTMzLDI4ICsyMTQyLDMzIEBAIFdLU3RyaW5nUmVmIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRl
eHRSZWYsCiAgICAgaWYgKCFkdW1wUmVuZGVyVHJlZVRlbXApCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgKmFsbG93T3ZlcndyaXRlID0gdHJ1ZTsKICAgICBTdHJpbmcgdGVtcG9yYXJ5
Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1wUmVuZGVyVHJlZVRlbXApOwogICAgIGlmIChz
dWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
IlVua25vd24iOworICAgIAorICAgIFN0cmluZyBkZXN0aW5hdGlvbiA9IHRlbXBvcmFyeUZvbGRl
ciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKGRlc3RpbmF0aW9uKSkKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5h
dGlvbik7CiAKLSAgICByZXR1cm4gdG9XSyh0ZW1wb3JhcnlGb2xkZXIgKyAiLyIgKyBzdWdnZXN0
ZWRGaWxlbmFtZSkubGVha1JlZigpOworICAgIHJldHVybiB0b1dLKGRlc3RpbmF0aW9uKS5sZWFr
UmVmKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmluaXNoKFdLRG93bmxvYWRSZWYpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxs
YmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRvd25sb2Fk
IGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURvd25sb2Fk
RG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYgdXJs
KQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCkKIHsKKyAgICBhdXRv
IHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29weVVSTChyZXF1ZXN0KSk7CiAgICAgaWYgKG1f
c2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24t
Pm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxvYWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0
b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0cmluZyh1cmwpKSksICJcIi5cbiIpKTsKKyAg
ICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJEb3dubG9h
ZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tVUkxDb3B5U3Ry
aW5nKHVybC5nZXQoKSkpKSwgIlwiLlxuIikpOworICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2Fk
UmVmLCBXS0Vycm9yUmVmIGVycm9yKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRG
YWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCiB7CiAgICAgaWYgKG1fc2hvdWxk
TG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0
cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9zKTsKQEAgLTIxNjgsMTMgKzIxODIsNiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmLCBXS0Vycm9yUmVmIGVycgogICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURv
d25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNl
bChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpCi17Ci0gICAgaWYgKG1fc2hvdWxkTG9nRG93
bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQo
IkRvd25sb2FkIGNhbmNlbGxlZC5cbiIpOwotICAgIG1fY3VycmVudEludm9jYXRpb24tPm5vdGlm
eURvd25sb2FkRG9uZSgpOwotfQotCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwcm9jZXNzRGlkQ3Jh
c2goKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1l
cyB3aGVuIGNyYXNoIGxvZ3MgYXJlIGJlaW5nIHNhdmVkIG9uIFdpbmRvd3MsIHNvCkBAIC0yNTA0
LDcgKzI1MTEsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZwogICAgIGF1dG8gZGVjaXNpb25G
dW5jdGlvbiA9IFtzaG91bGRJZ25vcmUsIHJldGFpbmVkTGlzdGVuZXIsIHJldGFpbmVkTmF2aWdh
dGlvbkFjdGlvbiwgc2hvdWxkU3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24g
PSBtX3Nob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uLCBzaG91bGRT
d2FwVG9EZWZhdWx0U2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24gPSBtX3Nob3VsZFN3YXBUb0RlZmF1
bHRTZXNzaW9uT25OZXh0TmF2aWdhdGlvbl0oKSB7CiAgICAgICAgIGlmIChzaG91bGRJZ25vcmUp
CiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUocmV0YWluZWRMaXN0ZW5l
ci5nZXQoKSk7Ci0gICAgICAgIGVsc2UgaWYgKFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZv
cm1Eb3dubG9hZChyZXRhaW5lZE5hdmlnYXRpb25BY3Rpb24uZ2V0KCkpKQorICAgICAgICBlbHNl
IGlmIChXS05hdmlnYXRpb25BY3Rpb25HZXREb3dubG9hZEF0dHJpYnV0ZShyZXRhaW5lZE5hdmln
YXRpb25BY3Rpb24uZ2V0KCkpKQogICAgICAgICAgICAgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93
bmxvYWQocmV0YWluZWRMaXN0ZW5lci5nZXQoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgaWYgKHNob3VsZFN3YXBUb0VwaGVtZXJhbFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uIHx8IHNo
b3VsZFN3YXBUb0RlZmF1bHRTZXNzaW9uT25OZXh0TmF2aWdhdGlvbikgewpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IGI1N2I4ZjdhMDU5NTIzZWNmODc3YWIwMTk3
MjBkNGRiZTU4ZmNiNWYuLjc2ODFlMWU0MTliYTg5N2QxMjUxZTk4ZTJiMWZhZDM5ZmFmNmYyMjUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTQ0MiwxOSArNDQy
LDE5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTmF2aWdhdGlvbihXS1Bh
Z2VSZWYsIFdLTmF2aWdhdGlvblJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKik7
CiAgICAgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVm
KTsKIAotICAgIC8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Ci0gICAgc3RhdGljIHZvaWQgZG93
bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsK
LSAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsK
LSAgICBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwg
Ym9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotICAgIFdLU3Ry
aW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3
cml0ZSk7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChX
S0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlk
RmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIGNvbnN0IHZvaWQq
KTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYs
IFdLRXJyb3JSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRD
YW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKTsKLSAgICBzdGF0aWMgdm9pZCBkb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwgV0tEb3dubG9h
ZFJlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJl
Zik7CisgICAgLy8gV0tEb3dubG9hZENsaWVudAorICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25B
Y3Rpb25EaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwg
V0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VS
ZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0
aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwor
ICAgIHZvaWQgZG93bmxvYWREaWRTdGFydChXS0Rvd25sb2FkUmVmKTsKKyAgICBzdGF0aWMgV0tT
dHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9h
ZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1l
KTsKKyAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0Rvd25sb2FkUmVmKTsKKyAg
ICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiwg
V0tEYXRhUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tEb3du
bG9hZFJlZiwgV0tFcnJvclJlZik7CisgICAgc3RhdGljIGJvb2wgZG93bmxvYWREaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlc3BvbnNlUmVmLCBXS1VS
TFJlcXVlc3RSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0VG9VUkwoV0tEb3dubG9hZFJlZiwgV0tVUkxSZXF1ZXN0UmVmKTsKICAgICAK
ICAgICBzdGF0aWMgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV0tQYWdlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGFmZjQxNjRi
YmZkYjkyYzY5Mzk3YmE2YjEzNThiNzAyZjc4ODJlMGUuLjA2MzRlOTRkMjYxNmQ5MzA3NDJjZTRm
ZjI5ZDk5ZGY1MTAwMDgxZmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0xMS0xOSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJv
ZHVjZSBuZXcgZG93bmxvYWQgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24u
CisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hv
ci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29u
dmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRv
d25sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0OgorICAgICAgICBOb3cgdGhhdCBO
ZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRGaWxlbmFtZSBkb2Vzbid0IHN1Z2dlc3QgInVu
a25vd24iCisgICAgICAgIHRoZSBjYXBpdGFsaXphdGlvbiBoYXMgY2hhbmdlZCB0byAiVW5rbm93
biIgZnJvbSBOU1VSTFJlc3BvbnNlJ3Mgc3VnZ2VzdGVkRmlsZW5hbWUuCisKIDIwMjAtMTEtMTkg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJldmVydGluZyByMjcwMDA5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3Rl
ZC50eHQKaW5kZXggMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOS4uMzc1
YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3It
ZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4K
LURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgor
RG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBE
b3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5
bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNr
LWV4cGVjdGVkLnR4dAppbmRleCBiZWRjOGRkYTAxYzhjMTIzN2UxMDZjNjg1MzM0MGYzNzk2Zjdj
ZWU3Li5jNTExNzc5NWE1OGMwOGZiZWUwNmNiMzk0MzFjZGMzMWQwZGI1OWE1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQt
dXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmln
Z2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIERvd25s
b2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVu
a25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5r
bm93bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogVGVzdCB0aGF0IHVzZXIgdHJpZ2dlcmVk
IHN5bnRoZXRpYyBjbGlja3Mgb24gYW4gYW5jaG9yIHdpdGggYSBkb3dubG9hZCBhdHRyaWJ1dGUg
YXJlIG5vdCBpZ25vcmVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMt
ZGVsZWdhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRl
LWV4cGVjdGVkLnR4dAppbmRleCAxMTE0MGZkMjE4ODdiODUxMjBkYWIxODNmOWZkOWIzZDBmNDdh
YzVlLi4xMjAyN2MzZTEwYWQ4YjBjMDFiZmE3YTYxMTI4NmU4NTYyOGJlOTMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9i
LWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29u
dmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1
IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZp
bGVuYW1lICJ1bmtub3duIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1l
ICJVbmtub3duIgogRG93bmxvYWQgY29tcGxldGVkLgogVGhlIGRvd25sb2FkIHNob3VsZCBzdWNj
ZWVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252
ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dAppbmRleCAxMTE0MGZkMjE4ODdiODUxMjBkYWIx
ODNmOWZkOWIzZDBmNDdhYzVlLi4xMjAyN2MzZTEwYWQ4YjBjMDFiZmE3YTYxMTI4NmU4NTYyOGJl
OTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9h
bmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29u
dmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBz
dGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3du
IgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duIgogRG93
bmxvYWQgY29tcGxldGVkLgogVGhlIGRvd25sb2FkIHNob3VsZCBzdWNjZWVkLgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3du
bG9hZC1zZXQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAppbmRleCAwMmFmMmRlOWIx
YzRiY2FjNTg2MmMxZGE1NmZiYjRiZTZhMTZkMmE5Li4zNzVjMTkxMjlhZTYxYmEwNmU3ZDU0OGE4
M2EzYjg2YTc2OTBiNjdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRp
bmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGlu
ZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNv
bXBsZXRlZC4KIEJsb2IgVVJMCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415365</attachid>
            <date>2020-12-03 16:37:02 -0800</date>
            <delta_ts>2020-12-09 19:38:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201203163701.patch</filename>
            <type>text/plain</type>
            <size>330946</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwMzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDM4NjExODg1N2U2ZTI2M2Zj
YTNiZWExMDc5NjU1OTk4ZTYxNDZmNjcuLmQxNDZmMDFlMzJhOTY5ZmFkNjVlN2IzMzNkY2NlODBh
YTEyMWZmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTg3IEBACisyMDIwLTEyLTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBTYWZhcmkgY3VycmVudGx5IHVzZXMgX1dLRG93bmxvYWQsIHdoaWNoIGhhcyBldm9s
dmVkIHN0cmFuZ2VseSBvdmVyIHRoZSBsYXN0IGRlY2FkZS4KKyAgICAgICAgSW4gb3JkZXIgdG8g
bWFrZSBhIG5pY2VyIGludGVyZmFjZSwgd2UgbmVlZCB0byBsZWFybiBmcm9tIHRob3NlIGxlc3Nv
bnMgYW5kIHRha2UgYSBzdGVwIGJhY2suCisgICAgICAgIEkgZGlkIHRoYXQsIGFuZCBoZXJlJ3Mg
d2hhdCBJIGNhbWUgdXAgd2l0aDogV0tEb3dubG9hZCBhbmQgV0tEb3dubG9hZERlbGVnYXRlIQor
CisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhlIGRlbGVn
YXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIHByb2Nl
c3MgcG9vbC4KKyAgICAgICAgMi4gIFdLRG93bmxvYWQgZG9lcyBub3QgY29uZm9ybSB0byBOU0Nv
cHlpbmcgYmVjYXVzZSB3ZSBoYXZlIE5TTWFwVGFibGUgaW5zdGVhZCBvZiBOU0RpY3Rpb25hcnku
CisgICAgICAgIDMuICBwdWJsaXNoUHJvZ3Jlc3NBdFVSTCBpcyBnb25lLiAgVGhhdCB3aWxsIGJl
IHJlaW1wbGVtZW50ZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVzZWQg
aXQuCisgICAgICAgIDQuICBjYW5jZWwgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGdldCB0
aGUgcmVzdW1lIGRhdGEgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBkaWRDYW5jZWwgdGhlbiBnZXR0
aW5nIGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4KKyAgICAgICAgNS4gIGRpZEZhaWxXaXRo
RXJyb3IgYWxzbyBnaXZlcyB5b3UgdGhlIHJlc3VtZSBkYXRhLCBzbyB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4gIFRoYXQncyBtb3JlIGFib3V0IGEg
ZmFpbC9jYW5jZWwKKyAgICAgICAgICAgIGV2ZW50IHRoYW4gYSBwcm9wZXJ0eSBvZiB0aGUgZG93
bmxvYWQuCisgICAgICAgIDYuICB3YXNVc2VySW5pdGlhdGVkIGlzIGdvbmUuICBJbnN0ZWFkLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMgYSBjYWxsYmFjayB0aGF0IGxpbmtzIGEgbmF2aWdhdGlv
biBhY3Rpb24gKHdoZXJlIF9pc1VzZXJJbml0aWF0ZWQgaXMgZXhwb3NlZCkgdG8gdGhlIGRvd25s
b2FkLgorICAgICAgICA3LiAgcmVkaXJlY3RDaGFpbiBpcyBhbHNvIGdvbmUuICBUaGF0IGNhbiBh
bHNvIGJlIGdvdHRlbiBmcm9tIHRoZSBsaW5rIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZCB0aGUgZG93
bmxvYWQgZGVsZWdhdGUncyByZWRpcmVjdCBjYWxsYmFjay4KKyAgICAgICAgOC4gIF9kb3dubG9h
ZERpZFN0YXJ0IGlzIGdvbmUuICBJbnN0ZWFkLCB3ZSBoYXZlIGNvbXBsZXRpb24gaGFuZGxlcnMg
dGhhdCBleHBvc2UgYSBXS0Rvd25sb2FkIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBu
ZWVkIHRvCisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUg
dGhlbiBhbnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdo
aWNoIGlzIGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0
aGVyZSB3aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRv
d25sb2FkIG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgOS4gIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9y
IGNhbmNlbGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAg
ICAgICAgICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTAuIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2
ZSBiZWVuIG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGlt
ZSBhbmQKKyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQ
SS4gIGFsbG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90
IHJlYWxseSBuZWVkZWQuCisgICAgICAgIDExLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25l
LiAgVGhhdCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5l
ZWQgdG8ga25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAg
ICAgICAgIGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5p
dGVseSBiZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTIuIHNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlIGlzIGdvbmUuICBJdCdzIGFjdHVhbGx5IG5vdCBjYWxsZWQgc2luY2Ug
d2UgYWRvcHRlZCBOU1VSTFNlc3Npb24sIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSByZWxhdGVk
IGRlYWQgY29kZS4KKyAgICAgICAgMTMuIG9yaWdpbmF0aW5nRnJhbWUgaXMgZ29uZS4gIE9uIF9X
S0Rvd25sb2FkIGl0IHdhcyBhY3R1YWxseSBhIG5vbi1udWxsIFdLRnJhbWVJbmZvIHRoYXQgb2Z0
ZW4gY29udGFpbmVkIG5vIGluZm9ybWF0aW9uLiAgV2hlbiBpbmZvcm1hdGlvbiB3YXMgdGhlcmUs
CisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24gYWNjZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5
IGRpZEJlY29tZURvd25sb2FkIHdoaWNoIGxpbmtzIHRoZSBXS05hdmlnYXRpb25SZXNwb25zZSB3
aGljaCBoYXMgZnJhbWUgaW5mbyBvbiBpdC4KKworICAgICAgICBJIHdyb3RlIEFQSSB0ZXN0cyBm
b3IgZXZlcnl0aGluZyBJIGNvdWxkIHRoaW5rIG9mLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5h
bWUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9y
Ol0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLRG93bmxvYWRHZXRUeXBl
SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKFdLRG93bmxv
YWRDYW5jZWwpOgorICAgICAgICAoV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZSk6CisgICAg
ICAgIChXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZCk6CisgICAgICAgIChXS0Rvd25sb2Fk
U2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuY3BwOgorICAg
ICAgICAoV0tOYXZpZ2F0aW9uQWN0aW9uR2V0RG93bmxvYWRBdHRyaWJ1dGUpOgorICAgICAgICAo
V0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2FkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlUG9saWN5
Q2xpZW50KToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW06IEFkZGVkLgorICAgICAgICAoLVtXS0Rvd25sb2Fk
IGNhbmNlbDpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBvcmlnaW5hbFJlcXVlc3RdKToKKyAg
ICAgICAgKC1bV0tEb3dubG9hZCBkZWxlZ2F0ZV0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIHNl
dERlbGVnYXRlOl0pOgorICAgICAgICAoLVtXS0Rvd25sb2FkIGRlYWxsb2NdKToKKyAgICAgICAg
KC1bV0tEb3dubG9hZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Rvd25sb2FkRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaC4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tOgorICAgICAgICAoLVtXS05hdmlnYXRpb25B
Y3Rpb24gZG93bmxvYWRBdHRyaWJ1dGVdKToKKyAgICAgICAgKC1bV0tOYXZpZ2F0aW9uQWN0aW9u
IF9zaG91bGRQZXJmb3JtRG93bmxvYWRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX2Rvd25s
b2FkVVJMUmVxdWVzdDp3ZWJzaXRlRGF0YVN0b3JlOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAg
ICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfcmVzdW1lRG93bmxvYWRGcm9tRGF0YTp3ZWJzaXRlRGF0
YVN0b3JlOnBhdGg6b3JpZ2luYXRpbmdXZWJWaWV3Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgZG93bmxvYWRSZXF1ZXN0OmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0YTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbToKKyAgICAg
ICAgKC1bX1dLRG93bmxvYWQgaW5pdFdpdGhEb3dubG9hZDI6XSk6CisgICAgICAgICgrW19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOl0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCBj
YW5jZWxdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcHVibGlzaFByb2dyZXNzQXRVUkw6XSk6
CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJlcXVlc3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxv
YWQgb3JpZ2luYXRpbmdXZWJWaWV3XSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHJlZGlyZWN0
Q2hhaW5dKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgd2FzVXNlckluaXRpYXRlZF0pOgorICAg
ICAgICAoLVtfV0tEb3dubG9hZCByZXN1bWVEYXRhXSk6CisgICAgICAgICgtW19XS0Rvd25sb2Fk
IG9yaWdpbmF0aW5nRnJhbWVdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgX2FwaU9iamVjdF0p
OgorICAgICAgICAoLVtfV0tEb3dubG9hZCBkZWFsbG9jXSk6IERlbGV0ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW06CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpsZWdhY3lEaWRTdGFydCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lE
b3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAg
ICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6
CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdh
Y3lEaWRDYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6d2ls
bFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRp
ZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAg
ICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJv
eHk6On5Eb3dubG9hZFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGlk
U3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6
OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXRDbGllbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oOgorICAgICAgICAo
V2ViS2l0OjpEb3dubG9hZFByb3h5OjpzZXREaWRTdGFydENhbGxiYWNrKToKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRQcm94eTo6c2V0U3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMTItMDIgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IHRoZSBp
T1MgYnVpbGQgYWZ0ZXIgcjI3MDM2MgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9IZWFkZXJz
LmNtYWtlIGIvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCmluZGV4IDNlN2U1OTU4NGZmMjgw
MDBlMTBkOTlhZTQ0YWJlYzNmZmEyMTM5YTIuLjk4ZWEwN2RhYjEzZDY4OTY0ZmE2YTNlZjFiYWVj
MmI3ZTFhMDQ0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQorKysg
Yi9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UKQEAgLTQwLDE0ICs0MCwxNCBAQCBzZXQoV2Vi
S2l0X1BVQkxJQ19GUkFNRVdPUktfSEVBREVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmgKICAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oCi0gICAgVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dERvd25sb2FkQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0SGlzdG9yeUNsaWVudC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0UHJpdmF0
ZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5oCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dLQ3JlZGVudGlhbC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbFR5
cGVzLmgKLSAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRDbGllbnQuaAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVm
LmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmgKICAgICBV
SVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVIYW5k
bGVSZWYuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAKaW5kZXggMzMyMTYzNDBmMjdjMTYwNWMzY2Q3NGJj
NjkwN2I3ZDkxYjQ3Yjc2Mi4uMmMxMzdmNjdmMmI0MGQ3NGIxNmEzOGJmMGI0MDc5YjM1MmZmZDJm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpkb3dubG9hZERlc3RpbmF0aW9uRGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQs
IFJlZjxOZXR3CiAgICAgbV9kb3dubG9hZHNBZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93
bmxvYWRJRCwgV1RGTW92ZShuZXR3b3JrRGF0YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1h
bmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0
IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNh
bGxEb3dubG9hZERpZFN0YXJ0KQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwpAQCAtMTA1LDYgKzEwNSwxMSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwog
ICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5pcXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJ
RCwgbnVsbHB0ciwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVz
dW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAv
LyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNl
bmQgRGlkU3RhcnQgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3du
bG9hZERpZFN0YXJ0ID09IENhbGxEb3dubG9hZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25s
b2FkLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOwor
CiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5jb250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9k
b3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdURk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuaAppbmRleCAyY2QxNjFiMGFjM2U3ODllMjI0NmMwNWIwMTY1ZjFjNzI2NzhmYTUw
Li5jNDgxZWI1ZjZkNDI5Y2IwOWJiYzUyNTk2ZmY1OWE3YmU1NzMyNWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFzcyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xhc3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNs
YXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93
bmxvYWRNYW5hZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIp
OwogCkBAIC04Niw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9h
ZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBS
ZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYsICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JE
YXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGlu
YXRpb25EZWNpZGVkKERvd25sb2FkSUQsIFJlZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAg
dm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lv
bklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9h
ZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgY2FuY2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQppbmRleCA5NWY4ZGVjMzAyNTFi
ODBiYWEyOWNlNTkwODczYTdhYmFlZmRhOWNlLi41Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMw
NTBiYTViMWQ2YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDgg
QEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1l
RGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAogICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQ
cm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRhdGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkg
Zm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxw
dHJdOwogI2VuZGlmCiAKKyAgICAvLyBGSVhNRTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0
ZWREYXRhIG9uY2Ugd2UndmUgbWlncmF0ZWQgZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rvd25sb2Fk
CisgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBhdGgg
d2UgZ290IGZyb20gdGhlIGRhdGEgYmFjayBpbnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxvYWRU
YXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Npb24g
ZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFza0lk
ZW50aWZpZXIgPSBbbV9kb3dubG9hZFRhc2sgdGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VSVCgh
Y29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAuY29u
dGFpbnModGFza0lkZW50aWZpZXIpKTsKQEAgLTgzLDcgKzg1LDIyIEBAIHZvaWQgRG93bmxvYWQ6
OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwKIHZvaWQgRG93bmxvYWQ6OnBsYXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9kb3dubG9hZFRhc2spOwotICAgIFttX2Rvd25sb2Fk
VGFzayBjYW5jZWxCeVByb2R1Y2luZ1Jlc3VtZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRh
KSBtdXRhYmxlIHsKKyAgICBbbV9kb3dubG9hZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVE
YXRhOm1ha2VCbG9ja1B0cihbcGF0aCA9IHJldGFpblB0cihtX2Rvd25sb2FkVGFzay5nZXQoKS5f
cGF0aFRvRG93bmxvYWRUYXNrRmlsZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildIChOU0RhdGEgKnJlc3VtZURhdGEpIG11dGFibGUgeworI2lmIFVTRShM
RUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAg
ICAgICAgICAgIC8vIE1vamF2ZSBkb2VzIG5vdCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlv
biBpbiB0aGUgcmVzdW1lIGRhdGEgZnJvbSBDRk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNr
LgorICAgICAgICAgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hp
dmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7
CisgICAgICAgICAgICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNv
ZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rp
b25hcnkgPSBhZG9wdE5TKHN0YXRpY19jYXN0PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFy
Y2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGlj
dGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVt
YmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3Qg
Y2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFi
bGVDb3B5XSkpOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAg
ICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnBhdGguZ2V0KCkgZm9yS2V5OkAiTlNVUkxT
ZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJdOworICAgICAgICAgICAgYXV0byBlbmNvZGVyID0g
YWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBhbGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGlu
ZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNvZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5Lmdl
dCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdOworICAgICAgICAgICAg
cmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29kZWREYXRhXTsKKyAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOworI2VuZGlmCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0
YVJlZmVyZW5jZSA9IHJlc3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2Fz
dDxjb25zdCB1aW50OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0g
OiBJUEM6OkRhdGFSZWZlcmVuY2UgeyB9OwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1
bWVEYXRhUmVmZXJlbmNlKTsKICAgICB9KS5nZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAppbmRleCA4ZDg5N2E0MjMw
YWZlMmU5OGRkZGE5YzRhOWQyMTAxNzQ3NGIzNzkyLi5iOTIwNjgyYzllNDczYmYzNWUwM2ZmM2E2
MmY3MDVkM2UxYWMyMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKQEAgLTQ0NiwxMCArNDQ2LDcgQEAgdm9pZCBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBTYW4KIAogU3RyaW5nIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnN1Z2dlc3RlZEZp
bGVuYW1lKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKLQotICAgIHJldHVybiAidW5r
bm93biJfczsKKyAgICByZXR1cm4gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIH0KIAogdm9pZCBOZXR3
b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGY2YTIzOWExZjY4Zjg5YmU0ZTdkYzg1ZTgw
ZjEzMTRjNjkwYjdlYjguLjVmZTQ1OTEzMTU0YmE3NTFmY2Q5NmNhNGRhOTVmNjJmMTUxMWZlZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CkBAIC0yMDUzLDkgKzIwNTMsOSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVl
c3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGRvd25s
b2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJl
c3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVz
dW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2Fk
SUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBw
YXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewotICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAg
ZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCBy
ZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBjYWxsRG93
bmxvYWREaWRTdGFydCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2Fk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTIwNzksMTAgKzIwNzks
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpmaW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0
d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRhcwogewogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQgPSBuZXR3b3JrRGF0YVRhc2sucGVuZGluZ0Rvd25sb2FkSUQoKS50b1VJbnQ2NCgpOwogCi0g
ICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2FzLWEtZG93bmxvYWQg
KHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRl
cgotICAgIC8vIHNob3VsZCBvdmVycmlkZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGZyb20gdGhl
IGRvd25sb2FkIGF0dHJpYnV0ZS4KLSAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNw
b25zZS5pc0F0dGFjaG1lbnRXaXRoRmlsZW5hbWUoKSA/IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVu
YW1lKCkgOiBuZXR3b3JrRGF0YVRhc2suc3VnZ2VzdGVkRmlsZW5hbWUoKTsKLSAgICBzdWdnZXN0
ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vz
c2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisgICAgU3RyaW5n
IHN1Z2dlc3RlZEZpbGVuYW1lID0gbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7
CiAKICAgICBkb3dubG9hZFByb3h5Q29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG5ldHdvcmtEYXRhVGFzayA9IG1ha2VSZWYobmV0d29ya0RhdGFUYXNrKV0gKFN0cmlu
ZyYmIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlLCBBbGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSkgbXV0YWJsZSB7CiAgICAg
ICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdvcmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCA2MGQzNmJiNTc1NjdmMzI4ZTdmYWNjZDJlODBhMmUxMGE0Mzk4MTE4Li4wNTM1NzEyMmM2ZTk2
NjZiNDRlODkyY2Q1ZmE1NzI0YjE0NWVlODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgTmV0d29y
a1Jlc291cmNlTG9hZGVyOwogY2xhc3MgU3RvcmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1Nl
cnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247Citl
bnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxk
R3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9vbDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0
YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50
OF90OwpAQCAtNDIzLDcgKzQyNCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tDYWNo
ZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCBy
ZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBE
b3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0
cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0
YXJ0KTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIHZvaWQgcHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3Qg
VVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjAx
ZTI0Y2IyNTYzNmUxN2JkNTU0ZDY4ZjBlOGJmYWY1MmRhYjJkZS4uNThiM2U0Yzg2OGM3MDEyY2Ri
MzU2NTZlYWFiZjJiNjE4MWYyYmM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00OCw3ICs0OCw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW5hbWVP
cmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFp
biwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJz
aXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwogCiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3Ry
aW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQotICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVy
ZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKKyAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRh
dGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNh
bGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogICAgIENhbmNlbERvd25s
b2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNl
IHJlc3VtZURhdGEpIEFzeW5jCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25s
b2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktp
dDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KaW5kZXggZDVhNDY1YWIwYjhiMmVmODAxZmYwZmFmZWQyMmUzZjMwYzAzMDE0
Zi4uMGQwYWFkNGZmN2QyZjNmMjdjZmUyYjZiODExYjYwZWJjNTU5NjQ3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1Nl
cnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29hJiBzZXNzaW9uLCBTZQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9B
RFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICAvLyBNb2phdmUgZG9l
cyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRpb24gaW4gdGhlIHJlc3VtZSBkYXRhIGZy
b20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFzay4KKyAgICAgICAgICAgIGF1dG8gdW5h
cmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRp
bmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgICAgICAgICAgW3VuYXJjaGl2
ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VF
eGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNf
Y2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNs
YXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJh
eSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xh
c3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJO
U0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRhYmxlQ29weV0pKTsKKyAgICAgICAgICAg
IFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNl
dE9iamVjdDp0YXNrLl9wYXRoVG9Eb3dubG9hZFRhc2tGaWxlIGZvcktleTpAIk5TVVJMU2Vzc2lv
blJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0
TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVT
XSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBm
b3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3Vt
ZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAg
ICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3VtZURhdGEgPyBJUEM6OkRhdGFSZWZl
cmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJl
c3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVuY2UgeyB9OwogICAgICAgICBkb3du
bG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1lRGF0YVJlZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggY2EwYWUyODQxMWE4M2RlNGJm
M2ZlMDhiMDEyZTQwNTU0OGQ4YjU3My4uYzNmNTc5ODNjZjEyMGJhNjg3NTIxMDY2ODFjNjE0MGY2
OGE4Nzk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdl
cy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02
NzIsNiArNjcyLDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJL
aXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgi
J10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRN
YW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBb
JyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0
aW5nQ29udGV4dFJlcXVlc3QnOiBbJyJEb2N1bWVudEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OkZpbmRPcHRpb25zJzogWyciV2ViRmluZE9wdGlvbnMuaCInXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaAppbmRleCAxZjdhM2RkM2M2OTczZTEwOTk0
ZjVkYzEzN2ZhZjQwNmEyNWVhMjlkLi40MTVkOTE2NDY1OTZjZWYyN2Y4NzE4M2Y1MmNkZTE5MjBm
YjUwNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zMCw2
ICszMCw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLRG93bmxvYWREZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3Iu
aD4KICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJL
aXQvV0tGaW5kUmVzdWx0Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oCmluZGV4IDdmODBiYTE0OGMwZTllN2MxZTcwNjczYzUyYWMxMWViMjIyMGFjZjYu
LjRhMTEzNjQ2MTFjZmJjNzBmOTY0NzZhYjMxZjllMTUxYzU5MjlhYjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCkBAIC0xMjcsNiArMTI3LDEyIEBA
IGF1dG8gdG9BUEkoVCogdCkgLT4gQVBJVHlwZQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PEFQSVR5cGU+KEFQSTo6T2JqZWN0Ojp3cmFwKHQpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQVBJVHlwZSA9IHR5cGVuYW1lIEltcGxUeXBlSW5mbzxUPjo6QVBJVHlwZT4K
K2F1dG8gdG9BUEkoVCYgdCkgLT4gQVBJVHlwZQoreworICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PEFQSVR5cGU+KEFQSTo6T2JqZWN0Ojp3cmFwKCZ0KSk7Cit9CisKIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEltcGxUeXBlID0gdHlwZW5hbWUgQVBJVHlwZUluZm88VD46OkltcGxU
eXBlPgogYXV0byB0b0ltcGwoVCB0KSAtPiBJbXBsVHlwZSoKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBmOGEwMjhiMDZiNTEwNjEwOGRkYzNjYmI2OGE0MDFi
ZmEzNWY3ZGJlLi43ZjA1ODQ1NmRlZTc2NDg5ODFmZDQ2ZjFmMDA1N2Y3NTNmZDZlMWNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAj
aW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdFN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29u
dGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb0lu
dGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJh
bWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAtNzMsNyArNzQsNiBAQAogI2ltcG9ydCAiX1dLQXV0
b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0
aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgi
Ci0jaW1wb3J0ICJfV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50
YWxGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgpAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpEb3dubG9hZDoKLSAgICAgICAgd3JhcHBlciA9IFtf
V0tEb3dubG9hZCBhbGxvY107CisgICAgICAgIHdyYXBwZXIgPSBbV0tEb3dubG9hZCBhbGxvY107
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpFeHBlcmltZW50YWxGZWF0dXJlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggMDkxN2YwMWJlMWM5ZjhjYWEyYWJmN2YwZjg5MGY4OTVhM2YyZWY4Ni4u
NGVhNGFmYmQ2OWYxODBkNzhlNTliZmFlMzI1YzRlZjY0ZjQ0OTIwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC0zNzQsNyArMzc0LDcgQEAgVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCi1VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAKK1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVm
LmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAKIFVJUHJv
Y2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVIYW5kbGVSZWYu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNGVhOGI3ODFkMjBhODFhMDhlNDRiNDRkYmEw
YjU4ZjIxYmQ2Zjk3My4uNTA4NzM4YmMyMWFmODY2Mzc2Y2ZlZWI1OWZmODRjZTQ2Y2UyNjE2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMzAwLDYgKzMwMCw3IEBAIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tDb250ZW50UnVsZUxpc3QubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50
UnVsZUxpc3RTdG9yZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KK1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1t
CiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tGaW5kUmVzdWx0Lm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4IGQzN2Y2Mjg2OGI2MTI5N2ExMWFmZmYzODAyYTgw
YmE2MTJhNGRjZTUuLmRmZjczZmE2NWJmNmZiMGFkMTdhZmE5OWY1ODJmOTQyZmFmN2EwYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBA
IC00OSwxOCArNDksMjAgQEAgZW51bSBjbGFzcyBBbGxvd092ZXJ3cml0ZSA6IGJvb2w7CiAKIG5h
bWVzcGFjZSBBUEkgewogCitjbGFzcyBEYXRhOworCiBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1
YmxpYyBSZWZDb3VudGVkPERvd25sb2FkQ2xpZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbGVnYWN5RGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6
OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNo
YWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3Qs
IHVpbnQ2NF90LCB1aW50NjRfdCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXVEY6OlN0cmluZyYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6
Ok5vLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSogcmVzdW1lRGF0
YSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxlZ2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93
bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaAppbmRleCBiYmE4NTlhZjJlNDM1ZTlmMDky
NGY0YTMyZTExN2Q5NjM5NWRiZjk1Li4wYzU2NGQ0NDU0YzgyZDg5NTdhZmVhZTc0N2MwYjZmMTcw
ZjZiYWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQWN0aW9uLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIGJvb2wgY2FuSGFuZGxl
UmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuY2FuSGFuZGxl
UmVxdWVzdDsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSA9PSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGRBbGxvdyB8
fCBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPT0g
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5h
bFNjaGVtZXNCdXROb3RBcHBMaW5rczsgfQogICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzKCkg
Y29uc3QgeyByZXR1cm4gbV9zaG91bGRPcGVuQXBwTGlua3MgJiYgbV9uYXZpZ2F0aW9uQWN0aW9u
RGF0YS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID09IFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZEFsbG93OyB9Ci0gICAgYm9vbCBzaG91bGRQZXJmb3Jt
RG93bmxvYWQoKSBjb25zdCB7IHJldHVybiAhbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YS5kb3dubG9h
ZEF0dHJpYnV0ZS5pc051bGwoKTsgfQorICAgIGNvbnN0IFdURjo6U3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRB
dHRyaWJ1dGU7IH0KICAgICBib29sIGlzUmVkaXJlY3QoKSBjb25zdCB7IHJldHVybiBtX25hdmln
YXRpb25BY3Rpb25EYXRhLmlzUmVkaXJlY3Q7IH0KICAgICBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7
IH0KIApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnNldFNob3VsZFBlcmZv
cm1TT0F1dGhvcml6YXRpb24oKSB7IG1fc2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbiA9IGZh
bHNlOyB9CiAjZW5kaWYKIAorICAgIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEm
IGRhdGEoKSBjb25zdCB7IHJldHVybiBtX25hdmlnYXRpb25BY3Rpb25EYXRhOyB9CisgICAgCiBw
cml2YXRlOgogICAgIE5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBBUEk6OkZyYW1lSW5mbyogc291cmNlRnJhbWUsIEFQ
STo6RnJhbWVJbmZvKiB0YXJnZXRGcmFtZSwgT3B0aW9uYWw8V1RGOjpTdHJpbmc+IHRhcmdldEZy
YW1lTmFtZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV1RGOjpV
UkwmIG9yaWdpbmFsVVJMLCBib29sIHNob3VsZE9wZW5BcHBMaW5rcywgUmVmUHRyPFVzZXJJbml0
aWF0ZWRBY3Rpb24+JiYgdXNlckluaXRpYXRlZEFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBtYWlu
RnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICA6IG1fc291cmNlRnJhbWUoc291cmNlRnJhbWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApp
bmRleCAwNjFlMTg2ZGJlODg2YTA3NDIyYmY4M2I3YWZjZmNiYzZhYzllNmFlLi5kODM2NjRlMDgy
MDZjN2ZlYmYyODFlOTJjZWU0OTI1ZmY2YWRkZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDcgQEAgc3Ry
dWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5OworY2xhc3MgRG93bmxvYWRQcm94eTsKIGNsYXNzIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW07CiBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk7
CiBjbGFzcyBXZWJGcmFtZVByb3h5OwpAQCAtOTksNiArMTAwLDEwIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSB7IH0KIAorICAgIHZp
cnR1YWwgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIE5hdmlnYXRpb25SZXNwb25zZSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQo
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uQWN0aW9uJiwgV2ViS2l0OjpEb3dubG9h
ZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxv
YWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNo
YWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxp
bmcpOyB9CiAgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93TGVnYWN5VExTKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWROZWdvdGlhdGVNb2Rlcm5UTFMo
Y29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAppbmRleCA3ZDJlOTM0NDYyY2Yz
YmRjMTlhMTliN2RkMzFhMGMyYTljZWJlZDRmLi4yNjEwMTg4YTk3NTY5ZGIzZTNjNzhhZWIwNGE4
NTgyNTE5MzJkMTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
UG9saWN5Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGlj
eUNsaWVudC5oCkBAIC01MCwxMSArNTAsMTEgQEAgY2xhc3MgUG9saWN5Q2xpZW50IHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5Qb2xpY3lDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQorICAgIHZpcnR1YWwg
dm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewogICAgICAg
ICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8V2ViS2l0OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2
aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4mJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KikKICAgICB7CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAzYTA4M2NhNDg2
NDQzYmQ4ODA2MzNhNWMyNjA3NGUyNjJkMTEzNGJjLi5mZmQwN2U4Y2NkOGIwNDA2NzE0ZWU4NzEw
ZWMyMTMwODA5ZmVjNGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKQEAgLTU1LDkgKzU1LDYgQEAKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkuaCIKIAogbmFtZXNwYWNlIEFQSSB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBDbGllbnRU
cmFpdHM8V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1
cGxlPFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAsIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjE+
IFZlcnNpb25zOwotfTsKIHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0NvbnRleHRI
aXN0b3J5Q2xpZW50QmFzZT4gewogICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0NvbnRleHRIaXN0
b3J5Q2xpZW50VjA+IFZlcnNpb25zOwogfTsKQEAgLTE2OCw5MCArMTY1LDYgQEAgdm9pZCBXS0Nv
bnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0Nv
bnRleHRIaXN0b3J5Q2wKICAgICB9CiB9CiAKLXZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGll
bnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFz
ZSogd2tDbGllbnQpCi17Ci0gICAgY2xhc3MgTGVnYWN5RG93bmxvYWRDbGllbnQgZmluYWwgOiBw
dWJsaWMgQVBJOjpDbGllbnQ8V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQ
STo6RG93bmxvYWRDbGllbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgTGVnYWN5
RG93bmxvYWRDbGllbnQoY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQs
IFdLQ29udGV4dFJlZiBjb250ZXh0KQotICAgICAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkK
LSAgICAgICAgewotICAgICAgICAgICAgaW5pdGlhbGl6ZShjbGllbnQpOwotICAgICAgICB9Ci0g
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBkaWRTdGFydChXZWJLaXQ6OkRvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGll
bnQuZGlkU3RhcnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgbV9jbGll
bnQuZGlkU3RhcnQobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAgICB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
UHJveHksIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eSkgZmluYWwKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQSSgmZG93bmxvYWRQcm94eSksIFdlYktpdDo6
dG9BUEkoJmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktp
dDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG1fY2xpZW50LmRpZFJlY2VpdmVSZXNwb25zZShtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRv
d25sb2FkUHJveHkpLCBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OmNyZWF0ZShyZXNw
b25zZSkucHRyKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAg
ICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCB1aW50NjRfdCBsZW5ndGgsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWwKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRSZWNlaXZlRGF0YSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlRGF0YShtX2NvbnRl
eHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBsZW5ndGgsIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUs
IFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmluYWwKLSAgICAgICAgewotICAg
ICAgICAgICAgZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkUHJveHksIHJlc3BvbnNlKTsKLSAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6
QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOwotICAgICAgICAgICAgYm9vbCBhbGxvd092ZXJ3cml0
ZSA9IGZhbHNlOwotICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbiA9IGFkb3B0V0sobV9jbGll
bnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUobV9jb250ZXh0LCBXZWJL
aXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShmaWxlbmFtZS5pbXBsKCkp
LCAmYWxsb3dPdmVyd3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOwotICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpZZXMgOiBXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgV2ViS2l0Ojp0b1dURlN0cmlu
ZyhkZXN0aW5hdGlvbi5nZXQoKSkpOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgZGlkQ3JlYXRl
RGVzdGluYXRpb24oV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBT
dHJpbmcmIHBhdGgpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgbV9jbGllbnQuZGlkQ3JlYXRlRGVzdGluYXRpb24obV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJ
KCZkb3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShwYXRoLmltcGwoKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZk
b3dubG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAg
ICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvcikgZmluYWwKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWwobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZk
b3dubG9hZFByb3h5KSwgV2ViS2l0Ojp0b0FQSShlcnJvciksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci0gICAgICAgIH0KLSAgICAgICAgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fY2xpZW50LmRpZENhbmNlbCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICBtX2NsaWVudC5kaWRDYW5jZWwobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3du
bG9hZFByb3h5KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgfQotICAgICAg
ICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpIGZpbmFsCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQucHJvY2Vzc0Rp
ZENyYXNoKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIG1fY2xpZW50LnBy
b2Nlc3NEaWRDcmFzaChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25sb2FkUHJveHkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotICAgICAgICB9Ci0gICAgICAgIHZvaWQgd2lsbFNl
bmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9j
bGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KQotICAgICAgICAgICAgICAgIG1fY2xpZW50
LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdChtX2NvbnRleHQsIFdlYktpdDo6dG9BUEkoJmRvd25s
b2FkUHJveHkpLCBXZWJLaXQ6OnRvVVJMUmVmKHJlcXVlc3QudXJsKCkuc3RyaW5nKCkuaW1wbCgp
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOwotICAgICAgICB9Ci0gICAgICAgIFdLQ29udGV4dFJlZiBt
X2NvbnRleHQ7Ci0gICAgfTsKLSAgICBXZWJLaXQ6OnRvSW1wbChjb250ZXh0KS0+c2V0TGVnYWN5
RG93bmxvYWRDbGllbnQoYWRvcHRSZWYoKm5ldyBMZWdhY3lEb3dubG9hZENsaWVudCh3a0NsaWVu
dCwgY29udGV4dCkpKTsKLX0KLQogdm9pZCBXS0NvbnRleHRTZXRDb25uZWN0aW9uQ2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBjb25zdCBXS0NvbnRleHRDb25uZWN0aW9uQ2xpZW50QmFz
ZSogd2tDbGllbnQpCiB7CiAgICAgV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiktPmluaXRpYWxp
emVDb25uZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmgKaW5kZXggZGMyZTBkMTkyMzE1ZWU1NzJkMWQxZjY3OGFiYTYxZDZjMjRk
MTM5MS4uNDMxNTYwZDYwNzM0NWI1NTY3YjI3NjEzYjk3ZDUwMTJmNmIwMjBkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTI4LDcgKzI4LDYgQEAKIAog
I2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudC5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHREb3dubG9hZENsaWVu
dC5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRIaXN0b3J5Q2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2Vi
S2l0L1dLRGVwcmVjYXRlZC5oPgpAQCAtMTM4LDcgKzEzNyw2IEBAIFdLX0VYUE9SVCBXS0NvbnRl
eHRSZWYgV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24oV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlCiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFdLQ29udGV4dENsaWVudEJhc2UqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQ
T1JUIHZvaWQgV0tDb250ZXh0U2V0SGlzdG9yeUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwg
Y29uc3QgV0tDb250ZXh0SGlzdG9yeUNsaWVudEJhc2UqIGNsaWVudCk7Ci1XS19FWFBPUlQgdm9p
ZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qg
V0tDb250ZXh0RG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpOwogV0tfRVhQT1JUIHZvaWQgV0tD
b250ZXh0U2V0Q29ubmVjdGlvbkNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tD
b250ZXh0Q29ubmVjdGlvbkNsaWVudEJhc2UqIGNsaWVudCk7CiAKIFdLX0VYUE9SVCBXS0Rvd25s
b2FkUmVmIFdLQ29udGV4dERvd25sb2FkVVJMUmVxdWVzdChXS0NvbnRleHRSZWYgY29udGV4dCwg
V0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3QpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHREb3dubG9hZENsaWVudC5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNmOTZhYmVmMTE0NTg0NmIyMTE2MTE4
NTVmYjc3YjMyZDFkODc3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHREb3dubG9hZENs
aWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5k
ZWYgV0tDb250ZXh0RG93bmxvYWRDbGllbnRfaAotI2RlZmluZSBXS0NvbnRleHREb3dubG9hZENs
aWVudF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+Ci0KLXR5cGVkZWYgdm9pZCAoKldL
Q29udGV4dERvd25sb2FkRGlkU3RhcnRDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
RG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2
b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VD
YWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRS
ZWNlaXZlUmVzcG9uc2VDYWxsYmFjaykoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRSZWNlaXZlRGF0YUNh
bGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgdWlu
dDY0X3QgbGVuZ3RoLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgYm9vbCAoKldL
Q29udGV4dERvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayko
V0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVm
IG1pbWVUeXBlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgV0tTdHJpbmdSZWYg
KCpXS0NvbnRleHREb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxvYWREaWRDcmVhdGVEZXN0
aW5hdGlvbkNhbGxiYWNrKShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgV0tTdHJpbmdSZWYgcGF0aCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVm
IHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZEZpbmlzaENhbGxiYWNrKShXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7
Ci10eXBlZGVmIHZvaWQgKCpXS0NvbnRleHREb3dubG9hZERpZEZhaWxDYWxsYmFjaykoV0tDb250
ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3Is
IGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwotdHlwZWRlZiB2b2lkICgqV0tDb250ZXh0RG93bmxv
YWREaWRDYW5jZWwpKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLQ29udGV4dERvd25s
b2FkUHJvY2Vzc0RpZENyYXNoQ2FsbGJhY2spKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAo
KldLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0KShXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tDb250ZXh0RG93bmxvYWRDbGllbnRC
YXNlIHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZv
OwotfSBXS0NvbnRleHREb3dubG9hZENsaWVudEJhc2U7Ci0KLXR5cGVkZWYgc3RydWN0IFdLQ29u
dGV4dERvd25sb2FkQ2xpZW50VjAgewotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50QmFzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZl
cnNpb24gMC4KLSAgICBXS0NvbnRleHREb3dubG9hZERpZFN0YXJ0Q2FsbGJhY2sgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFN0YXJ0OwotICAgIFdLQ29udGV4dERvd25sb2Fk
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlQ2FsbGJhY2sgICAgICAgICAgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZVJl
c3BvbnNlOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkUmVjZWl2ZURhdGFDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGE7Ci0gICAgV0tDb250ZXh0RG93
bmxvYWRTaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZUNhbGxiYWNrICAgICAgICAgICBz
aG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ2FsbGJhY2sgICAgIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlk
Q3JlYXRlRGVzdGluYXRpb25DYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgZGlkQ3JlYXRl
RGVzdGluYXRpb247Ci0gICAgV0tDb250ZXh0RG93bmxvYWREaWRGaW5pc2hDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2g7Ci0gICAgV0tDb250ZXh0RG93
bmxvYWREaWRGYWlsQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWRGYWlsOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkQ2FuY2VsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2FuY2VsOwotICAgIFdLQ29udGV4dERvd25sb2Fk
UHJvY2Vzc0RpZENyYXNoQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
c0RpZENyYXNoOwotfSBXS0NvbnRleHREb3dubG9hZENsaWVudFYwOwotCi10eXBlZGVmIHN0cnVj
dCBXS0NvbnRleHREb3dubG9hZENsaWVudFYxIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVu
dEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U7Ci0KLSAg
ICAvLyBWZXJzaW9uIDAuCi0gICAgV0tDb250ZXh0RG93bmxvYWREaWRTdGFydENhbGxiYWNrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRTdGFydDsKLSAgICBXS0NvbnRleHRE
b3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNhbGxiYWNrICAgICAgICAg
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKLSAgICBXS0NvbnRleHREb3dubG9h
ZERpZFJlY2VpdmVSZXNwb25zZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVSZXNwb25zZTsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZFJlY2VpdmVEYXRhQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRhOwotICAgIFdLQ29u
dGV4dERvd25sb2FkU2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGVDYWxsYmFjayAgICAg
ICAgICAgc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGU7Ci0gICAgV0tDb250ZXh0RG93
bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNhbGxiYWNrICAgICBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLSAgICBXS0NvbnRleHREb3du
bG9hZERpZENyZWF0ZURlc3RpbmF0aW9uQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgIGRp
ZENyZWF0ZURlc3RpbmF0aW9uOwotICAgIFdLQ29udGV4dERvd25sb2FkRGlkRmluaXNoQ2FsbGJh
Y2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoOwotICAgIFdLQ29u
dGV4dERvd25sb2FkRGlkRmFpbENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkRmFpbDsKLSAgICBXS0NvbnRleHREb3dubG9hZERpZENhbmNlbCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENhbmNlbDsKLSAgICBXS0NvbnRleHRE
b3dubG9hZFByb2Nlc3NEaWRDcmFzaENhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHByb2Nlc3NEaWRDcmFzaDsKLQotICAgIC8vIFZlcnNpb24gMS4KLSAgICBXS0NvbnRleHREb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdDsKLX0gV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMTsKLQot
I2VuZGlmIC8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDcwYzI4N2JiMzQ3MDQ3M2FkNWJjNjRmY2ZkNTM4ODRjNzUyZWJlYzkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLRG93bmxvYWQuaCIKLQot
I2luY2x1ZGUgIkFQSUFycmF5LmgiCi0jaW5jbHVkZSAiQVBJRGF0YS5oIgotI2luY2x1ZGUgIkFQ
SURvd25sb2FkQ2xpZW50LmgiCi0jaW5jbHVkZSAiQVBJVVJMUmVxdWVzdC5oIgotI2luY2x1ZGUg
IkRvd25sb2FkUHJveHkuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotV0tUeXBlSUQgV0tEb3du
bG9hZEdldFR5cGVJRCgpCi17Ci0gICAgcmV0dXJuIHRvQVBJKERvd25sb2FkUHJveHk6OkFQSVR5
cGUpOwotfQotCi11aW50NjRfdCBXS0Rvd25sb2FkR2V0SUQoV0tEb3dubG9hZFJlZikKLXsKLSAg
ICByZXR1cm4gMDsKLX0KLQotV0tVUkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChX
S0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1
ZXN0OjpjcmVhdGUodG9JbXBsKGRvd25sb2FkKS0+cmVxdWVzdCgpKS5sZWFrUmVmKCkpOwotfQot
Ci1XS0RhdGFSZWYgV0tEb3dubG9hZEdldFJlc3VtZURhdGEoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCkKLXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+bGVnYWN5UmVzdW1lRGF0
YSgpKTsKLX0KLQotdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPmNhbmNlbChbZG93bmxvYWQgPSBtYWtl
UmVmKCp0b0ltcGwoZG93bmxvYWQpKV0gKGF1dG8qKSB7Ci0gICAgICAgIGRvd25sb2FkLT5jbGll
bnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwotICAgIH0pOwotfQotCi1XS1Bh
Z2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1BhZ2Uo
KSk7Ci19Ci0KLVdLQXJyYXlSZWYgV0tEb3dubG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQpCi17Ci0gICAgYXV0byYgcmVkaXJlY3RDaGFpbiA9ICB0b0ltcGwoZG93
bmxvYWQpLT5yZWRpcmVjdENoYWluKCk7Ci0gICAgVmVjdG9yPFJlZlB0cjxBUEk6Ok9iamVjdD4+
IHVybHM7Ci0gICAgdXJscy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHJlZGlyZWN0Q2hhaW4uc2l6
ZSgpKTsKLSAgICBmb3IgKGF1dG8mIHJlZGlyZWN0VVJMIDogcmVkaXJlY3RDaGFpbikKLSAgICAg
ICAgdXJscy51bmNoZWNrZWRBcHBlbmQoQVBJOjpVUkw6OmNyZWF0ZShyZWRpcmVjdFVSTC5zdHJp
bmcoKSkpOwotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdURk1vdmUodXJs
cykpLmxlYWtSZWYoKSk7Ci19Ci0KLWJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+
d2FzVXNlckluaXRpYXRlZCgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tE
b3dubG9hZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2Y3MjAyNzkzZDU0ZjU0
MmEzOTA5MjA0YTNjODBkYWNhOWFkMjFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdL
RG93bmxvYWRfaAotI2RlZmluZSBXS0Rvd25sb2FkX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jh
c2UuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tEZXByZWNhdGVkLmg+Ci0KLSNpZm5kZWYgX19jcGx1
c3BsdXMKLSNpbmNsdWRlIDxzdGRib29sLmg+Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVz
Ci1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1XS19FWFBPUlQgV0tUeXBlSUQgV0tEb3dubG9hZEdl
dFR5cGVJRCgpOwotCi1XS19FWFBPUlQgdWludDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQpIFdLX0NfQVBJX0RFUFJFQ0FURUQ7Ci1XS19FWFBPUlQgV0tVUkxSZXF1
ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdL
X0VYUE9SVCBXS0RhdGFSZWYgV0tEb3dubG9hZEdldFJlc3VtZURhdGEoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCk7Ci1XS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQ
YWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLQXJyYXlSZWYgV0tEb3du
bG9hZENvcHlSZWRpcmVjdENoYWluKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JU
IGJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9hZFJlZiBkb3dubG9h
ZCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLSNlbmRpZiAvLyBXS0Rvd25s
b2FkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYTY4YWI2YTAxMzNmNTc4ZWM1ODkzNzY2YTAwZjBmN2Q0NWE2OTA1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3du
bG9hZENsaWVudC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRG93
bmxvYWRDbGllbnRfaAorI2RlZmluZSBXS0Rvd25sb2FkQ2xpZW50X2gKKworI2luY2x1ZGUgPFdl
YktpdC9XS0Jhc2UuaD4KKwordHlwZWRlZiBib29sICgqV0tEb3dubG9hZFdpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJl
c3BvbnNlLCBXS1VSTFJlcXVlc3RSZWYgbmV3UmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UmVmIGNoYWxsZW5nZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIFdLU3RyaW5n
UmVmICgqV0tEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKShXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1N0cmluZ1JlZiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S0Rvd25sb2FkRGlkV3JpdGVEYXRhKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBsb25nIGxvbmcg
Ynl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90YWxCeXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYg
dm9pZCAoKldLRG93bmxvYWREaWRGaW5pc2gpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZEZhaWxXaXRo
RXJyb3IpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRXJyb3JSZWYgZXJyb3IsIFdLRGF0YVJl
ZiByZXN1bWVEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKwordHlwZWRlZiBzdHJ1Y3Qg
V0tEb3dubG9hZENsaWVudEJhc2UgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25zdCB2b2lkICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87
Cit9IFdLRG93bmxvYWRDbGllbnRCYXNlOworCit0eXBlZGVmIHN0cnVjdCBXS0Rvd25sb2FkQ2xp
ZW50VjAgeworICAgIFdLRG93bmxvYWRDbGllbnRCYXNlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmFzZTsKKworICAgIC8vIFZlcnNpb24gMC4KKyAgICBXS0Rvd25sb2Fk
V2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gICAgICAgICAgICAgICAgICAgICAgIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOworICAgIFdLRG93bmxvYWREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgICAgICAgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOworICAgIFdLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSAgICAgICAg
ICAgICAgICAgICAgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U7CisgICAgV0tEb3dubG9h
ZERpZFdyaXRlRGF0YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRXcml0
ZURhdGE7CisgICAgV0tEb3dubG9hZERpZEZpbmlzaCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWRGaW5pc2g7CisgICAgV0tEb3dubG9hZERpZEZhaWxXaXRoRXJyb3Ig
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRGYWlsV2l0aEVycm9yOworfSBXS0Rv
d25sb2FkQ2xpZW50VjA7CisKKyNlbmRpZiAvKiBXS0Rvd25sb2FkQ2xpZW50X2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWViY2M5MmQ3OTlhNTViYWQxNzExNWNiODZhN2M4YmM4NzA0NjMzNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCkBA
IC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV0tEb3dubG9hZFJlZi5oIgorCisjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNs
dWRlICJBUElEYXRhLmgiCisjaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRl
ICJBUElVUkxSZXF1ZXN0LmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgorI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLRG93bmxvYWRDbGllbnQuaCIKKyNpbmNsdWRlICJX
ZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDbGll
bnRUcmFpdHM8V0tEb3dubG9hZENsaWVudEJhc2U+IHsKKyAgICB0eXBlZGVmIHN0ZDo6dHVwbGU8
V0tEb3dubG9hZENsaWVudFYwPiBWZXJzaW9uczsKK307Cit9CisKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK1dLVHlwZUlEIFdLRG93bmxvYWRHZXRUeXBlSUQoKQoreworICAgIHJldHVybiB0
b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBlKTsKK30KKworV0tVUkxSZXF1ZXN0UmVmIFdLRG93
bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVybiB0
b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUodG9JbXBsKGRvd25sb2FkKS0+cmVxdWVzdCgp
KS5sZWFrUmVmKCkpOworfQorCit2b2lkIFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0Rvd25sb2FkQ2FuY2VsQ2Fs
bGJhY2sgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPmNhbmNlbChb
ZnVuY3Rpb25Db250ZXh0LCBjYWxsYmFja10oYXV0byogcmVzdW1lRGF0YSkgeworICAgICAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayh0b0FQSShyZXN1bWVEYXRhKSwgZnVu
Y3Rpb25Db250ZXh0KTsKKyAgICB9KTsKK30KKworV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmln
aW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9BUEko
dG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkpOworfQorCitib29sIFdLRG93bmxv
YWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgcmV0
dXJuIHRvSW1wbChkb3dubG9hZCktPndhc1VzZXJJbml0aWF0ZWQoKTsKK30KKwordm9pZCBXS0Rv
d25sb2FkU2V0Q2xpZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93bmxvYWRDbGllbnRC
YXNlKiBjbGllbnQpCit7CisgICAgY2xhc3MgRG93bmxvYWRDbGllbnQgOiBwdWJsaWMgQVBJOjpD
bGllbnQ8V0tEb3dubG9hZENsaWVudEJhc2U+LCBwdWJsaWMgQVBJOjpEb3dubG9hZENsaWVudCB7
CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChjb25zdCBXS0Rv
d25sb2FkQ2xpZW50QmFzZSogY2xpZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpbml0aWFs
aXplKGNsaWVudCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAgIAorICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNo
YWxsZW5nZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHsKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodG9BUEkoZG93bmxvYWQpLCB0
b0FQSShjaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1
aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSBvdmVycmlkZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFdyaXRlRGF0YSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRXcml0ZURhdGEodG9BUEkoZG93bmxvYWQp
LCBieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworCisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdlYktpdDo6RG93bmxv
YWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVBJOjpTdHJpbmcqIGRl
c3RpbmF0aW9uID0gdG9JbXBsKG1fY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNl
KHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVzcG9uc2UpLCB0b0FQSShzdWdnZXN0ZWRGaWxlbmFt
ZS5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgIGlmICgh
ZGVzdGluYXRpb24pIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24tPnN0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZvaWQgZGlkRmluaXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmluaXNoKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaCh0b0FQSShk
b3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRGYWlsV2l0aEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZEZhaWxX
aXRoRXJyb3IodG9BUEkoZG93bmxvYWQpLCB0b0FQSShlcnJvciksIHRvQVBJKHJlc3VtZURhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBw
cm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgZGlkRmFpbChkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIGRvd25sb2Fk
LnJlcXVlc3QoKS51cmwoKSwgIk5ldHdvcmsgcHJvY2VzcyBjcmFzaGVkIGR1cmluZyBkb3dubG9h
ZCIgfSwgbnVsbHB0cik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHdpbGxTZW5kUmVxdWVz
dChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9j
bGllbnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkocmVzcG9uc2UpLCB0b0FQSShyZXF1
ZXN0KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSkgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAg
ICAgIH0KKyAgICB9OworCisgICAgdG9JbXBsKGRvd25sb2FkKS0+c2V0Q2xpZW50KGFkb3B0UmVm
KCpuZXcgRG93bmxvYWRDbGllbnQoY2xpZW50KSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNThkNjdlZmZjZjRmYWRj
MGZmMGE5NGU2MGNiNmUyMTUyZmNmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXS0Rvd25sb2FkUmVmX2gKKyNkZWZpbmUgV0tEb3dubG9hZFJl
Zl9oCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93
bmxvYWRDbGllbnQuaD4KKworI2lmbmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGJvb2wu
aD4KKyNlbmRpZgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
K1dLX0VYUE9SVCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7CisKK1dLX0VYUE9SVCBX
S1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxv
YWQpOworCit0eXBlZGVmIHZvaWQgKCpXS0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2spKFdLRGF0YVJl
ZiByZXN1bWVEYXRhLCBjb25zdCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZv
aWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBm
dW5jdGlvbkNvbnRleHQsIFdLRG93bmxvYWRDYW5jZWxDYWxsYmFjayBjYWxsYmFjayk7CitXS19F
WFBPUlQgV0tQYWdlUmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCk7CitXS19FWFBPUlQgYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRl
ZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCB2b2lkIFdLRG93bmxvYWRTZXRD
bGllbnQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVu
dCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS0Rvd25s
b2FkUmVmX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
TmF2aWdhdGlvbkFjdGlvblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S05hdmlnYXRpb25BY3Rpb25SZWYuY3BwCmluZGV4IDhmZjM3ZTVjODdiZTg0NzIxY2IxYTgwODNm
M2EyMGYxNTU5YTU1MDEuLmUxMzcwNmRlNTAzYzk3YTUzNjI4NzViNWE3NmI0OTA0MTBmYjMxZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFj
dGlvblJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmLmNwcApAQCAtMzYsNyArMzYsMTAgQEAgV0tUeXBlSUQgV0tOYXZpZ2F0aW9u
QWN0aW9uR2V0VHlwZUlEKCkKICAgICByZXR1cm4gdG9BUEkoQVBJOjpOYXZpZ2F0aW9uQWN0aW9u
OjpBUElUeXBlKTsKIH0KIAotYm9vbCBXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93
bmxvYWQoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIGFjdGlvbikKK1dLU3RyaW5nUmVmIFdLTmF2aWdh
dGlvbkFjdGlvbkdldERvd25sb2FkQXR0cmlidXRlKFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rp
b24pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhY3Rpb24pLT5zaG91bGRQZXJmb3JtRG93bmxvYWQo
KTsKKyAgICBhdXRvJiBhdHRyaWJ1dGUgPSB0b0ltcGwoYWN0aW9uKS0+ZG93bmxvYWRBdHRyaWJ1
dGUoKTsKKyAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKyAgICByZXR1cm4gdG9BUEkoYXR0cmlidXRlLmltcGwoKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCmluZGV4
IDlkOGZjZjFlMTk5NzEzYjFmMDliMzI2MjBkMjE1NzkyNDU0ODZlOWMuLjRjMTNkNjM5YmQ3YWYy
NjkxMGMzZDcwMjM3M2Q2NTQ2MTUzYjk1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJlZi5oCkBAIC0zNCw3ICszNCw3IEBA
IGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0
VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBib29sIFdLTmF2aWdhdGlvbkFjdGlvblNob3VsZFBlcmZv
cm1Eb3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLTmF2aWdhdGlvbkFjdGlvbkdldERvd25sb2FkQXR0cmlidXRlKFdLTmF2aWdhdGlvbkFjdGlv
blJlZiBhY3Rpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVlNTExOWZkMGNjMjZjYjhlMTUwMzcxOTUwMGQ5
MjdlNDFhYjQyYWYuLjIyNGRjMTgxMTU0MWEyZDIxMmY0NGViODc0NWFiYjIxYzdhMTE1NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtNTUsNiArNTUsNyBA
QAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCIKICNpbmNsdWRlICJB
dXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNsdWRlICJDb250ZW50QXNTdHJp
bmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgogI2lu
Y2x1ZGUgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIK
ICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBAIC0xMjQwLDcgKzEyNDEsNyBA
QCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0
IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92
ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBSZWY8QVBJOjpOYXZpZ2F0aW9u
QWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJh
bWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVl
c3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYmICFt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKICAg
ICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMjUxLDE0ICsxMjUyLDE0IEBAIHZv
aWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJl
cXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3QpOwogCiAgICAg
ICAgICAgICBpZiAobV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSSgmcGFnZSks
IHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0
ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRh
KCkubW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRy
KCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAg
ICAgICBlbHNlIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdl
KSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlw
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJ
KHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9BUEko
JnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZp
Z2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5h
dGluZ0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJz
KSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5h
dGluZ0ZyYW1lKSwgdG9BUEkob3JpZ2luYWxSZXF1ZXN0LnB0cigpKSwgdG9BUEkocmVxdWVzdC5w
dHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmln
YXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rp
b24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91
c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkob3JpZ2luYWxSZXF1ZXN0
LnB0cigpKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUK
KyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5
JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4m
JiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291
cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMjY3
LDcgKzEyNjgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBh
Z2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAKICAgICAgICAgICAgIFJlZjxB
UEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJj
ZVJlcXVlc3QpOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlm
aWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVx
dWVzdC5wdHIoKSksIHRvQVBJKGZyYW1lTmFtZS5pbXBsKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIo
KSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
ICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih0b0FQSSgmcGFnZSks
IHRvQVBJKCZmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9u
VHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShu
YXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigp
KSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNvdXJj
ZVJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKQEAgLTIyNTksNiAr
MjI2MCwyNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnZVJlZiBw
YWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAgICAgICAgICAgcmV0dXJuIEFQ
STo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiAgICAg
ICAgIH0KIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBhY3Rpb24s
IFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRvQVBJKCZhY3Rpb24pLCB0
b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisK
KyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIHJlc3BvbnNlLCBX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50Lm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEkoJnJlc3BvbnNl
KSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJp
ZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5jb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xp
ZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZG93
bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKICAgICAgICAg
dm9pZCBkaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJp
ZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRCZWdpbk5hdmlnYXRp
b25HZXN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDM4MDZkMTg2YWE5ZmI5Nzc0N2E3M2Q5NzM2MDZh
NThlYjQxODhiNjAuLmE0YWFmZTRhOTM1YjMxMGEyMjAxYmY3YjRmNzQ1NjVlNTUyYjg0YTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25D
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50LmgKQEAgLTcxLDcgKzcxLDEzIEBAIHR5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmln
YXRpb25XZWJQcm9jZXNzRGlkVGVybWluYXRlQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXCiB0
eXBlZGVmIFdLRGF0YVJlZiAoKldLUGFnZU5hdmlnYXRpb25Db3B5V2ViQ3J5cHRvTWFzdGVyS2V5
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogdHlw
ZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFnZU5hdmlnYXRpb25Db3B5U2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKLSAgICAKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkFjdGlvbkRp
ZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25BY3Rp
b25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS05hdmlnYXRpb25S
ZXNwb25zZVJlZiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9u
Q29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKIHR5cGVkZWYg
V0tQbHVnaW5Mb2FkUG9saWN5ICgqV0tQYWdlTmF2aWdhdGlvbkRlY2lkZVBvbGljeUZvclBsdWdp
bkxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLUGx1Z2luTG9hZFBvbGljeSBjdXJyZW50
UGx1Z2luTG9hZFBvbGljeSwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdpbkluZm9EaWN0aW9uYXJ5LCBX
S1N0cmluZ1JlZiogdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRpb25EaWRCZWdpbk5hdmlnYXRp
b25HZXN0dXJlKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC0y
MTMsNiArMjE5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIHsK
IAogICAgIC8vIFZlcnNpb24gMy4KICAgICBXS1BhZ2VOYXZpZ2F0aW9uQ29weVNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxiYWNrIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmc7CisgICAgV0tQYWdlTmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
Q2FsbGJhY2sgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkOworICAgIFdLUGFnZU5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkQ2FsbGJhY2sgbmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWRDYWxsYmFjayBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogfSBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjM7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMy
MGM4OWZjYWE4MzEzMzE1MjE4MDAwZDIyYWFlYTc2YmY5ZDk3NgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmgKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tGcmFtZUluZm87CitA
Y2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIFdLRG93bmxvYWREZWxlZ2F0ZTsKKworTlNfQVNT
VU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIFdLRG93bmxvYWQgOiBOU09iamVjdAorCisv
KiBAYWJzdHJhY3QgVGhlIHJlcXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgor
ICBAZGlzY3Vzc2lvbiBJZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlm
ZmVyZW50IFVSTCwgb3JpZ2luYWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRo
ZSBkb3dubG9hZCBmb2xsb3dzIHRoZSByZWRpcmVjdC4KKyAqLworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBudWxsYWJsZSkgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CisK
Ky8qIEBhYnN0cmFjdCBUaGUgd2ViIHZpZXcgdGhhdCBvcmlnaW5hdGVkIHRoaXMgZG93bmxvYWQu
ICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqd2Vi
VmlldzsKKworLyogQGFic3RyYWN0IFRoZSBsb2NhdGlvbiB0byB3aGljaCB0aGUgZG93bmxvYWRl
ZCBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gVGhpcyBpcyB0aGUgZmlsZSBV
UkwgZnJvbSBXS0Rvd25sb2FkRGVsZWdhdGUncyBkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoKKyAqLworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5LCBudWxsYWJsZSkgTlNVUkwgKmRlc3Rp
bmF0aW9uOworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoYXQgcmVjZWl2ZXMgcHJvZ3Jl
c3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZTsKKworLyogQGFic3RyYWN0IENh
bmNlbCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8g
aW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgorIEBkaXNjdXNzaW9uIFRvIGF0
dGVtcHQgdG8gcmVzdW1lIHRoZSBkb3dubG9hZCwgY2FsbCBXS1dlYlZpZXcgcmVzdW1lRG93bmxv
YWRXaXRoRGF0YTogd2l0aCB0aGUgZGF0YSBnaXZlbiB0byB0aGUgY29tcGxldGlvbkhhbmRsZXIu
CisgSWYgbm8gcmVzdW1lIGF0dGVtcHQgaXMgcG9zc2libGUgd2l0aCB0aGlzIHNlcnZlciwgY29t
cGxldGlvbkhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBuaWwuCisgKi8KKy0gKHZvaWQpY2Fu
Y2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFibGUgcmVzdW1lRGF0YSkpY29t
cGxldGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmMxMTcwNGViYWYzNmQ5Nzc2MGM4YmRjOWY2ZTkyZjNkM2RiZTIxMzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQpAQCAt
MCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V0tEb3dubG9hZEludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCisj
aW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgiCisjaW1wb3J0ICJEb3dubG9h
ZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldLTlNE
YXRhLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKKyNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitjbGFzcyBEb3dubG9hZENsaWVudCBm
aW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNp
dCBEb3dubG9hZENsaWVudChpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAg
ICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1fcmVzcG9uZHNUb1dpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25I
YW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9h
ZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV0p
CisgICAgICAgICwgbV9yZXNwb25kc1RvRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0p
CisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRl
bjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0Rp
ZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2Fk
RGlkRmluaXNoOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IoW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkRmFpbFdpdGhF
cnJvcjpyZXN1bWVEYXRhOildKQorICAgIHsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3
aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFt
X2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKKwor
ICAgICAgICBSZXRhaW5QdHI8TlNVUkxSZXF1ZXN0PiBuc1JlcXVlc3QgPSByZXF1ZXN0Lm5zVVJM
UmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9k
eSk7CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIHdpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uOnN0YXRpY19jYXN0PE5TSFRUUFVSTFJlc3BvbnNlICo+KHJl
c3BvbnNlLm5zVVJMUmVzcG9uc2UoKSkgbmV3UmVxdWVzdDpuc1JlcXVlc3QuZ2V0KCkgZGVjaXNp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNrZXIgPSBXZWJL
aXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3
UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6KSldKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSBwb2xp
Y3kpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVy
SGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNo
ZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgc3dpdGNoIChw
b2xpY3kpIHsKKyAgICAgICAgICAgIGNhc2UgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2Vs
OgorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAg
ICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdzoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRB
cmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIFdLRG93bmxvYWRSZWRpcmVjdFBvbGlj
eSAoJWxkKSIsIChsb25nKXBvbGljeV07CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdldCgp
XTsKKyAgICB9CisKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxl
Z2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQor
ICAgICAgICAgICAgcmV0dXJuIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVj
dGlvblNwYWNlQW5kQ29udGludWUpOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndy
YXBwZXIoZG93bmxvYWQpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVy
KGNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGFsbGVuZ2UgPSBt
YWtlUmVmKGNoYWxsZW5nZSksIGNoZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxv
YWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikp
XSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNr
ZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwor
ICAgICAgICAgICAgc3dpdGNoIChkaXNwb3NpdGlvbikgeworICAgICAgICAgICAgY2FzZSBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbDoKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsID8gV2ViQ29y
ZTo6Q3JlZGVudGlhbChjcmVkZW50aWFsKSA6IFdlYkNvcmU6OkNyZWRlbnRpYWwoKSk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+
bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2Vs
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0
ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFByb3RlY3Rpb25TcGFjZToKKyAg
ICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9u
U3BhY2VBbmRDb250aW51ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1
bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCJJbnZhbGlkIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiAoJWxkKSIsIChsb25nKWRpc3Bvc2l0aW9uXTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdURjo6U3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlLCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgewor
ICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb0RlY2lkZURlc3RpbmF0aW9u
V2l0aFJlc3BvbnNlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25s
b2FkOndyYXBwZXIoZG93bmxvYWQpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnJlc3Bv
bnNlLm5zVVJMUmVzcG9uc2UoKSBzdWdnZXN0ZWRGaWxlbmFtZTpzdWdnZXN0ZWRGaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2Rvd25sb2FkID0gbWFrZVJlZihkb3dubG9h
ZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNr
ZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVn
YXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTCAq
ZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRp
b25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAg
ICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVVUkwpIHsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAg
ICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBiZSBhIGZpbGUgVVJMIl07CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBOU0ZpbGVNYW5hZ2VyICpm
aWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXTsKKyAgICAgICAgICAg
IGlmICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6W2Rlc3RpbmF0aW9uIFVSTEJ5RGVs
ZXRpbmdMYXN0UGF0aENvbXBvbmVudF0ucGF0aF0pIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25s
b2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNv
ZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6
OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6
ZGVzdGluYXRpb24ucGF0aF0pIHsKKyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlz
cGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWls
KFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJv
ckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5v
LCBkZXN0aW5hdGlvbi5wYXRoKTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgdWludDY0
X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxl
Z2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZFdyaXRl
RGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICB9
CisKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBm
aW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRG
aW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxv
YWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZCldOworICAgIH0KKworICAgIHZvaWQgZGlkRmFp
bChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRhKSBmaW5hbAorICAgIHsKKyAgICAg
ICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpIHJlc3VtZURhdGE6d3Jh
cHBlcihyZXN1bWVEYXRhKV07CisgICAgfQorCisgICAgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
KSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9t
YWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCB1c2VySW5mbzpuaWxdIHJl
c3VtZURhdGE6bmlsXTsKKyAgICB9CisKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3dubG9hZERl
bGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1fcmVzcG9uZHNUb1dpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRXcml0ZURh
dGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmluaXNoIDogMTsKKyAgICBib29sIG1f
cmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsKKworQGltcGxlbWVudGF0aW9uIFdL
RG93bmxvYWQKKworLSAodm9pZCljYW5jZWw6KHZvaWQgKF4pKE5TRGF0YSAqcmVzdW1lRGF0YSkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZG93bmxvYWQtPmNhbmNlbChbY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZGF0YSkgewor
ICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih3cmFwcGVyKGRhdGEpKTsKKyAgICB9KTsKK30KKworLSAoTlNVUkxSZXF1ZXN0ICopb3Jp
Z2luYWxSZXF1ZXN0Cit7CisgICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVx
dWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7
Cit9CisKKy0gKE5TVVJMICopZGVzdGluYXRpb24KK3sKKyAgICBhdXRvJiBkZXN0aW5hdGlvblBh
dGggPSBfZG93bmxvYWQtPmRlc3RpbmF0aW9uRmlsZW5hbWUoKTsKKyAgICBpZiAoZGVzdGluYXRp
b25QYXRoLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbTlNVUkwg
ZmlsZVVSTFdpdGhQYXRoOmRlc3RpbmF0aW9uUGF0aF07Cit9CisKKy0gKFdLV2ViVmlldyAqKXdl
YlZpZXcKK3sKKyAgICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsK
KyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGZyb21XZWJQ
YWdlUHJveHkoKnBhZ2UpOworfQorCistIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0
ZQoreworICAgIHJldHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0
RGVsZWdhdGU6KGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgX2Rvd25sb2FkLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBE
b3dubG9hZENsaWVudChkZWxlZ2F0ZSkpKTsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAg
X2Rvd25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
I3ByYWdtYSBtYXJrIFdLT2JqZWN0IHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfZG93bmxvYWQ7Cit9CisKK0BlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
RGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
RGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTIxM2RkY2ZlMmZkNjVhMGI3ZWNiNjQ2MmE5NjdjNDE5
ODk0ZjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGb3Vu
ZGF0aW9uLmg+CisKK0BjbGFzcyBXS0Rvd25sb2FkOworCisvKiBAZW51bSBXS0Rvd25sb2FkUmVk
aXJlY3RQb2xpY3kKKyBAYWJzdHJhY3QgVGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRl
Y2lzaW9uIGhhbmRsZXIgZnJvbSB0aGUgZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KKyBAY29uc3RhbnQgV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSByZWRpcmVjdC4KKyBAY29uc3Rh
bnQgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIHJlZGlyZWN0Lgor
ICovCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kp
IHsKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwsCisgICAgV0tEb3dubG9hZFJl
ZGlyZWN0UG9saWN5QWxsb3csCit9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90b2Nv
bCBXS0Rvd25sb2FkRGVsZWdhdGUgPE5TT2JqZWN0PgorQG9wdGlvbmFsCisKKy8qIEBhYnN0cmFj
dCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZlZCBhbiBIVFRQIHJlZGlyZWN0
aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZl
ZCB0aGUgcmVkaXJlY3QuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSByZWRpcmVjdGlvbiByZXNwb25z
ZS4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3IHJlcXVlc3QgdGhhdCB3aWxsIGJlIHNlbnQu
CisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgeW91IG11
c3QgaW52b2tlIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CisgdG8gcHJvY2VlZCB3aXRoIHRo
ZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlz
IG1ldGhvZCwgYWxsIHNlcnZlciBzdWdnZXN0ZWQgcmVkaXJlY3RzIHdpbGwgYmUgdGFrZW4uCisg
Ki8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCB3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjooTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihO
U1VSTFJlcXVlc3QgKilyZXF1ZXN0IGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5KSlkZWNpc2lvbkhhbmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2Vk
IHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIHRvIHJlc3BvbmQgdG8gYW4gYXV0aGVudGljYXRpb24g
Y2hhbGxlbmdlLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQgdGhhdCByZWNlaXZlZCB0
aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjaGFsbGVuZ2UgVGhlIGF1dGhl
bnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNvbXBs
ZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gcmVzcG9uZCB0byB0aGUgY2hhbGxlbmdl
LiBUaGUKKyBkaXNwb3NpdGlvbiBhcmd1bWVudCBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBvZiB0
aGUgZW51bWVyYXRlZCB0eXBlCisgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LiBXaGVuIGRpc3Bvc2l0aW9uIGlzIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50
aWFsLAorIHRoZSBjcmVkZW50aWFsIGFyZ3VtZW50IGlzIHRoZSBjcmVkZW50aWFsIHRvIHVzZSwg
b3IgbmlsIHRvIGluZGljYXRlIGNvbnRpbnVpbmcgd2l0aG91dCBhCisgY3JlZGVudGlhbC4KKyBA
ZGlzY3Vzc2lvbiBJZiB5b3UgZG8gbm90IGltcGxlbWVudCB0aGlzIG1ldGhvZCwgdGhlIHdlYiB2
aWV3IHdpbGwgcmVzcG9uZCB0byB0aGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlIHdpdGggdGhl
IE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2UgZGlzcG9zaXRp
b24uCisgKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
KiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogX051bGxhYmxlKSljb21wbGV0
aW9uSGFuZGxlcjsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVl
ZHMgdG8gcmVzcG9uZCB0byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRv
d25sb2FkIFRoZSBkb3dubG9hZCBmb3Igd2hpY2ggd2UgbmVlZCBhIGZpbGUgdG8gd2hpY2ggdG8g
d3JpdGUuCisgQHBhcmFtIHJlc3BvbnNlIFRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgdGhpcyBkb3du
bG9hZCB3YXMgdGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QsCisgb3IgYSBzeW50aGVzaXpl
ZCByZXNwb25zZSBmb3IgYmxvYiBkb3dubG9hZHMuCisgQHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1l
IFRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBj
b21wbGV0aW9uIGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVS
TCB0byBiZWdpbiB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUgZG93bmxvYWQuCisg
QGRpc2N1c3Npb24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNl
IHdpbGwgYmUgbnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRlbiBiZSB0aGUgc2Ft
ZSBhcyByZXNwb25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250ZW50IGNhbiBzcGVj
aWZ5IHRoZQorIHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRoZSBkZXN0aW5hdGlv
biBmaWxlIFVSTCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90
IGV4aXN0IGluIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2FuIGJlIHdyaXR0ZW4g
dG8uCisgKi8KKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIHN1Z2dlc3Rl
ZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1VSTCAqIF9OdWxsYWJsZSBkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRs
ZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNlaXZl
ZCBhbmQgd3JpdHRlbiBkYXRhIHRvIHRoZSBkZXN0aW5hdGlvbi4KKyBAcGFyYW0gZG93bmxvYWQg
VGhlIGRvd25sb2FkIHRoYXQgaGFzIHdyaXR0ZW4gZGF0YS4KKyBAcGFyYW0gYnl0ZXNXcml0dGVu
IFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc1dyaXR0ZW4g
VGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUgd3Jp
dHRlbi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIHJl
c3VtaW5nIGEgcHJldmlvdXMgZG93bmxvYWQsIHRoZW4KKyB0b3RhbEJ5dGVzV3JpdHRlbiB3aWxs
IGJlIGJ5dGVzV3JpdHRlbiBwbHVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYWQgYWxyZWFk
eSBiZWVuIGRvd25sb2FkZWQuCisgSWYgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpcyB1bmtu
b3duLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIHdpbGwgYmUgLTEuCisgKi8KKy0gKHZvaWQp
ZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0
ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZTsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZpbmlzaGVk
IHN1Y2Nlc3NmdWxseS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgZmluaXNo
ZWQuCisgKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxvYWQgKilkb3dubG9h
ZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZhaWxlZC4K
KyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgaGFzIGZhaWxlZC4KKyBAcGFyYW0g
ZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUgcmVhc29uLgorIEBwYXJhbSBy
ZXN1bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdLV2ViVmlldyByZXN1bWVEb3du
bG9hZFdpdGhEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlzIGRvd25sb2FkLgorICovCist
ICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJlc3VtZURhdGE7
CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDZjODk0MjBlNmUyN2IxNDNkYjAyNTQwNWNiMzNiN2E5ZDdjNGFmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkSW50ZXJuYWwu
aApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiRG93bmxvYWRQcm94eS5o
IgorI2ltcG9ydCAiV0tEb3dubG9hZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQ
cm94eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLRG93bmxvYWQ7Cit9OworCit9CisK
K0BpbnRlcmZhY2UgV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJ
OjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworICAgIFdl
YWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2RlbGVnYXRlOworfQorQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlv
bkFjdGlvbi5oCmluZGV4IDkzNDA3MGUzZGU0NDk4MmY1NzJiZDVhMTg4ZDEwY2I0OWNmNzIxMWYu
LjkyZWYwZmY0ZTgxNjhmODU3MmQ3Mzg4OGNiNmEwOTc4NDdiMjJkYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgK
QEAgLTc2LDYgKzc2LDEwIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMCksIGlvcyg4
LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIE5TVVJMUmVx
dWVzdCAqcmVxdWVzdDsKIAorLyohIEBhYnN0cmFjdCBUaGUgZG93bmxvYWQgYXR0cmlidXRlIG9m
IHRoZSBlbGVtZW50IHRoYXQgY2F1c2VkIHRoaXMgbmF2aWdhdGlvbi4KKyovCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlLCBjb3B5KSBOU1N0cmluZyAqZG93bmxvYWRB
dHRyaWJ1dGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKKwogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKIC8qISBAYWJzdHJhY3QgVGhlIG1vZGlm
aWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3aGVuIHRoZSBuYXZpZ2F0aW9uIHdhcyByZXF1
ZXN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCA0ZDIwYzgwY2VjMjZhN2MyODY5MmFhODZkMzRiNDBh
NmI3NTBmMGJlLi5iYmVlOGZlNmJmZWVhOTA4NzM3NjFlYjllZWRjNjE5YTM2NmVlMzg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb24ubW0KQEAgLTExNiw2ICsxMTYsMTQgQEAgc3RhdGljIFdLU3ludGhldGljQ2xpY2tU
eXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpTeW50aGUK
ICAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKIH0KIAorLSAoTlNT
dHJpbmcgKilkb3dubG9hZEF0dHJpYnV0ZQoreworICAgIGF1dG8mIGF0dHJpYnV0ZSA9IF9uYXZp
Z2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIGlmIChhdHRyaWJ1dGUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGF0dHJpYnV0ZTsKK30KKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAtIChXS1N5bnRoZXRpY0NsaWNrVHlwZSlfc3ludGhl
dGljQ2xpY2tUeXBlCiB7CkBAIC0xODcsNyArMTk1LDcgQEAgc3RhdGljIFdLU3ludGhldGljQ2xp
Y2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoV2ViS2l0OjpXZWJNb3VzZUV2ZW50OjpTeW50
aGUKIAogLSAoQk9PTClfc2hvdWxkUGVyZm9ybURvd25sb2FkCiB7Ci0gICAgcmV0dXJuIF9uYXZp
Z2F0aW9uQWN0aW9uLT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKTsKKyAgICByZXR1cm4gIV9uYXZp
Z2F0aW9uQWN0aW9uLT5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzTnVsbCgpOwogfQogCiAtIChCT09M
KV9zaG91bGRPcGVuRXh0ZXJuYWxVUkxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAppbmRleCA4
NWZkOTZlNGRkMGZlZmU2YmNmN2ZlZTlkNzhjNWU5OTJmNWJjMzcyLi41M2NjNWE5N2M3ZWE5MjU0
YTMyNTA0YTRkZTY0ZjZjM2ZmM2U1YTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tTeW50aGV0aWNDbGlj
a1R5cGUpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfY2FuSGFuZGxl
UmVxdWVzdDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3Bl
bkV4dGVybmFsU2NoZW1lcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkp
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVuQXBwTGlu
a3MgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOworQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5KSBCT09MIF9zaG91bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0RFUFJFQ0FURURf
V0lUSF9SRVBMQUNFTUVOVCgiZG93bmxvYWRBdHRyaWJ1dGUiLCBtYWNvcygxMC4xNSwgV0tfTUFD
X1RCQSksIGlvcygxMy4wLCBXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkV4dGVybmFsVVJMcyBXS19BUElfREVQUkVDQVRFRCgi
dXNlIF9zaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzIGFuZCBfc2hvdWxkT3BlbkFwcExpbmtzIiwg
bWFjb3MoMTAuMTEsIDEwLjExKSwgaW9zKDkuMCwgOS4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKaW5k
ZXggY2YyMTBhZTkxYjYyOWYyZmFjZTc3ZTFiZTM1MTBlYjg4NGEwNTg3OC4uMTY4Yjc5ZWNlMDY4
ZjhiY2NmYTZjYWIwYzAxZmU4MWUzZTZiMjU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmgKQEAgLTI5LDYg
KzI5LDcgQEAKIAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAorQGNsYXNzIFdLRG93bmxvYWQ7
CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLTmF2aWdhdGlvbkFjdGlvbjsKIEBjbGFz
cyBXS05hdmlnYXRpb25SZXNwb25zZTsKQEAgLTQwLDIwICs0MSwyNCBAQCBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNp
c2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdhdGlvbiB0byBjb250aW51ZS4KKyBA
Y29uc3RhbnQgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQgICAgVHVybiB0
aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQuCiAgKi8KIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkgewogICAgIFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywKKyAgICBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAogfSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQGVudW0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kKICBAYWJzdHJhY3QgVGhlIHBvbGljeSB0byBwYXNzIGJhY2sgdG8gdGhlIGRlY2lzaW9u
IGhhbmRsZXIgZnJvbSB0aGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5Q2FuY2VsICAgQ2FuY2VsIHRoZSBuYXZpZ2F0aW9uLgogIEBjb25zdGFudCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93ICAgIEFsbG93IHRoZSBuYXZpZ2F0aW9uIHRvIGNv
bnRpbnVlLgorIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkICAgIFR1cm4gdGhlIG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICAgIFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QWxsb3csCisgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpLAog
fSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpOwogCiAvKiEgQSBjbGFz
cyBjb25mb3JtaW5nIHRvIHRoZSBXS05hdmlnYXRpb25EZWxlZ2F0ZSBwcm90b2NvbCBjYW4gcHJv
dmlkZQpAQCAtMTY0LDYgKzE2OSwyMiBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkgewogICovCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxsb3dEZXByZWNhdGVkVExTOih2b2lkICheKShC
T09MKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAorLyoKKyBAYWJzdHJhY3QgQ2FsbGVkIGFmdGVyIHVzaW5nIFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUJlY29tZURvd25sb2FkLgorIEBwYXJhbSB3ZWJWaWV3IFRo
ZSB3ZWIgdmlldyB0aGF0IGNyZWF0ZWQgdGhlIGRvd25sb2FkLgorIEBwYXJhbSBuYXZpZ2F0aW9u
QWN0aW9uIFRoZSBhY3Rpb24gdGhhdCBpcyBiZWluZyB0dXJuZWQgaW50byBhIGRvd25sb2FkLgor
IEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisqLworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5h
dmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisv
KgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVh
dGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlvblJlc3BvbnNlIFRoZSByZXNwb25z
ZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxvYWQuCisgQHBhcmFtIGRvd25sb2Fk
IFRoZSBkb3dubG9hZC4KKyovCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
bmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNw
b25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAogTlNf
QVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggZjA5
YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTViNS4uOTkxM2QxNmMwYTk3NjA0OTk0
NjRjYzQzZWJhM2U0ZjE5ZTdkMGQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaApA
QCAtNTgsMTEgKzU4LDExIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS1NPQXV0aG9y
aXphdGlvbkxvYWRQb2xpY3kpIHsKICAgICBfV0tTT0F1dGhvcml6YXRpb25Mb2FkUG9saWN5SWdu
b3JlLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKIAotc3Rh
dGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdyArIDEpOwotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlv
blBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkICsgMSk7CitzdGF0aWMg
Y29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lE
b3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lCZWNvbWVEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9z
KDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMik7CiBzdGF0
aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93SW5OZXdQ
cm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgKyAxKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgV0tfQVBJX0RFUFJF
Q0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkp
ID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlPgogCkBAIC04OCw2ICs4OCw4IEBAIHN0YXRpYyBjb25zdCBXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVE
b3dubG9hCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNo
b3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWROZWdvdGlhdGVNb2Rlcm5UTFM6KE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOihXS0Rvd25s
b2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6
KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAvLyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRl
ZCB3aXRob3V0IG5hdmlnYXRpb24uCiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdl
c3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDRmMzZlMjMyNjQz
NzEwMjNkMzhmMjgzODEwNzUxYmNiYTk5ODU5ZGMuLmZhZTMxZjMxYjc5OTEyMWQwZTE3MzdjZDA3
MjEwODU0OTgwMjIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2ltcG9ydCAiQXV0
b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgorI2ltcG9ydCAiRG93bmxv
YWRNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2ltcG9ydCAi
TG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQgIlNh
bmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisjaW1wb3J0
ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJuYWwu
aCIKQEAgLTQ4MSwxMiArNDgzLDEyIEBAIHN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFyZWRQcm9j
ZXNzUG9vbDsKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRh
dGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAgICBy
ZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRl
RGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKKyAgICByZXR1cm4gW19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3dubG9h
ZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1ZXN0
KSldOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihOU0Rh
dGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRh
dGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1l
RG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwg
QVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCkp
OworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihf
cHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3Jl
LCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVzdW1l
RGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQ6Ok5vKSldOwog
fQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5n
OihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAq
PiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3YzRmZTRjZDhmYjlh
ZmZhOGNhMDMxOWI5NDg5M2MxZjRlNjg5NjZjLi5mMjQ5ODBjOWNmZjY3ZWNkM2JlZGU3M2ZlMjQw
MDgxOGFhNTBjMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNjIsNyArNjIsNyBAQAogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5Mb2Fk
Q2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMykpOwogI2VuZGlmCiAK
LUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdhdGU6
KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQgPF9XS0Rv
d25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhf
UkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxvYWREZWxlZ2F0ZSIsIG1hY29zKDEwLjEwLCBX
S19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMs
IHdlYWssIHNldHRlcj1fc2V0QXV0b21hdGlvbkRlbGVnYXRlOikgaWQgPF9XS0F1dG9tYXRpb25E
ZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEy
KSwgaW9zKDEwLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKQEAgLTgzLDggKzgzLDkgQEAK
IAogLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0
OihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9zKDEy
LjApKTsKIAotLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJlcXVl
c3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFT
dG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKF9XS0Rvd25sb2Fk
ICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAq
KXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKF9XS0Rvd25s
b2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJzaXRl
RGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdXZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1F
TlQoIldLV2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEp
LCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9h
ZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0
ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5n
V2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJXS1dlYlZpZXcuX3Jlc3VtZURvd25sb2FkV2l0aERhdGE6Y29tcGxldGlvbkhhbmRs
ZXI6IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CiAK
IC8vIFRlc3Qgb25seS4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5IHdoaWxlIG5vIHdlYiBjb250ZW50
IHByb2Nlc3NlcyBhcmUgcnVubmluZy4KIC0gKHZvaWQpX3Rlcm1pbmF0ZVNlcnZpY2VXb3JrZXJz
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCmluZGV4IDc2MWExZGEwZjY1YjM2
OTk3YmFiNDllNjZjMmMyOGU5ZmYwYjBjOGMuLjhkZmI5MmI3N2M5MzkzYmM1Y2VlZmNkM2NiNzUy
YTI2MzkwNTA3MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3LmgKQEAgLTM4LDYgKzM4LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBjbGFz
cyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW07CiBAY2xh
c3MgV0tDb250ZW50V29ybGQ7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0ZpbmRDb25m
aWd1cmF0aW9uOwogQGNsYXNzIFdLRmluZFJlc3VsdDsKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKQEAg
LTQ1MCw2ICs0NTEsMTggQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJB
cmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICAqLwogKyAoQk9PTClo
YW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjEzKSwgaW9zKDExLjApKTsKIAorLyogQGFic3RyYWN0IEJlZ2lucyBhIGRvd25sb2Fk
IGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50bHkgZGlzcGxheWVkIHdlYnBhZ2UgYXMgaWYg
dGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHR1cm5lZCBhIG5hdmlnYXRpb24gaW50byBhIGRvd25s
b2FkIGluc3RlYWQKKyBAcGFyYW0gcmVxdWVzdCBUaGUgcmVxdWVzdCBzcGVjaWZ5aW5nIHRoZSBV
UkwgdG8gZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgY2FsbGVk
IHdoZW4gdGhlIGRvd25sb2FkIGhhcyBzdGFydGVkLgorICovCistICh2b2lkKXN0YXJ0RG93bmxv
YWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBSZXN1
bWVzIGEgZG93bmxvYWQgdGhhdCBmYWlsZWQgb3Igd2FzIGNhbmNlbGVkLgorIEBwYXJhbSByZXN1
bWVEYXRhIERhdGEgZnJvbSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Ig
b3IgYSBXS0Rvd25sb2FkJ3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21w
bGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1l
ZC4KKyAqLworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVE
YXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRp
c2N1c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwg
dmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBu
aWwgd2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4
MTgyNzZhNzQ4ZTMwZDljNjc0Li4xYjQ0NDRhNTYyMjdhODIzN2Y0YWFkOTAyMmY1M2MyYTJhYTIz
Y2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZp
Z3VyYXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJX
S0ZyYW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0
ZS5oIgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZh
aWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5n
TmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKXN0YXJ0RG93bmxv
YWRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmRv
d25sb2FkUmVxdWVzdChyZXF1ZXN0LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
Y29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYgKGRvd25s
b2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9hZCkpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsK
K30KKworLSAodm9pZClyZXN1bWVEb3dubG9hZFdpdGhEYXRhOihOU0RhdGEgKilyZXN1bWVEYXRh
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBhdXRvIHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIg
YWxsb2NdIGluaXRGb3JSZWFkaW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAg
ICBbdW5hcmNoaXZlciBzZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQ
b2xpY3lSYWlzZUV4Y2VwdGlvbl07CisgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW3Vu
YXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZDbGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNE
aWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJyYXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNO
dW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNsYXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVz
dCBjbGFzc10sIG5pbF0gZm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07Cisg
ICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgIE5TU3RyaW5nICpwYXRoID0gW2Rp
Y3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJd
OworCisgICAgaWYgKCFwYXRoKQorICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlk
QXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiSW52YWxpZCByZXN1bWUgZGF0YSJdOworCisjaWYg
VVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIC8vIE1vamF2ZSBDRk5ldHdvcmsg
ZmFpbHMgdG8gcmVzdW1lIGEgZG93bmxvYWQgaWYgdGhlIGRlc3RpbmF0aW9uIGRvZXMgbm90IGV4
aXN0LgorICAgIC8vIElmIHNvbWVvbmUgaGFzIHJlbW92ZWQgdGhlIGRlc3RpbmF0aW9uIGZpbGUs
IG1ha2UgYW4gZW1wdHkgZmlsZSBhdCB0aGF0IGxvY2F0aW9uLgorICAgIGlmICghW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnBhdGhdKQorICAgICAgICBb
W05TRGF0YSBkYXRhXSB3cml0ZVRvRmlsZTpwYXRoIGF0b21pY2FsbHk6WUVTXTsKKyNlbmRpZgor
CisgICAgX3BhZ2UtPnJlc3VtZURvd25sb2FkKEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlp
bmcocmVzdW1lRGF0YSksIHBhdGgsIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihj
b21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxv
YWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOwor
fQorCiAtIChXS05hdmlnYXRpb24gKilnb1RvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9y
d2FyZExpc3RJdGVtICopaXRlbQogewogICAgIHJldHVybiB3cmFwcGVyKF9wYWdlLT5nb1RvQmFj
a0ZvcndhcmRJdGVtKGl0ZW0uX2l0ZW0pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDg1NGIyMzMxMDEzMmU3ZGFk
ZWU2NDkzZWY3NjNhMTYxODA3NWQwZGMuLjUwYTYyYjU3MzI0MDllZWRhZWQ3ODBhYmVmN2EzODc5
Zjc0OGI4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9O
UyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogI2VuZGlmCiAKIEBjbGFzcyBXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZTsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdLRnJhbWVJbmZvOwog
QGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZl
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5o
CmluZGV4IGI0ZDgyNmI5YTcyNDc4ZmQwYzAzZTZiNGIwMTg5ZjA3Mjk5Y2VjNzMuLmVhODIwMzJh
MWNkYWNhNmI0NmU5YmMxZmNhMDVkOGRlOTAwNDVmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oCkBAIC0yOCwxMiArMjgsMTQgQEAKIAog
QGNsYXNzIFdLRnJhbWVJbmZvOwogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogCi1XS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKK1dLX0NMQVNT
X0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBX
S19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpCiBAaW50ZXJmYWNlIF9XS0Rvd25sb2Fk
IDogTlNPYmplY3QgPE5TQ29weWluZz4KIAotLSAodm9pZCljYW5jZWw7CisrIChpbnN0YW5jZXR5
cGUpZG93bmxvYWRXaXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKWNh
bmNlbDsKIC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCmluZGV4IGRmZWZlMGYxNjZhNTQ5
ZGRlNjViZTEwMjJlYjVjMWZmZGVjYzJkYmMuLmQ1ZTExYWQ2OTQ1NGVkOGRlYWIzNTU2YjA5Mjdm
NTBkOGIzMmUwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tEb3dubG9hZC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KQEAgLTI4LDY2ICsyOCw4NyBAQAogCiAjaW1wb3J0ICJBUElEb3dubG9h
ZENsaWVudC5oIgogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJX
S05TRGF0YS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPHd0Zi9X
ZWFrT2JqQ1B0ci5oPgogCi1AaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQgewotICAgIEFQSTo6
T2JqZWN0U3RvcmFnZTxXZWJLaXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKK0FMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCitzdGF0aWMgTlNNYXBUYWJsZTxXS0Rvd25sb2Fk
ICosIF9XS0Rvd25sb2FkICo+ICpkb3dubG9hZFdyYXBwZXJNYXAoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8TlNNYXBUYWJsZT4+IHRhYmxlOworICAgIGlmICghdGFi
bGUuZ2V0KCkpCisgICAgICAgIHRhYmxlLmdldCgpID0gW05TTWFwVGFibGUgd2Vha1RvV2Vha09i
amVjdHNNYXBUYWJsZV07CisgICAgcmV0dXJuIHRhYmxlLmdldCgpLmdldCgpOwogfQorQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKK0lHTk9SRV9XQVJOSU5HU19CRUdJTigiZGVw
cmVjYXRlZC1pbXBsZW1lbnRhdGlvbnMiKQorQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkCitJ
R05PUkVfV0FSTklOR1NfRU5ECiAKLS0gKHZvaWQpZGVhbGxvYworLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRG93bmxvYWQyOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKLSAgICBfZG93bmxvYWQt
Pn5Eb3dubG9hZFByb3h5KCk7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgX2Rvd25sb2FkID0gZG93bmxvYWQ7CisgICAgcmV0dXJuIHNl
bGY7Cit9CiAKLSAgICBbc3VwZXIgZGVhbGxvY107CisrIChpbnN0YW5jZXR5cGUpZG93bmxvYWRX
aXRoRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfV0tEb3dubG9h
ZCAqd3JhcHBlciA9IFtkb3dubG9hZFdyYXBwZXJNYXAoKSBvYmplY3RGb3JLZXk6ZG93bmxvYWRd
KQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKyAgICBfV0tEb3dubG9hZCAqd3JhcHBlciA9IFtb
W19XS0Rvd25sb2FkIGFsbG9jXSBpbml0V2l0aERvd25sb2FkMjpkb3dubG9hZF0gYXV0b3JlbGVh
c2VdOworICAgIFtkb3dubG9hZFdyYXBwZXJNYXAoKSBzZXRPYmplY3Q6d3JhcHBlciBmb3JLZXk6
ZG93bmxvYWRdOworICAgIHJldHVybiB3cmFwcGVyOwogfQogCiAtICh2b2lkKWNhbmNlbAogewot
ICAgIF9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKl9kb3dubG9hZCldIChh
dXRvKikgeworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFr
ZVJlZigqX2Rvd25sb2FkLT5fZG93bmxvYWQpXSAoYXV0byopIHsKICAgICAgICAgZG93bmxvYWQt
PmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5nZXQoKSk7CiAgICAgfSk7CiB9CiAK
IC0gKHZvaWQpcHVibGlzaFByb2dyZXNzQXRVUkw6KE5TVVJMICopVVJMCiB7Ci0gICAgX2Rvd25s
b2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+cHVi
bGlzaFByb2dyZXNzKFVSTCk7CiB9CiAKIC0gKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKIHsKLSAg
ICByZXR1cm4gX2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBC
b2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKKyAgICByZXR1cm4gX2Rvd25s
b2FkLT5fZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlV
cGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOwogfQogCiAtIChXS1dlYlZpZXcgKilv
cmlnaW5hdGluZ1dlYlZpZXcKIHsKLSAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdlID0gX2Rv
d25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKKyAgICBpZiAoYXV0byogb3JpZ2luYXRpbmdQYWdl
ID0gX2Rvd25sb2FkLT5fZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFnZSgpKQogICAgICAgICByZXR1
cm4gW1tmcm9tV2ViUGFnZVByb3h5KCpvcmlnaW5hdGluZ1BhZ2UpIHJldGFpbl0gYXV0b3JlbGVh
c2VdOwogICAgIHJldHVybiBuaWw7CiB9CiAKIC0oTlNBcnJheTxOU1VSTCAqPiAqKXJlZGlyZWN0
Q2hhaW4KIHsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPnJlZGlyZWN0Q2hh
aW4oKSwgW10gKGF1dG8mIHVybCkgLT4gTlNVUkwgKiB7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJy
YXkoX2Rvd25sb2FkLT5fZG93bmxvYWQtPnJlZGlyZWN0Q2hhaW4oKSwgW10gKGF1dG8mIHVybCkg
LT4gTlNVUkwgKiB7CiAgICAgICAgIHJldHVybiB1cmw7CiAgICAgfSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoQk9PTCl3YXNVc2VySW5pdGlhdGVkCiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+
d2FzVXNlckluaXRpYXRlZCgpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+d2Fz
VXNlckluaXRpYXRlZCgpOwogfQogCiAtIChOU0RhdGEgKilyZXN1bWVEYXRhCiB7Ci0gICAgcmV0
dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPmxlZ2FjeVJlc3VtZURhdGEoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcihfZG93bmxvYWQtPl9kb3dubG9hZC0+bGVnYWN5UmVzdW1l
RGF0YSgpKTsKIH0KIAogLSAoV0tGcmFtZUluZm8gKilvcmlnaW5hdGluZ0ZyYW1lCiB7Ci0gICAg
cmV0dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5mcmFtZUluZm8oKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6d3JhcHBlcigmX2Rvd25sb2FkLT5fZG93bmxvYWQtPmZyYW1lSW5mbygpKTsK
IH0KIAogLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCkBAIC05OSw3ICsxMjAsNyBA
QAogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAogewotICAgIHJldHVybiAqX2Rvd25sb2Fk
OworICAgIHJldHVybiAqX2Rvd25sb2FkLT5fZG93bmxvYWQ7CiB9CiAKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0
ZS5oCmluZGV4IGE4M2Y5MDI5YjVjNzNlYzVmOWRiNzRmMTQwN2MyODY0ZTI1MTEzNTguLjY1ZWFj
Y2FjYjVmNzBlMTRhZTNiOTczODdmNDY4YTgzYTdiYjdjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAt
MzEsNiArMzEsOCBAQAogCiBAcHJvdG9jb2wgX1dLRG93bmxvYWREZWxlZ2F0ZSA8TlNPYmplY3Q+
CiBAb3B0aW9uYWwKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKIC0gKHZvaWQp
X2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQ7CiAtICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMp
KTsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlOwpAQCAtNDYsNCArNDgsNSBAQAogLSAo
Qk9PTClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgc2hvdWxkRGVjb2RlU291cmNl
RGF0YU9mTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xMy40KSwgaW9zKDExLjMpKTsKIAogLSAoTlNTdHJpbmcgKilfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6
KE5TU3RyaW5nICopZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6KEJPT0wgKilhbGxvd092ZXJ3cml0
ZSBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJfZG93bmxvYWQ6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6IiwgbWFjb3Mo
MTAuMTAsIDEwLjEzLjQpLCBpb3MoOC4wLCAxMS4zKSk7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaAppbmRleCBlMTI5MGIzZTU1M2FlY2VkMjJkNGZjNmQ5
MDg2MzQzNzA5MmQ0MDEyLi5jYTk0YzIxNzM3NTdhNTRhMGM3NTVjYmYzMGY4ZTA1YTBiNzVjOWNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxv
YWRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tE
b3dubG9hZEludGVybmFsLmgKQEAgLTI1LDE2ICsyNSwxMiBAQAogCiAjaW1wb3J0ICJfV0tEb3du
bG9hZC5oIgogCi0jaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCi0jaW1wb3J0ICJXS09iamVjdC5o
IgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdGVt
cGxhdGU8PiBzdHJ1Y3QgV3JhcHBlclRyYWl0czxEb3dubG9hZFByb3h5PiB7Ci0gICAgdXNpbmcg
V3JhcHBlckNsYXNzID0gX1dLRG93bmxvYWQ7Ci19OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKK0Bp
bnRlcmZhY2UgX1dLRG93bmxvYWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIFJldGFp
blB0cjxXS0Rvd25sb2FkPiBfZG93bmxvYWQ7CiB9Ci0KLUBpbnRlcmZhY2UgX1dLRG93bmxvYWQg
KCkgPFdLT2JqZWN0PgogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCmluZGV4IGUyZmE1YzVjNWQ5Yzll
NWQ5NjU1NmU0YTFmYzhjZGFmZTkyMTEzZmUuLmVhZGNkNDNkYjNkOWJiNTk2ZWRlOTgwM2EzODZj
MjcwMWIxNDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIH0KIAogcHJpdmF0ZToKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHkpIG92ZXJyaWRlCisgICAgdm9pZCBsZWdhY3lEaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJL
aXREb3dubG9hZD4gZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9h
ZCgmZG93bmxvYWRQcm94eSk7CiAgICAgICAgIHdlYmtpdERvd25sb2FkU3RhcnRlZChkb3dubG9h
ZC5nZXQoKSk7CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgd2Via2l0RG93
bmxvYWREZXN0aW5hdGlvbkNyZWF0ZWQoZG93bmxvYWQuZ2V0KCksIHBhdGgpOwogICAgIH0KIAot
ICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikgb3ZlcnJpZGUKKyAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6RGF0YSop
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9h
ZCA9IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsK
ICAgICAgICAgaWYgKHdlYmtpdERvd25sb2FkSXNDYW5jZWxsZWQoZG93bmxvYWQuZ2V0KCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRD
bGllbnQuaAppbmRleCA3NWQ1MTIyMWQyYzM1MTgyZjg5NGRhOTg2MTNkMWNjNDBkMGYwMTVlLi5i
N2Y2NDkzMTBhNDg4NGY5MmY1MTY1ZDBjYmY3NTY1MzhlMTQwNmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKQEAgLTQ2
LDEyICs0NiwxMiBAQCBwdWJsaWM6CiAgICAgCiBwcml2YXRlOgogICAgIC8vIEZyb20gQVBJOjpE
b3dubG9hZENsaWVudAotICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwor
ICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiwgdWlu
dDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgZmluYWw7CiAgICAgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmluZyk+JiYpIGZpbmFsOwogICAg
IHZvaWQgZGlkRmluaXNoKERvd25sb2FkUHJveHkmKSBmaW5hbDsKLSAgICB2b2lkIGRpZEZhaWwo
RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImLCBBUEk6OkRhdGEqKSBmaW5hbDsKICAgICB2b2lkIGxlZ2FjeURpZENhbmNlbChEb3dubG9h
ZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERv
d25sb2FkUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVu
dC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50
Lm1tCmluZGV4IDNkMzFiZGJmNDNhMzZlZWJjZDIzNjk4NWZhNjhiNDlkMTYxZTRkYjQuLjYwNzU2
MmFlZTg4ZTc2NjlmOGQ5MTg2ZmRkODI0YjYzNTk1NWM2YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tCkBAIC0zMyw2
ICszMyw3IEBACiAjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CiAjaW1wb3J0ICJTeXN0ZW1QcmV2aWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tEb3dubG9h
ZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIK
ICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldlYkNyZWRlbnRpYWwuaCIKQEAg
LTQ3LDYgKzQ4LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0FMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCisKIExlZ2FjeURvd25sb2FkQ2xpZW50OjpMZWdhY3lEb3dubG9h
ZENsaWVudChpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgOiBtX2RlbGVn
YXRlKGRlbGVnYXRlKQogewpAQCAtNzYsNyArNzksNyBAQCBzdGF0aWMgU3lzdGVtUHJldmlld0Nv
bnRyb2xsZXIqIHN5c3RlbVByZXZpZXdDb250cm9sbGVyKERvd25sb2FkUHJveHkmIGRvd25sb2Fk
UAogfQogI2VuZGlmCiAKLXZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0YXJ0KERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCit2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdh
Y3lEaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogewogI2lmIFVTRShTWVNU
RU1fUFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9h
ZCgpKSB7CkBAIC05MCw3ICs5Myw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFN0
YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2Rl
bGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRTdGFydDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndy
YXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTA0LDcgKzEwNyw3IEBAIHZv
aWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5LCBjb25zCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25s
b2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLm5z
VVJMUmVzcG9uc2UoKV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxv
YWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2
ZVJlc3BvbnNlOnJlc3BvbnNlLm5zVVJMUmVzcG9uc2UoKV07CiB9CiAKIHZvaWQgTGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHks
IHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2
NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCkBAIC0xMTgsOSArMTIxLDkgQEAgdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSwgdWludDY0X3QKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRv
d25sb2FkRGlkV3JpdGVEYXRhVG90YWxCeXRlc1dyaXR0ZW5Ub3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5
KSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNX
cml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRX
aXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkV3JpdGVEYXRhOmJ5dGVzV3Jp
dHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGVdOwogICAgIGVsc2UgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZURhdGEpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVEYXRhOmJ5dGVzV3Jp
dHRlbl07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxv
YWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVjZWl2ZURhdGE6Ynl0
ZXNXcml0dGVuXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQpAQCAtMTMx
LDcgKzEzNCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3duCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFthdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBjaGVja2VyID0gQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCks
IEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNv
bXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpIHsKKyAgICBbbV9kZWxl
Z2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTp3cmFwcGVy
KGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIo
W2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxl
Z2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCkgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVk
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0
aW9uSGFuZGxlcigpOwpAQCAtMTY3LDcgKzE3MCw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGll
bnQ6OmRpZENyZWF0ZURlc3RpbmF0aW9uKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNv
CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENyZWF0ZURl
c3RpbmF0aW9uKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkaWRDcmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CisgICAgICAgIFttX2Rl
bGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihkb3dubG9hZFByb3h5KV0gZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOwogfQog
CiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSkKQEAgLTE4Miw3ICsxODUsNyBAQCB2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNl
bmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkUHJvY2Vzc0RpZENyYXNo
KQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2g6d3JhcHBlcihk
b3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZFByb2Nlc3NEaWRD
cmFzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxvd092ZXJ3cml0ZSwgU3RyaW5nKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTIwNCwxMSArMjA3LDExIEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKERvd25sb2Fk
UHJveHkmCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVBbGxvd092ZXJ3cml0ZSkgewogICAgICAgICBCT09MIGFs
bG93T3ZlcndyaXRlID0gTk87CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCi0gICAgICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CisgICAg
ICAgIE5TU3RyaW5nICpkZXN0aW5hdGlvbiA9IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxsb3dPdmVyd3JpdGU6
JmFsbG93T3ZlcndyaXRlXTsKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
RU5ECiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGFsbG93T3ZlcndyaXRlID8gQWxsb3dPdmVy
d3JpdGU6OlllcyA6IEFsbG93T3ZlcndyaXRlOjpObywgZGVzdGluYXRpb24pOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2Fk
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVy
OikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQk9P
TCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIg
PSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5n
ZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0
aW5hdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0yMzMsMTAgKzIzNiwx
MCBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGaW5pc2goRG93bmxvYWRQcm94eSYg
ZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25s
b2FkRGlkRmluaXNoKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6d3Jh
cHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZp
bmlzaDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KV1dOwogfQogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9y
KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3du
bG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRh
KikKIHsKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNT
eXN0ZW1QcmV2aWV3RG93bmxvYWQoKSkgewpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgV2ViQ29yZTo6CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZEZhaWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
UHJveHkpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CiB9CiAK
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5
JiBkb3dubG9hZFByb3h5KQpAQCAtMjYzLDEzICsyNjYsMTMgQEAgdm9pZCBMZWdhY3lEb3dubG9h
ZENsaWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCiAj
ZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZENhbmNlbCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOndyYXBwZXIoZG93bmxvYWRQcm94
eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldXTsKIH0KIAogdm9p
ZCBMZWdhY3lEb3dubG9hZENsaWVudDo6d2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkUHJveHksIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9k
ZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAg
ICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpyZXF1
ZXN0LnVybCgpLnN0cmluZygpXV07CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dL
RG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6W05TVVJMIF93ZWJfVVJMV2l0aFdURlN0cmluZzpy
ZXF1ZXN0LnVybCgpLnN0cmluZygpXV07CiAKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3Zl
KHJlcXVlc3QpKTsKIH0KQEAgLTMwMSw0ICszMDQsNiBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xp
ZW50OjpyZWxlYXNlQWN0aXZpdHlUb2tlbklmTmVjZXNzYXJ5KERvd25sb2FkUHJveHkmIGRvd25s
bwogfQogI2VuZGlmCiAKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgKaW5kZXggMDQyZTc4ODU0MTFkNDE3N2ZjZTljNjc1ZWQ4ZDQ4ZjEyYmIz
ZDRkNi4uOTY3ODM3YWZlMTRiZDgzNTRjNTZkNmJlZmU1ZDI5MTM3NmFiODdhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKQEAgLTEyNiw2
ICsxMjYsMTAgQEAgcHJpdmF0ZToKIAogICAgICAgICBSZWZQdHI8QVBJOjpTdHJpbmc+IHNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXZWJQYWdlUHJveHkmLCB1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFJlZlB0cjxBUEk6OlN0cmluZz4mIGNoYWxsZW5nZVN0cmluZywgY29u
c3QgVVJMJikgb3ZlcnJpZGU7CiAKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVj
b21lRG93bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgRG93bmxv
YWRQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxv
YWQoV2ViUGFnZVByb3h5JiwgRG93bmxvYWRQcm94eSYpIGZpbmFsOworCiAjaWYgVVNFKFFVSUNL
X0xPT0spCiAgICAgICAgIHZvaWQgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiB1
dGkpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYkNvcmU6OlNoYXJlZEJ1ZmZlciYpIG92ZXJyaWRlOwpA
QCAtMjM1LDYgKzIzOSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYlByb2Nl
c3NEaWRCZWNvbWVSZXNwb25zaXZlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViQ3J5cHRvTWFzdGVy
S2V5Rm9yV2ViVmlldyA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29t
ZURvd25sb2FkIDogMTsKKyAgICAgICAgYm9vbCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRW5kTmF2aWdh
dGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KaW5kZXgg
ZTdjYjA4M2M0ZmYyYjMzOTA5M2Q3MTk0ODNiNTk0YzgwNWZkNTRlYy4uYjM4ZmNmZmUyMmQ3YmNi
OTliOGYwZTBmNzBmZTlmNmRiZjJjZDU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNDMsNiArNDMsNyBAQAogI2ltcG9ydCAi
U09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCisj
aW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tO
U0RpY3Rpb25hcnkuaCIKQEAgLTE4Nyw2ICsxODgsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6
c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdhdGUp
CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQmVj
b21lUmVzcG9uc2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KV07CisgICAgbV9u
YXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6bmF2aWdh
dGlvbkFjdGlvbjpkaWRCZWNvbWVEb3dubG9hZDopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3Om5hdmlnYXRpb25SZXNwb25zZTpk
aWRCZWNvbWVEb3dubG9hZDopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMuY29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6KV07CiAgICAg
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRCZWdpbk5hdmlnYXRpb25HZXN0
dXJlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRC
ZWdpbk5hdmlnYXRpb25HZXN0dXJlOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
Vmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRM
aXN0SXRlbTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEVuZE5hdmln
YXRpb25HZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwpAQCAt
NDcyLDExICs0NzYsMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgTlNVUkxSZXF1ZXN0ICpuc1VSTFJlcXVlc3QgPSB3cmFwcGVyKEFQSTo6
VVJMUmVxdWVzdDo6Y3JlYXRlKG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKSkpOwotICAgICAg
ICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3Rd
IHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxd
LnNjaGVtZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxk
UGVyZm9ybURvd25sb2FkKCkpCi0gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kb3dubG9h
ZCgpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIt
PnVzZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKKyAgICAgICAgICAgIGlmIChbTlNV
UkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0XQorICAgICAgICAgICAg
ICAgIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoW25zVVJMUmVxdWVzdCBV
UkxdLnNjaGVtZSkKKyAgICAgICAgICAgICAgICB8fCBbbnNVUkxSZXF1ZXN0LlVSTC5zY2hlbWUg
aXNFcXVhbFRvU3RyaW5nOkAiYmxvYiJdKSB7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVz
ZShkZWZhdWx0V2Vic2l0ZVBvbGljaWVzLmdldCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICB9CiAKQEAgLTU1NSw5ICs1NTgsMTIgQEAgQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19CRUdJTgogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9h
ZDoKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0Fw
cExpbms6CiAgICAgICAgICAgICB0cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0
ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVzKV0gKGJv
b2wgb3B0aW1pemVkTG9hZCkgewogICAgICAgICAgICAgICAgIGlmIChvcHRpbWl6ZWRMb2FkKSB7
CkBAIC02NzEsNyArNjc3LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGll
bnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWcKICAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
Y2FzZSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZDoKKyAgICAgICAg
Y2FzZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkOgogICAgICAgICAg
ICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xMDg1LDYgKzEwOTEsNDIgQEAgUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW4KICAgICBy
ZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwp
KTsKIH0KIAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikg
ZGlkQmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25S
ZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Cisg
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcg
bmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVE
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYlBhZ2VQcm94
eSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxv
YWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSAg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIHV0aSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggZDExZDNhMDJhYWY2M2NlMzI5YWU4MWNiOTVh
MmYwYzAxNzJhMGFlNy4uYTRiMzk3YzZlZGVhZDU0NzY5MjA5ZjJhZGIwMGRjZmViNDJhZjUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJ
LmgiCiAjaW1wb3J0ICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCAyOWMxN2JlYjMz
ZWQ2NzZjOWM0NDRhNGQ3MmE2MDFmNGNkMDc3ZjM2Li5jNjFiYjNmZDJlZTA0NmYzODI0YzQwYWI5
OTE4MWMwZmNlZTJhMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC01OSw3ICs1OSwxMSBAQCBEb3dubG9hZFByb3h5
OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNp
dGVEYXRhU3RvcgogewogfQogCi1Eb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVm
YXVsdDsKK0Rvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkKK3sKKyAgICBpZiAobV9kaWRT
dGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sobnVsbHB0cik7Cit9CiAK
IHN0YXRpYyBSZWZQdHI8QVBJOjpEYXRhPiBjcmVhdGVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKQEAgLTExNyw3ICsxMjEsOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZQogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5s
YXN0KCkgIT0gcmVxdWVzdC51cmwoKSkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChy
ZXF1ZXN0LnVybCgpKTsKIAotICAgIG1fY2xpZW50LT5kaWRTdGFydCgqdGhpcyk7CisgICAgaWYg
KG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKHRoaXMpOwor
ICAgIG1fY2xpZW50LT5sZWdhY3lEaWRTdGFydCgqdGhpcyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpA
QCAtMTQ1LDEzICsxNTEsMjIgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcmkKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi12b2lkIERvd25sb2FkUHJveHk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBB
bGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2FkUHJveHk6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxs
b3dPdmVyd3JpdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fY2xpZW50LT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVu
YW1lKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChB
bGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxl
IHsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXMtYS1kb3du
bG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQtRGlzcG9zaXRpb24g
aGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgZnJv
bSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIGlmIChyZXNwb25zZS5pc0F0dGFjaG1lbnRX
aXRoRmlsZW5hbWUoKSB8fCAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpICYmIG1fc3VnZ2Vz
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIGVsc2UgaWYgKCFtX3N1Z2dlc3RlZEZpbGVu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBtX3N1Z2dlc3RlZEZp
bGVuYW1lOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5k
RmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1l
VHlwZSgpKTsKKworICAgIG1fY2xpZW50LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1
Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRp
b24pIG11dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAor
ICAgICAgICBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSksIGFsbG93T3ZlcndyaXRlKTsKICAgICB9KTsKIH0KQEAgLTE3MywxMSArMTg4LDE2IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdhY3lSZXN1bWVEYXRhID0gY3JlYXRl
RGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvcik7
CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xlZ2FjeVJlc3VtZURhdGEu
Z2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0
IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQo
KnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNldENsaWVudChSZWY8QVBJOjpEb3du
bG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAwNzE4ZTg5M2FiMjU1YmIzYTM1
ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi44Y2M3ODZlYmE2M2E4OGYyZWQ2YzIxYzUxYWRlMmYyNmE0
OWIxYmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgKQEAgLTg3LDcgKzg3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2FzVXNl
ckluaXRpYXRlZChib29sIHZhbHVlKSB7IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAg
ICAgYm9vbCB3YXNVc2VySW5pdGlhdGVkKCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlh
dGVkOyB9CiAKLSAgICBTdHJpbmcgZGVzdGluYXRpb25GaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQorICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25G
aWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQogICAgIHZv
aWQgc2V0RGVzdGluYXRpb25GaWxlbmFtZShjb25zdCBTdHJpbmcmIGQpIHsgbV9kZXN0aW5hdGlv
bkZpbGVuYW1lID0gZDsgfQogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQpAQCAtMTAyLDEyICsx
MDIsOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpGcmFtZUluZm8mIGZyYW1lSW5mbygpIHsgcmV0dXJu
IG1fZnJhbWVJbmZvLmdldCgpOyB9CiAKICAgICBBUEk6OkRvd25sb2FkQ2xpZW50JiBjbGllbnQo
KSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsgfQotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IERv
d25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBBUEk6OkRv
d25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRnJh
bWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOwotCi0gICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKLSAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q2xpZW50KFJlZjxBUEk6OkRvd25sb2FkQ2xp
ZW50PiYmKTsKKyAgICB2b2lkIHNldERpZFN0YXJ0Q2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY2FsbGJhY2spIHsgbV9kaWRTdGFydENhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayk7IH0KKyAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dl
c3RlZEZpbGVuYW1lOyB9CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIHZvaWQgZGlk
U3RhcnQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSk7CkBAIC0xMTgsNyArMTE1LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRGaW5pc2goKTsKICAgICB2b2lkIGRpZEZhaWwoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSk7CiAgICAgdm9pZCB3aWxs
U2VuZFJlcXVlc3QoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVkaXJlY3RSZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlKTsKLSAgICB2
b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBBbGxv
d092ZXJ3cml0ZSk+JiYpOworICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFN0cmluZyYmIHN1Z2dl
c3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlLCBBbGxvd092ZXJ3cml0ZSk+JiYpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IERvd25sb2FkUHJveHkoRG93bmxvYWRQcm94eU1hcCYsIFdlYnNpdGVEYXRhU3RvcmUmLCBB
UEk6OkRvd25sb2FkQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgRnJhbWVJbmZvRGF0YSYsIFdlYlBhZ2VQcm94eSopOworCisgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgRG93bmxvYWRQcm94eU1hcCYgbV9kb3dubG9h
ZFByb3h5TWFwOwogICAgIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKQEAg
LTEzNCw2ICsxMzcsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxVUkw+IG1fcmVkaXJlY3RDaGFp
bjsKICAgICBib29sIG1fd2FzVXNlckluaXRpYXRlZCB7IHRydWUgfTsKICAgICBSZWY8QVBJOjpG
cmFtZUluZm8+IG1fZnJhbWVJbmZvOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxv
YWRQcm94eSopPiBtX2RpZFN0YXJ0Q2FsbGJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDM0ODdkNGUzNDRlMThhMjAyM2QyOWJlYzQ2MGNhY2FlMDU1
MjU3ZWQuLjA0NmE2YjUwMmYwZjZhNDc3ODlkZDkxNGFmMTRmZjYxZWUxNmMxYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdl
ci5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNYXAuaCIKICNpbmNsdWRlICJEb3dubG9hZFBy
b3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJGcmFtZUluZm9EYXRhLmgiCiAjaWYgRU5BQkxFKExF
R0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKICNpbmNsdWRlICJMZWdhY3lDdXN0b21Qcm90
b2NvbE1hbmFnZXJNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlclByb3h5TWVzc2FnZXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDIwMjk3YTUzYmNlMzY1Y2IyMTY0OGJlMmE4YmExMDIwMjhmYTQ2MTYuLmU2NGZk
NDM3MDAzODQyNjdhYTNiYmE3MTIzNmMzMzZhMDdlNTgwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNTksNiArNTksNyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0b3JNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eS5oIgpAQCAtMzEzOSw3ICszMTQwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBS
ZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lv
blNlbmRlcj4mJiBzZW5kZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rp
b24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4m
JiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbjogZnJhbWVJRDogJWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lBY3Rpb246
ICV1IiwgZnJhbWUuZnJhbWVJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCkBAIC0zMTc5
LDcgKzMxODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rp
b24gPSBQb2xpY3lBY3Rpb246OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQ
b2xpY3lBY3Rpb246OlVzZSB8fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikg
ewotICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlv
biwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVz
KSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzE5MiwxMSArMzE5MywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgQQogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
cHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNv
cHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3Zl
KHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgc291cmNl
UHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLAorICAgIHByb2Nlc3MoKS5wcm9jZXNz
UG9vbCgpLnByb2Nlc3NGb3JOYXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJv
Y2Vzcy5jb3B5UmVmKCksIHNvdXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
V1RGTW92ZSh3ZWJzaXRlRGF0YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiks
IG5hdmlnYXRpb25BY3Rpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBzb3VyY2VQcm9j
ZXNzID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCiAgICAgICAgIHBvbGljaWVzID0gV1RGTW92
ZShwb2xpY2llcyksIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudF0gKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmlnYXRpb24s
IFN1c3BlbmRlZFBhZ2VQcm94eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJp
bmcmIHJlYXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9uIGhhcyBi
ZWVuIGRlc3Ryb3llZCwgdGhlbiBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAgIGlmIChpc0Ns
b3NlZCgpIHx8ICFuYXZpZ2F0aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpKSkgewotICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xp
Y3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNl
bmRlcikpOworICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24s
IG5hdmlnYXRpb24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25B
Y3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTMyMzIsMTEgKzMyMzMsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91bGRQcm9jZXNzU3dhcCA/IG51bGxwdHIg
OiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFu
ZGxlKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZ
ZXMgOiBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgICAgIHJlY2VpdmVk
UG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91bGRQcm9j
ZXNzU3dhcCA/IG51bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFuZGxlKSwgc2hvdWxk
UHJvY2Vzc1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMgOiBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNp
dGVQb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29u
dGludWVMb2FkSW5OZXdQcm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCit2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2ll
cz4mJiB3ZWJzaXRlUG9saWNpZXMsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNl
PiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+JiYgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9u
c2UsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9h
ZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNp
b24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7
CkBAIC0zMjUyLDYgKzMyNTMsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmIChh
Y3Rpb24gPT0gUG9saWN5QWN0aW9uOjpEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBk
b3dubG9hZCBwcm94eS4KICAgICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nl
c3NQb29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUsIG1fZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0LCB0aGlzLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+
b3JpZ2luYXRpbmdGcmFtZUluZm8oKSA6IEZyYW1lSW5mb0RhdGEgeyB9KTsKKyAgICAgICAgZG93
bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIG5hdmlnYXRpb25BY3Rpb25PclJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0
aW9uT3JSZXNwb25zZSldIChhdXRvKiBkb3dubG9hZFByb3h5KSB7CisgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzIHx8ICFkb3dubG9hZFByb3h5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIFdURjo6c3dpdGNoT24obmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UsCisgICAg
ICAgICAgICAgICAgWyZdIChjb25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiByZXNw
b25zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJlc3BvbnNlLT5kb3dubG9hZEF0dHJp
YnV0ZSgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRQcm94eS0+
c2V0U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRlKCkpOworICAg
ICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkKCp0aGlzLCByZXNwb25zZS5nZXQoKSwgKmRvd25sb2FkUHJveHkpOwor
ICAgICAgICAgICAgICAgIH0sIFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4m
IGFjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCgqdGhpcywgYWN0aW9uLmdldCgpLCAqZG93bmxv
YWRQcm94eSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfSk7
CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKSB7CiAgICAgICAgICAgICBkb3dubG9hZC5zZXRXYXNV
c2VySW5pdGlhdGVkKG5hdmlnYXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKSk7CiAgICAgICAgICAg
ICBkb3dubG9hZC5zZXRSZWRpcmVjdENoYWluKG5hdmlnYXRpb24tPnRha2VSZWRpcmVjdENoYWlu
KCkpOwpAQCAtNTEwNCwxMCArNTExOCwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
IG5hdmlnYXRpb24tPnNldE9yaWdpbmF0aW5nRnJhbWVJbmZvKG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSk7CiAgICAgbmF2aWdhdGlvbi0+c2V0RGVzdGluYXRpb25GcmFtZVNlY3VyaXR5T3JpZ2lu
KGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbik7CiAKKyAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5G
cmFtZU5hdmlnYXRpb24gPSBmcmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6
IG51bGxwdHI7CisgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YS5mcmFtZUlEKSA6IG51bGxwdHI7CisgICAgYXV0byBkZXN0aW5hdGlvbkZy
YW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoRnJhbWVJbmZvRGF0YSB7IGZyYW1lSW5m
byB9LCB0aGlzKTsKKyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsK
KyAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCisgICAgICAg
IHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKKyAgICBl
bHNlIGlmICghZnJvbUFQSSkgeworICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBvcmln
aW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51
bGxwdHI7CisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
V1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UpOworICAg
IH0KKworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBM
aW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgorICAgICAgICAmJiBkZXN0aW5hdGlv
bkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQorICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9t
YWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKKyAgICAgICAg
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdh
dGlvblR5cGU6OkJhY2tGb3J3YXJkOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkg
PSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQ
STo6TmF2aWdhdGlvbkFjdGlvbjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LCBzb3VyY2VGcmFtZUluZm8uZ2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6
Om51bGxvcHQsIFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgp
LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFp
bkZyYW1lTmF2aWdhdGlvbik7CisKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAg
aWYgKGZyYW1lLmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0
KSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25v
cmluZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgd2FzIGhh
bmRsZWQgYnkgY29udGVudCBmaWx0ZXIiKTsKLSAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0
aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJl
dHVybiByZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmln
YXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgIH0KICNlbmRpZgogCkBAIC01
MTE5LDExICs1MTUyLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKEFQ
UF9CT1VORF9ET01BSU5TKQogICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0g
U2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgotICAgIAotICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJh
bWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIGZyYW1lSW5mbywgdXNl
ckRhdGFPYmplY3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0
ZVBvbGljaWVzKiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZl
QnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNB
cHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CisKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgZnJhbWUgPSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5k
ZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2Jq
ZWN0ID0gcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2ll
cyogcG9saWNpZXMsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmRE
b21haW4pIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1l
SUQ6ICVsbHUsIG5hdmlnYXRpb25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSwgc2FmZUJyb3dz
aW5nV2FybmluZzogJWQsIGlzQXBwQm91bmREb21haW46ICVkIiwgZnJhbWUtPmZyYW1lSUQoKS50
b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAo
dW5zaWduZWQpcG9saWN5QWN0aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3Vu
ZERvbWFpbik7CiAKLSAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNp
ZXMpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNlbmRlciA9
IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUo
bmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVz
ID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghcG9saWNpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRl
ZmF1bHRQb2xpY2llcyA9IG1fY29uZmlndXJhdGlvbi0+ZGVmYXVsdFdlYnNpdGVQb2xpY2llcygp
KQpAQCAtNTEzMiw3ICs1MTY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAg
ICAgICAgICBpZiAocG9saWNpZXMpCiAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNl
dEVmZmVjdGl2ZUNvbnRlbnRNb2RlKGVmZmVjdGl2ZUNvbnRlbnRNb2RlQWZ0ZXJBZGp1c3RpbmdQ
b2xpY2llcygqcG9saWNpZXMsIG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkpKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBv
bGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCwgZnJhbWUsIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICAg
ICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLmdldCgpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBmcmFtZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CiAg
ICAgICAgIH07CiAKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MTk5LDEwICs1
MjMyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBhdXRvIHByb3RvY29sID0gc2hv
dWxkU2VuZFNlY3VyaXR5T3JpZ2luRGF0YSA/IGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90
b2NvbCA6IHJlcXVlc3QudXJsKCkucHJvdG9jb2woKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUt
PmJlZ2luQXBwQm91bmREb21haW5DaGVjayhob3N0LnRvU3RyaW5nKCksIHByb3RvY29sLnRvU3Ry
aW5nKCksIGxpc3RlbmVyKTsKICNlbmRpZgotICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1l
TmF2aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVs
bHB0cjsKLSAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGF1dG8gd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIgPSBu
YXZpZ2F0aW9uLT5pc0xvYWRlZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKCkgfHwgdXNlckluaXRpYXRl
ZEFjdGl2aXR5OwogICAgIGlmICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKQEAgLTUyMTAs
MjQgKzUyNDAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAgICBpZiAo
bV9wb2xpY3lDbGllbnQpCi0gICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUobGlzdGVuZXIpLCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbiksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBk
ZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFt
ZUluZm8pLCB0aGlzKTsKLSAgICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFt
ZUluZm87Ci0gICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFt
ZSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNv
cHlSZWYoKTsKLSAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpIHsKLSAgICAgICAgICAgIGF1dG8q
IG9yaWdpbmF0aW5nUGFnZSA9IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgq
b3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cjsKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEpLCBvcmlnaW5hdGluZ1BhZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBzaG91bGRP
cGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBv
bGljeURlY2lzaW9uCi0gICAgICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWlu
RnJhbWUoKQotICAgICAgICAgICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwo
KS5ob3N0KCkgIT0gcmVxdWVzdC51cmwoKS5ob3N0KCkpCi0gICAgICAgICAgICAmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6
QmFja0ZvcndhcmQ7Ci0KLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJj
ZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBw
TGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlv
bik7Ci0KICNpZiBIQVZFKEFQUF9TU08pCiAgICAgICAgIGlmIChtX3Nob3VsZFN1cHByZXNzU09B
dXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8IG1fc2hvdWxkU3Vw
cHJlc3NTT0F1dGhvcml6YXRpb25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikKICAgICAg
ICAgICAgIG5hdmlnYXRpb25BY3Rpb24tPnVuc2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlv
bigpOwpAQCAtNTMyOSw3ICs1MzQzLDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAg
TUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTCht
X3Byb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYo
ZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBpZGVudGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJv
d3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsK
KyAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKyAgICBpZiAoZnJh
bWUpCisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RG
TW92ZShmcmFtZUluZm8pLCB0aGlzKTsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5
ID0gbV9wcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtz
ID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVy
bCgpLmhvc3QoKTsKKyAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJ
bmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0s
IHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAg
ICAKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIs
IGxpc3RlbmVySUQsIGZyYW1lSUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAg
ICAvLyBGSVhNRTogQXNzZXJ0IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBo
ZXJlIG9uY2UgY2xpZW50cyBvZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMg
Z28gYXdheS4KICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VS
VF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAt
NTMzOCwyNCArNTM2MCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQs
IGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZN
b3ZlKHNlbmRlcikpOworICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbnVsbHB0ciwgbnVsbHB0ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShz
ZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91
bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6Tm8pKTsKIAogICAgIGlmIChtX3BvbGljeUNs
aWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVO
YW1lLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmpl
Y3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZlB0
cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAoZnJhbWUpCi0g
ICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1v
dmUoZnJhbWVJbmZvKSwgdGhpcyk7Ci0KLSAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBtX3Byb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7Ci0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFw
cExpbmtzID0gbV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1
ZXN0LnVybCgpLmhvc3QoKTsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpO
YXZpZ2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNv
dXJjZUZyYW1lSW5mby5nZXQoKSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBVUkwgeyB9LCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2
aXR5KSk7Ci0KKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbigqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCByZXF1ZXN0LCBm
cmFtZU5hbWUsIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNU
b09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCiAgICAgICAgIG1f
bmF2aWdhdGlvbkNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywg
bmF2aWdhdGlvbkFjdGlvbi5nZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotCi0gICAg
fQotICAgICAgICAKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQ
b2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKQEAgLTUzNzYsOCArNTM4NywxMCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJl
cXVlc3QudXJsKCkpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlc3BvbnNlLnVy
bCgpKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlv
bklEID8gbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxw
dHI7CisgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25z
ZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlz
KS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRy
aWJ1dGUpOworCiAgICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQ
YWdlSUQsIGZyYW1lSUQsIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZN
b3ZlKG5hdmlnYXRpb24pLAotICAgICAgICBwcm9jZXNzXSAoUG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5n
PiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICAgICAgcHJv
Y2VzcywgbmF2aWdhdGlvblJlc3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJ
OjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVC
cm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFz
c2VydCB0aGUgQVBJOjpXZWJzaXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVu
dHMgb2YgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVC
cm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzODYsMTQgKzUzOTks
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0
ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAg
ICAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZN
b3ZlKG5hdmlnYXRpb25SZXNwb25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxk
RXhwZWN0U2FmZUJyb3dzaW5nUmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5S
ZXN1bHQ6Ok5vKSk7CiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNs
aWVudC0+ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJl
cXVlc3QsIGNhblNob3dNSU1FVHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5z
Zm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNl
IHsKLSAgICAgICAgYXV0byBuYXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNw
b25zZTo6Y3JlYXRlKEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0
aGlzKS5nZXQoKSwgcmVxdWVzdCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRB
dHRyaWJ1dGUpOworICAgIGVsc2UKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJlc3Bv
bnNlKSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTYw
MzIsNiArNjA0MywxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVEb3dubG9h
ZFJlcXVlc3QoZG93bmxvYWQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lRG93bmxv
YWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVzdW1lRG93
bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXN1bWVEYXRhLCBwYXRoLCBDYWxsRG93
bmxvYWREaWRTdGFydDo6WWVzKTsKKyAgICBkb3dubG9hZC5zZXREZXN0aW5hdGlvbkZpbGVuYW1l
KHBhdGgpOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRvd25s
b2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgp
LCB0aGlzLCByZXF1ZXN0LCB7IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2so
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlQ29udGVudFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBwYWdlQ2xpZW50
KCkuZGlkQ2hhbmdlQ29udGVudFNpemUoc2l6ZSk7CkBAIC02NjAxLDE4ICs2NjI1LDI2IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0
TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAg
aWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlz
aykgewotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRl
RGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0
YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKLSAgICAgICAgcmV0
dXJuOyAgICAKLSAgICB9CisgICAgc3RydWN0IERvd25sb2FkSW5mbyB7CisgICAgICAgIFN0cmlu
ZyB1cmw7CisgICAgICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICB9OworICAgIE9w
dGlvbmFsPERvd25sb2FkSW5mbz4gZG93bmxvYWRJbmZvOworICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spCisgICAgICAgIGRvd25s
b2FkSW5mbyA9IHt7IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVz
dWx0RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwsIHsgfSB9fTsKICAgICBpZiAoaXRlbS5hY3Rpb24o
KSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0
byYgaGl0VGVzdFJlc3VsdCA9IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRU
ZXN0UmVzdWx0RGF0YSgpOwotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxv
YWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIGhpdFRlc3RSZXN1bHQuYWJz
b2x1dGVMaW5rVVJMKSwgaGl0VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51
SXRlbVRhZ0Rvd25sb2FkTWVkaWFUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNz
UG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2Fj
dGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0
ZU1lZGlhVVJMKSk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgZG93bmxvYWRJbmZvID0ge3sg
aGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwsIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3Rl
ZEZpbGVuYW1lIH19OworICAgIH0KKyAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVu
dUl0ZW1UYWdEb3dubG9hZE1lZGlhVG9EaXNrKQorICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBt
X2FjdGl2ZUNvbnRleHRNZW51Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNv
bHV0ZU1lZGlhVVJMLCB7IH0gfX07CisgICAgaWYgKGRvd25sb2FkSW5mbykgeworICAgICAgICBh
dXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNp
dGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgZG93bmxvYWRJbmZvLT51cmwpLCBkb3dubG9h
ZEluZm8tPnN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRD
YWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvKiBkb3du
bG9hZCkgeworICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkKCp0aGlzLCAqZG93bmxvYWQpOworICAgICAgICB9KTsKICAg
ICB9CiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVs
bGluZ1doaWxlVHlwaW5nKSB7CiAgICAgICAgIFRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoIVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggMjMyZWQzN2JkMWJmOTMwYWFmOGY5OTg0MzZkNjMwNTQyZWE5MzA4NS4uOThlODYzNmU4ZWI2
MGNkNGEwNGJiMDhhOGY5ZjEwYmY3OTliMmI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTExNjYsOCArMTE2Niw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIFBv
bGljeURlY2lzaW9uU2VuZGVyOwogICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyA6IGJvb2wgeyBObywgWWVzIH07Ci0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6
V2Vic2l0ZVBvbGljaWVzPiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFs
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1By
b2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7Ci0gICAgdm9pZCByZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkm
LCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRl
cj4mJik7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFj
dGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBW
YXJpYW50PFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRpb25B
Y3Rpb24+PiYmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBX
aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgdm9pZCByZWNlaXZlZE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlv
biosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJl
ZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3Zl
ZEl0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwogCkBAIC0x
MjgxLDYgKzEyODEsOCBAQCBwdWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBj
cmVhdGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJl
ZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBoYW5k
bGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxv
YWQoY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lkIGRvd25sb2Fk
UmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChEb3dubG9hZFByb3h5Kik+JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1Rv
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IDViNzRhY2I0YjAwNTZlNzExNzcwYmJjMTQwZGFjN2Y1M2MyNzQ2
YzMuLjEwYzU3NTVmYmQwNWNjMDE2MGRlNTRiZmRkNDlmZmNjMjRhZTc2ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNDgsNyArMTE0OCw3IEBA
IERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAK
LURvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQ
STo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxvYWRQcm94eSYg
V2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9y
ZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVE
YXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9h
ZERpZFN0YXJ0KQogewogICAgIGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFBy
b3h5KGRhdGFTdG9yZSwgUmVzb3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwog
CkBAIC0xMTU2LDcgKzExNTYsNyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVz
dW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQogICAgIGlmICgh
cGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShw
YXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUpOwogCi0gICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93
bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRo
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEu
ZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxv
YWREaWRTdGFydCksIDApOwogICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCA5ZDc2NTQ5YTIyZmQ3ZWQyNDE2
YWE2NjMyMDM4OTQyMWFjYWY4ZjE1Li5hY2U1N2ZlOGNiMDFjNjQ0NjM1ZGJkNGVjOGNjNDY5NWFl
NTM1ODIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTEx
OSw2ICsxMTksNyBAQCBpbnQgd2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNz
VGhyb3VnaHB1dFFPUygpOwogI2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3Rh
cnQgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9v
bDsKIAogY2xhc3MgV2ViUHJvY2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBs
PEFQSTo6T2JqZWN0OjpUeXBlOjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQcm9jZXNzUG9vbD4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMjA3LDcg
KzIwOCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQo
V2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUg
PSB7IH0pOwotICAgIERvd25sb2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3Rv
cmUmLCBXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93
bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNv
bnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxv
YWREaWRTdGFydCk7CiAKICAgICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YShSZWZQdHI8QVBJOjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRs
ZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MDM3MDQw
NGU0OWE3OGQ4YWJlNzMyMmE3OGVjOTJmYzFjMGJhMGEyLi44ZTBkYmNiODg1OWIyNjRjNTYyM2I5
NDEyNzZiMjgzY2VkMWNmMzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTIxOCw3ICsyMTgsNiBAQAogCQkxQTQzRTgyQTE4OEYzQ0RD
MDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAg
LyogX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0IC8qIFdL
Q29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlz
dG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE0NDVCQTAxODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTQ0NUJB
MzE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEyMTg0RDVGQ0YwMDRC
MzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBX
S0NvbnRleHRDb25uZWN0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29u
bmVjdGlvbkNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDgzMkNDMUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3Jk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJD
QTFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJMUE0ODMyQ0UxQTlCQzQ4NDAwOEI0
REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0ODMyQ0QxQTlCQzQ4NDAwOEI0REZFIC8qIFdL
V2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oICovOyB9OwpAQCAtMzMxLDcgKzMzMCw3IEBACiAJ
CTFBQjdENENBMTI4OEFBQTcwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDODEyODhBQUE3MDBDRkQw
OEMgLyogRG93bmxvYWRQcm94eS5oICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMg
LyogRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93
bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjdENjFBMTI4OEI5RDkw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5TWVzc2FnZXMuaCAqLzsgfTsKLQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8q
IFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFCN0Q3OEQxMjg4Q0Q5QTAw
Q0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVm
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFC
OEExRUMxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUIxODQwMDgwOTAwRTlB
RTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUVFMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQ
b2xpY3lDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjhBMUVEMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFGMDE4
NDAwQjAwMDBFOUFFNjkgLyogV0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdL
UGFnZUZvcm1DbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMTIyMSw2ICsxMjIwLDcgQEAKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIx
IC8qIE5ldHdvcmtTZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzIwQ0I5RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAq
LzsgfTsKIAkJNUMyNjk1ODUyMDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVy
c1ByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDMjY5NTg0MjAwNDJGMTIwMDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMy
OThEQTAxQzNERjAyMTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZF
IC8qIFBlbmRpbmdEb3dubG9hZC5oICovOyB9OworCQk1QzJFQkRGQTI1NjQzODBCMDBENTVCMDUg
LyogV0tEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMyRUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzM1
OUMwRDIxNTQ3MzlGMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyog
V0tEZXByZWNhdGVkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNUM0NjA5RTcyMjQzMTdCNDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0
NjA5RTIyMjQzMEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU4MjI0
MzE3QkIwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NjA5RTQyMjQzMEU0
RDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi87IH07CkBA
IC0xODYzLDYgKzE4NjMsOSBAQAogCQlDRUU0QUUyQjFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRT
UEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRTRB
RTJBMUE1RENGNDMwMDAyRjQ5QiAvKiBVSUtpdFNQSS5oICovOyB9OwogCQlEM0I5NDg0NzExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0MzExRkY0QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBN
ZW51LmggKi87IH07CiAJCUQzQjk0ODQ5MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1
cE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQz
Qjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJTZWFyY2hQb3B1cE1lbnUuaCAqLzsgfTsKKwkJ
REYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAv
KiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OworCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjBDNUYyNjI1
MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIg
LyogV0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVy
bmFsLmggKi87IH07CiAJCURGNDYyRTBGMjNGMjJGNTUwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVT
dG9yZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERGNDYyRTBFMjNGMjJGNTMwMEVGRjM1RiAvKiBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjQ2
MkUxMjIzRjMzOEJFMDBFRkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUxMTIzRjMzOEFEMDBF
RkYzNUYgLyogV0tDb250ZW50V29ybGRQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY4NENFRTQyNDlBQTI0RDAwOTA5NkY2IC8qIFdL
UERGSFVEVmlldy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IERGODRDRUUyMjQ5QUEyMUYwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gKi87IH07CkBA
IC0yNDkzLDcgKzI0OTYsNiBAQAogCQkxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0SW5qZWN0
ZWRCdW5kbGVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCQTAx
ODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyogV0tDb250ZXh0
RG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250
ZXh0RG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVC
QTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQTQ4MzJDMTFBOTY1QTNDMDA4QjRERkUgLyog
V2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTQ4MzJDOTFBOUJDNDY1MDA4QjRERkUgLyogV0tXZWJzaXRlRGF0YVJlY29yZC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFS
ZWNvcmQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjg5LDggKzI2OTEsOCBA
QAogCQkxQUI3RDVFOTEyODhCOEMwMDBDRkQwOEMgLyogRG93bmxvYWRQcm94eS5tZXNzYWdlcy5p
biAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb3dubG9hZFByb3h5Lm1lc3NhZ2VzLmluOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93
bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTFBQjdENjE4MTI4OEI5RDkwMENGRDA4
QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRG93bmxvYWRQcm94eU1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJL
aXQyL0Rvd25sb2FkUHJveHlNZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwotCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLRG93bmxvYWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyog
V0tEb3dubG9hZFJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25s
b2FkUmVmLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhDMTI4OENEOUEw
MENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdLRG93bmxvYWRSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUI4QTFFQjE4NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRlckNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFRDE4NDAwQUNCMDBFOUFFNjkgLyogV0tQYWdl
UG9saWN5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZVBv
bGljeUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUI4QTFFRjE4NDAw
QjAwMDBFOUFFNjkgLyogV0tQYWdlRm9ybUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS1BhZ2VGb3JtQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC00MjExLDYgKzQyMTMsNyBAQAogCQk1QzJCMUFGMzIyM0FCNzI4MDBCOTFDRjcgLyogRG93
bmxvYWRNb25pdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERv
d25sb2FkTW9uaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMkIxQUY0
MjIzQUI3MjgwMEI5MUNGNyAvKiBEb3dubG9hZE1vbml0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRG93bmxvYWRNb25pdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMkIxQUY1MjIzQzFGRDIwMEI5MUNGNyAvKiBEb3dubG9hZFByb3h5TWFwQ29jb2Eu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEb3dubG9hZFByb3h5
TWFwQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkVCREY5MjU2NDM1
MjAwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0Rh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGlj
aWVzRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDYwOUUyMjI0MzBF
NEMwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NDgwLDYgKzU0ODMsMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQb3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4
NDQxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2Vh
cmNoUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJj
aFBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVD
QjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLRG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdL
RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rv
d25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUy
M0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29u
dGVudFdvcmxkUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Nv
bnRlbnRXb3JsZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2
MzExMzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNzY3NSw2ICs3NjgyLDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0
QTAwMzY5NUYwIC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2
QjIyOUYyRDRCMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAq
LywKIAkJCQk1Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJ
bmZvUHJpdmF0ZS5oICovLAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25s
b2FkLmggKi8sCisJCQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0g
Ki8sCisJCQkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5o
ICovLAorCQkJCURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwu
aCAqLywKIAkJCQkxQUY0NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJ
CTFBRjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJB
MTk0Njg4RkQwMDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTk2NDQsNyArOTY1
NSw2IEBACiAJCQkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYuY3BwICovLAogCQkJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmggKi8sCiAJCQkJMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8q
IFdLQ29udGV4dENvbm5lY3Rpb25DbGllbnQuaCAqLywKLQkJCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0
QjM0MTQgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUJBMDE4NEQ1
RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDQ1QjlF
MTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAog
CQkJCUExRUEwMjM1MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3Bw
ICovLApAQCAtOTY1NSw4ICs5NjY1LDkgQEAKIAkJCQk1MTJGNThGMTEyQTg4QTU0MDA2Mjk1MzAg
LyogV0tDcmVkZW50aWFsLmNwcCAqLywKIAkJCQk1MTJGNThGMjEyQTg4QTU0MDA2Mjk1MzAgLyog
V0tDcmVkZW50aWFsLmggKi8sCiAJCQkJNTE4QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3Jl
ZGVudGlhbFR5cGVzLmggKi8sCi0JCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93
bmxvYWQuY3BwICovLAotCQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2Fk
LmggKi8sCisJCQkJNUMyRUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQu
aCAqLywKKwkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAg
Ki8sCisJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLywK
IAkJCQlCQ0U0Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVy
LmNwcCAqLywKIAkJCQlCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lv
bkxpc3RlbmVyLmggKi8sCiAJCQkJQkNEMDEzOTgxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUu
Y3BwICovLApAQCAtMTIwMTQsNyArMTIwMjUsNiBAQAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEEx
MzdFMCAvKiBXS0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIw
MEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTQ0NUJBNTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4
dERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTQ0NUJBMTE4NEQ1RkMxMDA0
QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE0
NDVCOUYxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1Qzc5NUQ3MDIyOUYzNzNGMDAzRkYxQzQgLyogV0tDb250ZXh0
TWVudUVsZW1lbnRJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTEyMDQ3LDggKzEyMDU3LDEyIEBA
CiAJCQkJQkM1RDI0QzUxNkNENzA4ODAwN0Q1NDYxIC8qIFdLRE9NUmFuZ2VQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyOTNFQkVBQjE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QyMTE2MjYzMzA4MDA3MDU0RjUgLyogV0tET01UZXh0
SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAv
KiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyODI1MkVDQjhFMDBEOTIx
REIgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUMyRUJERkEyNTY0MzgwQjAw
RDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjJB
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAor
CQkJCURGMEM1RjJCMjUyRUQ0NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTYzNzI4MUEyMjFBREM3NDQwMDlFMERFNiAvKiBXS0Rvd25sb2FkUHJv
Z3Jlc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTFBQjdENzhEMTI4OENEOUEwMENGRDA4QyAvKiBX
S0Rvd25sb2FkUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDA5QkExODFFNkU2NEJDMDA5REEy
OEUgLyogV0tEcmFnRGVzdGluYXRpb25BY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQ0Y2
NkNFMjFENkI3N0UwMDlFNUMzRiAvKiBXS0VkaXRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQUY0NTkyRjE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oIGluIEhlYWRlcnMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTZjMDJi
OTMyNDBlNDEzMWIwMWQzZjU0YWNhZjlmNTgzN2FkYWIwOS4uMTBhMzFiMGYxMzIwY2MyOGEyOWFl
MTMyYmI3ZTA0MThkNjg1ZGIxZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDIwLTEyLTAzICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBk
b3dubG9hZCBTUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gu
Y3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJl
c3BvbnNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VQ
b2xpY3lDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldENvbnRleHREb3dubG9hZENsaWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51
RG93bmxvYWQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVu
dURpZENyZWF0ZURvd25sb2FkKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWVDb250YWluaW5nU2xhc2hlcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjb250ZXh0TWVu
dURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRl
cmluZy5tbToKKyAgICAgICAgKC1bQmVjb21lRG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbToKKyAgICAgICAg
KC1bQ29udmVydFJlc3BvbnNlVG9Eb3dubG9hZE5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURlbGVn
YXRlIHdlYlZpZXc6ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6Cisg
ICAgICAgICgtW1Rlc3REb3dubG9hZE5hdmlnYXRpb25SZXNwb25zZUZyb21NZW1vcnlDYWNoZURl
bGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKFRFU1QpOgor
ICAgICAgICAoZG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAgICAgKGNoZWNrUmVzdW1lZERvd25s
b2FkQ29udGVudHMpOgorICAgICAgICAoc2ltcGxlRG93bmxvYWRUZXN0U2VydmVyKToKKyAgICAg
ICAgKGNoZWNrRmlsZUNvbnRlbnRzKToKKyAgICAgICAgKHRlbXBGaWxlVGhhdERvZXNOb3RFeGlz
dCk6CisgICAgICAgICgtW0Rvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIHdlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6Om11dGF0ZUZpbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVzcy5tbToKKyAgICAgICAgKC1bRG93bmxvYWRQ
cm9ncmVzc1Rlc3RSdW5uZXIgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZp
Z2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6
ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUXVpY2tMb29rLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3REb3dubG9h
ZERlbGVnYXRlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6
ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3du
bG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxv
YWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGU6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1lRGF0
YTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpuYXZpZ2F0aW9u
UmVzcG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgd2FpdEZvckRvd25s
b2FkRGlkRmluaXNoXSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIHRha2VDYWxs
YmFja1JlY29yZF0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWRE
aWRTdGFydDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rv
d25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOl0pOiBEZWxldGVkLgorICAgICAg
ICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVJlc3BvbnNlOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlk
V3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkRmlu
aXNoOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxv
YWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6IERlbGV0ZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
OiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZS5tbTogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93
bmxvYWREZWxlZ2F0ZS5tbS4KKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkRGlkU3RhcnQ6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVn
YXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDpdKToKKyAgICAgICAg
KC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVSZXNwb25z
ZTpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRp
ZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0p
OgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpd
KToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZh
aWxXaXRoRXJyb3I6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZERpZENhbmNlbDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdh
dGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkOmRpZENyZWF0ZURlc3RpbmF0aW9uOl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bmF2aWdh
dGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAg
ICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKToKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbCk6CisgICAgICAgIChX
VFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQpOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorCiAy
MDIwLTEyLTAyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEVuYWJsZSBVSS1zaWRlIGNvbXBvc2l0aW5nIG9uIHRoZSBHUFUgUHJvY2VzcyBsYXlvdXQg
dGVzdHMgYm90CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50
eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZDk3ZjI2NmU0
MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4uZjVhOWQyMTc2NWY2OGFmMjJmZmI5NGUz
ODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAt
MjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0
Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0Q29jb2EubW0KIGNvY29hL1Rlc3REb3du
bG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQogY29j
b2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29jb2EvVGVzdFByb3RvY29sLm1tCiBjb2Nv
YS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmYmYzYmI3Yzlm
ZDE3NDVmYTE5NTgyODFkNWZlZmE1NWVlNGQ0NDQyLi43ODk0ODQ4NjA4YzdiM2U5MGQ0ZThkNDFk
MDQ1YWQ5Yjc4ZjhkYTI5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjIyMCw4ICsyMjIw
LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZp
Z2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNj
cmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
NkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAwRkRFM0M1IC8q
IFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLmg7IHBh
dGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBUZXN0RG93bmxvYWRE
ZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENFMjQ0
RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRl
Lm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXBy
ZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRMU0Rl
cHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0
OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVu
dE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVu
dE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODA2LDYgKzI4
MDYsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVu
dHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdH
ZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREM2OUFBNjIxQ0Y3
N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rp
b25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
TlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0
ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBwYXRo
ID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRoID0gY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREZCOEZG
MzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZD
IC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzEyNyw4
ICszMTI5LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRGMzAwQzVDQUE0IC8qIFRlc3RDb2NvYS5t
bSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJp
dmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAwQzEyNDA5IC8qIFRlc3RDb250ZXh0TWVu
dURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVzdERvd25s
b2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcgLyogVGVzdERv
d25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRl
c3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8q
IFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJCTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVC
NyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJCTVDNzJFOENFMjQ0RkZD
RTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKIAkJCQkyRDFD
MDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oICovLAogCQkJ
CTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tICov
LAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAvKiBUZXN0UERGRG9jdW1lbnQuaCAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVj
aWRlRGVzdGluYXRpb25DcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2guY3BwCmluZGV4IGNhNjk3YWMzNWE5YWE1
MjBhNWIxOWY1YzdiNzQzYzE3Yzg0NGM1MzguLmM0NTc1ODY1MDVkYjNlNGRiYWJkYjA3MTJhMGU2
NjNiZGIyOWM3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcApAQCAt
MjksNDIgKzI5LDQxIEBACiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkLmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCiBzdGF0aWMgYm9vbCBkaWREZWNpZGVEZXN0aW5hdGlvbjsKIAotc3RhdGljIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNv
bnN0IHZvaWQqKQorc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
KFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
clJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKIHsKICAgICBXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJEb3dubG9hZChsaXN0ZW5lcik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0
aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0
IHZvaWQqKQogewogICAgIGRpZERlY2lkZURlc3RpbmF0aW9uID0gdHJ1ZTsKLSAgICBXS0Rvd25s
b2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxs
cHRyLCBudWxscHRyKTsKICAgICByZXR1cm4gVXRpbDo6dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0
L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIpLmxlYWtSZWYoKTsKIH0KIAotc3RhdGlj
IHZvaWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQorc3Rh
dGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmIHBh
Z2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmlnYXRpb25SZXNwb25zZSwgV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS0NvbnRleHRE
b3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50Owog
ICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7Ci0KICAgICBjbGllbnQuYmFz
ZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKLQotICAg
IFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQsICZjbGllbnQuYmFzZSk7CisgICAg
Y2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwg
JmNsaWVudC5iYXNlKTsKIH0KIAogc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1Bh
Z2VSZWYgcGFnZSkKIHsKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNs
aWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjMgbmF2aWdhdGlvbkNsaWVudDsKICAg
ICBtZW1zZXQoJm5hdmlnYXRpb25DbGllbnQsIDAsIHNpemVvZihuYXZpZ2F0aW9uQ2xpZW50KSk7
CiAKLSAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgbmF2aWdhdGlv
bkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVyc2lvbiA9IDM7
CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2Ug
PSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U7CisgICAgbmF2aWdhdGlvbkNsaWVu
dC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IG5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkOwogCiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQo
cGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiB9CkBAIC03Miw3ICs3MSw2IEBAIHN0YXRp
YyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiBURVNUKFdlYktpdCwg
RG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRp
b24obnVsbHB0cikpOwotICAgIHNldENvbnRleHREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgp
KTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogICAgIHNl
dFBhZ2VQb2xpY3lDbGllbnQod2ViVmlldy5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRleHRNZW51RG93bmxvYWQubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQpp
bmRleCAxNTkzMGU1NDZkYmFhM2RhOWQ1ZWQyMTViNmM4YjljYzYxMDlhZjBmLi43NTU2ZjYxMmQ1
ZTNiOWJhNGY0Y2Q2ZjUyNmM5NThjMTdmM2YxZjI2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbQpA
QCAtMjgsNyArMjgsOCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4dE1lbnVJdGVtLmg+
Ci0jaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxv
YWRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkUmVmLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tQYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdlQ29udGV4dE1lbnVDbGllbnQu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgpAQCAtNjIsMTIgKzYz
LDEyIEBAIHN0YXRpYyB2b2lkIGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VS
ZWYgcGFnZSwgV0tBcnJheVJlZiBwcm9wb3NlZE1lCiAgICAgfQogfQogCi1zdGF0aWMgV0tTdHJp
bmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Ym9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9u
c2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsKICAg
ICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0
Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTC4KICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImRvd25sb2FkQXR0cmlidXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVk
RmlsZW5hbWUpOwogCi0gICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCk7CisgICAgV0tEb3du
bG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgZGlkRGVjaWRlRG93
bmxvYWREZXN0aW5hdGlvbiA9IHRydWU7CiAKICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRPcmlnaW5h
dGluZ1BhZ2UsIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoZG93bmxvYWQpKTsKQEAgLTc2
LDI1ICs3NywyOSBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sbwogICAgIHJldHVybiBVdGlsOjp0
b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9hZCIpLmxlYWtSZWYoKTsK
IH0KIAorc3RhdGljIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXS1BhZ2VSZWYg
cGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIG1lbXNldCgmY2xpZW50LCAwLCBz
aXplb2YoY2xpZW50KSk7CisgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7CisgICAgY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVu
dC5iYXNlKTsKK30KKwogLy8gQ2hlY2tzIHRoYXQgdGhlIEhUTUwgZG93bmxvYWQgYXR0cmlidXRl
IGlzIHVzZWQgYXMgc3VnZ2VzdGVkIGZpbGVuYW1lIHdoZW4gc2VsZWN0aW5nCiAvLyB0aGUgIkRv
d25sb2FkIExpbmtlZCBGaWxlIiBpdGVtIGluIHRoZSBjb250ZXh0IG1lbnUuCiBURVNUKFdlYktp
dCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZSkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYw
IGNsaWVudDsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwgc2l6ZW9mKGNsaWVudCkpOwotICAgIGNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
OwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQuZ2V0KCksICZjbGllbnQu
YmFzZSk7Ci0KICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRv
cHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAi
KS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBh
Z2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xp
ZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2FkZXJDbGllbnQ7CiAgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJD
bGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0g
MzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmln
YXRpb247CisgICAgbG9hZGVyQ2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBj
b250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xpZW50LmJhc2UpOwogCiAgICAgV0tQYWdl
Q29udGV4dE1lbnVDbGllbnRWMyBjb250ZXh0TWVudUNsaWVudDsKQEAgLTExNCwzNCArMTE5LDM4
IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2FkQXR0cmlidXRl
KQogICAgIFV0aWw6OnJ1bigmZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbik7CiB9CiAKLXN0
YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNv
bnRhaW5pbmdTbGFzaGVzKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tT
dHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBX
S1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5p
bmdTbGFzaGVzKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3Ry
aW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1
cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFs
dWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0aGUgSFRNTCwgYWZ0ZXIgc2FuaXRpemF0
aW9uLgogICAgIEVYUEVDVF9XS19TVFJFUSgidGVzdDFfdGVzdDJfZG93bmxvYWRBdHRyaWJ1dGVW
YWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRv
d25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRy
KTsKICAgICBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIHJldHVy
biBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1lbnVEb3dubG9hZCIpLmxl
YWtSZWYoKTsKIH0KIAotVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxv
YWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3N0YXRpYyB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hlcyhXS1BhZ2VSZWYg
cGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7Ci0KLSAgICBXS0NvbnRleHREb3dubG9h
ZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1l
bXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CiAgICAgY2xpZW50LmJhc2UudmVyc2lv
biA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
ID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5nU2xhc2hl
czsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChjb250ZXh0LmdldCgpLCAmY2xpZW50
LmJhc2UpOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IGRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7CisgICAg
V0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKworVEVTVChX
ZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hl
cykKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0
aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKICAgICBXS1JldGFpblB0
cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdp
dGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3Jt
V2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKLSAgICBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRp
b25DbGllbnRWMyBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNp
emVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsK
KyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2FkZXJDbGllbnQuZGlk
RmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9hZGVyQ2xpZW50
LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBjb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXM7CiAgICAgV0tQYWdlU2V0
UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGllbnQuYmFzZSk7
CiAKICAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xpZW50OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50Rmls
dGVyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50
RmlsdGVyaW5nLm1tCmluZGV4IDQzMzkxMzExMDFmMmNkZDk1MDk4NjdlZmU5NDRmNmU3N2VmMzll
ZGIuLmQxOTZjMmM5M2M5MmNhYWJkNzMyMzkzYjM0Y2FlZWUwYWU3YjMzOTIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0
ZXJpbmcubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBURVNUKENvbnRlbnRGaWx0ZXJpbmcsIFVSTEFm
dGVyU2VydmVyUmVkaXJlY3QpCiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNl
ICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lzaW9uSGFuZGxl
cihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgZGVjaXNp
b25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3Ig
KillcnJvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0KaW5kZXggM2FlZmViOGVjMzM1ZTEwMjMyZmY4ZTVjODBjNmY3OWJkMzVlZmMwOC4u
N2Y0NDBjMjFlY2M3OTBjMGFiY2EyNDIyZTYxZDRhYTM0ZTFmZjA1NCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCkBAIC0zMywxMSAr
MzMsMTUgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9y
dCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPEZvdW5k
YXRpb24vTlNVUkxSZXNwb25zZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KICNp
bXBvcnQgPFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdh
dGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvblJlc3Bv
bnNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlldy5oPgpAQCAtMTc0LDcgKzE3OCw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2Fk
UmVxdWVzdCkKIEBpbXBsZW1lbnRhdGlvbiBDb252ZXJ0UmVzcG9uc2VUb0Rvd25sb2FkTmF2aWdh
dGlvbkRlbGVnYXRlCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmln
YXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgIGRlY2lzaW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKIH0KIEBlbmQKIApA
QCAtOTc3LDcgKzk4MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkTW9uaXRvclJldHVy
blRvRm9yZWdyb3VuZCkKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZpbmlzaE5hdmlnYXRpb24pOwog
ICAgIEVYUEVDVF9XS19TVFJFUShfV0tMZWdhY3lFcnJvckRvbWFpbiwgZXJyb3IuZG9tYWluKTsK
ICAgICBfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IFlFUzsKLSAgICBpZiAoX3Jlc3Bv
bnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIHx8
IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKICAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtOTg1LDcgKzk4OSw3IEBAIFRFU1QoX1dLRG93
bmxvYWQsIERvd25sb2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkKIHsKICAgICBFWFBFQ1Rf
RkFMU0UoX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOwogICAgIF9kaWRGaW5pc2hOYXZp
Z2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisgICAgaWYg
KF9yZXNwb25zZVBvbGljeSAhPSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBA
IC0xMDI0LDcgKzEwMjgsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9u
c2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJMLmFic29sdXRl
U3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAogICAgIE5TVVJMICpzZWNv
bmRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmlsZS9zaW1wbGUy
Lmh0bWwiXTsKLSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOworICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBv
bGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXTsKICAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1d
OwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNE
b25lKTsKQEAgLTEwNTEsNyArMTA1NSw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRp
b25SZXNwb25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlk
RmluaXNoTmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0
ZVN0cmluZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKLSAgICBbZGVsZWdhdGUg
c2V0UmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWRdOworICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25z
ZVBvbGljeUJlY29tZURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTExODksMjQgKzExOTMs
MzAgQEAgU3RyaW5nIGxvbmdTdHJpbmcoTENoYXIgYykKICAgICByZXR1cm4gU3RyaW5nKHZlY3Rv
ci5kYXRhKCksIGxlbmd0aCk7CiB9CiAKLVRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK2VudW0g
Y2xhc3MgSW5jbHVkZUVUYWcgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBUZXJtaW5h
dGVBZnRlckZpcnN0UmVwbHkgOiBib29sIHsgTm8sIFllcyB9OworCitzdGF0aWMgVGVzdFdlYktp
dEFQSTo6SFRUUFNlcnZlciBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWcgaW5jbHVkZUVU
YWcgPSBJbmNsdWRlRVRhZzo6WWVzLCBGdW5jdGlvbjx2b2lkKFRlc3RXZWJLaXRBUEk6OkNvbm5l
Y3Rpb24pPiYmIHRlcm1pbmF0b3IgPSBudWxscHRyKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJOwotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAw
XShDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFtpbmNsdWRl
RVRhZywgdGVybWluYXRvciA9IFdURk1vdmUodGVybWluYXRvciksIGNvbm5lY3Rpb25Db3VudCA9
IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAg
ICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAg
ICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3Rvcjxj
aGFyPiYmKSB7Ci0gICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCi0g
ICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAg
ICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbaW5jbHVkZUVUYWcsIGNvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRl
cm1pbmF0b3IpXSAoVmVjdG9yPGNoYXI+JiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1
dG8gcmVzcG9uc2UgPSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEg
MjAwIE9LXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVFVGFnID09IEluY2x1ZGVF
VGFnOjpZZXMgPyAiRVRhZzogdGVzdFxyXG4iIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICJD
b250ZW50LUxlbmd0aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1E
aXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKICAg
ICAgICAgICAgICAgICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKLSAgICAgICAg
ICAgICAgICApKTsKKyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChXVEZNb3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZN
b3ZlKHRlcm1pbmF0b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRl
cm1pbmF0b3IpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yKGNvbm5lY3Rpb24p
OworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0
KSB7CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwg
IlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRU
UC8xLjEgMjA2IFBhcnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDE2ICsxMjMwLDY0IEBAIFRF
U1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CisKK3N0
YXRpYyB2b2lkIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNVUkwgKmZpbGUpCit7Cisg
ICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpm
aWxlXTsKKyAgICBFWFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKKyAgICBF
WFBFQ1RfVFJVRShmaWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChmaWxlQ29udGVudHMuYnl0
ZXMgJiYgZmlsZUNvbnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7CisgICAgICAgIGZv
ciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsK
KyAgICB9Cit9CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25s
b2FkVGVzdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVj
dGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0
KFtjb25uZWN0aW9uXShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50
LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246
IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAg
ICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAg
ICB9KTsKKyAgICB9fTsKK30KIAotICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxX
aXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21w
b25lbnQ6QCJEb3dubG9hZFJlc3VtZVRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworc3RhdGljIHZv
aWQgY2hlY2tGaWxlQ29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRD
b250ZW50cykKK3sKKyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhD
b250ZW50c09mVVJMOmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBl
eHBlY3RlZENvbnRlbnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZp
bGVDb250ZW50cy5sZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsK
K30KKworc3RhdGljIE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5T
VVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3Rv
cnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0Rp
cmVjdG9yeTpZRVNdOwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRl
RGlyZWN0b3J5QXRVUkw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0
dHJpYnV0ZXM6bmlsIGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsK
LSAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBl
Y3RlZERvd25sb2FkRmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07
CisgICAgcmV0dXJuIGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAg
ICB1c2luZyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25s
b2FkVGVzdFNlcnZlcigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsKICAgICB9OwogCiAg
ICAgZW51bSBjbGFzcyBDYWxsYmFjayA6IHVpbnQ4X3QgeyBTdGFydCwgV3JpdGVEYXRhLCBEZWNp
ZGVEZXN0aW5hdGlvbiwgQ3JlYXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNoIH07CkBAIC0x
MjQwLDEwICsxMjk4LDExIEBAIFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBfX2Jsb2Nr
IFJldGFpblB0cjxfV0tEb3dubG9hZD4gZG93bmxvYWQ7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNEYXRhPiByZXN1bWVEYXRhOwogCi0gICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBkb3dubG9hZERlbGVnYXRl
ID0gYWRvcHROUyhbVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9
IF4oX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKEJPT0wsIE5TU3RyaW5nICopKSB7CiAgICAgICAgIGNhbGxiYWNrcy5h
cHBlbmQoQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKLSAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoWUVTLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2VzdGVk
RmlsZW5hbWVdLnBhdGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImV4YW1wbGUudHh0Iiwg
c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIGV4cGVj
dGVkRG93bmxvYWRGaWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQo
KS5kaWRXcml0ZURhdGEgPSBeKF9XS0Rvd25sb2FkICpkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNX
cml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZSkgewogICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpXcml0
ZURhdGEpOwpAQCAtMTI1OCw3ICsxMzE3LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQog
ICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9
IF4oX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CiAgICAgICAgIGNhbGxi
YWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNyZWF0ZURlc3RpbmF0aW9uKTsKLSAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGRlc3RpbmF0aW9uLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25l
bnQ6QCJleGFtcGxlLnR4dCJdLnBhdGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGlu
YXRpb24sIGV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxvYWRE
ZWxlZ2F0ZS5nZXQoKS5kb3dubG9hZERpZENhbmNlbCA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNhbmNlbCk7CkBAIC0xMjk2
LDE1ICsxMzU1LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIFV0aWw6OnNwaW5S
dW5Mb29wKDEwKTsKICAgICB1c2xlZXAoMTAwMDApOwogCi0gICAgTlNEYXRhICpmaWxlQ29udGVu
dHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpleHBlY3RlZERvd25sb2FkRmlsZV07
Ci0gICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7Ci0gICAgRVhQRUNU
X1RSVUUoZmlsZUNvbnRlbnRzLmJ5dGVzKTsKLSAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzKSB7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQotICAgICAgICAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ld
LCAnYScpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCi0g
ICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50
cy5ieXRlcylbaV0sICdiJyk7Ci0gICAgfQorICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVu
dHMoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwogfQogCiBAaW50ZXJmYWNlIERvd25sb2FkVGVzdFNj
aGVtZURlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpAQCAtMTMxNCw3
ICsxMzY1LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAg
ICAgaWYgKFtuYXZpZ2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGhh
c1N1ZmZpeDpAIi9kb3dubG9hZCJdKQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgZWxzZQog
ICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7
CiB9CkBAIC0xMzczLDQgKzE0MjQsMTE5OSBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdWJmcmFtZVNl
Y3VyaXR5T3JpZ2luKQogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiPGJvZHk+PGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvcGFn
ZSc+PC9pZnJhbWU+PC9ib2R5PiIsIHNlcnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworc3RhdGljIHZvaWQgY2hlY2tDYWxsYmFja1JlY29yZChUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSAqZGVsZWdhdGUsIFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENhbGxi
YWNrcykKK3sKKyAgICBhdXRvIGFjdHVhbENhbGxiYWNrcyA9IGRlbGVnYXRlLnRha2VDYWxsYmFj
a1JlY29yZDsKKyAgICBFWFBFQ1RfRVEoYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRD
YWxsYmFja3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKGFj
dHVhbENhbGxiYWNrcy5zaXplKCksIGV4cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7IGkrKykKKyAg
ICAgICAgRVhQRUNUX0VRKGFjdHVhbENhbGxiYWNrc1tpXSwgZXhwZWN0ZWRDYWxsYmFja3NbaV0p
OworfQorCitURVNUKFdLRG93bmxvYWQsIEZpbmlzaFN1Y2Nlc3NmdWxseSkKK3sKKyAgICBhdXRv
IHNlcnZlciA9IHNpbXBsZURvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVs
ZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1
dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcu
bmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEb3dubG9hZERpZEZpbmlzaF07CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3Rl
ZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJh
Y2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9h
ZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK3N0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERv
d25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQoreworICAgIF9f
YmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgIGNoZWNrRmlsZUNvbnRlbnRzKGRlc3RpbmF0aW9uLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgICAgIGF1dG8gKmRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworCisgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25s
b2FkV2l0aERhdGE6cmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgICAgIH1dOworICAg
ICAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgICAgICBVdGlsOjpzcGluUnVu
TG9vcCgpOworICAgICAgICAKKyAgICAgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1
ayA9IGZhbHNlOworICAgICAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLmRl
bGVnYXRlKTsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVn
YXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxv
YWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOworICAgICAgICAgICAg
RVhQRUNUX0VRKGJ5dGVzV3JpdHRlbiArIDUwMDAsIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAg
ICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAgICAgICAgICAgZG93bmxv
YWRlZFNlY29uZDVrID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAgICAgX19ibG9jayBib29sIGRp
ZEZpbmlzaCA9IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXRhaW5lZERv
d25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShkb3dubG9h
ZGVkU2Vjb25kNWspOworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKKyAgICAgICAgfTsK
KworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICAgICAgY2hlY2tSZXN1bWVk
RG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7CisgICAgICAgIGNoZWNrQ2FsbGJhY2tSZWNv
cmQoZGVsZWdhdGUsIHsKKyAgICAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YSwKKyAgICAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgICAgICB9KTsK
KyAgICAgICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkud2ViVmlldywgd2ViVmll
dy5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgp
LndlYlZpZXcpOworICAgIH0KKyAgICBFWFBFQ1RfTk9UX05VTEwocmV0YWluZWREb3dubG9hZC5n
ZXQoKSk7CisgICAgRVhQRUNUX05VTEwocmV0YWluZWREb3dubG9hZC5nZXQoKS53ZWJWaWV3KTsK
K30KKworc3RhdGljIHZvaWQgd2FpdEZvckZpcnN0NWsoVGVzdERvd25sb2FkRGVsZWdhdGUgKmRl
bGVnYXRlKQoreworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkRmlyc3Q1ayA9IGZhbHNlOwor
ICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRhKTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0
ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90
YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAg
ICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAg
IEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgIGlm
IChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25sb2FkZWRGaXJzdDVrID0g
dHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRlZEZpcnN0NWspOworfQorCitU
RVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRv
d25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5l
ZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICos
IE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAg
fTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2Vs
Ol4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0YSA9IHJl
c3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAg
ICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRGaW5pc2hEb3dubG9hZChy
ZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpZZXMsIFsmXSAoVGVzdFdlYktpdEFQSTo6
Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRl
KTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9KTsKKyAgICBOU1VSTCAq
ZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3
Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8
V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0Rh
dGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3du
bG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmls
ZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdL
RG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQsIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkp
OworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdv
cmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1
bWVEYXRhOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAg
ICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKHJl
dGFpbmVkUmVzdW1lRGF0YS5nZXQoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVE
b3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBDYW5jZWxOb1Jlc3VtZURhdGEpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RT
ZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5vKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUg
PSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBb
W1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxl
Z2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0
YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAg
ICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1l
RGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250
ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKwor
VEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gc2Vy
dmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpObywgWyZdIChUZXN0V2ViS2l0
QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAgd2FpdEZvckZpcnN0NWsoZGVs
ZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgpOworICAgIH0pOworICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdl
YlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wg
ZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJy
b3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkg
eworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvck5ldHdv
cmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsK
KyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1
MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsK
K30KKworLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGluIENGTmV0d29yay4KKyNpZiBIQVZFKENG
TkVUX1JFU1BPTlNFX0NBTExCQUNLX1dJVEhfTk9fQ09OVEVOVCkKKworVEVTVChXS0Rvd25sb2Fk
LCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQoreworICAgIE9wdGlvbmFsPFRlc3RXZWJL
aXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rpb247CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsICZzZXJ2ZXJDb25uZWN0aW9uXShUZXN0V2ViS2l0QVBJ
OjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29u
bmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHNlcnZlckNvbm5l
Y3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJl
cXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5z
ZW5kKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVu
dC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIK
KyAgICAgICAgICAgICAgICAgICAgIlxyXG4iCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0
KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwg
IlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRU
UC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEwMFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzwxMDA+KCd4JykKKyAgICAgICAgICAgICAgICAp
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAg
IGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZp
ZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAg
ICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRl
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gWyZdKFdLRG93bmxvYWQgKiwgTlNVUkxS
ZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICop
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgc2VydmVyQ29ubmVjdGlvbi0+dGVybWluYXRlKCk7CisgICAgfTsKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBkZWxlZ2F0ZS5kaWRG
YWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJl
c3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxF
cnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yTmV0
d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRhID0gcmVzdW1l
RGF0YTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZEZpbmlzaGVkID0gZmFsc2U7
CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAg
ICAgICBkb3dubG9hZEZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2hpbGUgKCFyZXRhaW5lZFJlc3VtZURh
dGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgCisgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpleHBlY3Rl
ZERvd25sb2FkRmlsZS5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKGRvd25sb2FkRmluaXNoZWQp
OworICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRh
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmRvd25sb2FkRmluaXNoZWQpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxv
YWRGaWxlLCBsb25nU3RyaW5nPDEwMD4oJ3gnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3Jk
KGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24s
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpE
aWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0p
OworfQorCisjZW5kaWYKKwordm9pZCB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soTlNVUkxS
ZXF1ZXN0ICpzZXJ2ZXJSZXF1ZXN0LCBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUsIHZvaWQo
Xm11dGF0ZUZpbGUpKHZvaWQpKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9h
ZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
ZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRhaW5lZERv
d25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
ICAgICAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQuZGVzdGluYXRpb24pOworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICAgICAg
RVhQRUNUX05PVF9OVUxMKGRvd25sb2FkLmRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShkb3dubG9hZC5kZXN0aW5hdGlvbi5hYnNvbHV0ZVN0cmluZywgZXhwZWN0ZWRE
b3dubG9hZEZpbGUuYWJzb2x1dGVTdHJpbmcpOworICAgICAgICB9OworICAgIH07CisKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhk
ZWxlZ2F0ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gbmlsOworCisgICAgX19ibG9j
ayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93
bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVz
dW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVz
dW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisg
ICAgbXV0YXRlRmlsZSgpOworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOwor
ICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLmRlc3RpbmF0aW9uLmFic29sdXRlU3RyaW5nLCBleHBl
Y3RlZERvd25sb2FkRmlsZS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgIGRvd25sb2FkLmRlbGVn
YXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgICAgIGRpZEZpbmlzaCA9IHRydWU7CisgICAgICAgIH07
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2gpOworICAgIGNoZWNrQ2FsbGJhY2tS
ZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aG91dElu
aXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291
bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgewor
ICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4m
JikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEw
MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFj
aG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1MDAwPignYScpCisgICAg
ICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChb
PV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19E
T1dOTE9BRFMpCisgICAgICAgICAgICAgICAgLy8gTW9qYXZlIENGTmV0d29yayBzZW5kcyBhIHJh
bmdlIHJlcXVlc3Qgd2hlbiByZXN1bWluZyBhIGRvd25sb2FkIGFmdGVyIHJlbW92aW5nIGFscmVh
ZHktZG93bmxvYWRlZCBkYXRhLgorICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzdHJuc3Ry
KHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2UiLCByZXF1ZXN0LnNpemUoKSkpOworI2VuZGlmCisgICAg
ICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAg
ICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVz
dFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogMTAwMDBcclxuIgor
ICAgICAgICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJp
bmc8MTAwMDA+KCd4JykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3Rl
ZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1
bWVBZnRlck11dGF0aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmls
ZSwgXnsKKyAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFu
YWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxl
IGVycm9yOiZlcnJvcl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICB9KTsKKwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDEw
MDAwPigneCcpKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVXaXRoRXh0cmFJbml0aWFs
RGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihbY29ubmVjdGlvbkNvdW50ID0g
MF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAgICAg
ICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAgICAg
ICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsK
KyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAgICAgICAg
ICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFn
OiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAxMDAwMFxy
XG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50
OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJc
biIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAg
ICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZl
Y3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShzdHJu
c3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVzPTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6
ZSgpKSk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCisgICAg
ICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFydGlhbCBDb250ZW50XHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29u
dGVudC1SYW5nZTogYnl0ZXMgNTAwMC05OTk5LzEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4i
LAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDEwMDAwPignZCcpCisgICAgICAgICAg
ICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9KTsKKyAgICAKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRo
YXREb2VzTm90RXhpc3QoKTsKKyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVy
LnJlcXVlc3QoKSwgZXhwZWN0ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVy
cm9yID0gbmlsOworICAgICAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92
ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBF
WFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIEVYUEVDVF9UUlVFKFtbKE5TU3RyaW5nICopbWFr
ZVN0cmluZyhsb25nU3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSkgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0ZWRE
b3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICB9KTsKKworICAgIGNoZWNrRmlsZUNv
bnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBtYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4o
J2InKSwgbG9uZ1N0cmluZzwzMDAwPignYycpLCBsb25nU3RyaW5nPDUwMDA+KCdkJykpKTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVXaXRoSW52YWxpZFJlc3VtZURhdGEpCit7CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVUb1VSTDpleHBlY3RlZERvd25sb2FkRmls
ZSBhdG9taWNhbGx5OllFU10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10g
YXV0b3JlbGVhc2VdOworICAgIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgQHRy
eSB7CisgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkV2l0aERhdGE6W0AiaW52YWxpZCBy
ZXN1bWUgZGF0YSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9XTsKKyAgICB9IEBjYXRjaCAoTlNFeGNlcHRpb24g
KmUpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRF
eGNlcHRpb24pOworICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVlOworICAgIH0KKyAgICBF
WFBFQ1RfVFJVRShjYXVnaHRFeGNlcHRpb24pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3Vt
ZUNhbnRSZWNvbm5lY3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIo
KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisg
ICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBk
ZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1
ayhkZWxlZ2F0ZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0
YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNlbDpeKE5T
RGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5lZFJlc3VtZURhdGEgPSByZXN1bWVE
YXRhOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBV
dGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIAorICAgIHJl
dGFpbmVkRG93bmxvYWQgPSBuaWw7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRXaXRoRGF0
YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAo
IXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBy
ZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rv
d25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAg
IEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQo
ZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFp
bFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFVua25vd25Db250ZW50
TGVuZ3RoKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtdKENvbm5lY3Rpb24gY29ubmVjdGlv
bikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNo
YXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKCJIVFRQLzEu
MSAyMDAgT0tcclxuXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSkpOworICAgICAgICB9KTsK
KyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXdd
IGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRl
OworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0
aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBk
ZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dyaXR0
ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkgeworICAgICAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiAhPSA1MDAwKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzV3JpdHRl
biwgNTAwMCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSwgLTEpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH07CisgICAgfTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4o
JmRvbmUpOworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25n
U3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgSW52YWxpZEFyZ3Vt
ZW50cykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBfX2Jsb2NrIGJvb2wgY2F1Z2h0RXhjZXB0aW9uID0gZmFsc2U7CisgICAgYXV0byBz
ZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0
RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBzdGFydERv
d25sb2FkV2l0aFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3dlYmtp
dC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAg
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJndW1lbnRFeGNl
cHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVnaHRFeGNlcHRp
b24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0YXRpYyBIVFRQ
U2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAgICAgeyAiLyIs
IHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJDdXN0b20tTmFt
ZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VGFyZ2V0Iiwg
eyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdEFsbG93
KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTCAqZXhw
ZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxlQ29weV0gYXV0
b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5IiBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19ibG9jayBib29s
IGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0
aFJlcXVlc3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5T
SFRUUFVSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkIChe
Y29tcGxldGlvbkhhbmRsZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9OVUxMKHJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJvYmFibHkg
d2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
cmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgICAgICBFWFBFQ1RfRVEocmVzcG9uc2Uuc3RhdHVzQ29kZSwgMzAxKTsK
KyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5hbGxIZWFkZXJGaWVsZHNbQCJD
dXN0b20tTmFtZSJdLCAiQ3VzdG9tLVZhbHVlIik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEocmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcsIFtzZXJ2ZXJSZXF1ZXN0LlVSTCBVUkxCeUFw
cGVuZGluZ1BhdGhDb21wb25lbnQ6QCJyZWRpcmVjdFRhcmdldCJdLmFic29sdXRlU3RyaW5nKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFs
bG93KTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5h
bWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShy
ZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwgIi8iKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07Cisg
ICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAg
ICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOwor
ICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQRUNUX0VRKHNlcnZl
ci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0LAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gK
KyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNlbCkKK3sKKyAgICBh
dXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1ZXN0ICpzZXJ2ZXJS
ZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9IGZhbHNlOworICAg
IFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcpOwor
ICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMwMSk7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRzW0AiQ3VzdG9tLU5h
bWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJMQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmluZyk7CisgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwpOwor
ICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25s
b2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAg
IEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVy
cm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJy
b3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBjYW5jZWxsZWQgPSB0
cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2FuY2VsbGVkKTsKKyAg
ICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhF
cnJvcgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1ZXN0cygpLCAxdSk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVyZSkKK3sKKyAgICBI
VFRQU2VydmVyIHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9
IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlclJlcXVl
c3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0
aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAq
cmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENvbm5lY3RUb0hvc3QpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsK
KyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRp
ZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRS
ZXF1ZXN0NDA0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsg
NDA0LCB7IH0sICJodHRwIGJvZHkiIH0gfQorICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNo
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFdpdGhSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQg
KmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVlOworICAgICAgICB9Owor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgIGNoZWNrRmlsZUNvbnRl
bnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURl
c3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsKK30KKworVEVTVChXS0Rv
d25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxv
YWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZp
bGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2Fk
RGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAq
ZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAg
ICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgCisg
ICAgX19ibG9jayBib29sIHRlcm1pbmF0ZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgewor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsK
KyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlv
bkxvc3QpOworICAgICAgICB0ZXJtaW5hdGVkID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3
LmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfdGVybWluYXRlTmV0d29ya1Byb2Nlc3Nd
OworICAgIFV0aWw6OnJ1bigmdGVybWluYXRlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgU3VnZ2VzdGVkRmlsZW5h
bWVGcm9tSG9zdCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7
ICJkb3dubG9hZCBjb250ZW50IiB9IH0KKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1
Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEu
dHh0Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uuc3VnZ2VzdGVkRmls
ZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25s
b2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRG
aWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisg
ICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVxdWVzdEhUVFBCb2R5KQoreworICAgIGF1
dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW1tzZXJ2ZXIucmVxdWVzdCgp
IG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmVxdWVzdC5IVFRQQm9keSA9IFtAImJv
ZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICBbd2ViVmll
dyBzdGFydERvd25sb2FkV2l0aFJlcXVlc3Q6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLm9yaWdp
bmFsUmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBXZSBwcm9iYWJseSB3YW50IHRvIG1ha2Ug
dGhpcyBub24tbnVsbC4KKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6
cnVuKCZkb25lKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBQYXRoTXVzdEV4aXN0KQoreworICAg
IE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJl
Y3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBp
c0RpcmVjdG9yeTpZRVNdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVt
b3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3du
bG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxl
LnR4dCJdOworCisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBh
dXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3
ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29s
IGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3du
bG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93
bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRo
RXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqKSB7CisgICAg
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsK
KyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRl
RmlsZSk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07Cisg
ICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVu
KCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRo
RXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGaWxlTXVzdE5vdEV4aXN0KQor
eworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgX19i
bG9jayBhdXRvIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0
ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0
KCk7CisKKyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2siIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVjdGVkRG93bmxv
YWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFs
c2U7CisgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gcmV0YWluZWRE
ZWxlZ2F0ZS5nZXQoKTsKKyAgICAgICAgcmV0YWluZWREZWxlZ2F0ZS5nZXQoKS5kZWNpZGVEZXN0
aW5hdGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgewor
CisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSk7CisgICAgICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IHJldGFpbmVkRGVs
ZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICopIHsK
KyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9y
RG9tYWluKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7CisgICAg
ICAgICAgICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpz
ZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisKKyAgICBjaGVja0Nh
bGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCksIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25XaXRo
UmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0
aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKikgeworICAg
ICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7
CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7
CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRpbDo6cnVuKCZmYWls
ZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRl
RGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IK
KyAgICB9KTsKK30KKworLy8gTW9qYXZlIGRvd25sb2FkIHRhc2tzIGRvbid0IGNhbGwgZGlkUmVj
ZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1YXRpb24uCisjaWYgIVVTRShMRUdB
Q1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKK1RFU1QoV0tEb3dubG9hZCwgQ2hhbGxlbmdlU3VjY2Vz
cykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7eyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQi
IH19fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0g
W1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGJv
b2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07
CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7CisgICAgZGVsZWdh
dGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgcmVjZWl2ZWRD
aGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25X
aXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAq
LCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIFt3ZWJWaWV3IHN0
YXJ0RG93bmxvYWRXaXRoUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmZpbmlzaGVkKTsKKyAgICBFWFBFQ1Rf
VFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWRE
b3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tDYWxsYmFja1JlY29y
ZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisjZW5kaWYKKworVEVTVChXS0Rvd25sb2Fk
LCBDaGFsbGVuZ2VGYWlsdXJlKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNl
cnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxv
YWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2Vi
VmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7
CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQs
IE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisjaWYgVVNFKExFR0FDWV9D
Rk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93bmxvYWQgdGFza3MgZG9u
J3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4K
KyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JTZWN1cmVDb25uZWN0aW9u
RmFpbGVkKTsKKyNlbHNlCisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9y
Q2FuY2VsbGVkKTsKKyNlbmRpZgorICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgIH07CisgICAg
X19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
KSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5h
dXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0
KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNh
bmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwpOworICAgICAgICByZWNlaXZlZENoYWxs
ZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkV2l0aFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgfV07Cisg
ICAgVXRpbDo6cnVuKCZmYWlsZWQpOworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9B
RFMpCisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFsbGVuZ2UpOworI2VuZGlmCisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19E
T1dOTE9BRFMpCisgICAgICAgIC8vIE1vamF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uLgorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyNlbmRpZgorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK3ZvaWQg
YmxvYlRlc3QoYm9vbCBkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0ZWRDYWxsYmFja3MpCit7CisgICAgTlNT
dHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7
IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIg
ICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3Jl
YXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuZG93bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFt
ZSc7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkg
b25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6aHRtbCBiYXNlVVJMOm5pbF07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgICAgIGlmIChbYWN0aW9u
LnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5r
Il0pCisgICAgICAgICAgICBFWFBFQ1RfTlVMTChhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVz
dC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlv
bi5kb3dubG9hZEF0dHJpYnV0ZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgICAgIGlm
IChkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QmVjb21lRG93bmxvYWQpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgfTsK
KyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJi
bG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3Qu
VVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVz
cG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25s
b2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3dubG9h
ZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGlu
YXRpb25XaXRoUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVy
KShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuVVJMLnNjaGVt
ZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZpbGVuYW1lLCAi
ZG93bmxvYWRGaWxlbmFtZSIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25sb2FkICopIHsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICIxMjMiKTsKKyAgICBjaGVja0NhbGxi
YWNrUmVjb3JkKGRlbGVnYXRlLCBleHBlY3RlZENhbGxiYWNrcyk7Cit9CisKK1RFU1QoV0tEb3du
bG9hZCwgQmxvYlJlc3BvbnNlKQoreworICAgIGJsb2JUZXN0KGZhbHNlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNl
QmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworCisgICAgYmxvYlRlc3QodHJ1ZSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOwor
fQorCitURVNUKFdLRG93bmxvYWQsIEJsb2JSZXNwb25zZU5vRmlsZW5hbWUpCit7CisgICAgTlNT
dHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7
IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7IgorICAgICIg
ICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYgPSBVUkwuY3Jl
YXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0iCisgICAgIjwv
c2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3IGxv
YWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8v
d2Via2l0Lm9yZy8iXV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
XihXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKGFjdGlvbi5k
b3dubG9hZEF0dHJpYnV0ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNw
b25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tf
U1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAid2Via2l0
Lm9yZyIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07Cisg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNwb25z
ZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwuc2NoZW1l
LCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5hbWUsICJV
bmtub3duIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG5pbCk7CisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0NhbGxiYWNr
UmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25B
Y3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAgfSk7Cit9CisKK1RFU1QoV0tE
b3dubG9hZCwgU3ViZnJhbWVPcmlnaW5hdG9yKQoreworICAgIGNvbnN0IGNoYXIqIGdyYW5kY2hp
bGRGcmFtZUhUTUwgPSAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxvYigpIHsi
CisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisgICAgIiAg
ICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVSTC5jcmVh
dGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAgICAiPC9z
Y3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAgSFRUUFNl
cnZlciBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBncmFuZGNoaWxk
RnJhbWVIVE1MIH0gfQorICAgIH0pOworICAgIEhUVFBTZXJ2ZXIgY2hpbGRGcmFtZVNlcnZlcih7
CisgICAgICAgIHsgIi8iLCB7IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBz
cmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvJz48L2lmcmFtZT4iLCBncmFuZGNoaWxkRnJhbWVTZXJ2
ZXIucG9ydCgpXSB9IH0KKyAgICB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKmdyYW5kY2hpbGRGcmFt
ZVNlcnZlclJlcXVlc3QgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIE5T
VVJMUmVxdWVzdCAqY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QgPSBjaGlsZEZyYW1lU2VydmVyLnJl
cXVlc3QoKTsKKyAgICB1aW50MTZfdCBncmFuZGNoaWxkRnJhbWVTZXJ2ZXJQb3J0ID0gZ3JhbmRj
aGlsZEZyYW1lU2VydmVyLnBvcnQoKTsKKworICAgIE5TU3RyaW5nICptYWluSFRNTCA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGlmcmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQv
Jz48L2lmcmFtZT4iLCBjaGlsZEZyYW1lU2VydmVyLnBvcnQoKV07CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmlldyBsb2FkSFRN
TFN0cmluZzptYWluSFRNTCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmcvIl1dOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdh
dGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2Ug
PSBeKFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5k
bGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpIHsKKyAgICAgICAgaWYgKFtyZXNwb25z
ZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiaHR0cDovL3dl
YmtpdC5vcmcvIl0KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1
dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZ10KKyAgICAgICAgICAgIHx8IFtyZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1
dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOmdyYW5kY2hpbGRGcmFtZVNlcnZlclJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nXSkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QWxsb3cpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkKTsK
KyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25s
b2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9u
c2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
Ll9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0LCAiMTI3LjAuMC4xIik7CisgICAgICAgIEVYUEVD
VF9FUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4ucG9ydCwgZ3JhbmRjaGlsZEZyYW1l
U2VydmVyUG9ydCk7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
fTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uV2l0aFJlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5z
Y2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFt
ZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmln
YXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25z
ZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93
bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uCisgICAg
fSk7Cit9CisKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9h
ZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZFByb2dyZXNzLm1tCmluZGV4IGYwMDNhYzI4Y2UxZTg5NjdmNWRhYjBkODg4Y2M3ODY4NzUx
MTY1NjkuLmIxYjE0NGZlYWM5YzdhYWQyYzJhMmJhMTZkMjY4MGUyNmM5OTQ2MDAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQcm9ncmVz
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
UHJvZ3Jlc3MubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9pZCogcHJvZ3Jlc3NPYnNl
cnZpbmdDb250ZXh0ID0gJnByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dDsKIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6
KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxl
cjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgog
ewogICAgIGlmIChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVydExvYWRU
b0Rvd25sb2FkKQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNl
UG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KaW5kZXggOTc1ODdkNjUwNzIzZDAyZTNlYWVjZmJiNTE0MzhhOTllNDc5
MjM4MS4uMmNmZmM5YTcwOWY1NTBkZmExZGQ1YzMxZGIyMjk4MmI0YWUwZDFjNiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQpAQCAtMTM3Miw2ICsxMzcyLDggQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKICAgICAg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIg
YXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxk
LmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwogICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKCEhZXJyb3IpOworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRVJST1IgJUAiLCBlcnJvcik7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJh
bWUpCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6
QCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3Qt
YWJvdXQtYmxhbmstc3ViZnJhbWUiXSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQppbmRleCBhN2Q0ZTUzYTM1MTc5MjQ1ZDFlOTA0MGMzZWE1NmUzYTA4
MjIzZmNkLi40ZWUxOTI2N2IzMDAwZjg5NWE5OGQzMDk1MTc4OWU5Zjk2Y2Q2YWI1IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TVVJMPiBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uVVJMOwogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRs
ZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOworICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3du
bG9hZCA/IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgOiBXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdh
dGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCBhZTJiYzdmZTY2NTM0ZDY3
OWE0OGZiNDFmNjEzZjNlMDhhMDgwMWJmLi5kZmUxZDM4YzY2YzQ4ZmZjYzg4NWY4MzFmYzMwMmZi
OTQ5N2I1MzczIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1F1aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1F1aWNrTG9vay5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIFRFU1QoUXVpY2tMb29rLCBDYW5j
ZWxSZXNwb25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9h
ZFJlc3BvbnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6
cGFnZXNEb2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tM
b29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRV
UkwgcmVzcG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9h
ZF0pOwogICAgIHJ1blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1Rf
RVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdh
dGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRp
ZEZpbmlzaE5hdmlnYXRpb25dKTsKQEAgLTM3OSw3ICszNzksNyBAQCBURVNUKFF1aWNrTG9vaywg
RG93bmxvYWRSZXNwb25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogI2lmIFBMQVRGT1JNKElPUykg
JiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tM
b29rLCBEb3dubG9hZFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVj
dGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50
UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xv
b2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVS
TCBwcmV2aWV3TUlNRVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBv
bGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkXSk7CiAgICAgcnVu
VGVzdERlY2lkZUFmdGVyTG9hZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpwYWdlc0RvY3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9y
RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25F
cnJvcl0uY29kZSk7CiAgICAgRVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0
aW9uXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9h
ZERlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVn
YXRlLmgKaW5kZXggN2FhZDIzYzNlYzViNDIxNzUxZWRjODQwMGMwYTBlYTYwYjhjNDg1Yi4uMzA5
Mzc1MDM5NzMzZWNiOTYwN2E1YjAyODI0MDU5NWM4OGY1NTRlNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaApAQCAtMjQsMTcgKzI0LDM1
IEBACiAgKi8KIAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgotI2ltcG9ydCA8V2ViS2l0L19X
S0Rvd25sb2FkRGVsZWdhdGUuaD4KIAotQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6
IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVsZWdhdGU+Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRvd25sb2FkRGlkU3RhcnQpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dL
RG93bmxvYWQgKiwgTlNVUkwgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAo
XmRpZFJlY2VpdmVSZXNwb25zZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9h
ZCAqLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2NF90KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9X
S0Rvd25sb2FkICosIE5TU3RyaW5nICosIHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKLUBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rv
d25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0
aEVycm9yKShfV0tEb3dubG9hZCAqLCBOU0Vycm9yICopOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZENhbmNlbCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lk
ICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlh
bCopKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGlu
YXRpb24pKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICopOworZW51bSBjbGFzcyBEb3dubG9hZENh
bGxiYWNrIDogdWludDhfdCB7CisgICAgV2lsbFJlZGlyZWN0LAorICAgIEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLAorICAgIERlY2lkZURlc3RpbmF0aW9uLAorICAgIERpZFdyaXRlRGF0YSwKKyAg
ICBEaWRGaW5pc2gsCisgICAgRGlkRmFpbFdpdGhFcnJvciwKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
QmVjYW1lRG93bmxvYWQsCisgICAgTmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbiwKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2UsCit9OworCitAaW50
ZXJmYWNlIFRlc3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8V0tEb3dubG9hZERlbGVnYXRl
LCBXS05hdmlnYXRpb25EZWxlZ2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxS
ZXNwb25zZSAqLCBOU1VSTFJlcXVlc3QgKiwgdm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwg
TlNVUkxDcmVkZW50aWFsKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF4pKE5TVVJMICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShXS0Rvd25sb2FkICosIGludDY0X3QsIGludDY0
X3QsIGludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9h
ZERpZEZpbmlzaCkoV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZGlkRmFpbFdpdGhFcnJvcikoV0tEb3dubG9hZCAqLCBOU0Vycm9yICosIE5TRGF0YSAq
KTsKKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uQWN0aW9u
RGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tE
b3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQg
KF5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwg
dm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgdm9pZCAoXmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkoV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiwgdm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKTsK
KworLSAodm9pZCl3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2g7CistIChWZWN0b3I8RG93bmxvYWRD
YWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVjb3JkOworCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbQppbmRleCAxZGI1Y2Q4MTFhYjZm
NWQ5OWI0MTNlNmQyMWFhYTMwMmE4MDFmZGQzLi4wNTMwOTM3MzUxNjAzNDEyZGVhYjQyYzY4ZmRj
NzFjYWYwZWRiOTRjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RE
b3dubG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERv
d25sb2FkRGVsZWdhdGUubW0KQEAgLTI2LDY4ICsyNiwxMTMgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRl
c3REb3dubG9hZERlbGVnYXRlCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQ
cml2YXRlLmg+CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQKLXsKLSAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERp
ZFN0YXJ0KGRvd25sb2FkKTsKK0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7
CisgICAgVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAo
dm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICop
cmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7
Ci0gICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOworICAgIF9jYWxsYmFja1Jl
Y29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0KTsKKworICAgIEFTU0VS
VChfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOworICAgIF93aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihkb3dubG9hZCwgcmVzcG9uc2UsIHJlcXVlc3QsIGRlY2lzaW9uSGFuZGxlcik7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVS
ZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2FkOihXS0Rv
d25sb2FkICopZG93bmxvYWQgZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRG
aWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkwgKmRlc3RpbmF0aW9uKSlj
b21wbGV0aW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQotICAgICAg
ICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7CisgICAgX2NhbGxiYWNr
UmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbik7CisKKyAg
ICBBU1NFUlQoX2RlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlKTsKKyAgICBfZGVjaWRlRGVz
dGluYXRpb25XaXRoUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFt
ZSwgY29tcGxldGlvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5
dGVzV3JpdHRlbjoodWludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZToodWludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClkb3du
bG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dy
aXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7
CisgICAgLy8gZGlkV3JpdGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVy
IG9mIHRpbWVzLCBzbyBvbmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2Fs
bGJhY2tSZWNvcmQuaXNFbXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxv
YWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5k
KERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdyaXRlRGF0
YSkKICAgICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5
dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRp
b25IYW5kbGVyCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7
Ci0gICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBm
aWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQo
RG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgaWYgKF9k
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRs
ZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZvaWQpX2Rv
d25sb2FkRGlkRmluaXNoOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRvd25sb2Fk
RGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQu
YXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rvd25sb2Fk
RGlkRmluaXNoKQogICAgICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi0t
ICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9y
OihOU0Vycm9yICopZXJyb3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9h
ZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICop
cmVzdW1lRGF0YQogeworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFj
azo6RGlkRmFpbFdpdGhFcnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCi0gICAg
ICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9kaWRGYWls
V2l0aEVycm9yKGRvd25sb2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZvaWQpX2Rv
d25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9u
ICopbmF2aWdhdGlvbkFjdGlvbiBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25s
b2FkCiB7Ci0gICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlk
Q2FuY2VsKGRvd25sb2FkKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uQWN0aW9uLCBkb3dubG9hZCk7CiB9
CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNo
YWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6
KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKQotICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfY2FsbGJhY2tS
ZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURv
d25sb2FkKTsKKworICAgIGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQp
CisgICAgICAgIF9uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBu
YXZpZ2F0aW9uUmVzcG9uc2UsIGRvd25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZp
Z2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAg
X2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9u
c2UpOworCisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAg
ICAgIF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UobmF2aWdhdGlvblJlc3BvbnNl
LCBkZWNpc2lvbkhhbmRsZXIpOwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cisg
ICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURv
d25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRp
b25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbik7CisKKyAgICBpZiAoX2RlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pCisgICAgICAgIF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKG5hdmlnYXRpb25BY3Rpb24sIGRlY2lzaW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCist
ICh2b2lkKXdhaXRGb3JEb3dubG9hZERpZEZpbmlzaAoreworICAgIF9fYmxvY2sgYm9vbCBmaW5p
c2hlZCA9IGZhbHNlOworICAgIEFTU0VSVCghX2Rvd25sb2FkRGlkRmluaXNoKTsKKyAgICBfZG93
bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICBmaW5pc2hlZCA9IHRy
dWU7CisgICAgfTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKIH0K
IAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVz
dGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24KKy0gKFZlY3RvcjxEb3dubG9hZENhbGxi
YWNrPil0YWtlQ2FsbGJhY2tSZWNvcmQKIHsKLSAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9u
KQotICAgICAgICBfZGlkQ3JlYXRlRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsK
KyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShfY2FsbGJhY2tSZWNvcmQsIHsgfSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTEyNDYxZWExMmM5Y2FkYTYxNWQxZTJjNGE1NzMx
ZjFkMTVkMTNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oPgorCitAaW50ZXJmYWNlIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIDogTlNP
YmplY3Q8X1dLRG93bmxvYWREZWxlZ2F0ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2
b2lkICheZG93bmxvYWREaWRTdGFydCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0
b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3du
bG9hZCAqLCBOU1VSTCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZVJlc3BvbnNlKShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICos
IHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93
bmxvYWQgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOworQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxv
YWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJy
b3IpKF9XS0Rvd25sb2FkICosIE5TRXJyb3IgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRvd25sb2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KShfV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4p
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikp
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlv
bikoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKik7CitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44NzdhOTI0YmRmZTY5NWUwYjc5MTViOTVlZmU5ZjA1ZGJmMWNhMDgzCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZS5tbQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgi
CisjaW1wb3J0ICJUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oIgorCitAaW1wbGVtZW50YXRp
b24gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUKKworLSAodm9pZClfZG93bmxvYWREaWRTdGFy
dDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRTdGFydCkK
KyAgICAgICAgX2Rvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDooTlNVUkwgKil1cmwKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
KQorICAgICAgICBfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVybCk7
Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2Vp
dmVSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9kaWRSZWNl
aXZlUmVzcG9uc2UpCisgICAgICAgIF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJlc3Bv
bnNlKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlk
V3JpdGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2
NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90
KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKK3sKKyAgICBpZiAoX2RpZFdyaXRlRGF0YSkKKyAg
ICAgICAgX2RpZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3Jp
dHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShC
T09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgQVNTRVJUKF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZSk7CisgICAgX2RlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2Fk
LCBmaWxlbmFtZSwgY29tcGxldGlvbkhhbmRsZXIpOworfQorCistICh2b2lkKV9kb3dubG9hZERp
ZEZpbmlzaDooX1dLRG93bmxvYWQgKilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRG
aW5pc2gpCisgICAgICAgIF9kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7Cit9CisKKy0gKHZv
aWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgoreworICAgIGlmIChfZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgX2Rp
ZEZhaWxXaXRoRXJyb3IoZG93bmxvYWQsIGVycm9yKTsKK30KKworLSAodm9pZClfZG93bmxvYWRE
aWRDYW5jZWw6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlk
Q2FuY2VsKQorICAgICAgICBfZG93bmxvYWREaWRDYW5jZWwoZG93bmxvYWQpOworfQorCistICh2
b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ug
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAo
X2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFu
ZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKK30KKworLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGluYXRpb246KE5T
U3RyaW5nICopZGVzdGluYXRpb24KK3sKKyAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9uKQor
ICAgICAgICBfZGlkQ3JlYXRlRGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKK30K
KworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCAw
YzZjNjUxNDE3YzIxNmJmNzczMGFkYTc3YjcxMDZkOTBmYmEyNjMzLi44OWJhMzNhMWE2N2Y1N2Ix
ZDA5YWI4YzU5M2Y1MzAxZWExOTU2OGViIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtNDAsNiArNDAsOCBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGUu
aD4KICNpbmNsdWRlIDxXZWJLaXQvV0tDcmVkZW50aWFsLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dL
RG93bmxvYWRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0ZyYW1lSGFuZGxlUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJh
bWVJbmZvUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JlUmVmLmg+CkBA
IC04MCw2ICs4Miw3IEBACiAjaW5jbHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1
ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzIsNiArMTM1LDMzIEBAIHN0YXRpYyBX
S1N0cmluZ1JlZiBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdLUGFnZVJl
ZiwgY29uc3Qgdm9pZCopCiAgICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJNSUhGTUhFd1hEQU5CZ2txaGtpRzl3MEJBUUVGQUFOTEFEQklBa0VBblgwVElMSnJPTVV1ZSUy
QlB0d0JSRTZYZlYlMEFXdEtRYnNzaHhrNVpoY1V3Y3d5dmNuSXE5YjgyUWhKZG9BQ2REMzRycWZD
QUlORDQ2ZlhLUVVuYjBtdkt6UUlEJTBBQVFBQkZoRk5iM3BwYkd4aFNYTk5lVVp5YVdWdVpEQU5C
Z2txaGtpRzl3MEJBUVFGQUFOQkFBS3YyRWV4Mm4lMkZTJTBBciUyRjdpSk5yb1dsU3pTTXRUaVFU
RUIlMkJBRFdIR2o5dTF4clVyT2lscSUyRm8yY3VReElmWmNOWmtZQWtXUDREdWJxVyUwQWkwJTJG
JTJGcmdCdm1jbyUzRCIpOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uRGlk
QmVjb21lRG93bmxvYWRTaGFyZWQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nh
c3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CisKKyAg
ICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50IHsKKyAgICAgICAgeyAwLCBjbGllbnRJbmZvIH0s
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMLAorICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dl
c3RlZEZpbGVuYW1lLAorICAgICAgICBudWxscHRyLCAvLyBkaWRXcml0ZURhdGEKKyAgICAgICAg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoLAorICAgICAgICBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRGYWlsCisgICAgfTsKKworICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93
bmxvYWQsICZjbGllbnQuYmFzZSk7Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJl
ZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudEluZm8p
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVm
IGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIG5hdmlnYXRpb25EaWRC
ZWNvbWVEb3dubG9hZFNoYXJlZChkb3dubG9hZCwgY2xpZW50SW5mbyk7Cit9CisKIEFzeW5jVGFz
ayogQXN5bmNUYXNrOjptX2N1cnJlbnRUYXNrOwogCiBib29sIEFzeW5jVGFzazo6cnVuKCkKQEAg
LTMzNiw3MiArMzY2LDcyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQ
YWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBXS1BhZ2VV
SUNsaWVudFY4IG90aGVyUGFnZVVJQ2xpZW50ID0gewogICAgICAgICB7IDgsIHZpZXcgfSwKLSAg
ICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAg
IDAsIC8vIHNob3dQYWdlCisgICAgICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBzaG93UGFnZQogICAgICAgICBj
bG9zZU90aGVyUGFnZSwKLSAgICAgICAgMCwgLy8gdGFrZUZvY3VzCisgICAgICAgIG51bGxwdHIs
IC8vIHRha2VGb2N1cwogICAgICAgICBmb2N1cywKICAgICAgICAgdW5mb2N1cywKLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAg
MCwgLy8gc2V0U3RhdHVzVGV4dAotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIG1pc3NpbmdQbHVnaW5CdXR0
b25DbGlja2VkCi0gICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50Ci0gICAgICAgIDAs
IC8vIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQKLSAgICAgICAgMCwgLy8gdG9vbGJhcnNBcmVWaXNp
YmxlCi0gICAgICAgIDAsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBt
ZW51QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKLSAgICAg
ICAgMCwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c0Jhcklz
VmlzaWJsZQotICAgICAgICAwLCAvLyBpc1Jlc2l6YWJsZQotICAgICAgICAwLCAvLyBzZXRJc1Jl
c2l6YWJsZQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRl
ZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxl
cnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNU
ZXh0CisgICAgICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gbWlzc2luZ1BsdWdpbkJ1dHRvbkNs
aWNrZWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQKKyAgICAgICAg
bnVsbHB0ciwgLy8gZGlkTm90SGFuZGxlV2hlZWxFdmVudAorICAgICAgICBudWxscHRyLCAvLyB0
b29sYmFyc0FyZVZpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0VG9vbGJhcnNBcmVWaXNp
YmxlCisgICAgICAgIG51bGxwdHIsIC8vIG1lbnVCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0
ciwgLy8gc2V0TWVudUJhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBzdGF0dXNCYXJJ
c1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0U3RhdHVzQmFySXNWaXNpYmxlCisgICAg
ICAgIG51bGxwdHIsIC8vIGlzUmVzaXphYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldElzUmVz
aXphYmxlCiAgICAgICAgIGdldFdpbmRvd0ZyYW1lLAogICAgICAgICBzZXRXaW5kb3dGcmFtZSwK
ICAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAotICAgICAgICAwLCAvLyBkaWRE
cmF3Ci0gICAgICAgIDAsIC8vIHBhZ2VEaWRTY3JvbGwKLSAgICAgICAgMCwgLy8gZXhjZWVkZWRE
YXRhYmFzZVF1b3RhCisgICAgICAgIG51bGxwdHIsIC8vIGRpZERyYXcKKyAgICAgICAgbnVsbHB0
ciwgLy8gcGFnZURpZFNjcm9sbAorICAgICAgICBudWxscHRyLCAvLyBleGNlZWRlZERhdGFiYXNl
UXVvdGEKICAgICAgICAgcnVuT3BlblBhbmVsLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKLSAg
ICAgICAgMCwgLy8gZm9vdGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKLSAgICAg
ICAgMCwgLy8gZHJhd0Zvb3RlcgorICAgICAgICBudWxscHRyLCAvLyBoZWFkZXJIZWlnaHQKKyAg
ICAgICAgbnVsbHB0ciwgLy8gZm9vdGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGRyYXdI
ZWFkZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1l
LAogICAgICAgICBydW5Nb2RhbCwKLSAgICAgICAgMCwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5k
Rm9yTWFpbkZyYW1lCi0gICAgICAgIDAsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIKLSAgICAgICAgMCwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdAotICAgICAgICAwLCAv
LyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnQKLSAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3QKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gc2hvd0Nv
bG9yUGlja2VyCi0gICAgICAgIDAsIC8vIGhpZGVDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyB1
bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKLSAgICAgICAgMCwgLy8gcGlubmVkU3RhdGVE
aWRDaGFuZ2UKLSAgICAgICAgMCwgLy8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3Vz
ZVByZXNzCi0gICAgICAgIDAsIC8vIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzCi0gICAgICAg
IDAsIC8vIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAg
MCwgLy8gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29t
cGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIHNhdmVEYXRh
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW50ZXJy
dXB0SmF2YVNjcmlwdAorICAgICAgICBudWxscHRyLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3QKKyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25D
bGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvd0Nv
bG9yUGlja2VyCisgICAgICAgIG51bGxwdHIsIC8vIGhpZGVDb2xvclBpY2tlcgorICAgICAgICBu
dWxscHRyLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICAgICAgbnVsbHB0
ciwgLy8gcGlubmVkU3RhdGVEaWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5U
cmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJl
Y29nbml6ZUxvbmdNb3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENhbmNlbFRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNQbGF5aW5n
QXVkaW9EaWRDaGFuZ2UKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3QsCi0gICAgICAgIDAsIC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0b24KLSAgICAgICAg
MCwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25m
aXJtCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gdW51
c2VkNQorICAgICAgICBudWxscHRyLCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCisgICAgICAg
IG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRBbGVydAorICAgICAgICBudWxscHRyLCAvLyBydW5K
YXZhU2NyaXB0Q29uZmlybQorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0
CisgICAgICAgIG51bGxwdHIsIC8vIHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAog
ICAgICAgICBydW5KYXZhU2NyaXB0QWxlcnQsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRD
b25maXJtCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0
ciwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNj
cmlwdFByb21wdAogICAgICAgICBjaGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCi0g
ICAgICAgIDAsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAotICAgICAgICAwLCAvLyBm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsCisgICAgICAgIG51bGxwdHIsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1
cm5Ub0lubGluZQogICAgICAgICByZXF1ZXN0UG9pbnRlckxvY2ssCi0gICAgICAgIDAsCisgICAg
ICAgIG51bGxwdHIsIC8vIGRpZExvc2VQb2ludGVyTG9jawogICAgIH07CiAgICAgV0tQYWdlU2V0
UGFnZVVJQ2xpZW50KG5ld1BhZ2UsICZvdGhlclBhZ2VVSUNsaWVudC5iYXNlKTsKICAgICAKQEAg
LTQxMCwxNiArNDQwLDE2IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQ
YWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZSwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwKLSAgICAg
ICAgMCwgLy8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZENvbW1pdE5hdmlnYXRpb24K
LSAgICAgICAgMCwgLy8gZGlkRmluaXNoTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWls
TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZQotICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAgICAgICAgMCwgLy8gZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZENvbW1pdE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkRmluaXNoTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2
aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJm
cmFtZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAg
bnVsbHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAv
LyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlLAogICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsCiAgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwKQEAgLTQyOCw5ICs0NTgsMTIgQEAgV0tQ
YWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb24KICAgICAgICAgd2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAog
ICAgICAgICBkaWRFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdh
dGlvbkdlc3R1cmVTbmFwc2hvdCwKLSAgICAgICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0
ZQotICAgICAgICAwLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29w
eVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZworICAgICAgICBudWxscHRyLCAvLyB3
ZWJQcm9jZXNzRGlkVGVybWluYXRlCisgICAgICAgIG51bGxwdHIsIC8vIGNvbnRlbnRSdWxlTGlz
dE5vdGlmaWNhdGlvbgorICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nLAorICAgICAgICBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAg
IG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkLAorICAgICAgICBudWxscHRyIC8v
IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VO
YXZpZ2F0aW9uQ2xpZW50KG5ld1BhZ2UsICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIApA
QCAtNzUwLDE2ICs3ODMsMTYgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dp
dGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UsCiAgICAgICAgIGRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQsCi0gICAgICAgIDAs
IC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uCiAgICAgICAgIGRpZENvbW1pdE5hdmlnYXRpb24sCiAgICAgICAgIGRpZEZpbmlz
aE5hdmlnYXRpb24sCi0gICAgICAgIDAsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0gICAgICAgIDAs
IC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lCi0gICAgICAgIDAsIC8vIGRpZEZp
bmlzaERvY3VtZW50TG9hZAotICAgICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Ci0gICAgICAgIDAsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCisgICAgICAgIG51bGxw
dHIsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92
aXNpb25hbExvYWRJblN1YmZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZAorICAgICAgICBudWxscHRyLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCisg
ICAgICAgIG51bGxwdHIsIC8vIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCiAgICAgICAgIGNh
bkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UsCiAgICAgICAgIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKICAgICAgICAgcHJvY2Vzc0RpZENyYXNoLApAQCAtNzY4
LDI4ICs4MDEsMTQgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRp
b25zKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogICAgICAgICB3aWxsRW5kTmF2aWdhdGlv
bkdlc3R1cmUsCiAgICAgICAgIGRpZEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRS
ZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90LAotICAgICAgICAwLCAvLyB3ZWJQcm9jZXNz
RGlkVGVybWluYXRlCi0gICAgICAgIDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgot
ICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisgICAgICAgIG51
bGxwdHIsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0ciwgLy8gY29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcsCisgICAgICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCwKKyAgICAgICAgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAg
IG51bGxwdHIgLy8gY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZAogICAgIH07CiAgICAgV0tQ
YWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZU5h
dmlnYXRpb25DbGllbnQuYmFzZSk7Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYxIGRv
d25sb2FkQ2xpZW50ID0gewotICAgICAgICB7IDEsIHRoaXMgfSwKLSAgICAgICAgZG93bmxvYWRE
aWRTdGFydCwKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ci0gICAgICAgIDAsIC8vIGRpZFJlY2VpdmVSZXNwb25zZQotICAgICAgICAwLCAvLyBkaWRSZWNl
aXZlRGF0YQotICAgICAgICAwLCAvLyBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZQot
ICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKLSAgICAgICAg
MCwgLy8gZGlkQ3JlYXRlRGVzdGluYXRpb24KLSAgICAgICAgZG93bmxvYWREaWRGaW5pc2gsCi0g
ICAgICAgIGRvd25sb2FkRGlkRmFpbCwKLSAgICAgICAgZG93bmxvYWREaWRDYW5jZWwsCi0gICAg
ICAgIDAsIC8vIHByb2Nlc3NEaWRDcmFzaDsKLSAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RUb1VSTAotICAgIH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQo
Y29udGV4dCgpLCAmZG93bmxvYWRDbGllbnQuYmFzZSk7CiAgICAgCiAgICAgLy8gdGhpcyBzaG91
bGQganVzdCBiZSBkb25lIG9uIHRoZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xp
ZW50VjEgaW5qZWN0ZWRCdW5kbGVDbGllbnQgPSB7CkBAIC0yMDc5LDQ1ICsyMDk4LDM1IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1Bh
Z2VSZWYgcGFnZSwgV0tBdXRoZW50CiB9CiAKIAotLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnQK
LQotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZG93bmxvYWREaWRTdGFydChjb250ZXh0LCBkb3dubG9hZCk7Ci19CisvLyBXS0Rv
d25sb2FkQ2xpZW50CiAgICAgCi1XS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93
bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3
cml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnRleHQsIGRvd25sb2FkLCBmaWxlbmFt
ZSwgYWxsb3dPdmVyd3JpdGUpOwotfQotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZpbmlzaChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxl
cio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goY29u
dGV4dCwgZG93bmxvYWQpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+
KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUoZG93bmxvYWQsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIH0KIAotdm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxU
ZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWRE
aWRGYWlsKGNvbnRleHQsIGRvd25sb2FkLCBlcnJvcik7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENv
bnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmlu
aXNoKGRvd25sb2FkKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5j
ZWwoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVmLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChjb250ZXh0LCBk
b3dubG9hZCk7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZv
aWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChkb3dubG9hZCwgZXJyb3IpOwogfQog
Ci12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRv
VVJMKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJl
ZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCitib29sIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewotICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKGNvbnRleHQsIGRvd25sb2FkLCB1cmwpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxU
ZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWRE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChkb3dubG9hZCwgbmV3UmVxdWVzdCk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZFN0YXJ0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9n
RG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRl
eHQoIkRvd25sb2FkIHN0YXJ0ZWQuXG4iKTsKIH0KIAotV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xs
ZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0
ZSkKK1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdn
ZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFt
ZSkKIHsKICAgICBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSB0b1dURlN0cmluZyhmaWxlbmFt
ZSk7CiAKQEAgLTIxMzMsMjggKzIxNDIsMzMgQEAgV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwKICAg
ICBpZiAoIWR1bXBSZW5kZXJUcmVlVGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICAqYWxsb3dPdmVyd3JpdGUgPSB0cnVlOwogICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xkZXIgPSBT
dHJpbmc6OmZyb21VVEY4KGR1bXBSZW5kZXJUcmVlVGVtcCk7CiAgICAgaWYgKHN1Z2dlc3RlZEZp
bGVuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSAiVW5rbm93biI7
CisgICAgCisgICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gdGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsg
c3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGlu
YXRpb24pKQorICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uKTsKIAot
ICAgIHJldHVybiB0b1dLKHRlbXBvcmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1l
KS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRvV0soZGVzdGluYXRpb24pLmxlYWtSZWYoKTsKIH0K
IAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tE
b3dubG9hZFJlZikKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAg
ICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY29tcGxldGVk
LlxuIik7CiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9
CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZiB1cmwpCitib29sIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93
bmxvYWRSZWYsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0KQogeworICAgIGF1dG8gdXJsID0gYWRv
cHRXSyhXS1VSTFJlcXVlc3RDb3B5VVJMKHJlcXVlc3QpKTsKICAgICBpZiAobV9zaG91bGRMb2dE
b3dubG9hZENhbGxiYWNrcykKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4
dChtYWtlU3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5n
KGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybCkpKSwgIlwiLlxuIikpOworICAgICAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRp
cmVjdGVkIHRvIFwiIiwgdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdl
dCgpKSkpLCAiXCIuXG4iKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJy
b3JSZWYgZXJyb3IpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3du
bG9hZFJlZiwgV0tFcnJvclJlZiBlcnJvcikKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9h
ZENhbGxiYWNrcykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJE
b3dubG9hZCBmYWlsZWQuXG4iX3MpOwpAQCAtMjE2OCwxMyArMjE4Miw2IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdL
RXJyb3JSZWYgZXJyCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25l
KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4
dFJlZiwgV0tEb3dubG9hZFJlZikKLXsKLSAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxi
YWNrcykKLSAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQg
Y2FuY2VsbGVkLlxuIik7Ci0gICAgbV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWRE
b25lKCk7Ci19Ci0KIHZvaWQgVGVzdENvbnRyb2xsZXI6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gY3Jh
c2ggbG9ncyBhcmUgYmVpbmcgc2F2ZWQgb24gV2luZG93cywgc28KQEAgLTI1MDQsNyArMjUxMSw3
IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
V0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmlnCiAgICAgYXV0byBkZWNpc2lvbkZ1bmN0aW9uID0g
W3Nob3VsZElnbm9yZSwgcmV0YWluZWRMaXN0ZW5lciwgcmV0YWluZWROYXZpZ2F0aW9uQWN0aW9u
LCBzaG91bGRTd2FwVG9FcGhlbWVyYWxTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiA9IG1fc2hvdWxk
U3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24sIHNob3VsZFN3YXBUb0RlZmF1
bHRTZXNzaW9uT25OZXh0TmF2aWdhdGlvbiA9IG1fc2hvdWxkU3dhcFRvRGVmYXVsdFNlc3Npb25P
bk5leHROYXZpZ2F0aW9uXSgpIHsKICAgICAgICAgaWYgKHNob3VsZElnbm9yZSkKICAgICAgICAg
ICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShyZXRhaW5lZExpc3RlbmVyLmdldCgpKTsK
LSAgICAgICAgZWxzZSBpZiAoV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2Fk
KHJldGFpbmVkTmF2aWdhdGlvbkFjdGlvbi5nZXQoKSkpCisgICAgICAgIGVsc2UgaWYgKFdLTmF2
aWdhdGlvbkFjdGlvbkdldERvd25sb2FkQXR0cmlidXRlKHJldGFpbmVkTmF2aWdhdGlvbkFjdGlv
bi5nZXQoKSkpCiAgICAgICAgICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChyZXRh
aW5lZExpc3RlbmVyLmdldCgpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoc2hv
dWxkU3dhcFRvRXBoZW1lcmFsU2Vzc2lvbk9uTmV4dE5hdmlnYXRpb24gfHwgc2hvdWxkU3dhcFRv
RGVmYXVsdFNlc3Npb25Pbk5leHROYXZpZ2F0aW9uKSB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggZGRlY2EwODgyYTMwOTZlMzdiZmQzZTcwZmVkNGUyMjczZGQ5
NmQyOS4uYmI3NWQ1MDcwMmMzYTUzZjM5ZGUxNTgxZGNjNGQzYjMzNzM5NjRjYiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtNDQ0LDE5ICs0NDQsMTkgQEAgcHJp
dmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tO
YXZpZ2F0aW9uUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lk
IGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYpOwogCi0gICAg
Ly8gV0tDb250ZXh0RG93bmxvYWRDbGllbnQKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFN0
YXJ0KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQg
ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRp
YyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxv
d092ZXJ3cml0ZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0gICAgV0tTdHJpbmdSZWYgZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKTsKLSAg
ICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRS
ZWYsIGNvbnN0IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZv
aWQgZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJl
Zik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VS
TFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmKTsKKyAgICAv
LyBXS0Rvd25sb2FkQ2xpZW50CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2Fk
UmVmLCBjb25zdCB2b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tEb3du
bG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25EaWRCZWNv
bWVEb3dubG9hZFNoYXJlZChXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBk
b3dubG9hZERpZFN0YXJ0KFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1VS
TFJlc3BvbnNlUmVmLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CisgICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpOworICAgIHN0
YXRpYyB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2
b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBXS0RhdGFSZWYs
IGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBX
S0Vycm9yUmVmKTsKKyAgICBzdGF0aWMgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJl
ZiwgY29uc3Qgdm9pZCopOworICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYpOwogICAgIAogICAgIHN0YXRp
YyB2b2lkIHByb2Nlc3NEaWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwogICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTMwNTk0MzExMWIwYTYyOTQ3
MDUwYTAxN2E5M2FmNjQ2YTY2MmRjYy4uMTAyMzkyNmI1MWI5Y2ZkYWU5ZjUwZGM5YmE4M2RlMGMx
NzMxZmE0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTEyLTAzICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBk
b3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAg
ICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2Fk
LXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRv
d25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1u
b2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQ6CisgICAgICAgIE5vdyB0aGF0IE5ldHdvcmtEYXRh
VGFza0Jsb2I6OnN1Z2dlc3RlZEZpbGVuYW1lIGRvZXNuJ3Qgc3VnZ2VzdCAidW5rbm93biIKKyAg
ICAgICAgdGhlIGNhcGl0YWxpemF0aW9uIGhhcyBjaGFuZ2VkIHRvICJVbmtub3duIiBmcm9tIE5T
VVJMUmVzcG9uc2UncyBzdWdnZXN0ZWRGaWxlbmFtZS4KKwogMjAyMC0xMi0wMiAgVHJ1aXR0IFNh
dmVsbCAgPHRzYXZlbGxAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGlu
ZyByMjcwMzM5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVs
ZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKaW5kZXggMDJh
ZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJhMDZl
N2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJM
IHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0
ZWQuCiBCbG9iIFVSTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dApp
bmRleCBiZWRjOGRkYTAxYzhjMTIzN2UxMDZjNjg1MzM0MGYzNzk2ZjdjZWU3Li5jNTExNzc5NWE1
OGMwOGZiZWUwNmNiMzk0MzFjZGMzMWQwZGI1OWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQt
c3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQtc3ludGhldGlj
LWNsaWNrLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDUgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1E
b3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rv
d25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93
bmxvYWQgY29tcGxldGVkLgogVGVzdCB0aGF0IHVzZXIgdHJpZ2dlcmVkIHN5bnRoZXRpYyBjbGlj
a3Mgb24gYW4gYW5jaG9yIHdpdGggYSBkb3dubG9hZCBhdHRyaWJ1dGUgYXJlIG5vdCBpZ25vcmVk
LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9h
bmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZp
bGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dApp
bmRleCAxMTE0MGZkMjE4ODdiODUxMjBkYWIxODNmOWZkOWIzZDBmNDdhYzVlLi4xMjAyN2MzZTEw
YWQ4YjBjMDFiZmE3YTYxMTI4NmU4NTYyOGJlOTMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93
bmxvYWQtYXN5bmMtZGVsZWdhdGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9h
ZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBz
dGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3du
IgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duIgogRG93
bmxvYWQgY29tcGxldGVkLgogVGhlIGRvd25sb2FkIHNob3VsZCBzdWNjZWVkLgogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1i
bG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2Fk
LWV4cGVjdGVkLnR4dAppbmRleCAxMTE0MGZkMjE4ODdiODUxMjBkYWIxODNmOWZkOWIzZDBmNDdh
YzVlLi4xMjAyN2MzZTEwYWQ4YjBjMDFiZmE3YTYxMTI4NmU4NTYyOGJlOTMxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9i
LWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9h
ZC1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxv
YWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duIgorRG93bmxvYWRpbmcg
VVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJVbmtub3duIgogRG93bmxvYWQgY29tcGxldGVk
LgogVGhlIGRvd25sb2FkIHNob3VsZCBzdWNjZWVkLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5v
ZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAppbmRleCAwMmFmMmRlOWIxYzRiY2FjNTg2MmMxZGE1
NmZiYjRiZTZhMTZkMmE5Li4zNzVjMTkxMjlhZTYxYmEwNmU3ZDU0OGE4M2EzYjg2YTc2OTBiNjdk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNo
b3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBlY3RlZC50eHQKQEAg
LTEsNCArMSw0IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdpdGggc3Vn
Z2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0aCBzdWdn
ZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4KIEJsb2Ig
VVJMCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415823</attachid>
            <date>2020-12-09 19:38:18 -0800</date>
            <delta_ts>2020-12-09 19:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201209193816.patch</filename>
            <type>text/plain</type>
            <size>317249</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhiMWFjMmYyYTBlMWMxOWMw
NTUzZjJlZDk3M2YwMmI1NTY4MmIyN2MuLjNmZjg4OTI4YzliNzFmODdmM2U4MTZjNjkwYTI1NTI3
NTg0ZTkwOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgzIEBACisyMDIwLTEyLTA4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBTYWZhcmkgY3VycmVudGx5IHVzZXMgX1dLRG93bmxvYWQsIHdoaWNoIGhhcyBldm9s
dmVkIHN0cmFuZ2VseSBvdmVyIHRoZSBsYXN0IGRlY2FkZS4KKyAgICAgICAgSW4gb3JkZXIgdG8g
bWFrZSBhIG5pY2VyIGludGVyZmFjZSwgd2UgbmVlZCB0byBsZWFybiBmcm9tIHRob3NlIGxlc3Nv
bnMgYW5kIHRha2UgYSBzdGVwIGJhY2suCisgICAgICAgIEkgZGlkIHRoYXQsIGFuZCBoZXJlJ3Mg
d2hhdCBJIGNhbWUgdXAgd2l0aDogV0tEb3dubG9hZCBhbmQgV0tEb3dubG9hZERlbGVnYXRlIQor
CisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhlIGRlbGVn
YXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIHByb2Nl
c3MgcG9vbC4KKyAgICAgICAgMi4gIFdLRG93bmxvYWQgZG9lcyBub3QgY29uZm9ybSB0byBOU0Nv
cHlpbmcgYmVjYXVzZSB3ZSBoYXZlIE5TTWFwVGFibGUgaW5zdGVhZCBvZiBOU0RpY3Rpb25hcnku
CisgICAgICAgIDMuICBwdWJsaXNoUHJvZ3Jlc3NBdFVSTCBpcyBnb25lLiAgVGhhdCB3aWxsIGJl
IHJlaW1wbGVtZW50ZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVzZWQg
aXQuCisgICAgICAgIDQuICBjYW5jZWwgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGdldCB0
aGUgcmVzdW1lIGRhdGEgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBkaWRDYW5jZWwgdGhlbiBnZXR0
aW5nIGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4KKyAgICAgICAgNS4gIGRpZEZhaWxXaXRo
RXJyb3IgYWxzbyBnaXZlcyB5b3UgdGhlIHJlc3VtZSBkYXRhLCBzbyB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4gIFRoYXQncyBtb3JlIGFib3V0IGEg
ZmFpbC9jYW5jZWwKKyAgICAgICAgICAgIGV2ZW50IHRoYW4gYSBwcm9wZXJ0eSBvZiB0aGUgZG93
bmxvYWQuCisgICAgICAgIDYuICB3YXNVc2VySW5pdGlhdGVkIGlzIGdvbmUuICBJbnN0ZWFkLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMgYSBjYWxsYmFjayB0aGF0IGxpbmtzIGEgbmF2aWdhdGlv
biBhY3Rpb24gKHdoZXJlIF9pc1VzZXJJbml0aWF0ZWQgaXMgZXhwb3NlZCkgdG8gdGhlIGRvd25s
b2FkLgorICAgICAgICA3LiAgcmVkaXJlY3RDaGFpbiBpcyBhbHNvIGdvbmUuICBUaGF0IGNhbiBh
bHNvIGJlIGdvdHRlbiBmcm9tIHRoZSBsaW5rIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZCB0aGUgZG93
bmxvYWQgZGVsZWdhdGUncyByZWRpcmVjdCBjYWxsYmFjay4KKyAgICAgICAgOC4gIF9kb3dubG9h
ZERpZFN0YXJ0IGlzIGdvbmUuICBJbnN0ZWFkLCB3ZSBoYXZlIGNvbXBsZXRpb24gaGFuZGxlcnMg
dGhhdCBleHBvc2UgYSBXS0Rvd25sb2FkIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBu
ZWVkIHRvCisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUg
dGhlbiBhbnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdo
aWNoIGlzIGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0
aGVyZSB3aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRv
d25sb2FkIG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgOS4gIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9y
IGNhbmNlbGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAg
ICAgICAgICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTAuIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2
ZSBiZWVuIG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGlt
ZSBhbmQKKyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQ
SS4gIGFsbG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90
IHJlYWxseSBuZWVkZWQuCisgICAgICAgIDExLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25l
LiAgVGhhdCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5l
ZWQgdG8ga25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAg
ICAgICAgIGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5p
dGVseSBiZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTIuIHNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlIGlzIGdvbmUuICBJdCdzIGFjdHVhbGx5IG5vdCBjYWxsZWQgc2luY2Ug
d2UgYWRvcHRlZCBOU1VSTFNlc3Npb24sIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSByZWxhdGVk
IGRlYWQgY29kZS4KKyAgICAgICAgMTMuIG9yaWdpbmF0aW5nRnJhbWUgaXMgZ29uZS4gIE9uIF9X
S0Rvd25sb2FkIGl0IHdhcyBhY3R1YWxseSBhIG5vbi1udWxsIFdLRnJhbWVJbmZvIHRoYXQgb2Z0
ZW4gY29udGFpbmVkIG5vIGluZm9ybWF0aW9uLiAgV2hlbiBpbmZvcm1hdGlvbiB3YXMgdGhlcmUs
CisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24gYWNjZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5
IGRpZEJlY29tZURvd25sb2FkIHdoaWNoIGxpbmtzIHRoZSBXS05hdmlnYXRpb25SZXNwb25zZSB3
aGljaCBoYXMgZnJhbWUgaW5mbyBvbiBpdC4KKworICAgICAgICBJIHdyb3RlIEFQSSB0ZXN0cyBm
b3IgZXZlcnl0aGluZyBJIGNvdWxkIHRoaW5rIG9mLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5h
bWUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9y
Ol0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLRG93bmxvYWRHZXRUeXBl
SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKFdLRG93bmxv
YWRDYW5jZWwpOgorICAgICAgICAoV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZSk6CisgICAg
ICAgIChXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZCk6CisgICAgICAgIChXS0Rvd25sb2Fk
U2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tEb3dubG9hZCBjYW5jZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1
ZXN0XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tE
b3dubG9hZCBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6
CisgICAgICAgICgtW1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tO
YXZpZ2F0aW9uQWN0aW9uIGRvd25sb2FkQXR0cmlidXRlXSk6CisgICAgICAgICgtW1dLTmF2aWdh
dGlvbkFjdGlvbiBfc2hvdWxkUGVyZm9ybURvd25sb2FkXSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9yZTpvcmlnaW5hdGluZ1dlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6
d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlc3VtZURvd25sb2Fk
V2l0aERhdGE6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW06CisgICAgICAgICgtW19XS0Rvd25sb2FkIGluaXRXaXRoRG93bmxvYWQyOl0pOgorICAgICAg
ICAoK1tfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDpdKToKKyAgICAgICAgKC1bX1dL
RG93bmxvYWQgY2FuY2VsXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVz
c0F0VVJMOl0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgt
W19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9h
ZCByZWRpcmVjdENoYWluXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0
ZWRdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtf
V0tEb3dubG9hZCBvcmlnaW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9h
cGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0
aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNz
RGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENs
aWVudDo6bGVnYWN5RGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRl
bGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
UHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RGlkU3RhcnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lRG93bmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzdW1l
RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEyLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQWRkIGJhc2ljIEdQ
VVByb2Nlc3MgY3Jhc2ggcmVjb3ZlcnkgbG9naWMgdG8gUmVtb3RlTWVkaWFTZXNzaW9uSGVscGVy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
L0hlYWRlcnMuY21ha2UKaW5kZXggM2U3ZTU5NTg0ZmYyODAwMGUxMGQ5OWFlNDRhYmVjM2ZmYTIx
MzlhMi4uMjEzMDRkYTMwZDc4ODI1NDM2NTIyN2FhNmIzNmYwZTc2ZjY5MGVmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvSGVhZGVy
cy5jbWFrZQpAQCAtNDcsNyArNDcsOCBAQCBzZXQoV2ViS2l0X1BVQkxJQ19GUkFNRVdPUktfSEVB
REVSUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0Nvb2tpZU1hbmFnZXIuaAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS0NyZWRlbnRpYWwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0NyZWRlbnRpYWxU
eXBlcy5oCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuaAorICAgIFVJUHJvY2Vzcy9B
UEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJl
Zi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lci5oCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLRnJhbWUuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFu
ZGxlUmVmLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxv
YWRzL0Rvd25sb2FkTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCmluZGV4IDMzMjE2MzQwZjI3YzE2MDVjM2NkNzRi
YzY5MDdiN2Q5MWI0N2I3NjIuLjJjMTM3ZjY3ZjJiNDBkNzRiMTZhMzhiZjBiNDA3OWIzNTJmZmQy
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERvd25sb2Fk
TWFuYWdlcjo6ZG93bmxvYWREZXN0aW5hdGlvbkRlY2lkZWQoRG93bmxvYWRJRCBkb3dubG9hZElE
LCBSZWY8TmV0dwogICAgIG1fZG93bmxvYWRzQWZ0ZXJEZXN0aW5hdGlvbkRlY2lkZWQuc2V0KGRv
d25sb2FkSUQsIFdURk1vdmUobmV0d29ya0RhdGFUYXNrKSk7CiB9CiAKLXZvaWQgRG93bmxvYWRN
YW5hZ2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUpCit2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBj
YWxsRG93bmxvYWREaWRTdGFydCkKIHsKICNpZiAhUExBVEZPUk0oQ09DT0EpCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKQEAgLTEwNSw2ICsxMDUsMTEgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJl
c3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8K
ICAgICBhdXRvIGRvd25sb2FkID0gbWFrZVVuaXF1ZTxEb3dubG9hZD4oKnRoaXMsIGRvd25sb2Fk
SUQsIG51bGxwdHIsICpuZXR3b3JrU2Vzc2lvbik7CiAKICAgICBkb3dubG9hZC0+cmVzdW1lKHJl
c3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworCisgICAg
Ly8gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgbGVnYWN5IGRvd25sb2FkIEFQSSwgb25seSBz
ZW5kIERpZFN0YXJ0IGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgQVBJLgorICAgIGlmIChjYWxsRG93
bmxvYWREaWRTdGFydCA9PSBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVzKQorICAgICAgICBkb3du
bG9hZC0+c2VuZChNZXNzYWdlczo6RG93bmxvYWRQcm94eTo6RGlkU3RhcnQoeyB9LCB7IH0pKTsK
KwogICAgIEFTU0VSVCghbV9kb3dubG9hZHMuY29udGFpbnMoZG93bmxvYWRJRCkpOwogICAgIG1f
ZG93bmxvYWRzLmFkZChkb3dubG9hZElELCBXVEZNb3ZlKGRvd25sb2FkKSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
TWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRNYW5hZ2VyLmgKaW5kZXggMmNkMTYxYjBhYzNlNzg5ZTIyNDZjMDViMDE2NWYxYzcyNjc4ZmE1
MC4uYzQ4MWViNWY2ZDQyOWNiMDliYmM1MjU5NmZmNTlhN2JlNTczMjVmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5h
Z2VyLmgKQEAgLTYwLDYgKzYwLDggQEAgY2xhc3MgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M7CiBjbGFzcyBOZXR3b3JrTG9hZDsKIGNsYXNzIFBlbmRpbmdEb3dubG9hZDsKIAorZW51bSBj
bGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIERv
d25sb2FkTWFuYWdlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRG93bmxvYWRNYW5hZ2Vy
KTsKIApAQCAtODYsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb252ZXJ0TmV0d29ya0xv
YWRUb0Rvd25sb2FkKERvd25sb2FkSUQsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrTG9hZD4mJiwg
UmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmLCAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9i
RGF0YUZpbGVSZWZlcmVuY2U+PiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9pZCBkb3dubG9hZERlc3Rp
bmF0aW9uRGVjaWRlZChEb3dubG9hZElELCBSZWY8TmV0d29ya0RhdGFUYXNrPiYmKTsKIAotICAg
IHZvaWQgcmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Np
b25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxv
YWREaWRTdGFydCk7CiAKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KaW5kZXggOTVmOGRlYzMwMjUx
YjgwYmFhMjljZTU5MDg3M2E3YWJhZWZkYTljZS4uNWY3OTlkNWMwNWI2YjE4NDhlYzUwMzJkODQz
MDUwYmE1YjFkNmM2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9E
b3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCkBAIC03MSw2ICs3MSw4
IEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3Vt
ZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKICAgICBOU0RhdGEgKnVwZGF0ZWREYXRhID0gW05T
UHJvcGVydHlMaXN0U2VyaWFsaXphdGlvbiBkYXRhV2l0aFByb3BlcnR5TGlzdDpkaWN0aW9uYXJ5
IGZvcm1hdDpOU1Byb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wIG9wdGlvbnM6MCBlcnJvcjpudWxs
cHRyXTsKICNlbmRpZgogCisgICAgLy8gRklYTUU6IFVzZSBuc0RhdGEgaW5zdGVhZCBvZiB1cGRh
dGVkRGF0YSBvbmNlIHdlJ3ZlIG1pZ3JhdGVkIGZyb20gX1dLRG93bmxvYWQgdG8gV0tEb3dubG9h
ZAorICAgIC8vIGJlY2F1c2UgdGhlcmUncyBubyByZWFzb24gdG8gc2V0IHRoZSBsb2NhbCBwYXRo
IHdlIGdvdCBmcm9tIHRoZSBkYXRhIGJhY2sgaW50byB0aGUgZGF0YS4KICAgICBtX2Rvd25sb2Fk
VGFzayA9IFtjb2NvYVNlc3Npb24uc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMoKS5zZXNzaW9u
IGRvd25sb2FkVGFza1dpdGhSZXN1bWVEYXRhOnVwZGF0ZWREYXRhXTsKICAgICBhdXRvIHRhc2tJ
ZGVudGlmaWVyID0gW21fZG93bmxvYWRUYXNrIHRhc2tJZGVudGlmaWVyXTsKICAgICBBU1NFUlQo
IWNvY29hU2Vzc2lvbi5zZXNzaW9uV3JhcHBlckZvckRvd25sb2FkcygpLmRvd25sb2FkTWFwLmNv
bnRhaW5zKHRhc2tJZGVudGlmaWVyKSk7CkBAIC04Myw3ICs4NSwyMiBAQCB2b2lkIERvd25sb2Fk
OjpyZXN1bWUoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJp
bmcmIHBhdGgsCiB2b2lkIERvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdvcmtMb2FkKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKG1fZG93bmxvYWRUYXNrKTsKLSAgICBbbV9kb3dubG9h
ZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRGF0YSAqcmVzdW1lRGF0
YSkgbXV0YWJsZSB7CisgICAgW21fZG93bmxvYWRUYXNrIGNhbmNlbEJ5UHJvZHVjaW5nUmVzdW1l
RGF0YTptYWtlQmxvY2tQdHIoW3BhdGggPSByZXRhaW5QdHIobV9kb3dubG9hZFRhc2suZ2V0KCku
X3BhdGhUb0Rvd25sb2FkVGFza0ZpbGUpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyNpZiBVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRhKSB7Cisg
ICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQgbG9jYXRp
b24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0aGUgdGFz
ay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0p
OworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVj
b2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0byBkaWN0
aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+KFtbdW5h
cmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051
bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0
IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXSBtdXRh
YmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAg
ICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDpwYXRoLmdldCgpIGZvcktleTpAIk5TVVJM
U2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAgICAgICAgICAgIGF1dG8gZW5jb2RlciA9
IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2NdIGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rp
bmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBlbmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5n
ZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICAgICAgICAg
IHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0YV07CisgICAgICAgIH0KKyNlbHNlCisg
ICAgICAgIFVOVVNFRF9QQVJBTShwYXRoKTsKKyNlbmRpZgogICAgICAgICBhdXRvIHJlc3VtZURh
dGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVmZXJlbmNlIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCByZXN1bWVEYXRhLmxlbmd0aCB9
IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dW1lRGF0YVJlZmVyZW5jZSk7CiAgICAgfSkuZ2V0KCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAKaW5kZXggOGQ4OTdhNDIz
MGFmZTJlOThkZGRhOWM0YTlkMjEwMTc0NzRiMzc5Mi4uYjkyMDY4MmM5ZTQ3M2JmMzVlMDNmZjNh
NjJmNzA1ZDNlMWFjMjE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC00NDYsMTAgKzQ0Niw3IEBAIHZvaWQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6c2V0UGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgU2FuCiAKIFN0cmluZyBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzdWdnZXN0ZWRG
aWxlbmFtZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7Ci0KLSAgICByZXR1cm4gInVu
a25vd24iX3M7CisgICAgcmV0dXJuIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiB9CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQmxvYjo6ZG93bmxvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBmNmEyMzlhMWY2OGY4OWJlNGU3ZGM4NWU4
MGYxMzE0YzY5MGI3ZWI4Li41ZmU0NTkxMzE1NGJhNzUxZmNkOTZjYTRkYTk1ZjYyZjE1MTFmZWZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMjA1Myw5ICsyMDUzLDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1
ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG8KICAgICBkb3du
bG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVz
dCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBy
ZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnJl
c3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9h
ZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYg
cGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlLCBDYWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKIHsKLSAg
ICBkb3dubG9hZE1hbmFnZXIoKS5yZXN1bWVEb3dubG9hZChzZXNzaW9uSUQsIGRvd25sb2FkSUQs
IHJlc3VtZURhdGEsIHBhdGgsIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOworICAg
IGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwg
cmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgY2FsbERv
d25sb2FkRGlkU3RhcnQpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjYW5jZWxEb3dubG9h
ZChEb3dubG9hZElEIGRvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDc5LDEwICsyMDc5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZmluZFBlbmRpbmdEb3dubG9hZExvY2F0aW9uKE5l
dHdvcmtEYXRhVGFzayYgbmV0d29ya0RhdGFUYXMKIHsKICAgICB1aW50NjRfdCBkZXN0aW5hdGlv
bklEID0gbmV0d29ya0RhdGFUYXNrLnBlbmRpbmdEb3dubG9hZElEKCkudG9VSW50NjQoKTsKIAot
ICAgIC8vIEFzIHBlciBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNhcy1hLWRvd25sb2Fk
IChzdGVwIDIpLCB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFk
ZXIKLSAgICAvLyBzaG91bGQgb3ZlcnJpZGUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBmcm9tIHRo
ZSBkb3dubG9hZCBhdHRyaWJ1dGUuCi0gICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVz
cG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgPyByZXNwb25zZS5zdWdnZXN0ZWRGaWxl
bmFtZSgpIDogbmV0d29ya0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7Ci0gICAgc3VnZ2Vz
dGVkRmlsZW5hbWUgPSBNSU1FVHlwZVJlZ2lzdHJ5OjphcHBlbmRGaWxlRXh0ZW5zaW9uSWZOZWNl
c3Nhcnkoc3VnZ2VzdGVkRmlsZW5hbWUsIHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IG5ldHdvcmtEYXRhVGFzay5zdWdnZXN0ZWRGaWxlbmFtZSgp
OwogCiAgICAgZG93bmxvYWRQcm94eUNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpEb3dubG9hZFByb3h5OjpEZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShyZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBuZXR3b3JrRGF0YVRhc2sgPSBtYWtlUmVmKG5ldHdvcmtEYXRhVGFzayldIChTdHJp
bmcmJiBkZXN0aW5hdGlvbiwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUpIG11dGFibGUgewogICAg
ICAgICBhdXRvIGRvd25sb2FkSUQgPSBuZXR3b3JrRGF0YVRhc2stPnBlbmRpbmdEb3dubG9hZElE
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5k
ZXggNjBkMzZiYjU3NTY3ZjMyOGU3ZmFjY2QyZTgwYTJlMTBhNDM5ODExOC4uMDUzNTcxMjJjNmU5
NjY2YjQ0ZTg5MmNkNWZhNTcyNGIxNDVlZTg0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMTA2LDYgKzEwNiw3IEBAIGNsYXNzIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIFN0b3JhZ2VNYW5hZ2VyU2V0OwogY2xhc3MgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOwogY2xhc3MgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOwor
ZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJvb2w7CiBlbnVtIGNsYXNzIFNob3Vs
ZEdyYW5kZmF0aGVyU3RhdGlzdGljcyA6IGJvb2w7CiBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NT
dGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWlu
dDhfdDsKQEAgLTQyMyw3ICs0MjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEaXNrQ2Fj
aGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbj4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIHZvaWQg
cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBDYWxsRG93bmxvYWREaWRT
dGFydCk7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPiYmKTsKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICB2b2lkIHB1Ymxpc2hEb3dubG9hZFByb2dyZXNzKERvd25sb2FkSUQsIGNvbnN0
IFVSTCYsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDYw
MWUyNGNiMjU2MzZlMTdiZDU1NGQ2OGYwZThiZmFmNTJkYWIyZGUuLjU4YjNlNGM4NjhjNzAxMmNk
YjM1NjU2ZWFhYmYyYjYxODFmMmJjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDgsNyArNDgsNyBA
QCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVuYW1l
T3JpZ2luSW5XZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBvbGREb21h
aW4sIFVSTCBuZXdEb21haW4sIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vi
c2l0ZURhdGFUeXBlcykgLT4gKCkgQXN5bmMKIAogICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIE9wdGlvbmFsPFdlYktpdDo6TmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSkKLSAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZl
cmVuY2UgcmVzdW1lRGF0YSwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpE
YXRhUmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBlbnVtOmJvb2wgV2ViS2l0OjpD
YWxsRG93bmxvYWREaWRTdGFydCBjYWxsRG93bmxvYWREaWRTdGFydCkKICAgICBDYW5jZWxEb3du
bG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkgLT4gKElQQzo6RGF0YVJlZmVyZW5j
ZSByZXN1bWVEYXRhKSBBc3luYwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFB1Ymxpc2hEb3du
bG9hZFByb2dyZXNzKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBVUkwgdXJsLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tCmluZGV4IGQ1YTQ2NWFiMGI4YjJlZjgwMWZmMGZhZmVkMjJlM2YzMGMwMzAx
NGYuLjBkMGFhZDRmZjdkMmYzZjI3Y2ZlMmI2YjgxMWI2MGViYzU1OTY0NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KQEAgLTc2OCw2ICs3NjgsMjAgQEAgc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NT
ZXJ2ZXJUcnVzdEV2YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2UKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogCisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxP
QURTKQorICAgICAgICBpZiAocmVzdW1lRGF0YSkgeworICAgICAgICAgICAgLy8gTW9qYXZlIGRv
ZXMgbm90IGluY2x1ZGUgdGhlIGRvd25sb2FkIGxvY2F0aW9uIGluIHRoZSByZXN1bWUgZGF0YSBm
cm9tIENGTmV0d29yay4gQWRkIGl0IGZyb20gdGhlIHRhc2suCisgICAgICAgICAgICBhdXRvIHVu
YXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFk
aW5nRnJvbURhdGE6cmVzdW1lRGF0YSBlcnJvcjpuaWxdKTsKKyAgICAgICAgICAgIFt1bmFyY2hp
dmVyIHNldERlY29kaW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNl
RXhjZXB0aW9uXTsKKyAgICAgICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoc3RhdGlj
X2Nhc3Q8TlNNdXRhYmxlRGljdGlvbmFyeSAqPihbW3VuYXJjaGl2ZXIgZGVjb2RlT2JqZWN0T2ZD
bGFzc2VzOltOU1NldCBzZXRXaXRoT2JqZWN0czpbTlNEaWN0aW9uYXJ5IGNsYXNzXSwgW05TQXJy
YXkgY2xhc3NdLCBbTlNTdHJpbmcgY2xhc3NdLCBbTlNOdW1iZXIgY2xhc3NdLCBbTlNEYXRhIGNs
YXNzXSwgW05TVVJMIGNsYXNzXSwgW05TVVJMUmVxdWVzdCBjbGFzc10sIG5pbF0gZm9yS2V5OkAi
TlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il0gbXV0YWJsZUNvcHldKSk7CisgICAgICAgICAg
ICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107CisgICAgICAgICAgICBbZGljdGlvbmFyeSBz
ZXRPYmplY3Q6dGFzay5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSBmb3JLZXk6QCJOU1VSTFNlc3Np
b25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisgICAgICAgICAgICBhdXRvIGVuY29kZXIgPSBhZG9w
dE5TKFtbTlNLZXllZEFyY2hpdmVyIGFsbG9jXSBpbml0UmVxdWlyaW5nU2VjdXJlQ29kaW5nOllF
U10pOworICAgICAgICAgICAgW2VuY29kZXIgZW5jb2RlT2JqZWN0OmRpY3Rpb25hcnkuZ2V0KCkg
Zm9yS2V5OkAiTlNLZXllZEFyY2hpdmVSb290T2JqZWN0S2V5Il07CisgICAgICAgICAgICByZXN1
bWVEYXRhID0gW2VuY29kZXIgZW5jb2RlZERhdGFdOworICAgICAgICB9CisjZW5kaWYKKwogICAg
ICAgICBhdXRvIHJlc3VtZURhdGFSZWZlcmVuY2UgPSByZXN1bWVEYXRhID8gSVBDOjpEYXRhUmVm
ZXJlbmNlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KHJlc3VtZURhdGEuYnl0ZXMpLCBy
ZXN1bWVEYXRhLmxlbmd0aCB9IDogSVBDOjpEYXRhUmVmZXJlbmNlIHsgfTsKICAgICAgICAgZG93
bmxvYWQtPmRpZEZhaWwoZXJyb3IsIHJlc3VtZURhdGFSZWZlcmVuY2UpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IGNhMGFlMjg0MTFhODNkZTRi
ZjNmZTA4YjAxMmU0MDU1NDhkOGI1NzMuLmMzZjU3OTgzY2YxMjBiYTY4NzUyMTA2NjgxYzYxNDBm
NjhhODc5NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAt
NjcyLDYgKzY3Miw3IEBAIGRlZiBoZWFkZXJzX2Zvcl90eXBlKHR5cGUpOgogICAgICAgICAnV2Vi
S2l0OjpBY3Rpdml0eVN0YXRlQ2hhbmdlSUQnOiBbJyJEcmF3aW5nQXJlYUluZm8uaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6QWxsb3dPdmVyd3JpdGUnOiBbJyJEb3dubG9hZElELmgiJ10sCiAgICAg
ICAgICdXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSc6IFsnIlNlc3Npb25TdGF0ZS5o
IiddLAorICAgICAgICAnV2ViS2l0OjpDYWxsRG93bmxvYWREaWRTdGFydCc6IFsnIkRvd25sb2Fk
TWFuYWdlci5oIiddLAogICAgICAgICAnV2ViS2l0OjpDb250ZW50V29ybGRJZGVudGlmaWVyJzog
WyciQ29udGVudFdvcmxkU2hhcmVkLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkRvY3VtZW50RWRp
dGluZ0NvbnRleHRSZXF1ZXN0JzogWyciRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5oIiddLAogICAg
ICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgiJ10sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKaW5kZXggMWY3YTNkZDNjNjk3M2UxMDk5
NGY1ZGMxMzdmYWY0MDZhMjVlYTI5ZC4uNDE1ZDkxNjQ2NTk2Y2VmMjdmODcxODNmNTJjZGUxOTIw
ZmI1MDRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dlYktp
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJLaXQuaApAQCAtMzAs
NiArMzAsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFJ1bGVMaXN0U3RvcmUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGV4
dE1lbnVFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS0Rvd25sb2FkRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9y
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29uZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLRmluZFJlc3VsdC5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTaGFyZWRBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJl
ZEFQSUNhc3QuaAppbmRleCA3ZjgwYmExNDhjMGU5ZTdjMWU3MDY3M2M1MmFjMTFlYjIyMjBhY2Y2
Li40YTExMzY0NjExY2ZiYzcwZjk2NDc2YWIzMWY5ZTE1MWM1OTI5YWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaApAQCAtMTI3LDYgKzEyNywxMiBA
QCBhdXRvIHRvQVBJKFQqIHQpIC0+IEFQSVR5cGUKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDxBUElUeXBlPihBUEk6Ok9iamVjdDo6d3JhcCh0KSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEFQSVR5cGUgPSB0eXBlbmFtZSBJbXBsVHlwZUluZm88VD46OkFQSVR5cGU+
CithdXRvIHRvQVBJKFQmIHQpIC0+IEFQSVR5cGUKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRf
Y2FzdDxBUElUeXBlPihBUEk6Ok9iamVjdDo6d3JhcCgmdCkpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBJbXBsVHlwZSA9IHR5cGVuYW1lIEFQSVR5cGVJbmZvPFQ+OjpJbXBs
VHlwZT4KIGF1dG8gdG9JbXBsKFQgdCkgLT4gSW1wbFR5cGUqCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggZjhhMDI4YjA2YjUxMDYxMDhkZGMzY2JiNjhhNDAx
YmZhMzVmN2RiZS4uN2YwNTg0NTZkZWU3NjQ4OTgxZmQ0NmYxZjAwNTdmNzUzZmQ2ZTFjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtMzUsNiArMzUsNyBAQAog
I2ltcG9ydCAiV0tDb250ZW50UnVsZUxpc3RTdG9yZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0NvbnRleHRNZW51RWxlbWVudEluZm9J
bnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Zy
YW1lSW5mb0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hUVFBDb29raWVTdG9yZUludGVybmFsLmgi
CiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKQEAgLTczLDcgKzc0LDYgQEAKICNpbXBvcnQgIl9XS0F1
dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFj
dGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRlcm5hbC5o
IgotI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhwZXJpbWVu
dGFsRmVhdHVyZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKQEAgLTIyOCw3ICsyMjgsNyBA
QCB2b2lkKiBPYmplY3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RG93bmxvYWQ6Ci0gICAgICAgIHdyYXBwZXIgPSBb
X1dLRG93bmxvYWQgYWxsb2NdOworICAgICAgICB3cmFwcGVyID0gW1dLRG93bmxvYWQgYWxsb2Nd
OwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVHlwZTo6RXhwZXJpbWVudGFsRmVhdHVyZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CmluZGV4IGNiNzhiYjIyYjY3MzI3NDQ1MWNhM2NjZGM1NmE1ZWZlZjY3NzU5ODAu
LjE3MzUyMzdkMWUyOGYxYTkwMGVlYzM4NTIzMmUxZjM1YzI2ZTE0OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApA
QCAtMzc1LDcgKzM3NSw3IEBAIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCiBVSVByb2Nl
c3MvQVBJL0MvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9X
S0Nvb2tpZU1hbmFnZXIuY3BwCiBVSVByb2Nlc3MvQVBJL0MvV0tDcmVkZW50aWFsLmNwcAotVUlQ
cm9jZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCitVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJl
Zi5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIuY3BwCiBVSVBy
b2Nlc3MvQVBJL0MvV0tGcmFtZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lSGFuZGxlUmVm
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDRlYThiNzgxZDIwYTgxYTA4ZTQ0YjQ0ZGJh
MGI1OGYyMWJkNmY5NzMuLjUwODczOGJjMjFhZjg2NjM3NmNmZWViNTlmZjg0Y2U0NmNlMjYxNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTMwMCw2ICszMDAsNyBAQCBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLQ29udGVudFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVu
dFJ1bGVMaXN0U3RvcmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50V29ybGQubW0K
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tCitVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5t
bQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJRG93bmxvYWRDbGllbnQuaAppbmRleCBkMzdmNjI4NjhiNjEyOTdhMTFhZmZmMzgwMmE4
MGJhNjEyYTRkY2U1Li5kZmY3M2ZhNjViZjZmYjBhZDE3YWZhOTlmNTgyZjk0MmZhZjdhMGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQuaApA
QCAtNDksMTggKzQ5LDIwIEBAIGVudW0gY2xhc3MgQWxsb3dPdmVyd3JpdGUgOiBib29sOwogCiBu
YW1lc3BhY2UgQVBJIHsKIAorY2xhc3MgRGF0YTsKKwogY2xhc3MgRG93bmxvYWRDbGllbnQgOiBw
dWJsaWMgUmVmQ291bnRlZDxEb3dubG9hZENsaWVudD4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIHZpcnR1YWwgfkRvd25sb2FkQ2xpZW50KCkgeyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnQoV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBj
aGFsbGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIHVpbnQ2NF90
LCB1aW50NjRfdCwgdWludDY0X3QpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
OjpObywgeyB9KTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVEZXN0aW5hdGlvbihXZWJL
aXQ6OkRvd25sb2FkUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6OkRhdGEqIHJlc3VtZURh
dGEpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBsZWdhY3lEaWRDYW5jZWwoV2ViS2l0OjpEb3dubG9h
ZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRv
d25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktp
dDo6RG93bmxvYWRQcm94eSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKaW5kZXggYmJhODU5YWYyZTQzNWU5ZjA5
MjRmNGEzMmUxMTdkOTYzOTVkYmY5NS4uYTAxOGU3NDU0MmI3ZGIxMTNlMzIxNGRkNTYxZTg2YjVl
Yzg5OGU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdh
dGlvbkFjdGlvbi5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2V0U2hv
dWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbigpIHsgbV9zaG91bGRQZXJmb3JtU09BdXRob3JpemF0
aW9uID0gZmFsc2U7IH0KICNlbmRpZgogCisgICAgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF2aWdhdGlvbkFjdGlvbkRhdGE7IH0K
KyAgICAKIHByaXZhdGU6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VG
cmFtZSwgQVBJOjpGcmFtZUluZm8qIHRhcmdldEZyYW1lLCBPcHRpb25hbDxXVEY6OlN0cmluZz4g
dGFyZ2V0RnJhbWVOYW1lLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBXVEY6OlVSTCYgb3JpZ2luYWxVUkwsIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzLCBSZWZQdHI8
VXNlckluaXRpYXRlZEFjdGlvbj4mJiB1c2VySW5pdGlhdGVkQWN0aW9uLCBBUEk6Ok5hdmlnYXRp
b24qIG1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgICAgIDogbV9zb3VyY2VGcmFtZShzb3VyY2VG
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNs
aWVudC5oCmluZGV4IDA2MWUxODZkYmU4ODZhMDc0MjJiZjgzYjdhZmNmY2JjNmFjOWU2YWUuLmQ4
MzY2NGUwODIwNmM3ZmViZjI4MWU5MmNlZTQ5MjVmZjZhZGRmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNTQsNiArNTQs
NyBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk7CitjbGFzcyBEb3dubG9hZFByb3h5Owog
Y2xhc3MgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUHJveHk7CkBAIC05OSw2ICsxMDAsMTAgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIHsgfQog
CisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvblJlc3BvbnNlJiwgV2ViS2l0OjpEb3dubG9h
ZFByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVE
b3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb25BY3Rpb24mLCBXZWJLaXQ6
OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dE1lbnVEaWRDcmVh
dGVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYp
IHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eSYgY2hhbGxlbmdlKSB7IGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdl
KFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1
bHRIYW5kbGluZyk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdWxkQWxsb3dMZWdhY3lUTFMoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKHRydWUpOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE5lZ290aWF0ZU1v
ZGVyblRMUyhjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIHsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCmluZGV4IDdkMmU5
MzQ0NjJjZjNiZGMxOWExOWI3ZGQzMWEwYzJhOWNlYmVkNGYuLjI2MTAxODhhOTc1NjlkYjNlM2M3
OGFlYjA0YTg1ODI1MTkzMmQxNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50LmgKQEAgLTUwLDExICs1MCwxMSBAQCBjbGFzcyBQb2xpY3lDbGllbnQg
ewogcHVibGljOgogICAgIHZpcnR1YWwgflBvbGljeUNsaWVudCgpIHsgfQogCi0gICAgdmlydHVh
bCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYktpdDo6V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAg
dmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0
aW9uPiYmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7
CiAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKICAgICB9Ci0gICAgdmlydHVhbCB2b2lkIGRlY2lk
ZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmluZyYsIFJlZjxXZWJL
aXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3Qq
KQorICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0
OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBSZWY8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6
OlN0cmluZyYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0
ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCmluZGV4IDNh
MDgzY2E0ODY0NDNiZDg4MDYzM2E1YzI2MDc0ZTI2MmQxMTM0YmMuLmEyOGE0YzYxN2VjZDY5OGUz
NGQyYTlmODAxZGFlOTkwNzAxNTFmZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tDb250ZXh0LmNwcApAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93
bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2Fk
Q2xpCiAgICAgICAgICAgICBpbml0aWFsaXplKGNsaWVudCk7CiAgICAgICAgIH0KICAgICBwcml2
YXRlOgotICAgICAgICB2b2lkIGRpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWRQcm94eSkgZmluYWwKKyAgICAgICAgdm9pZCBsZWdhY3lEaWRTdGFydChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkU3RhcnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjIzLDcg
KzIyMyw3IEBAIHZvaWQgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoV0tDb250ZXh0UmVmIGNv
bnRleHQsIGNvbnN0IFdLQ29udGV4dERvd25sb2FkQ2xpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmluaXNoKG1fY29udGV4dCwgV2ViS2l0Ojp0b0FQ
SSgmZG93bmxvYWRQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0K
LSAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpIGZpbmFsCisgICAgICAgIHZv
aWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKSBmaW5hbAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZhaWwpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzBjMjg3YmIzNDcwNDczYWQ1YmM2NGZjZmQ1Mzg4
NGM3NTJlYmVjOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiV0tEb3dubG9hZC5oIgotCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRl
ICJBUElEYXRhLmgiCi0jaW5jbHVkZSAiQVBJRG93bmxvYWRDbGllbnQuaCIKLSNpbmNsdWRlICJB
UElVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiRG93bmxvYWRQcm94eS5oIgotI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgotI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCi1XS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKLXsKLSAgICByZXR1cm4g
dG9BUEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Ci19Ci0KLXVpbnQ2NF90IFdLRG93bmxvYWRH
ZXRJRChXS0Rvd25sb2FkUmVmKQotewotICAgIHJldHVybiAwOwotfQotCi1XS1VSTFJlcXVlc3RS
ZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAg
cmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0b0ltcGwoZG93bmxvYWQpLT5y
ZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Ci19Ci0KLVdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0UmVzdW1l
RGF0YShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
ZG93bmxvYWQpLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwotfQotCi12b2lkIFdLRG93bmxvYWRDYW5j
ZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9JbXBsKGRvd25sb2Fk
KS0+Y2FuY2VsKFtkb3dubG9hZCA9IG1ha2VSZWYoKnRvSW1wbChkb3dubG9hZCkpXSAoYXV0byop
IHsKLSAgICAgICAgZG93bmxvYWQtPmNsaWVudCgpLmxlZ2FjeURpZENhbmNlbChkb3dubG9hZC5n
ZXQoKSk7Ci0gICAgfSk7Ci19Ci0KLVdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQ
YWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChk
b3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKLX0KLQotV0tBcnJheVJlZiBXS0Rvd25sb2Fk
Q29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICBhdXRvJiBy
ZWRpcmVjdENoYWluID0gIHRvSW1wbChkb3dubG9hZCktPnJlZGlyZWN0Q2hhaW4oKTsKLSAgICBW
ZWN0b3I8UmVmUHRyPEFQSTo6T2JqZWN0Pj4gdXJsczsKLSAgICB1cmxzLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkocmVkaXJlY3RDaGFpbi5zaXplKCkpOwotICAgIGZvciAoYXV0byYgcmVkaXJlY3RV
UkwgOiByZWRpcmVjdENoYWluKQotICAgICAgICB1cmxzLnVuY2hlY2tlZEFwcGVuZChBUEk6OlVS
TDo6Y3JlYXRlKHJlZGlyZWN0VVJMLnN0cmluZygpKSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6
OkFycmF5OjpjcmVhdGUoV1RGTW92ZSh1cmxzKSkubGVha1JlZigpKTsKLX0KLQotYm9vbCBXS0Rv
d25sb2FkR2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQotewotICAg
IHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQzZjcyMDI3OTNkNTRmNTQyYTM5MDkyMDRhM2M4MGRhY2E5YWQyMWUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tEb3dubG9hZF9oCi0jZGVmaW5lIFdLRG93bmxvYWRf
aAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgotI2luY2x1ZGUgPFdlYktpdC9XS0RlcHJl
Y2F0ZWQuaD4KLQotI2lmbmRlZiBfX2NwbHVzcGx1cwotI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSNl
bmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLVdLX0VY
UE9SVCBXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCk7Ci0KLVdLX0VYUE9SVCB1aW50NjRf
dCBXS0Rvd25sb2FkR2V0SUQoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkgV0tfQ19BUElfREVQUkVD
QVRFRDsKLVdLX0VYUE9SVCBXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpOwotV0tfRVhQT1JUIFdLRGF0YVJlZiBXS0Rvd25sb2FkR2V0
UmVzdW1lRGF0YShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCB2b2lkIFdLRG93
bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgV0tQYWdlUmVm
IFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1X
S19FWFBPUlQgV0tBcnJheVJlZiBXS0Rvd25sb2FkQ29weVJlZGlyZWN0Q2hhaW4oV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCk7Ci1XS19FWFBPUlQgYm9vbCBXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRp
YXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0j
ZW5kaWYKLQotI2VuZGlmIC8vIFdLRG93bmxvYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZENsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNjhhYjZhMDEzM2Y1
NzhlYzU4OTM3NjZhMDBmMGY3ZDQ1YTY5MDUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50LmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV0tEb3dubG9hZENsaWVudF9oCisjZGVmaW5lIFdLRG93bmxv
YWRDbGllbnRfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCit0eXBlZGVmIGJvb2wg
KCpXS0Rvd25sb2FkV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFdLVVJMUmVxdWVzdFJlZiBuZXdSZXF1
ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWRE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgY2hhbGxlbmdlLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3R5cGVkZWYgV0tTdHJpbmdSZWYgKCpXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRp
b25XaXRoUmVzcG9uc2UpKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYg
cmVzcG9uc2UsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRXcml0ZURhdGEpKFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGxvbmcgbG9uZyBieXRlc1dyaXR0ZW4sIGxvbmcgbG9uZyB0b3RhbEJ5
dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZEZpbmlzaCkoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS0Rvd25sb2FkRGlkRmFpbFdpdGhFcnJvcikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOworCit0eXBlZGVmIHN0cnVjdCBXS0Rvd25sb2FkQ2xpZW50QmFzZSB7CisgICAgaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ZXJzaW9uOworICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKK30gV0tEb3dubG9hZENsaWVudEJhc2U7CisKK3R5
cGVkZWYgc3RydWN0IFdLRG93bmxvYWRDbGllbnRWMCB7CisgICAgV0tEb3dubG9hZENsaWVudEJh
c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOworCisgICAgLy8g
VmVyc2lvbiAwLgorICAgIFdLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAgICAg
ICAgICAgICAgICAgICAgICAgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb247CisgICAgV0tEb3du
bG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAgICAgICAgICAgICAgICBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CisgICAgV0tEb3dubG9hZERlY2lkZURlc3Rp
bmF0aW9uV2l0aFJlc3BvbnNlICAgICAgICAgICAgICAgICAgICBkZWNpZGVEZXN0aW5hdGlvbldp
dGhSZXNwb25zZTsKKyAgICBXS0Rvd25sb2FkRGlkV3JpdGVEYXRhICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFdyaXRlRGF0YTsKKyAgICBXS0Rvd25sb2FkRGlkRmluaXNo
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZpbmlzaDsKKyAgICBX
S0Rvd25sb2FkRGlkRmFpbFdpdGhFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZEZhaWxXaXRoRXJyb3I7Cit9IFdLRG93bmxvYWRDbGllbnRWMDsKKworI2VuZGlmIC8qIFdL
RG93bmxvYWRDbGllbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S0Rvd25sb2FkUmVmLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWJjYzkyZDc5OWE1NWJhZDE3MTE1Y2I4NmE3
YzhiYzg3MDQ2MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tEb3dubG9hZFJlZi5jcHAKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkUmVmLmgiCisKKyNp
bmNsdWRlICJBUElBcnJheS5oIgorI2luY2x1ZGUgIkFQSURhdGEuaCIKKyNpbmNsdWRlICJBUElE
b3dubG9hZENsaWVudC5oIgorI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKKyNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tEb3du
bG9hZENsaWVudC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCituYW1lc3BhY2UgQVBJ
IHsKK3RlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS0Rvd25sb2FkQ2xpZW50QmFzZT4g
eworICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS0Rvd25sb2FkQ2xpZW50VjA+IFZlcnNpb25zOwor
fTsKK30KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworV0tUeXBlSUQgV0tEb3dubG9hZEdl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKERvd25sb2FkUHJveHk6OkFQSVR5cGUpOwor
fQorCitXS1VSTFJlcXVlc3RSZWYgV0tEb3dubG9hZENvcHlSZXF1ZXN0KFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpCit7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZSh0
b0ltcGwoZG93bmxvYWQpLT5yZXF1ZXN0KCkpLmxlYWtSZWYoKSk7Cit9CisKK3ZvaWQgV0tEb3du
bG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBmdW5jdGlvbkNv
bnRleHQsIFdLRG93bmxvYWRDYW5jZWxDYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4g
dG9JbXBsKGRvd25sb2FkKS0+Y2FuY2VsKFtmdW5jdGlvbkNvbnRleHQsIGNhbGxiYWNrXShhdXRv
KiByZXN1bWVEYXRhKSB7CisgICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxi
YWNrKHRvQVBJKHJlc3VtZURhdGEpLCBmdW5jdGlvbkNvbnRleHQpOworICAgIH0pOworfQorCitX
S1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25s
b2FkKQoreworICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZG93bmxvYWQpLT5vcmlnaW5hdGluZ1Bh
Z2UoKSk7Cit9CisKK2Jvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQoV0tEb3dubG9h
ZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9JbXBsKGRvd25sb2FkKS0+d2FzVXNlcklu
aXRpYXRlZCgpOworfQorCit2b2lkIFdLRG93bmxvYWRTZXRDbGllbnQoV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgV0tEb3dubG9hZENsaWVudEJhc2UqIGNsaWVudCkKK3sKKyAgICBjbGFzcyBEb3du
bG9hZENsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS0Rvd25sb2FkQ2xpZW50QmFzZT4sIHB1
YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0
IERvd25sb2FkQ2xpZW50KGNvbnN0IFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsKKyAgICAgICAgfQorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgCisgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBvdmVycmlkZQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkgeworICAgICAgICAgICAgICAgIGNoYWxsZW5nZS5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJv
dGVjdGlvblNwYWNlQW5kQ29udGludWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh0b0FQSShkb3dubG9hZCksIHRvQVBJKGNoYWxsZW5nZSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdl
YktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWlu
dDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3Jp
dGUpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkV3Jp
dGVEYXRhKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZFdyaXRlRGF0YSh0b0FQSShkb3dubG9hZCksIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0
ZW4sIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdURjo6U3RyaW5nJiBzdWdnZXN0
ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkFsbG93T3ZlcndyaXRl
LCBXVEY6OlN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2Up
IHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zlcndy
aXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBUEk6OlN0cmluZyogZGVzdGluYXRpb24gPSB0b0ltcGwobV9jbGllbnQuZGVj
aWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UodG9BUEkoZG93bmxvYWQpLCB0b0FQSShyZXNwb25z
ZSksIHRvQVBJKHN1Z2dlc3RlZEZpbGVuYW1lLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbykpOworICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbikgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCBkZXN0aW5hdGlvbi0+c3RyaW5n
KCkpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9h
ZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWRGaW5pc2gpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmluaXNoKHRvQVBJKGRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJ
OjpEYXRhKiByZXN1bWVEYXRhKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcih0b0FQSShkb3dubG9hZCksIHRvQVBJ
KGVycm9yKSwgdG9BUEkocmVzdW1lRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBkaWRGYWls
KGRvd25sb2FkLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgZG93bmxvYWQucmVxdWVzdCgpLnVybCgpLCAiTmV0d29yayBwcm9j
ZXNzIGNyYXNoZWQgZHVyaW5nIGRvd25sb2FkIiB9LCBudWxscHRyKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGUKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bikgeworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24odG9BUEkoZG93bmxvYWQpLCB0
b0FQSShyZXNwb25zZSksIHRvQVBJKHJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0b0ltcGwoZG93
bmxvYWQpLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVudChjbGllbnQpKSk7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
UmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzA1OGQ2N2VmZmNmNGZhZGMwZmYwYTk0ZTYwY2I2ZTIxNTJmY2YwYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLRG93bmxvYWRS
ZWZfaAorI2RlZmluZSBXS0Rvd25sb2FkUmVmX2gKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorCisjaWZuZGVmIF9fY3Bs
dXNwbHVzCisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRH
ZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJl
cXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CisKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxv
YWRDYW5jZWxDYWxsYmFjaykoV0tEYXRhUmVmIHJlc3VtZURhdGEsIGNvbnN0IHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNl
bENhbGxiYWNrIGNhbGxiYWNrKTsKK1dLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9y
aWdpbmF0aW5nUGFnZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKK1dLX0VYUE9SVCBib29sIFdL
RG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpOworV0tf
RVhQT1JUIHZvaWQgV0tEb3dubG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S0Rvd25sb2FkQ2xpZW50QmFzZSogY2xpZW50KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8qIFdLRG93bmxvYWRSZWZfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaAppbmRleCA5ZDhm
Y2YxZTE5OTcxM2IxZjA5YjMyNjIwZDIxNTc5MjQ1NDg2ZTljLi5kOGNlYmE0ZTRmOTJiYTA5YjY5
MjRkNTE5MDliOWE5ZDZiNDUzMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS05hdmlnYXRpb25BY3Rpb25SZWYuaApAQCAtMzQsNyArMzQsNyBAQCBleHRl
cm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLTmF2aWdhdGlvbkFjdGlvbkdldFR5cGVJ
RCgpOwogCi1XS19FWFBPUlQgYm9vbCBXS05hdmlnYXRpb25BY3Rpb25TaG91bGRQZXJmb3JtRG93
bmxvYWQoV0tOYXZpZ2F0aW9uQWN0aW9uUmVmKTsKK1dLX0VYUE9SVCBib29sIFdLTmF2aWdhdGlv
bkFjdGlvblNob3VsZFBlcmZvcm1Eb3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYgYWN0aW9u
KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAppbmRleCBlZTUxMTlmZDBjYzI2Y2I4ZTE1MDM3MTk1MDBkOTI3ZTQxYWI0MmFm
Li4yMjRkYzE4MTE1NDFhMmQyMTJmNDRlYjg3NDVhYmIyMWM3YTExNTQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25EZWNpc2lvbkxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiQ29udGVudEFzU3RyaW5nSW5jbHVkZXND
aGlsZEZyYW1lcy5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKICNpbmNsdWRlICJMZWdh
Y3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAi
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgpAQCAtMTI0MCw3ICsxMjQxLDcgQEAgdm9pZCBXS1Bh
Z2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xp
Y3lDbGllbnRCYXNlKgogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBu
YXZpZ2F0aW9uQWN0aW9uLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxICYmICFt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTI1MSwxNCArMTI1MiwxNCBAQCB2b2lkIFdLUGFnZVNl
dFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNs
aWVudEJhc2UqCiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJ
OjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsKIAogICAgICAgICAgICAgaWYg
KG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2
aWdhdGlvbkFjdGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
bW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAg
ICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5k
YXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0
dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICAgICAgZWxzZSBp
ZiAobV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMSh0b0FQSSgmcGFnZSksIHRvQVBJKGZy
YW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5tb3VzZUJ1dHRvbiksIHRvQVBJKG9yaWdpbmF0aW5nRnJhbWUpLCB0b0FQSShyZXF1ZXN0LnB0
cigpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdh
dGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSks
IHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHRvQVBJ
KCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0
aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5h
dmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2luYXRpbmdGcmFtZSks
IHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQ
SShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
LT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCku
bW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwg
dG9BUEkob3JpZ2luYXRpbmdGcmFtZSksIHRvQVBJKG9yaWdpbmFsUmVxdWVzdC5wdHIoKSksIHRv
QVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2Vi
RnJhbWVQcm94eSYgZnJhbWUsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlv
bkFjdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3Qs
IGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KSB7CiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwpAQCAtMTI2Nyw3ICsxMjY4LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25z
dCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgogCiAgICAgICAgICAgICBSZWY8QVBJOjpVUkxSZXF1
ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VSZXF1ZXN0KTsK
IAotICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHRv
QVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3QucHRyKCkp
LCB0b0FQSShmcmFtZU5hbWUuaW1wbCgpKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJh
bWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubmF2aWdhdGlvblR5cGUpLCB0b0FQ
SShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbi0+ZGF0YSgpLm1vdXNlQnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZy
YW1lTmFtZS5pbXBsKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBm
cmFtZSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCkBAIC0yMjU5LDYgKzIyNjAsMjcgQEAg
dm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlTmF2aWdhdGlvbkNsaWUKICAgICAgICAgICAgIHJldHVybiBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXpl
SW5kZXgsIGNoYWxsZW5nZVN0cmluZy0+c3RyaW5nKCksIHVybCkpOwogICAgICAgICB9CiAKKyAg
ICAgICAgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBXZWJLaXQ6OkRv
d25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uQWN0aW9uRGlk
QmVjb21lRG93bmxvYWQodG9BUEkoJnBhZ2UpLCB0b0FQSSgmYWN0aW9uKSwgdG9BUEkoJmRvd25s
b2FkKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiByZXNwb25zZSwgV2ViS2l0OjpEb3du
bG9hZFByb3h5JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFnZSksIHRvQVBJKCZyZXNwb25zZSksIHRvQVBJKCZk
b3dubG9hZCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkm
IHBhZ2UsIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9h
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5jb250ZXh0
TWVudURpZENyZWF0ZURvd25sb2FkKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgZGlkQmVn
aW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRp
b25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRp
b25DbGllbnQuaAppbmRleCAzODA2ZDE4NmFhOWZiOTc3NDdhNzNkOTczNjA2YTU4ZWI0MTg4YjYw
Li5hNGFhZmU0YTkzNWIzMTBhMjIwMWJmN2I0Zjc0NTY1ZTU1MmI4NGE0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5o
CkBAIC03MSw3ICs3MSwxMyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uV2ViUHJv
Y2Vzc0RpZFRlcm1pbmF0ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgVwogdHlwZWRlZiBXS0Rh
dGFSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29weVdlYkNyeXB0b01hc3RlcktleUNhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgV0tTdHJp
bmdSZWYgKCpXS1BhZ2VOYXZpZ2F0aW9uQ29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZ0NhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0g
ICAgCisKK3R5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmIG5hdmln
YXRpb25BY3Rpb24sIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworCit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZENhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYg
bmF2aWdhdGlvblJlc3BvbnNlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKwordHlwZWRlZiB2b2lkICgqV0tQYWdlTmF2aWdhdGlvbkNvbnRleHRNZW51
RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCiB0eXBlZGVmIFdLUGx1Z2luTG9h
ZFBvbGljeSAoKldLUGFnZU5hdmlnYXRpb25EZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkQ2FsbGJh
Y2spKFdLUGFnZVJlZiBwYWdlLCBXS1BsdWdpbkxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQ
b2xpY3ksIFdLRGljdGlvbmFyeVJlZiBwbHVnaW5JbmZvRGljdGlvbmFyeSwgV0tTdHJpbmdSZWYq
IHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiB0
eXBlZGVmIHZvaWQgKCpXS1BhZ2VOYXZpZ2F0aW9uRGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZSko
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwpAQCAtMjEzLDYgKzIxOSw5
IEBAIHR5cGVkZWYgc3RydWN0IFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyB7CiAKICAgICAvLyBW
ZXJzaW9uIDMuCiAgICAgV0tQYWdlTmF2aWdhdGlvbkNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmdDYWxsYmFjayBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5n
OworICAgIFdLUGFnZU5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5h
dmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZENhbGxiYWNrIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkOworICAgIFdLUGFnZU5hdmlnYXRpb25Db250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkQ2FsbGJhY2sgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDsKIH0gV0tQYWdlTmF2aWdh
dGlvbkNsaWVudFYzOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyMDRlM2JkODFkM2Ri
M2RlM2I3ODI3YzM1ZmQ3YTYxZjEwNGU2NGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRnJhbWVJbmZvOworQGNsYXNzIFdLV2Vi
VmlldzsKK0Bwcm90b2NvbCBOU1Byb2dyZXNzUmVwb3J0aW5nOworQHByb3RvY29sIFdLRG93bmxv
YWREZWxlZ2F0ZTsKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIFdLRG93
bmxvYWQgOiBOU09iamVjdDxOU1Byb2dyZXNzUmVwb3J0aW5nPgorCisvKiBAYWJzdHJhY3QgVGhl
IHJlcXVlc3QgdXNlZCB0byBpbml0aWF0ZSB0aGlzIGRvd25sb2FkLgorICBAZGlzY3Vzc2lvbiBJ
ZiB0aGUgb3JpZ2luYWwgcmVxdWVzdCByZWRpcmVjdGVkIHRvIGEgZGlmZmVyZW50IFVSTCwgb3Jp
Z2luYWxSZXF1ZXN0CisgIHdpbGwgYmUgdW5jaGFuZ2VkIGFmdGVyIHRoZSBkb3dubG9hZCBmb2xs
b3dzIHRoZSByZWRpcmVjdC4KKyAqLworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBu
dWxsYWJsZSkgTlNVUkxSZXF1ZXN0ICpvcmlnaW5hbFJlcXVlc3Q7CisKKy8qIEBhYnN0cmFjdCBU
aGUgd2ViIHZpZXcgdGhhdCBvcmlnaW5hdGVkIHRoaXMgZG93bmxvYWQuICovCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIHdlYWspIFdLV2ViVmlldyAqd2ViVmlldzsKKworLyogQGFi
c3RyYWN0IFRoZSBkZWxlZ2F0ZSB0aGF0IHJlY2VpdmVzIHByb2dyZXNzIHVwZGF0ZXMgZm9yIHRo
aXMgZG93bmxvYWQuICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLRG93bmxv
YWREZWxlZ2F0ZT4gZGVsZWdhdGU7CisKKy8qIEBhYnN0cmFjdCBDYW5jZWwgdGhlIGRvd25sb2Fk
LgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIGNhbmNl
bGxhdGlvbiBpcyBmaW5pc2hlZC4KKyBAZGlzY3Vzc2lvbiBUbyBhdHRlbXB0IHRvIHJlc3VtZSB0
aGUgZG93bmxvYWQsIGNhbGwgV0tXZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6
IHdpdGggdGhlIGRhdGEgZ2l2ZW4gdG8gdGhlIGNvbXBsZXRpb25IYW5kbGVyLgorIElmIG5vIHJl
c3VtZSBhdHRlbXB0IGlzIHBvc3NpYmxlIHdpdGggdGhpcyBzZXJ2ZXIsIGNvbXBsZXRpb25IYW5k
bGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggbmlsLgorICovCistICh2b2lkKWNhbmNlbDoodm9pZChe
IF9OdWxsYWJsZSkoTlNEYXRhICogX051bGxhYmxlIHJlc3VtZURhdGEpKWNvbXBsZXRpb25IYW5k
bGVyOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTgzZTZmY2I2
Mjc1Mzc5M2M1MjU4NWJhZTQ5NWQwNmM2MzVjMGU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQubW0KQEAgLTAsMCArMSwyNjIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJ
bnRlcm5hbC5oIgorCisjaW1wb3J0ICJBUElEb3dubG9hZENsaWVudC5oIgorI2ltcG9ydCAiQ29t
cGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgorI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgor
I2ltcG9ydCAiV0tEb3dubG9hZERlbGVnYXRlLmgiCisjaW1wb3J0ICJXS05TRGF0YS5oIgorI2lt
cG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCisjaW1wb3J0ICJXS1dlYlZp
ZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KKworY2xhc3MgRG93bmxvYWRDbGllbnQgZmluYWwgOiBwdWJs
aWMgQVBJOjpEb3dubG9hZENsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRG93bmxvYWRD
bGllbnQoaWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kZWxl
Z2F0ZShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbihbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZDp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopXSkK
KyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93bmxvYWQ6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAs
IG1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3Rvcihkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTopXSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGaW5pc2goW21f
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihkb3dubG9hZERpZEZpbmlzaDop
XSkKKyAgICAgICAgLCBtX3Jlc3BvbmRzVG9EaWRGYWlsV2l0aEVycm9yKFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6cmVzdW1l
RGF0YTopXSkKKyAgICB7CisgICAgICAgIEFTU0VSVChbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihkb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2U6c3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KV0pOworICAgIH0KKworcHJpdmF0ZToK
KyAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2Fk
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIGZpbmFsCisgICAgeworICAg
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVx
dWVzdCkpOworCisgICAgICAgIFJldGFpblB0cjxOU1VSTFJlcXVlc3Q+IG5zUmVxdWVzdCA9IHJl
cXVlc3QubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhUVFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVw
ZGF0ZUhUVFBCb2R5KTsKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3du
bG9hZCkgd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246c3RhdGljX2Nhc3Q8TlNIVFRQVVJMUmVz
cG9uc2UgKj4ocmVzcG9uc2UubnNVUkxSZXNwb25zZSgpKSBuZXdSZXF1ZXN0Om5zUmVxdWVzdC5n
ZXQoKSBkZWNpc2lvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1
ZXN0KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjopKV0oV0tEb3dubG9hZFJlZGlyZWN0
UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxl
dGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAg
ICBzd2l0Y2ggKHBvbGljeSkgeworICAgICAgICAgICAgY2FzZSBXS0Rvd25sb2FkUmVkaXJlY3RQ
b2xpY3lDYW5jZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgICAgICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93OgorICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNl
Ok5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgV0tEb3dubG9hZFJl
ZGlyZWN0UG9saWN5ICglbGQpIiwgKGxvbmcpcG9saWN5XTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSkuZ2V0KCldOworICAgIH0KKworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYktpdDo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSYgY2hhbGxlbmdlKSBmaW5hbAorICAgIHsKKyAgICAgICAg
aWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpCisgICAgICAgICAgICByZXR1cm4gY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpS
ZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7CisKKyAgICAgICAgW21fZGVsZWdhdGUg
ZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOndyYXBwZXIoY2hhbGxlbmdlKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2No
YWxsZW5nZSA9IG1ha2VSZWYoY2hhbGxlbmdlKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlv
bkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxl
Y3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlv
bkhhbmRsZXI6KSldIChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgICAgICAgICBzd2l0Y2ggKGRpc3Bvc2l0aW9uKSB7CisgICAgICAgICAg
ICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsOgorICAgICAgICAg
ICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwsIGNyZWRlbnRp
YWwgPyBXZWJDb3JlOjpDcmVkZW50aWFsKGNyZWRlbnRpYWwpIDogV2ViQ29yZTo6Q3JlZGVudGlh
bCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmc6CisgICAgICAgICAgICAgICAg
Y2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZToKKyAgICAgICAgICAgICAgICBjaGFs
bGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpDYW5jZWwpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlv
blNwYWNlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNo
YWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVj
dFByb3RlY3Rpb25TcGFjZUFuZENvbnRpbnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uICglbGQpIiwgKGxvbmcpZGlzcG9zaXRpb25dOworICAgICAg
ICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25s
b2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgV1RG
OjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgZmlu
YWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSkKKyAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKworICAg
ICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkZWNpZGVEZXN0aW5h
dGlvblVzaW5nUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpIHN1Z2dlc3RlZEZpbGVu
YW1lOnN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbZG93
bmxvYWQgPSBtYWtlUmVmKGRvd25sb2FkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3Rvcihkb3dubG9h
ZDpkZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxl
dGlvbkhhbmRsZXI6KSldIChOU1VSTCAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICAg
ICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOworCisgICAgICAgICAgICBpZiAoIWRlc3RpbmF0aW9uKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywg
eyB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc0ZpbGVV
UkwpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJ
bnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiZGVzdGluYXRpb24gbXVzdCBiZSBhIGZp
bGUgVVJMIl07CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBOU0ZpbGVNYW5hZ2VyICpmaWxlTWFuYWdlciA9IFtOU0ZpbGVNYW5hZ2VyIGRlZmF1
bHRNYW5hZ2VyXTsKKyAgICAgICAgICAgIGlmICghW2ZpbGVNYW5hZ2VyIGZpbGVFeGlzdHNBdFBh
dGg6W2Rlc3RpbmF0aW9uIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF0ucGF0aF0pIHsK
KyAgICAgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7Cisg
ICAgICAgICAgICAgICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERv
bWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNl
ckluZm86bmlsXSwgeyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoW2ZpbGVN
YW5hZ2VyIGZpbGVFeGlzdHNBdFBhdGg6ZGVzdGluYXRpb24ucGF0aF0pIHsKKyAgICAgICAgICAg
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Rvd25sb2FkXSB7CisgICAgICAgICAgICAg
ICAgICAgIGRvd25sb2FkLT5kaWRGYWlsKFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpOU1VSTEVy
cm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUgdXNlckluZm86bmlsXSwg
eyB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXZWJLaXQ6OkFsbG93T3ZlcndyaXRlOjpObywgeyB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdyYXBwZXIoZG93bmxvYWQuZ2V0
KCkpLnByb2dyZXNzLmZpbGVVUkwgPSBkZXN0aW5hdGlvbjsKKworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLnBhdGgp
OworICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShX
ZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVp
bnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dy
aXRlKSBmaW5hbAorICAgIHsKKyAgICAgICAgTlNQcm9ncmVzcyAqcHJvZ3Jlc3MgPSB3cmFwcGVy
KGRvd25sb2FkKS5wcm9ncmVzczsKKyAgICAgICAgcHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50
ID0gdG90YWxCeXRlc1dyaXR0ZW47CisgICAgICAgIHByb2dyZXNzLnRvdGFsVW5pdENvdW50ID0g
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTsKKworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwg
IW1fcmVzcG9uZHNUb0RpZFdyaXRlRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRXcml0ZURhdGE6Ynl0
ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNF
eHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZV07CisgICAgfQorCisgICAg
dm9pZCBkaWRGaW5pc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwKKyAg
ICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmluaXNoKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkRGlkRmlu
aXNoOndyYXBwZXIoZG93bmxvYWQpXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZhaWwoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYg
ZXJyb3IsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgZmluYWwKKyAgICB7CisgICAgICAgIGlmICgh
bV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2Fk
KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKSByZXN1bWVEYXRhOndyYXBwZXIocmVz
dW1lRGF0YSldOworICAgIH0KKworICAgIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93
bmxvYWRQcm94eSYgZG93bmxvYWQpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgW21fZGVsZWdhdGUgZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCkgZGlkRmFp
bFdpdGhFcnJvcjpbTlNFcnJvciBlcnJvcldpdGhEb21haW46TlNVUkxFcnJvckRvbWFpbiBjb2Rl
Ok5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QgdXNlckluZm86bmlsXSByZXN1bWVEYXRh
Om5pbF07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8aWQgPFdLRG93bmxvYWREZWxlZ2F0ZT4g
PiBtX2RlbGVnYXRlOworCisgICAgYm9vbCBtX3Jlc3BvbmRzVG9XaWxsUGVyZm9ybUhUVFBSZWRp
cmVjdGlvbiA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRzVG9EaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhIDogMTsK
KyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZpbmlzaCA6IDE7CisgICAgYm9vbCBtX3Jlc3BvbmRz
VG9EaWRGYWlsV2l0aEVycm9yIDogMTsKK307CisKK0BpbXBsZW1lbnRhdGlvbiBXS0Rvd25sb2Fk
CisKKy0gKHZvaWQpY2FuY2VsOih2b2lkICheKShOU0RhdGEgKnJlc3VtZURhdGEpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgX2Rvd25sb2FkLT5jYW5jZWwoW2NvbXBsZXRpb25IYW5kbGVyID0g
bWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRhdGEpIHsKKyAgICAgICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3Jh
cHBlcihkYXRhKSk7CisgICAgfSk7Cit9CisKKy0gKE5TVVJMUmVxdWVzdCAqKW9yaWdpbmFsUmVx
dWVzdAoreworICAgIHJldHVybiBfZG93bmxvYWQtPnJlcXVlc3QoKS5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworfQorCist
IChXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgYXV0byogcGFnZSA9IF9kb3dubG9hZC0+b3Jp
Z2luYXRpbmdQYWdlKCk7CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gbmlsOworICAg
IHJldHVybiBmcm9tV2ViUGFnZVByb3h5KCpwYWdlKTsKK30KKworLSAoaWQgPFdLRG93bmxvYWRE
ZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICByZXR1cm4gX2RlbGVnYXRlLmdldCgpLmdldCgpOwor
fQorCistICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0
ZQoreworICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIF9kb3dubG9hZC0+c2V0Q2xpZW50
KGFkb3B0UmVmKCpuZXcgRG93bmxvYWRDbGllbnQoZGVsZWdhdGUpKSk7Cit9CisKKyNwcmFnbWEg
bWFyayBOU1Byb2dyZXNzUmVwb3J0aW5nIHByb3RvY29sIGltcGxlbWVudGF0aW9uCisKKy0gKE5T
UHJvZ3Jlc3MgKilwcm9ncmVzcworeworICAgIE5TUHJvZ3Jlc3MqIGRvd25sb2FkUHJvZ3Jlc3Mg
PSBfZG93bmxvYWQtPnByb2dyZXNzKCk7CisgICAgaWYgKCFkb3dubG9hZFByb2dyZXNzKSB7Cisg
ICAgICAgIGRvd25sb2FkUHJvZ3Jlc3MgPSBbTlNQcm9ncmVzcyBwcm9ncmVzc1dpdGhUb3RhbFVu
aXRDb3VudDoxMDBdOworCisgICAgICAgIGRvd25sb2FkUHJvZ3Jlc3Mua2luZCA9IE5TUHJvZ3Jl
c3NLaW5kRmlsZTsKKyAgICAgICAgZG93bmxvYWRQcm9ncmVzcy5maWxlT3BlcmF0aW9uS2luZCA9
IE5TUHJvZ3Jlc3NGaWxlT3BlcmF0aW9uS2luZERvd25sb2FkaW5nOworCisgICAgICAgIGRvd25s
b2FkUHJvZ3Jlc3MuY2FuY2VsbGFibGUgPSBZRVM7CisgICAgICAgIGRvd25sb2FkUHJvZ3Jlc3Mu
Y2FuY2VsbGF0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0
cjxXS0Rvd25sb2FkPiB7IHNlbGYgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoIVJ1
bkxvb3A6OmlzTWFpbigpKSB7CisgICAgICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFt3ZWFrU2VsZiA9IFdURk1vdmUod2Vha1NlbGYpXSB7CisgICAgICAgICAgICAgICAgICAg
IFt3ZWFrU2VsZiBjYW5jZWw6bmlsXTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBbd2Vha1NlbGYgY2FuY2Vs
Om5pbF07CisgICAgICAgIH0pLmdldCgpOworCisgICAgICAgIF9kb3dubG9hZC0+c2V0UHJvZ3Jl
c3MoZG93bmxvYWRQcm9ncmVzcyk7CisgICAgfQorICAgIHJldHVybiBkb3dubG9hZFByb2dyZXNz
OworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfZG93bmxvYWQtPn5Eb3dubG9hZFByb3h5
KCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAg
ICByZXR1cm4gKl9kb3dubG9hZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWREZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQy
MjUzMDVlNDQ3Y2M3ZjRhNDk5OTA5N2JiMzI4NTBhZTgyOTk5NDAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmgK
QEAgLTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5k
YXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLRG93
bmxvYWQ7CisKKy8qIEBlbnVtIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeQorIEBhYnN0cmFjdCBU
aGUgcG9saWN5IHRvIHBhc3MgYmFjayB0byB0aGUgZGVjaXNpb24gaGFuZGxlciBmcm9tIHRoZSBk
b3dubG9hZDp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFu
ZGxlcjogbWV0aG9kLgorIEBjb25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lDYW5jZWwg
ICBDYW5jZWwgdGhlIHJlZGlyZWN0LgorIEBjb25zdGFudCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3lBbGxvdyAgICBBbGxvdyB0aGUgcmVkaXJlY3QuCisgKi8KK3R5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkgeworICAgIFdLRG93bmxvYWRSZWRpcmVj
dFBvbGljeUNhbmNlbCwKKyAgICBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3lBbGxvdywKK30gTlNf
U1dJRlRfTkFNRShXS0Rvd25sb2FkLlJlZGlyZWN0UG9saWN5KSBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCitAcHJvdG9jb2wgV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KKworQHJlcXVp
cmVkCisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIG5lZWRzIGEgbG9j
YXRpb24gdG8gd3JpdGUgdGhlIGRvd25sb2FkZWQgYnl0ZXMuCisgQHBhcmFtIGRvd25sb2FkIFRo
ZSBkb3dubG9hZCBmb3Igd2hpY2ggd2UgbmVlZCBhIGZpbGUgdG8gd2hpY2ggdG8gd3JpdGUuCisg
QHBhcmFtIHJlc3BvbnNlIFRoZSBzZXJ2ZXIgcmVzcG9uc2UgaWYgdGhpcyBkb3dubG9hZCB3YXMg
dGhlIHJlc3VsdCBvZiBhbiBIVFRQIHJlcXVlc3QsCisgb3IgYSBzeW50aGVzaXplZCByZXNwb25z
ZSBmb3IgYmxvYiBkb3dubG9hZHMuCisgQHBhcmFtIHN1Z2dlc3RlZEZpbGVuYW1lIFRoZSBzdWdn
ZXN0ZWQgZmlsZW5hbWUuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9u
IGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHdpdGgKKyBlaXRoZXIgYSBmaWxlIFVSTCB0byBiZWdp
biB0aGUgZG93bmxvYWQgb3IgbmlsIHRvIGNhbmNlbCB0aGUgZG93bmxvYWQuCisgQGRpc2N1c3Np
b24gSWYgdGhpcyBpcyBhIGRvd25sb2FkIG9mIGEgYmxvYiBVUkwsIHJlc3BvbnNlIHdpbGwgYmUg
bnVsbC4gIHN1Z2dlc3RlZEZpbGVuYW1lCisgd2lsbCBvZnRlbiBiZSB0aGUgc2FtZSBhcyByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgYnV0IHdlYiBjb250ZW50IGNhbiBzcGVjaWZ5IHRoZQor
IHN1Z2dlc3RlZCBkb3dubG9hZCBmaWxlbmFtZS4gIElmIHRoZSBkZXN0aW5hdGlvbiBmaWxlIFVS
TCBpcyBub24tbnVsbCwgaXQgbXVzdCBiZSBhIGZpbGUKKyB0aGF0IGRvZXMgbm90IGV4aXN0IGlu
IGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBleGlzdCBhbmQgY2FuIGJlIHdyaXR0ZW4gdG8uCisgKi8K
Ky0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlv
blVzaW5nUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBzdWdnZXN0ZWRGaWxlbmFt
ZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoTlNVUkwgKiBfTnVsbGFibGUgZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyOworCitA
b3B0aW9uYWwKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHJl
Y2VpdmVkIGFuIEhUVFAgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisgQHBhcmFtIGRvd25sb2FkIFRo
ZSBkb3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSByZWRpcmVjdC4KKyBAcGFyYW0gcmVzcG9uc2Ug
VGhlIHJlZGlyZWN0aW9uIHJlc3BvbnNlLgorIEBwYXJhbSBuZXdSZXF1ZXN0IFRoZSBuZXcgcmVx
dWVzdCB0aGF0IHdpbGwgYmUgc2VudC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgVGhlIGNv
bXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2UgdG8gaW5kaWNhdGUgd2hldGhlciBvciBu
b3QKKyB0byBwcm9jZWVkIHdpdGggdGhlIHJlZGlyZWN0aW9uLgorIEBkaXNjdXNzaW9uIElmIHlv
dSBkbyBub3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kLCBhbGwgc2VydmVyIHN1Z2dlc3RlZCByZWRp
cmVjdHMgd2lsbCBiZSB0YWtlbi4KKyAqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAq
KWRvd25sb2FkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAq
KXJlc3BvbnNlIG5ld1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcjsK
KworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgdG8gcmVzcG9u
ZCB0byBhbiBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBk
b3dubG9hZCB0aGF0IHJlY2VpdmVkIHRoZSBhdXRoZW50aWNhdGlvbiBjaGFsbGVuZ2UuCisgQHBh
cmFtIGNoYWxsZW5nZSBUaGUgYXV0aGVudGljYXRpb24gY2hhbGxlbmdlLgorIEBwYXJhbSBjb21w
bGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGludm9rZSB0byBy
ZXNwb25kIHRvIHRoZSBjaGFsbGVuZ2UuIFRoZQorIGRpc3Bvc2l0aW9uIGFyZ3VtZW50IGlzIG9u
ZSBvZiB0aGUgY29uc3RhbnRzIG9mIHRoZSBlbnVtZXJhdGVkIHR5cGUKKyBOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24uIFdoZW4gZGlzcG9zaXRpb24gaXMgTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsCisgdGhlIGNyZWRlbnRpYWwgYXJndW1lbnQgaXMg
dGhlIGNyZWRlbnRpYWwgdG8gdXNlLCBvciBuaWwgdG8gaW5kaWNhdGUgY29udGludWluZyB3aXRo
b3V0IGEKKyBjcmVkZW50aWFsLgorIEBkaXNjdXNzaW9uIElmIHlvdSBkbyBub3QgaW1wbGVtZW50
IHRoaXMgbWV0aG9kLCB0aGUgd2ViIHZpZXcgd2lsbCByZXNwb25kIHRvIHRoZSBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2Ugd2l0aCB0aGUgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVJlamVjdFBy
b3RlY3Rpb25TcGFjZSBkaXNwb3NpdGlvbi4KKyAqLworLSAodm9pZClkb3dubG9hZDooV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRp
YWwgKiBfTnVsbGFibGUpKWNvbXBsZXRpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tl
ZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW5kIHdyaXR0ZW4gZGF0YSB0byB0aGUg
ZGVzdGluYXRpb24uCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGhhcyB3cml0
dGVuIGRhdGEuCisgQHBhcmFtIGJ5dGVzV3JpdHRlbiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0
ZW4uCisgQHBhcmFtIHRvdGFsQnl0ZXNXcml0dGVuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMg
d3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSBUaGUgdG90YWwgbnVt
YmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIHdyaXR0ZW4uCisgQGRpc2N1c3Npb24gSWYgdGhp
cyBkb3dubG9hZCB3YXMgdGhlIHJlc3VsdCBvZiByZXN1bWluZyBhIHByZXZpb3VzIGRvd25sb2Fk
LCB0aGVuCisgdG90YWxCeXRlc1dyaXR0ZW4gd2lsbCBiZSBieXRlc1dyaXR0ZW4gcGx1cyB0aGUg
bnVtYmVyIG9mIGJ5dGVzIHRoYXQgaGFkIGFscmVhZHkgYmVlbiBkb3dubG9hZGVkLgorIElmIHRo
ZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaXMgdW5rbm93biwgdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZSB3aWxsIGJlIC0xLgorICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93
bmxvYWQgZGlkV3JpdGVEYXRhOihpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRl
bjooaW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOihp
bnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU7CisKKy8qIEBhYnN0cmFjdCBJbnZva2Vk
IHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuCisgQHBhcmFtIGRv
d25sb2FkIFRoZSBkb3dubG9hZCB0aGF0IGZpbmlzaGVkLgorICovCistICh2b2lkKWRvd25sb2Fk
RGlkRmluaXNoOihXS0Rvd25sb2FkICopZG93bmxvYWQ7CisKKy8qIEBhYnN0cmFjdCBJbnZva2Vk
IHdoZW4gdGhlIGRvd25sb2FkIGhhcyBmYWlsZWQuCisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3du
bG9hZCB0aGF0IGhhcyBmYWlsZWQuCisgQHBhcmFtIGVycm9yIFRoZSBlcnJvciBpbmRpY2F0aW5n
IHRoZSBmYWlsdXJlIHJlYXNvbi4KKyBAcGFyYW0gcmVzdW1lRGF0YSBUaGlzIGRhdGEgY2FuIGJl
IHBhc3NlZCB0byBXS1dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTogdG8gYXR0
ZW1wdCB0byByZXN1bWUgdGhpcyBkb3dubG9hZC4KKyAqLworLSAodm9pZClkb3dubG9hZDooV0tE
b3dubG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvciByZXN1
bWVEYXRhOihudWxsYWJsZSBOU0RhdGEgKilyZXN1bWVEYXRhOworCitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRG93bmxvYWRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yzg5NDIwZTZlMjdiMTQzZGIw
MjU0MDVjYjMzYjdhOWQ3YzRhZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldLRG93bmxv
YWQuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPERvd25sb2FkUHJveHk+IHsKKyAgICB1c2luZyBX
cmFwcGVyQ2xhc3MgPSBXS0Rvd25sb2FkOworfTsKKworfQorCitAaW50ZXJmYWNlIFdLRG93bmxv
YWQgKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxXZWJL
aXQ6OkRvd25sb2FkUHJveHk+IF9kb3dubG9hZDsKKyAgICBXZWFrT2JqQ1B0cjxpZCA8V0tEb3du
bG9hZERlbGVnYXRlPiA+IF9kZWxlZ2F0ZTsKK30KK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaAppbmRleCA5MzQw
NzBlM2RlNDQ5ODJmNTcyYmQ1YTE4OGQxMGNiNDljZjcyMTFmLi42ZTY4Njk5Mjc5MGZkODNlNWRk
ZGFmODA2YzEwNDgyMjMzZmRiMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC03Niw2ICs3NiwxMCBAQCBX
S19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSkKICAqLwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CiAKKy8q
ISBAYWJzdHJhY3QgQSB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHdlYiBjb250ZW50IHVz
ZWQgYSBkb3dubG9hZCBhdHRyaWJ1dGUgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHNob3VsZCBiZSBk
b3dubG9hZGVkLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBzaG91
bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogI2lmICFUQVJHRVRfT1NfSVBIT05FCiAKIC8qISBAYWJzdHJhY3Qg
VGhlIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3aGVuIHRoZSBuYXZpZ2F0aW9u
IHdhcyByZXF1ZXN0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCA0ZDIwYzgwY2VjMjZhN2MyODY5MmFh
ODZkMzRiNDBhNmI3NTBmMGJlLi4yZDc4ZWVlYzBhMmQ3YWM3MDA3OTg2YzdjN2Q1ZmUyMWIwMTVh
NzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uQWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTExNiw2ICsxMTYsMTEgQEAgc3RhdGljIFdLU3ludGhl
dGljQ2xpY2tUeXBlIHRvV0tTeW50aGV0aWNDbGlja1R5cGUoV2ViS2l0OjpXZWJNb3VzZUV2ZW50
OjpTeW50aGUKICAgICByZXR1cm4gX25hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS5uc1VSTFJl
cXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KTsKIH0K
IAorLSAoQk9PTClzaG91bGRQZXJmb3JtRG93bmxvYWQKK3sKKyAgICByZXR1cm4gX25hdmlnYXRp
b25BY3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpOworfQorCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIC0gKFdLU3ludGhldGljQ2xpY2tUeXBlKV9zeW50aGV0aWNDbGlja1R5cGUKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb25Qcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tO
YXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5oCmluZGV4IDg1ZmQ5NmU0ZGQwZmVmZTZiY2Y3ZmVlOWQ3
OGM1ZTk5MmY1YmMzNzIuLjUzY2M1YTk3YzdlYTkyNTRhMzI1MDRhNGRlNjRmNmMzZmYzZTVhNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25BY3Rpb25Qcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaApAQCAtNDUsNyArNDUsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBXS1N5bnRoZXRpY0NsaWNrVHlwZSkgewogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9jYW5IYW5kbGVSZXF1ZXN0OwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVuRXh0ZXJuYWxTY2hlbWVzIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5BcHBMaW5rcyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjExKSwgaW9zKDkuMCkpOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09M
IF9zaG91bGRQZXJmb3JtRG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlv
cygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFBl
cmZvcm1Eb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5UKCJkb3dubG9h
ZEF0dHJpYnV0ZSIsIG1hY29zKDEwLjE1LCBXS19NQUNfVEJBKSwgaW9zKDEzLjAsIFdLX0lPU19U
QkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzIFdLX0FQSV9ERVBSRUNBVEVEKCJ1c2UgX3Nob3VsZE9wZW5FeHRlcm5hbFNj
aGVtZXMgYW5kIF9zaG91bGRPcGVuQXBwTGlua3MiLCBtYWNvcygxMC4xMSwgMTAuMTEpLCBpb3Mo
OS4wLCA5LjApKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaAppbmRleCBjZjIxMGFlOTFiNjI5ZjJmYWNlNzdl
MWJlMzUxMGViODg0YTA1ODc4Li45OTFmZmY2MWMxNzBlMzY2YTI5YWUyZWU3N2FlMjMxNWI1ZTk3
YmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZp
Z2F0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uRGVsZWdhdGUuaApAQCAtMjksNiArMjksNyBAQAogCiBOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgogCitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS05hdmlnYXRpb247CiBA
Y2xhc3MgV0tOYXZpZ2F0aW9uQWN0aW9uOwogQGNsYXNzIFdLTmF2aWdhdGlvblJlc3BvbnNlOwpA
QCAtNDAsMjAgKzQxLDI0IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAgd2ViVmlldzpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjogbWV0aG9kLgogIEBj
b25zdGFudCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lDYW5jZWwgICBDYW5jZWwgdGhlIG5hdmln
YXRpb24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICAgIEFsbG93
IHRoZSBuYXZpZ2F0aW9uIHRvIGNvbnRpbnVlLgorIEBjb25zdGFudCBXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lEb3dubG9hZCAgICBUdXJuIHRoZSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4K
ICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KSB7CiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5Q2FuY2VsLAogICAgIFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93LAorICAgIFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2Fk
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSksCiB9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8qISBAZW51bSBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeQogIEBhYnN0cmFjdCBUaGUgcG9saWN5IHRvIHBhc3Mg
YmFjayB0byB0aGUgZGVjaXNpb24gaGFuZGxlciBmcm9tIHRoZSB3ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6IG1ldGhvZC4KICBAY29uc3Rh
bnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwgICBDYW5jZWwgdGhlIG5hdmlnYXRp
b24uCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cgICAgQWxsb3cg
dGhlIG5hdmlnYXRpb24gdG8gY29udGludWUuCisgQGNvbnN0YW50IFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5RG93bmxvYWQgICAgVHVybiB0aGUgbmF2aWdhdGlvbiBpbnRvIGEgZG93bmxvYWQu
CiAgKi8KIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5KSB7CiAgICAgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWwsCiAgICAgV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdywKKyAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eURvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSksCiB9IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTApLCBpb3MoOC4wKSk7CiAKIC8q
ISBBIGNsYXNzIGNvbmZvcm1pbmcgdG8gdGhlIFdLTmF2aWdhdGlvbkRlbGVnYXRlIHByb3RvY29s
IGNhbiBwcm92aWRlCkBAIC0xNjQsNiArMTY5LDI0IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSB7CiAgKi8KIC0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0RlcHJlY2F0ZWRUTFM6KHZv
aWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIg
dXNpbmcgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQuCisgQHBhcmFtIHdlYlZpZXcg
VGhlIHdlYiB2aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIG5hdmlnYXRp
b25BY3Rpb24gVGhlIGFjdGlvbiB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxvYWQu
CisgQHBhcmFtIGRvd25sb2FkIFRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBUaGUgZG93bmxv
YWQgbmVlZHMgaXRzIGRlbGVnYXRlIHRvIGJlIHNldCB0byByZWNlaXZlIHVwZGF0ZXMgYWJvdXQg
aXRzIHByb2dyZXNzLgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBu
YXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRp
ZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKworLyoKKyBAYWJzdHJhY3QgQ2Fs
bGVkIGFmdGVyIHVzaW5nIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWQuCisgQHBh
cmFtIHdlYlZpZXcgVGhlIHdlYiB2aWV3IHRoYXQgY3JlYXRlZCB0aGUgZG93bmxvYWQuCisgQHBh
cmFtIG5hdmlnYXRpb25SZXNwb25zZSBUaGUgcmVzcG9uc2UgdGhhdCBpcyBiZWluZyB0dXJuZWQg
aW50byBhIGRvd25sb2FkLgorIEBwYXJhbSBkb3dubG9hZCBUaGUgZG93bmxvYWQuCisgQGRpc2N1
c3Npb24gVGhlIGRvd25sb2FkIG5lZWRzIGl0cyBkZWxlZ2F0ZSB0byBiZSBzZXQgdG8gcmVjZWl2
ZSB1cGRhdGVzIGFib3V0IGl0cyBwcm9ncmVzcy4KKyovCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgbmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAq
KW5hdmlnYXRpb25SZXNwb25zZSBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25s
b2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CisKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggZjA5YzJhOGU2YTViNzg1NWJmZjllYTVmYzMyMTMyYTE1M2ViMTViNS4uZjZj
NDdhNWE1OTNlOWFhNDU2MTA5MjkxZGE3YTY1NDFjNDg5YzU0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaApAQCAtNTgsMTEgKzU4LDExIEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3kpIHsKICAgICBfV0tTT0F1dGhvcml6YXRp
b25Mb2FkUG9saWN5SWdub3JlLAogfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9z
KDEzLjApKTsKIAotc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOwotc3RhdGljIGNvbnN0IFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkp
IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2Fk
ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VNRU5U
KCJXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNf
VEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSko
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5LjAp
KSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsg
Mik7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93SW5OZXdQcm9jZXNzID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgKyAxKTsKIAotc3RhdGljIGNv
bnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUJlY29tZURvd25sb2FkID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93ICsgMSk7CitzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgV0tf
QVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lEb3dubG9hZCIsIG1hY29zKDEwLjEwLCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RC
QSkpID0gKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KShXS05hdmlnYXRpb25SZXNwb25zZVBv
bGljeUFsbG93ICsgMSk7CiAKIEBwcm90b2NvbCBXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUg
PFdLTmF2aWdhdGlvbkRlbGVnYXRlPgogCkBAIC04OCw2ICs4OCw4IEBAIHN0YXRpYyBjb25zdCBX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
IHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShCT09MKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWROZWdvdGlhdGVNb2Rlcm5UTFM6
KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOihXS0Rv
d25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1
cmU6KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAvLyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBl
bmRlZCB3aXRob3V0IG5hdmlnYXRpb24uCiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlv
bkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IDRmMzZlMjMy
NjQzNzEwMjNkMzhmMjgzODEwNzUxYmNiYTk5ODU5ZGMuLmZhZTMxZjMxYjc5OTEyMWQwZTE3Mzdj
ZDA3MjEwODU0OTgwMjIwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCkBAIC0yOCwxMSArMjgsMTMgQEAKIAogI2ltcG9ydCAi
QXV0b21hdGlvbkNsaWVudC5oIgogI2ltcG9ydCAiQ2FjaGVNb2RlbC5oIgorI2ltcG9ydCAiRG93
bmxvYWRNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMZWdhY3lEb3dubG9hZENsaWVudC5oIgogI2ltcG9y
dCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiUGx1Z2luUHJvY2Vzc01hbmFnZXIuaCIKICNpbXBvcnQg
IlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVyLmgiCisjaW1w
b3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVN0b3JlSW50ZXJu
YWwuaCIKQEAgLTQ4MSwxMiArNDgzLDEyIEBAIHN0YXRpYyBXS1Byb2Nlc3NQb29sICpzaGFyZWRQ
cm9jZXNzUG9vbDsKIAogLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VS
TFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKLSAg
ICByZXR1cm4gd3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJz
aXRlRGF0YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKTsKKyAgICByZXR1cm4gW19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoX3Byb2Nlc3NQb29sLT5kb3du
bG9hZCgqZGF0YVN0b3JlLT5fd2Vic2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCByZXF1
ZXN0KSldOwogfQogCiAtIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3dubG9hZEZyb21EYXRhOihO
U0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAq
KWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0aW5nV2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVz
dW1lRG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdl
XSwgQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0
aCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBl
cihfcHJvY2Vzc1Bvb2wtPnJlc3VtZURvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0
b3JlLCBbd2ViVmlldyBfcGFnZV0sIEFQSTo6RGF0YTo6Y3JlYXRlV2l0aG91dENvcHlpbmcocmVz
dW1lRGF0YSkuZ2V0KCksIHBhdGgsIFdlYktpdDo6Q2FsbERvd25sb2FkRGlkU3RhcnQ6Ok5vKSld
OwogfQogCiAtICh2b2lkKV9nZXRBY3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0
aW5nOihwaWRfdClwaWQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmlu
ZyAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCA3YzRmZTRjZDhm
YjlhZmZhOGNhMDMxOWI5NDg5M2MxZjRlNjg5NjZjLi5mYjk3MjkyNzVhMGMwZDRiYzk2ZDhhNTQ3
NjBiOTQxNjk5ZDFlZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtNjIsNyArNjIsNyBAQAogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0RpY3Rpb25hcnkgKl9wbHVnaW5M
b2FkQ2xpZW50UG9saWNpZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMykpOwogI2VuZGlm
CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERvd25sb2FkRGVsZWdh
dGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2FkRGVsZWdhdGU7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXREb3dubG9hZERlbGVnYXRlOikgaWQgPF9X
S0Rvd25sb2FkRGVsZWdhdGU+IF9kb3dubG9hZERlbGVnYXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJ
VEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQuZG93bmxvYWREZWxlZ2F0ZSIsIG1hY29zKDEwLjEw
LCBXS19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHdlYWssIHNldHRlcj1fc2V0QXV0b21hdGlvbkRlbGVnYXRlOikgaWQgPF9XS0F1dG9tYXRp
b25EZWxlZ2F0ZT4gX2F1dG9tYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEyKSwgaW9zKDEwLjApKTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKQEAgLTgzLDggKzgzLDkg
QEAKIAogLSAodm9pZClfcmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0OihOU1N0cmluZyAqKXNjaGVtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSwgaW9z
KDEyLjApKTsKIAotLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0OihOU1VSTFJl
cXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRh
dGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKF9XS0Rvd25s
b2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0
ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmlu
ZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy0gKF9XS0Rv
d25sb2FkICopX2Rvd25sb2FkVVJMUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCB3ZWJz
aXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3JpZ2luYXRpbmdX
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFD
RU1FTlQoIldLV2ViVmlldyBfZG93bmxvYWRSZXF1ZXN0IiwgbWFjb3MoMTAuMTAsIFdLX01BQ19U
QkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSk7CistIChfV0tEb3dubG9hZCAqKV9yZXN1bWVEb3du
bG9hZEZyb21EYXRhOihOU0RhdGEgKilyZXN1bWVEYXRhIHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vi
c2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSAgcGF0aDooTlNTdHJpbmcgKilwYXRoIG9yaWdpbmF0
aW5nV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JF
UExBQ0VNRU5UKCJXS1dlYlZpZXcucmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpjb21wbGV0
aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19U
QkEpKTsKIAogLy8gVGVzdCBvbmx5LiBTaG91bGQgYmUgY2FsbGVkIG9ubHkgd2hpbGUgbm8gd2Vi
IGNvbnRlbnQgcHJvY2Vzc2VzIGFyZSBydW5uaW5nLgogLSAodm9pZClfdGVybWluYXRlU2Vydmlj
ZVdvcmtlcnMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggNzYxYTFk
YTBmNjViMzY5OTdiYWI0OWU2NmMyYzI4ZTlmZjBiMGM4Yy4uNzQ3NWJjYTI2NWI3NzI2NWY0OTJh
ZmM5YWMwODNlMzBhZTkwYjc2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaApAQCAtMzgsNiArMzgsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRl
bTsKIEBjbGFzcyBXS0NvbnRlbnRXb3JsZDsKK0BjbGFzcyBXS0Rvd25sb2FkOwogQGNsYXNzIFdL
RmluZENvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNzIFdLRnJhbWVJ
bmZvOwpAQCAtNDUwLDYgKzQ1MSwyMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VU
VHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogICovCiAr
IChCT09MKWhhbmRsZXNVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTMpLCBpb3MoMTEuMCkpOwogCisvKiBAYWJzdHJhY3QgQmVnaW5zIGEg
ZG93bmxvYWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgd2VicGFn
ZSBhcyBpZiB0aGUgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgdHVybmVkIGEgbmF2aWdhdGlvbiBpbnRv
IGEgZG93bmxvYWQgaW5zdGVhZAorIEBwYXJhbSByZXF1ZXN0IFRoZSByZXF1ZXN0IHNwZWNpZnlp
bmcgdGhlIFVSTCB0byBkb3dubG9hZC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9j
ayBjYWxsZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIHN0YXJ0ZWQuCisgQGRpc2N1c3Npb24gVGhl
IGRvd25sb2FkIG5lZWRzIGl0cyBkZWxlZ2F0ZSB0byBiZSBzZXQgaW4gdGhlIGNvbXBsZXRpb25I
YW5kbGVyIBN0byByZWNlaXZlIHVwZGF0ZXMgYWJvdXQgaXRzIHByb2dyZXNzLgorICovCistICh2
b2lkKXN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCisv
KiBAYWJzdHJhY3QgUmVzdW1lcyBhIGRvd25sb2FkIHRoYXQgZmFpbGVkIG9yIHdhcyBjYW5jZWxl
ZC4KKyBAcGFyYW0gcmVzdW1lRGF0YSBEYXRhIGZyb20gYSBXS0Rvd25sb2FkRGVsZWdhdGUncyBk
aWRGYWlsV2l0aEVycm9yIG9yIGEgV0tEb3dubG9hZCdzIGNhbmNlbCBjb21wbGV0aW9uSGFuZGxl
ci4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayBjYWxsZWQgd2hlbiB0aGUgZG93
bmxvYWQgaGFzIHJlc3VtZWQuCisgQGRpc2N1c3Npb24gVGhlIGRvd25sb2FkIG5lZWRzIGl0cyBk
ZWxlZ2F0ZSB0byBiZSBzZXQgaW4gdGhlIGNvbXBsZXRpb25IYW5kbGVyIHRvIHJlY2VpdmUgdXBk
YXRlcyBhYm91dCBpdHMgcHJvZ3Jlc3MuCisgKi8KKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRGcm9t
UmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShXS0Rvd25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qIEBhYnN0cmFjdCBUaGUgbWVkaWEg
dHlwZSBmb3IgdGhlIFdLV2ViVmlldwogIEBkaXNjdXNzaW9uIFRoZSB2YWx1ZSBvZiBtZWRpYVR5
cGUgd2lsbCBvdmVycmlkZSB0aGUgbm9ybWFsIHZhbHVlIG9mIHRoZSBDU1MgbWVkaWEgcHJvcGVy
dHkuCiAgU2V0dGluZyB0aGUgdmFsdWUgdG8gbmlsIHdpbGwgcmVzdG9yZSB0aGUgbm9ybWFsIHZh
bHVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggMmRkN2VhNWVhOWMxMTM5N2I3Mjc0ODE4Mjc2YTc0OGUzMGQ5YzY3NC4uNzBlYjU3M2Y0
NGI3MTkwNjNiNGFiZDRkNjNkNTM3NmU0M2YxYjE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01OCw5ICs1OCwxMSBAQAogI2ltcG9y
dCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdD
b250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwu
aCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tFcnJvckludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0ZpbmRDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZpbmRS
ZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGcmFtZUluZm9Qcml2YXRlLmgiCiAjaW1wb3J0
ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgog
I2ltcG9ydCAiV0tNZWRpYVBsYXliYWNrU3RhdGUuaCIKQEAgLTcwOCw2ICs3MTAsNDIgQEAgc3Rh
dGljIHZvaWQgaGFyZHdhcmVLZXlib2FyZEF2YWlsYWJpbGl0eUNoYW5nZWRDYWxsYmFjayhDRk5v
dGlmaWNhdGlvbkNlbnRlclJlZiwKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+bG9hZERhdGEo
eyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5ieXRlcyksIGRhdGEubGVuZ3RoIH0s
IE1JTUVUeXBlLCBjaGFyYWN0ZXJFbmNvZGluZ05hbWUsIGJhc2VVUkwuYWJzb2x1dGVTdHJpbmcp
KTsKIH0KIAorLSAodm9pZClzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KilyZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBfcGFnZS0+ZG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QsIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChhdXRvKiBk
b3dubG9hZCkgeworICAgICAgICBpZiAoZG93bmxvYWQpCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcih3cmFwcGVyKGRvd25sb2FkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworfQorCistICh2b2lkKXJlc3VtZURvd25sb2Fk
RnJvbVJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8gdW5hcmNo
aXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdG
cm9tRGF0YTpyZXN1bWVEYXRhIGVycm9yOm5pbF0pOworICAgIFt1bmFyY2hpdmVyIHNldERlY29k
aW5nRmFpbHVyZVBvbGljeTpOU0RlY29kaW5nRmFpbHVyZVBvbGljeVJhaXNlRXhjZXB0aW9uXTsK
KyAgICBOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RP
ZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3RzOltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNB
cnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10sIFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEg
Y2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxSZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6
QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXkiXTsKKyAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107CisgICAgTlNTdHJpbmcgKnBhdGggPSBbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
QCJOU1VSTFNlc3Npb25SZXN1bWVJbmZvTG9jYWxQYXRoIl07CisKKyAgICBpZiAoIXBhdGgpCisg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJJbnZhbGlkIHJlc3VtZSBkYXRhIl07CisKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19E
T1dOTE9BRFMpCisgICAgLy8gTW9qYXZlIENGTmV0d29yayBmYWlscyB0byByZXN1bWUgYSBkb3du
bG9hZCBpZiB0aGUgZGVzdGluYXRpb24gZG9lcyBub3QgZXhpc3QuCisgICAgLy8gSWYgc29tZW9u
ZSBoYXMgcmVtb3ZlZCB0aGUgZGVzdGluYXRpb24gZmlsZSwgbWFrZSBhbiBlbXB0eSBmaWxlIGF0
IHRoYXQgbG9jYXRpb24uCisgICAgaWYgKCFbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6cGF0aF0pCisgICAgICAgIFtbTlNEYXRhIGRhdGFdIHdyaXRlVG9G
aWxlOnBhdGggYXRvbWljYWxseTpZRVNdOworI2VuZGlmCisKKyAgICBfcGFnZS0+cmVzdW1lRG93
bmxvYWQoQVBJOjpEYXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKSwgcGF0aCwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3dubG9hZCkKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cit9CisKIC0gKFdLTmF2aWdhdGlvbiAq
KWdvVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtCiB7
CiAgICAgcmV0dXJuIHdyYXBwZXIoX3BhZ2UtPmdvVG9CYWNrRm9yd2FyZEl0ZW0oaXRlbS5faXRl
bSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKaW5kZXggODU0YjIzMzEwMTMyZTdkYWRlZTY0OTNlZjc2M2ExNjE4MDc1ZDBk
Yy4uNTBhNjJiNTczMjQwOWVlZGFlZDc4MGFiZWY3YTM4NzlmNzQ4YjhmZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBA
IC0xMDksNiArMTA5LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RF
ZGdlKSB7CiAjZW5kaWYKIAogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOworQGNsYXNz
IFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVy
ZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmgKaW5kZXggYjRkODI2YjlhNzI0Nzhm
ZDBjMDNlNmI0YjAxODlmMDcyOTljZWM3My4uZWE4MjAzMmExY2RhY2E2YjQ2ZTliYzFmY2EwNWQ4
ZGU5MDA0NWYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkLmgKQEAgLTI4LDEyICsyOCwxNCBAQAogCiBAY2xhc3MgV0tGcmFtZUluZm87CiBA
Y2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIFdLRG93bmxvYWQ7CiAKLVdLX0NMQVNTX0FWQUlMQUJM
RShtYWNvcygxMC4xMCksIGlvcyg4LjApKQorV0tfQ0xBU1NfREVQUkVDQVRFRF9XSVRIX1JFUExB
Q0VNRU5UKCJXS0Rvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBX
S19JT1NfVEJBKSkKIEBpbnRlcmZhY2UgX1dLRG93bmxvYWQgOiBOU09iamVjdCA8TlNDb3B5aW5n
PgogCi0tICh2b2lkKWNhbmNlbDsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9h
ZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpY2FuY2VsOwogLSAodm9pZClwdWJsaXNo
UHJvZ3Jlc3NBdFVSTDooTlNVUkwgKilVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40
KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1VSTFJl
cXVlc3QgKnJlcXVlc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRG93bmxvYWQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLRG93bmxvYWQubW0KaW5kZXggZGZlZmUwZjE2NmE1NDlkZGU2NWJlMTAyMmViNWMxZmZkZWNj
MmRiYy4uZDVlMTFhZDY5NDU0ZWQ4ZGVhYjM1NTZiMDkyN2Y1MGQ4YjMyZTA4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQpAQCAtMjgs
NjYgKzI4LDg3IEBACiAKICNpbXBvcnQgIkFQSURvd25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJE
b3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNEYXRhLmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKLUBpbXBs
ZW1lbnRhdGlvbiBfV0tEb3dubG9hZCB7Ci0gICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6
RG93bmxvYWRQcm94eT4gX2Rvd25sb2FkOworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KK3N0YXRpYyBOU01hcFRhYmxlPFdLRG93bmxvYWQgKiwgX1dLRG93bmxvYWQgKj4gKmRv
d25sb2FkV3JhcHBlck1hcCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0
cjxOU01hcFRhYmxlPj4gdGFibGU7CisgICAgaWYgKCF0YWJsZS5nZXQoKSkKKyAgICAgICAgdGFi
bGUuZ2V0KCkgPSBbTlNNYXBUYWJsZSB3ZWFrVG9XZWFrT2JqZWN0c01hcFRhYmxlXTsKKyAgICBy
ZXR1cm4gdGFibGUuZ2V0KCkuZ2V0KCk7CiB9CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKKworSUdOT1JFX1dBUk5JTkdTX0JFR0lOKCJkZXByZWNhdGVkLWltcGxlbWVudGF0aW9u
cyIpCitAaW1wbGVtZW50YXRpb24gX1dLRG93bmxvYWQKK0lHTk9SRV9XQVJOSU5HU19FTkQKIAot
LSAodm9pZClkZWFsbG9jCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb3dubG9hZDI6KFdLRG93
bmxvYWQgKilkb3dubG9hZAogewotICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBf
ZG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICByZXR1cm4gc2VsZjsKK30KIAotICAgIFtzdXBlciBk
ZWFsbG9jXTsKKysgKGluc3RhbmNldHlwZSlkb3dubG9hZFdpdGhEb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW2Rvd25sb2Fk
V3JhcHBlck1hcCgpIG9iamVjdEZvcktleTpkb3dubG9hZF0pCisgICAgICAgIHJldHVybiB3cmFw
cGVyOworICAgIF9XS0Rvd25sb2FkICp3cmFwcGVyID0gW1tbX1dLRG93bmxvYWQgYWxsb2NdIGlu
aXRXaXRoRG93bmxvYWQyOmRvd25sb2FkXSBhdXRvcmVsZWFzZV07CisgICAgW2Rvd25sb2FkV3Jh
cHBlck1hcCgpIHNldE9iamVjdDp3cmFwcGVyIGZvcktleTpkb3dubG9hZF07CisgICAgcmV0dXJu
IHdyYXBwZXI7CiB9CiAKIC0gKHZvaWQpY2FuY2VsCiB7Ci0gICAgX2Rvd25sb2FkLT5jYW5jZWwo
W2Rvd25sb2FkID0gbWFrZVJlZigqX2Rvd25sb2FkKV0gKGF1dG8qKSB7CisgICAgX2Rvd25sb2Fk
LT5fZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxvYWQtPl9kb3du
bG9hZCldIChhdXRvKikgewogICAgICAgICBkb3dubG9hZC0+Y2xpZW50KCkubGVnYWN5RGlkQ2Fu
Y2VsKGRvd25sb2FkLmdldCgpKTsKICAgICB9KTsKIH0KIAogLSAodm9pZClwdWJsaXNoUHJvZ3Jl
c3NBdFVSTDooTlNVUkwgKilVUkwKIHsKLSAgICBfZG93bmxvYWQtPnB1Ymxpc2hQcm9ncmVzcyhV
UkwpOworICAgIF9kb3dubG9hZC0+X2Rvd25sb2FkLT5wdWJsaXNoUHJvZ3Jlc3MoVVJMKTsKIH0K
IAogLSAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAogewotICAgIHJldHVybiBfZG93bmxvYWQtPnJl
cXVlc3QoKS5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90
VXBkYXRlSFRUUEJvZHkpOworICAgIHJldHVybiBfZG93bmxvYWQtPl9kb3dubG9hZC0+cmVxdWVz
dCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRh
dGVIVFRQQm9keSk7CiB9CiAKIC0gKFdLV2ViVmlldyAqKW9yaWdpbmF0aW5nV2ViVmlldwogewot
ICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPm9yaWdpbmF0aW5nUGFn
ZSgpKQorICAgIGlmIChhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBfZG93bmxvYWQtPl9kb3dubG9h
ZC0+b3JpZ2luYXRpbmdQYWdlKCkpCiAgICAgICAgIHJldHVybiBbW2Zyb21XZWJQYWdlUHJveHko
Km9yaWdpbmF0aW5nUGFnZSkgcmV0YWluXSBhdXRvcmVsZWFzZV07CiAgICAgcmV0dXJuIG5pbDsK
IH0KIAogLShOU0FycmF5PE5TVVJMICo+ICopcmVkaXJlY3RDaGFpbgogewotICAgIHJldHVybiBj
cmVhdGVOU0FycmF5KF9kb3dubG9hZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAt
PiBOU1VSTCAqIHsKKyAgICByZXR1cm4gY3JlYXRlTlNBcnJheShfZG93bmxvYWQtPl9kb3dubG9h
ZC0+cmVkaXJlY3RDaGFpbigpLCBbXSAoYXV0byYgdXJsKSAtPiBOU1VSTCAqIHsKICAgICAgICAg
cmV0dXJuIHVybDsKICAgICB9KS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChCT09MKXdhc1VzZXJJ
bml0aWF0ZWQKIHsKLSAgICByZXR1cm4gX2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7Cisg
ICAgcmV0dXJuIF9kb3dubG9hZC0+X2Rvd25sb2FkLT53YXNVc2VySW5pdGlhdGVkKCk7CiB9CiAK
IC0gKE5TRGF0YSAqKXJlc3VtZURhdGEKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKF9k
b3dubG9hZC0+bGVnYWN5UmVzdW1lRGF0YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVy
KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkpOwogfQogCiAtIChXS0Zy
YW1lSW5mbyAqKW9yaWdpbmF0aW5nRnJhbWUKIHsKLSAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVy
KCZfZG93bmxvYWQtPmZyYW1lSW5mbygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp3cmFwcGVyKCZf
ZG93bmxvYWQtPl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwogfQogCiAtIChpZCljb3B5V2l0aFpv
bmU6KE5TWm9uZSAqKXpvbmUKQEAgLTk5LDcgKzEyMCw3IEBACiAKIC0gKEFQSTo6T2JqZWN0Jilf
YXBpT2JqZWN0CiB7Ci0gICAgcmV0dXJuICpfZG93bmxvYWQ7CisgICAgcmV0dXJuICpfZG93bmxv
YWQtPl9kb3dubG9hZDsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRlLmgKaW5kZXggYTgzZjkwMjliNWM3
M2VjNWY5ZGI3NGYxNDA3YzI4NjRlMjUxMTM1OC4uNjVlYWNjYWNiNWY3MGUxNGFlM2I5NzM4N2Y0
NjhhODNhN2JiN2M4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0Rvd25sb2FkRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0zMSw2ICszMSw4IEBACiAKIEBwcm90
b2NvbCBfV0tEb3dubG9hZERlbGVnYXRlIDxOU09iamVjdD4KIEBvcHRpb25hbAorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgogLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dL
RG93bmxvYWQgKilkb3dubG9hZDsKIC0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRv
d25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VSTCAqKXVybCBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVzcG9uc2U7CkBAIC00Niw0ICs0OCw1IEBACiAtIChCT09MKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZTooTlNTdHJp
bmcgKilNSU1FVHlwZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykp
OwogCiAtIChOU1N0cmluZyAqKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZSBh
bGxvd092ZXJ3cml0ZTooQk9PTCAqKWFsbG93T3ZlcndyaXRlIFdLX0FQSV9ERVBSRUNBVEVEX1dJ
VEhfUkVQTEFDRU1FTlQoIl9kb3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjoiLCBtYWNvcygxMC4xMCwgMTAuMTMuNCksIGlvcyg4
LjAsIDExLjMpKTsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFs
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5h
bC5oCmluZGV4IGUxMjkwYjNlNTUzYWVjZWQyMmQ0ZmM2ZDkwODYzNDM3MDkyZDQwMTIuLmNhOTRj
MjE3Mzc1N2E1NGEwYzc1NWNiZjMwZjhlMDVhMGI3NWM5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaApAQCAt
MjUsMTYgKzI1LDEyIEBACiAKICNpbXBvcnQgIl9XS0Rvd25sb2FkLmgiCiAKLSNpbXBvcnQgIkRv
d25sb2FkUHJveHkuaCIKLSNpbXBvcnQgIldLT2JqZWN0LmgiCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJLaXQgewotCi10ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVy
VHJhaXRzPERvd25sb2FkUHJveHk+IHsKLSAgICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tEb3du
bG9hZDsKLX07CitAY2xhc3MgV0tEb3dubG9hZDsKIAorQGludGVyZmFjZSBfV0tEb3dubG9hZCAo
KSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgUmV0YWluUHRyPFdLRG93bmxvYWQ+IF9kb3du
bG9hZDsKIH0KLQotQGludGVyZmFjZSBfV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9h
ZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3du
bG9hZENsaWVudC5jcHAKaW5kZXggZTJmYTVjNWM1ZDljOWU1ZDk2NTU2ZTRhMWZjOGNkYWZlOTIx
MTNmZS4uZWFkY2Q0M2RiM2Q5YmI1OTZlZGU5ODAzYTM4NmMyNzAxYjE0NjRhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2Fk
Q2xpZW50LmNwcApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgot
ICAgIHZvaWQgZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUK
KyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBHUmVmUHRyPFdlYktpdERvd25sb2FkPiBkb3dubG9hZCA9
IHdlYmtpdFdlYkNvbnRleHRHZXRPckNyZWF0ZURvd25sb2FkKCZkb3dubG9hZFByb3h5KTsKICAg
ICAgICAgd2Via2l0RG93bmxvYWRTdGFydGVkKGRvd25sb2FkLmdldCgpKTsKQEAgLTEwMSw3ICsx
MDEsNyBAQCBwcml2YXRlOgogICAgICAgICB3ZWJraXREb3dubG9hZERlc3RpbmF0aW9uQ3JlYXRl
ZChkb3dubG9hZC5nZXQoKSwgcGF0aCk7CiAgICAgfQogCi0gICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSBvdmVy
cmlkZQorICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKikgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIEdSZWZQdHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdl
dE9yQ3JlYXRlRG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICBpZiAod2Via2l0RG93
bmxvYWRJc0NhbmNlbGxlZChkb3dubG9hZC5nZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5oCmluZGV4IDc1ZDUxMjIx
ZDJjMzUxODJmODk0ZGE5ODYxM2QxY2M0MGQwZjAxNWUuLmI3ZjY0OTMxMGE0ODg0ZjkyZjUxNjVk
MGNiZjc1NjUzOGUxNDA2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL0xlZ2FjeURvd25sb2FkQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaApAQCAtNDYsMTIgKzQ2LDEyIEBAIHB1YmxpYzoK
ICAgICAKIHByaXZhdGU6CiAgICAgLy8gRnJvbSBBUEk6OkRvd25sb2FkQ2xpZW50Ci0gICAgdm9p
ZCBkaWRTdGFydChEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAgdm9pZCBsZWdhY3lEaWRTdGFy
dChEb3dubG9hZFByb3h5JikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkmLCB1aW50NjRfdCwgdWludDY0X3QsIHVpbnQ2
NF90KSBmaW5hbDsKICAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBbGxv
d092ZXJ3cml0ZSwgU3RyaW5nKT4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRGaW5pc2goRG93bmxv
YWRQcm94eSYpIGZpbmFsOwotICAgIHZvaWQgZGlkRmFpbChEb3dubG9hZFByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbChEb3dubG9h
ZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6RGF0YSopIGZpbmFs
OwogICAgIHZvaWQgbGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAgICB2
b2lkIHdpbGxTZW5kUmVxdWVzdChEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYsIEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KaW5kZXggM2QzMWJkYmY0M2Ez
NmVlYmNkMjM2OTg1ZmE2OGI0OWQxNjFlNGRiNC4uNjA3NTYyYWVlODhlNzY2OWY4ZDkxODZmZGQ4
MjRiNjM1OTU1YzZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TGVnYWN5RG93bmxvYWRDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTGVnYWN5RG93bmxvYWRDbGllbnQubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkRv
d25sb2FkUHJveHkuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIlN5c3RlbVByZXZp
ZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2ltcG9ydCAiV0tOU1VSTEV4dHJh
cy5oIgogI2ltcG9ydCAiV2ViQ3JlZGVudGlhbC5oIgpAQCAtNDcsNiArNDgsOCBAQAogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKwog
TGVnYWN5RG93bmxvYWRDbGllbnQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50KGlkIDxfV0tEb3dubG9h
ZERlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiB7CkBAIC03
Niw3ICs3OSw3IEBAIHN0YXRpYyBTeXN0ZW1QcmV2aWV3Q29udHJvbGxlciogc3lzdGVtUHJldmll
d0NvbnRyb2xsZXIoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQCiB9CiAjZW5kaWYKIAotdm9pZCBM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSkKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJv
eHkmIGRvd25sb2FkUHJveHkpCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChk
b3dubG9hZFByb3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTkwLDcgKzkzLDcg
QEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93
bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2Fk
RGlkU3RhcnQpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OndyYXBwZXIo
ZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpb
X1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV1d
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UpCkBAIC0xMDQsNyArMTA3LDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnMK
ICNlbmRpZgogCiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFBy
b3h5KSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNVUkxSZXNwb25zZSgpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9h
ZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UubnNV
UkxSZXNwb25zZSgpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2
ZURhdGEoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgdWludDY0X3QgYnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkKQEAgLTExOCw5ICsxMjEsOSBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50Ojpk
aWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCB1aW50NjRfdAogI2Vu
ZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRXcml0ZURhdGFUb3Rh
bEJ5dGVzV3JpdHRlblRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpCi0gICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFdyaXRlRGF0YTpieXRlc1dy
aXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKKyAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRv
d25sb2FkUHJveHkpXSBkaWRXcml0ZURhdGE6Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVu
OnRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6dG90YWxCeXRlc0V4
cGVjdGVkVG9Xcml0ZV07CiAgICAgZWxzZSBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWRE
aWRSZWNlaXZlRGF0YSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSkgZGlkUmVjZWl2ZURhdGE6Ynl0ZXNXcml0dGVuXTsKKyAgICAgICAgW21fZGVs
ZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVy
KGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlRGF0YTpieXRlc1dyaXR0ZW5dOwogfQogCiB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCkBAIC0xMzEsNyArMTM0LDcgQEAgdm9pZCBMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKERvd25s
b2FkUHJveHkmIGRvd24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTp3cmFwcGVyKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW2F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gbWFrZVJlZihhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSksIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9kb3dubG9hZDpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KSldIChO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqY3JlZGVudGlhbCkgeworICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93
bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tlciA9IENvbXBsZXRp
b25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2Vs
ZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0
aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChjaGVj
a2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CkBAIC0xNjcs
NyArMTcwLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkQ3JlYXRlRGVzdGluYXRp
b24oRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY28KICNlbmRpZgogCiAgICAgaWYgKG1f
ZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ3JlYXRlRGVzdGluYXRpb24pCi0gICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZENyZWF0ZURlc3Rp
bmF0aW9uOmRlc3RpbmF0aW9uXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRD
cmVhdGVEZXN0aW5hdGlvbjpkZXN0aW5hdGlvbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OnByb2Nlc3NEaWRDcmFzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQpAQCAt
MTgyLDcgKzE4NSw3IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnByb2Nlc3NEaWRDcmFz
aChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWRQcm9jZXNzRGlkQ3Jhc2gpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZFByb2Nlc3NEaWRDcmFzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsKKyAgICAg
ICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MjA0LDExICsyMDcsMTEgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYKICAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMuZG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFt
ZUFsbG93T3ZlcndyaXRlKSB7CiAgICAgICAgIEJPT0wgYWxsb3dPdmVyd3JpdGUgPSBOTzsKICAg
ICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgTlNTdHJp
bmcgKmRlc3RpbmF0aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgYWxs
b3dPdmVyd3JpdGU6JmFsbG93T3ZlcndyaXRlXTsKKyAgICAgICAgTlNTdHJpbmcgKmRlc3RpbmF0
aW9uID0gW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVdOwogICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoYWxsb3dPdmVyd3JpdGUgPyBBbGxvd092ZXJ3cml0ZTo6WWVzIDogQWxsb3dPdmVy
d3JpdGU6Ok5vLCBkZXN0aW5hdGlvbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRy
KFtjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRo
U3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0
cmluZyAqZGVzdGluYXRpb24pIG11dGFibGUgeworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2Fs
bENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgpLmdldCgpLCBAc2VsZWN0b3IoX2Rvd25s
b2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5k
bGVyOikpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
Qk9PTCBhbGxvd092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKQEAgLTIzMywxMCArMjM2LDEwIEBAIHZvaWQgTGVnYWN5RG93bmxv
YWRDbGllbnQ6OmRpZEZpbmlzaChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlm
CiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRGaW5pc2gpCi0gICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXTsK
KyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmluaXNoOltfV0tEb3dubG9hZCBkb3du
bG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKLXZvaWQgTGVn
YWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIExlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqKQogewogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKICAgICBpZiAoZG93bmxvYWRQcm94eS5pc1N5c3RlbVByZXZpZXdEb3dubG9hZCgp
KSB7CkBAIC0yNDgsNyArMjUxLDcgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFp
bChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjoKICNlbmRpZgog
CiAgICAgaWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkRmFpbCkKLSAgICAgICAgW21f
ZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSkgZGlkRmFpbFdpdGhFcnJv
cjplcnJvci5uc0Vycm9yKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rv
d25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZEZh
aWxXaXRoRXJyb3I6ZXJyb3IubnNFcnJvcigpXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENs
aWVudDo6bGVnYWN5RGlkQ2FuY2VsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0y
NjMsMTMgKzI2NiwxMyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5j
ZWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKICNlbmRpZgogCiAgICAgaWYgKG1fZGVs
ZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkQ2FuY2VsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWREaWRDYW5jZWw6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFttX2RlbGVn
YXRlIF9kb3dubG9hZERpZENhbmNlbDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV1dOwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
Ojp3aWxsU2VuZFJlcXVlc3QoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93
bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VS
TDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCldXTsK
KyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhE
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTDpbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOnJlcXVlc3QudXJsKCkuc3RyaW5nKCld
XTsKIAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogfQpAQCAtMzAx
LDQgKzMwNCw2IEBAIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OnJlbGVhc2VBY3Rpdml0eVRv
a2VuSWZOZWNlc3NhcnkoRG93bmxvYWRQcm94eSYgZG93bmxvCiB9CiAjZW5kaWYKIAorQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCAw
NDJlNzg4NTQxMWQ0MTc3ZmNlOWM2NzVlZDhkNDhmMTJiYjNkNGQ2Li45Njc4MzdhZmUxNGJkODM1
NGM1NmQ2YmVmZTVkMjkxMzc2YWI4N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaApAQCAtMTI2LDYgKzEyNiwxMCBAQCBwcml2YXRlOgog
CiAgICAgICAgIFJlZlB0cjxBUEk6OlN0cmluZz4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKFdlYlBhZ2VQcm94eSYsIHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29uc3QgUmVmUHRy
PEFQSTo6U3RyaW5nPiYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmKSBvdmVycmlkZTsKIAor
ICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb25BY3Rpb24mLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAg
ICAgIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViUGFnZVByb3h5
JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBEb3dubG9hZFByb3h5JikgZmluYWw7CisgICAg
ICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBEb3du
bG9hZFByb3h5JikgZmluYWw7CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAgICAgdm9pZCBk
aWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIHV0aSkgb3ZlcnJpZGU7CiAgICAgICAg
IHZvaWQgZGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3Qg
V2ViQ29yZTo6U2hhcmVkQnVmZmVyJikgb3ZlcnJpZGU7CkBAIC0yMzUsNiArMjM5LDkgQEAgcHJp
dmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdXZWJQcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZl
IDogMTsKICAgICAgICAgYm9vbCB3ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3IDogMTsKKyAg
ICAgICAgYm9vbCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgOiAxOworICAgICAg
ICBib29sIG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkIDogMTsKKyAgICAgICAg
Ym9vbCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAgICAgICBib29sIHdlYlZpZXdE
aWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0
aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQppbmRleCA3NzM5ZWQxNmIwMmFkOWNlNTE2N2Iz
NzRkMmVlNmExMjYzODIzODNlLi5jZmQyMjMwYTUyOGZiOGVlNzA3ZTliZGQyMWQwN2QxMTdjODQz
MTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCkBAIC00Myw2ICs0Myw3IEBACiAjaW1wb3J0ICJTT0F1dGhvcml6YXRpb25Db29yZGlu
YXRvci5oIgogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAi
V0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tIaXN0
b3J5RGVsZWdhdGVQcml2YXRlLmgiCiAjaW1wb3J0ICJXS05TRGljdGlvbmFyeS5oIgpAQCAtMTg3
LDYgKzE4OCw5IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUo
aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdXZWJQcm9jZXNzRGlkQmVj
b21lUmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6
KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYkNyeXB0b01hc3RlcktleUZv
cldlYlZpZXcgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViQ3J5
cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uQWN0aW9uOmRpZEJlY29tZURv
d25sb2FkOildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uUmVz
cG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25sb2FkOildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5jb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29u
dGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6
KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsRW5kTmF2aWdh
dGlvbkdlc3R1cmVXaXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25H
ZXN0dXJlOndpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOildOwogICAgIG1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRo
TmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmln
YXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KV07CkBAIC00NzIsNyArNDc2LDkgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oV2ViUGFnZVAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgTlNVUkxSZXF1
ZXN0ICpuc1VSTFJlcXVlc3QgPSB3cmFwcGVyKEFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKG5hdmln
YXRpb25BY3Rpb24tPnJlcXVlc3QoKSkpOwotICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rp
b24gY2FuSGFuZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhh
bmRsZXJGb3JTY2hlbWUoW25zVVJMUmVxdWVzdCBVUkxdLnNjaGVtZSkpIHsKKyAgICAgICAgICAg
IGlmIChbTlNVUkxDb25uZWN0aW9uIGNhbkhhbmRsZVJlcXVlc3Q6bnNVUkxSZXF1ZXN0XQorICAg
ICAgICAgICAgICAgIHx8IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoW25zVVJM
UmVxdWVzdCBVUkxdLnNjaGVtZSkKKyAgICAgICAgICAgICAgICB8fCBbbnNVUkxSZXF1ZXN0LlVS
TC5zY2hlbWUgaXNFcXVhbFRvU3RyaW5nOkAiYmxvYiJdKSB7CiAgICAgICAgICAgICAgICAgaWYg
KG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZFBlcmZvcm1Eb3dubG9hZCgpKQogICAgICAgICAgICAg
ICAgICAgICBsaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgICAgICBlbHNlCkBAIC01
NTUsOSArNTYxLDEyIEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAg
ICAgICAgbG9jYWxMaXN0ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICBicmVhazsKIAorICAg
ICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAgICAgY2Fz
ZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6CisgICAgICAgICAgICBBTExPV19E
RVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRv
d25sb2FkKCk7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIF9XS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgogICAgICAgICAgICAgdHJ5
U09BdXRob3JpemF0aW9uKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHdlYlBhZ2VQcm94eSwg
W2xvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxvY2FsTGlzdGVuZXIpLCB3ZWJzaXRlUG9saWNpZXMg
PSBXVEZNb3ZlKGFwaVdlYnNpdGVQb2xpY2llcyldIChib29sIG9wdGltaXplZExvYWQpIHsKICAg
ICAgICAgICAgICAgICBpZiAob3B0aW1pemVkTG9hZCkgewpAQCAtNjcxLDcgKzY4MCw3IEBAIHZv
aWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UoV2ViUGFnCiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUo
KTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QmVjb21lRG93bmxvYWQ6CisgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lEb3dubG9hZDoKICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTA4Niw2ICsxMDk1LDQyIEBAIFJl
ZlB0cjxBUEk6OlN0cmluZz4gTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuCiAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2Vi
Q29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hh
bGxlbmdlU3RyaW5nLT5zdHJpbmcoKSwgdXJsKSk7CiB9CiAKK3ZvaWQgTmF2aWdhdGlvblN0YXRl
OjpOYXZpZ2F0aW9uQ2xpZW50OjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBEb3du
bG9hZFByb3h5JiBkb3dubG9hZCkKK3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZp
Z2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0
aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbkFjdGlv
bjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIGRpZEJlY29tZURvd25sb2FkOndyYXBwZXIoZG93
bmxvYWQpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5h
dmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIERvd25sb2FkUHJveHkmIGRvd25s
b2FkKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpIHdlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTp3cmFwcGVyKG5h
dmlnYXRpb25SZXNwb25zZSkgZGlkQmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOwor
fQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1lbnVE
aWRDcmVhdGVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBEb3dubG9hZFByb3h5JiBkb3dubG9hZCkK
K3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRl
bGVnYXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1
cm47CisKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpXTsK
K30KKwogI2lmIFVTRShRVUlDS19MT09LKQogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4
IGQxMWQzYTAyYWFmNjNjZTMyOWFlODFjYjk1YTJmMGMwMTcyYTBhZTcuLmE0YjM5N2M2ZWRlYWQ1
NDc2OTIwOWYyYWRiMDBkY2ZlYjQyYWY1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCisjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgogI2ltcG9ydCAiSGlnaFBlcmZvcm1hbmNl
R1BVTWFuYWdlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiT2JqQ09iamVjdEdy
YXBoLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxv
YWRQcm94eS5jcHAKaW5kZXggMjljMTdiZWIzM2VkNjc2YzljNDQ0YTRkNzJhNjAxZjRjZDA3N2Yz
Ni4uYzYxYmIzZmQyZWUwNDZmMzgyNGM0MGFiOTkxODFjMGZjZWUyYTE5NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcApAQCAt
NTksNyArNTksMTEgQEAgRG93bmxvYWRQcm94eTo6RG93bmxvYWRQcm94eShEb3dubG9hZFByb3h5
TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJzaXRlRGF0YVN0b3IKIHsKIH0KIAotRG93bmxvYWRQ
cm94eTo6fkRvd25sb2FkUHJveHkoKSA9IGRlZmF1bHQ7CitEb3dubG9hZFByb3h5Ojp+RG93bmxv
YWRQcm94eSgpCit7CisgICAgaWYgKG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRT
dGFydENhbGxiYWNrKG51bGxwdHIpOworfQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3Jl
YXRlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CkBAIC0xMTcsNyArMTIx
LDkgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRTdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2UKICAgICBpZiAobV9yZWRpcmVjdENoYWluLmlz
RW1wdHkoKSB8fCBtX3JlZGlyZWN0Q2hhaW4ubGFzdCgpICE9IHJlcXVlc3QudXJsKCkpCiAgICAg
ICAgIG1fcmVkaXJlY3RDaGFpbi5hcHBlbmQocmVxdWVzdC51cmwoKSk7CiAKLSAgICBtX2NsaWVu
dC0+ZGlkU3RhcnQoKnRoaXMpOworICAgIGlmIChtX2RpZFN0YXJ0Q2FsbGJhY2spCisgICAgICAg
IG1fZGlkU3RhcnRDYWxsYmFjayh0aGlzKTsKKyAgICBtX2NsaWVudC0+bGVnYWN5RGlkU3RhcnQo
KnRoaXMpOwogfQogCiB2b2lkIERvd25sb2FkUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKQEAgLTE0NSwxMyArMTUxLDIyIEBAIHZvaWQgRG93
bmxvYWRQcm94eTo6ZGlkUmVjZWl2ZURhdGEodWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRf
dCB0b3RhbEJ5dGVzV3JpCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKCp0aGlzLCBieXRl
c1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKTsK
IH0KIAotdm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcs
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBEb3dubG9hZFByb3h5OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgU3Ry
aW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBtX2NsaWVudC0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmls
ZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdn
ZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxlbmFtZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoQWxsb3dPdmVyd3JpdGUgYWxsb3dPdmVyd3JpdGUs
IFN0cmluZyBkZXN0aW5hdGlvbikgbXV0YWJsZSB7CisgICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvI2FzLWEtZG93bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBm
cm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcgorICAgIC8vIHNob3VsZCBvdmVycmlk
ZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGZyb20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KKyAg
ICBpZiAocmVzcG9uc2UuaXNBdHRhY2htZW50V2l0aEZpbGVuYW1lKCkgfHwgKHN1Z2dlc3RlZEZp
bGVuYW1lLmlzRW1wdHkoKSAmJiBtX3N1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkpCisgICAg
ICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gcmVzcG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUoKTsKKyAg
ICBlbHNlIGlmICghbV9zdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHN1Z2dl
c3RlZEZpbGVuYW1lID0gbV9zdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IE1JTUVUeXBlUmVnaXN0cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdn
ZXN0ZWRGaWxlbmFtZSwgcmVzcG9uc2UubWltZVR5cGUoKSk7CisKKyAgICBtX2NsaWVudC0+ZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoKnRoaXMsIHJlc3BvbnNlLCBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6c2FuaXRpemVTdWdnZXN0ZWRGaWxlbmFtZShzdWdnZXN0ZWRGaWxl
bmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChBbGxvd092ZXJ3cml0ZSBhbGxv
d092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAgICAgICAgIGlmICgh
ZGVzdGluYXRpb24uaXNOdWxsKCkpCiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGUoZGVzdGluYXRpb24sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKKyAgICAgICAgc2V0RGVzdGluYXRpb25GaWxlbmFt
ZShkZXN0aW5hdGlvbik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRlc3RpbmF0aW9uLCBX
VEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBhbGxvd092ZXJ3cml0ZSk7CiAgICAgfSk7
CiB9CkBAIC0xNzMsMTEgKzE4OCwxNiBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogewogICAg
IG1fbGVnYWN5UmVzdW1lRGF0YSA9IGNyZWF0ZURhdGEocmVzdW1lRGF0YSk7CiAKLSAgICBtX2Ns
aWVudC0+ZGlkRmFpbCgqdGhpcywgZXJyb3IpOworICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlz
LCBlcnJvciwgbV9sZWdhY3lSZXN1bWVEYXRhLmdldCgpKTsKIAogICAgIC8vIFRoaXMgY2FuIGNh
dXNlIHRoZSBEb3dubG9hZFByb3h5IG9iamVjdCB0byBiZSBkZWxldGVkLgogICAgIG1fZG93bmxv
YWRQcm94eU1hcC5kb3dubG9hZEZpbmlzaGVkKCp0aGlzKTsKIH0KIAordm9pZCBEb3dubG9hZFBy
b3h5OjpzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYgY2xpZW50KQoreworICAg
IG1fY2xpZW50ID0gV1RGTW92ZShjbGllbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2Fk
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmgKaW5kZXggMDcxOGU4OTNhYjI1NWJiM2EzNWRmN2VkYTljMzI5MmMxZjcxOGE0Yy4uYzMzMDc4
MjViMjAwODZkZWQ0Yzg2YzY0ODhjZTVkZDU3ZWMwYzM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0zNCw2ICszNCw4IEBA
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKK09CSkNf
Q0xBU1MgTlNQcm9ncmVzczsKKwogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwogY2xhc3Mg
RG93bmxvYWRDbGllbnQ7CkBAIC04Nyw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdh
c1VzZXJJbml0aWF0ZWQoYm9vbCB2YWx1ZSkgeyBtX3dhc1VzZXJJbml0aWF0ZWQgPSB2YWx1ZTsg
fQogICAgIGJvb2wgd2FzVXNlckluaXRpYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzVXNlcklu
aXRpYXRlZDsgfQogCi0gICAgU3RyaW5nIGRlc3RpbmF0aW9uRmlsZW5hbWUoKSBjb25zdCB7IHJl
dHVybiBtX2Rlc3RpbmF0aW9uRmlsZW5hbWU7IH0KKyAgICBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uRmlsZW5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rlc3RpbmF0aW9uRmlsZW5hbWU7IH0KICAg
ICB2b2lkIHNldERlc3RpbmF0aW9uRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBkKSB7IG1fZGVzdGlu
YXRpb25GaWxlbmFtZSA9IGQ7IH0KIAogI2lmIFVTRShTWVNURU1fUFJFVklFVykKQEAgLTk3LDE3
ICs5OSwxNiBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIHB1Ymxp
c2hQcm9ncmVzcyhjb25zdCBVUkwmKTsKKyAgICB2b2lkIHNldFByb2dyZXNzKE5TUHJvZ3Jlc3Mg
KnByb2dyZXNzKSB7IG1fcHJvZ3Jlc3MgPSBwcm9ncmVzczsgfQorICAgIE5TUHJvZ3Jlc3MgKnBy
b2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmVzcy5nZXQoKTsgfQogI2VuZGlmCiAKICAg
ICBBUEk6OkZyYW1lSW5mbyYgZnJhbWVJbmZvKCkgeyByZXR1cm4gbV9mcmFtZUluZm8uZ2V0KCk7
IH0KIAogICAgIEFQSTo6RG93bmxvYWRDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50
LmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShEb3dubG9h
ZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgV2ViUGFn
ZVByb3h5Kik7Ci0KLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRDbGllbnQoUmVmPEFQSTo6RG93bmxvYWRDbGllbnQ+JiYpOworICAgIHZvaWQg
c2V0RGlkU3RhcnRDYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25sb2FkUHJveHkq
KT4mJiBjYWxsYmFjaykgeyBtX2RpZFN0YXJ0Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQorICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRG
aWxlbmFtZSkgeyBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5hbWU7IH0KIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAgICAgdm9pZCBkaWRTdGFydChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKTsKQEAg
LTExOCw3ICsxMTksMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEZpbmlzaCgpOwogICAgIHZv
aWQgZGlkRmFpbChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiByZXN1bWVEYXRhKTsKICAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZWRpcmVjdFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwotICAgIHZvaWQgZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93T3ZlcndyaXRlKT4mJik7Cisg
ICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgU3RyaW5nJiYgc3VnZ2VzdGVkRmlsZW5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUsIEFsbG93
T3ZlcndyaXRlKT4mJik7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgRG93bmxvYWRQcm94eShE
b3dubG9hZFByb3h5TWFwJiwgV2Vic2l0ZURhdGFTdG9yZSYsIEFQSTo6RG93bmxvYWRDbGllbnQm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwg
V2ViUGFnZVByb3h5Kik7CisKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAKICAgICBEb3dubG9hZFByb3h5TWFwJiBtX2Rvd25sb2FkUHJveHlNYXA7CiAgICAgUmVm
UHRyPFdlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0b3JlOwpAQCAtMTM0LDYgKzE0MSwxMCBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxVUkw+IG1fcmVkaXJlY3RDaGFpbjsKICAgICBib29sIG1fd2Fz
VXNlckluaXRpYXRlZCB7IHRydWUgfTsKICAgICBSZWY8QVBJOjpGcmFtZUluZm8+IG1fZnJhbWVJ
bmZvOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiBtX2RpZFN0
YXJ0Q2FsbGJhY2s7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPE5TUHJvZ3Jl
c3M+IG1fcHJvZ3Jlc3M7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKaW5kZXggMzQ4N2Q0ZTM0NGUxOGEyMDIzZDI5YmVjNDYwY2FjYWUwNTUyNTdlZC4u
MDQ2YTZiNTAyZjBmNmE0Nzc4OWRkOTE0YWYxNGZmNjFlZTE2YzFiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIkZyYW1lSW5mb0RhdGEuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NV
U1RPTV9QUk9UT0NPTF9NQU5BR0VSKQogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFu
YWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJv
eHlNZXNzYWdlcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggOTc3ZTRlYWY2OGQ3M2UwNGQzZmRhMDU4YjU0MzE0Mzk4ZTJhZTQzMy4uOTA3NzQ4ZmYyYjRh
OGMwNTAyZjU5NWUyMTZhZWIwYWE5MGIwMGZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRp
b25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRvck1hbmFnZXIuaCIKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCkBAIC0zMTM5LDcgKzMxNDAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKAogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZl
ZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFJlZlB0cjxB
UEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlcikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmln
YXRpb24sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFjdGlvbiwgUHJv
Y2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHBvbGlj
aWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
OiBmcmFtZUlEOiAlbGx1LCBuYXZpZ2F0aW9uSUQ6ICVsbHUsIHBvbGljeUFjdGlvbjogJXUiLCBm
cmFtZS5mcmFtZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgKHVuc2lnbmVkKXBvbGljeUFjdGlvbik7CiAKQEAgLTMxNzksNyArMzE4
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiAgICAgICAgIHBvbGljeUFjdGlvbiA9IFBv
bGljeUFjdGlvbjo6RG93bmxvYWQ7CiAKICAgICBpZiAocG9saWN5QWN0aW9uICE9IFBvbGljeUFj
dGlvbjo6VXNlIHx8ICFmcmFtZS5pc01haW5GcmFtZSgpIHx8ICFuYXZpZ2F0aW9uKSB7Ci0gICAg
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24sIFdURk1vdmUocG9saWNpZXMpLCBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0zMTkyLDExICszMTkzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5wcm9jZXNz
Rm9yTmF2aWdhdGlvbigqdGhpcywgKm5hdmlnYXRpb24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigp
LCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdURk1vdmUod2Vic2l0
ZURhdGFTdG9yZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBvbGlj
eUFjdGlvbiwgbmF2aWdhdGlvbiA9IG1ha2VSZWYoKm5hdmlnYXRpb24pLCBzb3VyY2VQcm9jZXNz
ID0gc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksCisgICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCku
cHJvY2Vzc0Zvck5hdmlnYXRpb24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNv
cHlSZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3Zl
KHdlYnNpdGVEYXRhU3RvcmUpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgbmF2aWdh
dGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHNvdXJjZVByb2Nlc3MgPSBz
b3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwKICAgICAgICAgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGlj
aWVzKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50XSAoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzRm9yTmF2aWdhdGlvbiwgU3VzcGVu
ZGVkUGFnZVByb3h5KiBkZXN0aW5hdGlvblN1c3BlbmRlZFBhZ2UsIGNvbnN0IFN0cmluZyYgcmVh
c29uKSBtdXRhYmxlIHsKICAgICAgICAgLy8gSWYgdGhlIG5hdmlnYXRpb24gaGFzIGJlZW4gZGVz
dHJveWVkLCB0aGVuIG5vIG5lZWQgdG8gcHJvY2VlZC4KICAgICAgICAgaWYgKGlzQ2xvc2VkKCkg
fHwgIW5hdmlnYXRpb25TdGF0ZSgpLmhhc05hdmlnYXRpb24obmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkpKSB7Ci0gICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlv
biwgbmF2aWdhdGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7
CisgICAgICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5wdHIoKSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MzIzMiwxMSArMzIzMywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2FwID8gbnVsbHB0ciA6IFdURk1v
dmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBz
aG91bGRQcm9jZXNzU3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdp
bGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCksIHNob3VsZFByb2Nlc3NTd2Fw
ID8gbnVsbHB0ciA6IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24p
LCBXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUob3B0aW9uYWxIYW5kbGUpLCBzaG91bGRQcm9jZXNz
U3dhcCA/IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6OlllcyA6IFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3M6Ok5vKTsKICAgICB9KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYgd2Vic2l0ZVBvbGlj
aWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdpbGxDb250aW51ZUxv
YWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdl
YnNpdGVQb2xpY2llcywgVmFyaWFudDxSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+LCBSZWY8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPj4mJiBuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwgUmVm
PFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQ
cm9jZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKSB7CiAgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNl
bmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9KTsKQEAgLTMy
NTIsNiArMzI1MywxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgaWYgKGFjdGlvbiA9
PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBhIGRvd25sb2Fk
IHByb3h5LgogICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KS5jcmVhdGVEb3dubG9hZFByb3h5KG1fd2Vic2l0ZURhdGFTdG9yZSwgbV9kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVJlcXVlc3QsIHRoaXMsIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5vcmlnaW5h
dGluZ0ZyYW1lSW5mbygpIDogRnJhbWVJbmZvRGF0YSB7IH0pOworICAgICAgICBkb3dubG9hZC5z
ZXREaWRTdGFydENhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
bmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UgPSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25PclJl
c3BvbnNlKV0gKGF1dG8qIGRvd25sb2FkUHJveHkpIHsKKyAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMgfHwgIWRvd25sb2FkUHJveHkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgV1RGOjpzd2l0Y2hPbihuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSwKKyAgICAgICAgICAg
ICAgICBbJl0gKGNvbnN0IFJlZjxBUEk6Ok5hdmlnYXRpb25SZXNwb25zZT4mIHJlc3BvbnNlKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICghcmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRlKCku
aXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZFByb3h5LT5zZXRTdWdn
ZXN0ZWRGaWxlbmFtZShyZXNwb25zZS0+ZG93bmxvYWRBdHRyaWJ1dGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQoKnRoaXMsIHJlc3BvbnNlLmdldCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgICAg
ICAgICAgICAgfSwgWyZdIChjb25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYgYWN0aW9u
KSB7CisgICAgICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+bmF2aWdhdGlvbkFj
dGlvbkRpZEJlY29tZURvd25sb2FkKCp0aGlzLCBhY3Rpb24uZ2V0KCksICpkb3dubG9hZFByb3h5
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOworICAgICAgICB9KTsKICAgICAg
ICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAgICAgICAgIGRvd25sb2FkLnNldFdhc1VzZXJJbml0
aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRlZCgpKTsKICAgICAgICAgICAgIGRvd25s
b2FkLnNldFJlZGlyZWN0Q2hhaW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBA
IC01MTA0LDEwICs1MTE4LDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgbmF2aWdh
dGlvbi0+c2V0T3JpZ2luYXRpbmdGcmFtZUluZm8ob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhKTsK
ICAgICBuYXZpZ2F0aW9uLT5zZXREZXN0aW5hdGlvbkZyYW1lU2VjdXJpdHlPcmlnaW4oZnJhbWVJ
bmZvLnNlY3VyaXR5T3JpZ2luKTsKIAorICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2
aWdhdGlvbiA9IGZyYW1lLmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0
cjsKKyAgICBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmZyYW1lSUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLmZyYW1lSUQpIDogbnVsbHB0cjsKKyAgICBhdXRvIGRlc3RpbmF0aW9uRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShGcmFtZUluZm9EYXRhIHsgZnJhbWVJbmZvIH0sIHRo
aXMpOworICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgIGlm
ICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKKyAgICAgICAgc291cmNl
RnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOworICAgIGVsc2UgaWYg
KCFmcm9tQVBJKSB7CisgICAgICAgIGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9IG9yaWdpbmF0aW5n
UGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cjsK
KyAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3Zl
KG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZSk7CisgICAgfQorCisg
ICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5O
ZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCisgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJ
bmZvLT5pc01haW5GcmFtZSgpCisgICAgICAgICYmIChtX21haW5GcmFtZSAmJiBtX21haW5GcmFt
ZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9zdCgpKQorICAgICAgICAmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlw
ZTo6QmFja0ZvcndhcmQ7CisKKyAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nl
c3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVy
ZVRva2VuSWRlbnRpZmllcik7CisgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZp
Z2F0aW9uQWN0aW9uOjpjcmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJj
ZUZyYW1lSW5mby5nZXQoKSwgZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9w
dCwgUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3Vs
ZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVO
YXZpZ2F0aW9uKTsKKwogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJh
bWUuZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7CiAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJl
cXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVjYXVzZSBpdCB3YXMgaGFuZGxlZCBi
eSBjb250ZW50IGZpbHRlciIpOwotICAgICAgICByZXR1cm4gcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb246Oklnbm9yZSwgbV9uYXZpZ2F0aW9uU3RhdGUtPm5hdmlnYXRpb24obmF2
aWdhdGlvbklEKSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmV0dXJuIHJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0
YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCksIG51bGxwdHIsIFdURk1vdmUobmF2aWdhdGlv
bkFjdGlvbiksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTUxMTksMTEg
KzUxNTIsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICNpZiBFTkFCTEUoQVBQX0JPVU5E
X0RPTUFJTlMpCiAgICAgc2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQgPSBTaG91bGRF
eHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6WWVzOwogI2VuZGlmCi0gICAgCi0gICAgYXV0byBs
aXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUuc2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lID0gbWFrZVJlZihmcmFtZSksIHNl
bmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwgZnJhbWVJbmZvLCB1c2VyRGF0YU9i
amVjdCA9IHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNp
ZXMqIHBvbGljaWVzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2lu
Z1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKKworICAgIGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5h
dmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBw
cm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQo
KV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xp
Y2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5n
LCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikg
bXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246IGxpc3RlbmVyIGNhbGxlZDogZnJhbWVJRDogJWxs
dSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lBY3Rpb246ICV1LCBzYWZlQnJvd3NpbmdXYXJu
aW5nOiAlZCwgaXNBcHBCb3VuZERvbWFpbjogJWQiLCBmcmFtZS0+ZnJhbWVJRCgpLnRvVUludDY0
KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsICh1bnNpZ25l
ZClwb2xpY3lBY3Rpb24sICEhc2FmZUJyb3dzaW5nV2FybmluZywgISFpc0FwcEJvdW5kRG9tYWlu
KTsKIAotICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMsIGZyYW1lLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQ
b2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0
aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92
ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBtYWtl
UmVmUHRyKHBvbGljaWVzKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewog
ICAgICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFwb2xpY2llcykgewogICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byogZGVmYXVsdFBv
bGljaWVzID0gbV9jb25maWd1cmF0aW9uLT5kZWZhdWx0V2Vic2l0ZVBvbGljaWVzKCkpCkBAIC01
MTMyLDcgKzUxNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICAgICAgICAg
IGlmIChwb2xpY2llcykKICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbi0+c2V0RWZmZWN0
aXZlQ29udGVudE1vZGUoZWZmZWN0aXZlQ29udGVudE1vZGVBZnRlckFkanVzdGluZ1BvbGljaWVz
KCpwb2xpY2llcywgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSkpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0
aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFt
ZSwgV1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgICAgICByZWNl
aXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0
KCksIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIGZyYW1lLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAg
fTsKIAogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKQEAgLTUxOTksMTAgKzUyMzIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGF1dG8gcHJvdG9jb2wgPSBzaG91bGRTZW5k
U2VjdXJpdHlPcmlnaW5EYXRhID8gZnJhbWVJbmZvLnNlY3VyaXR5T3JpZ2luLnByb3RvY29sIDog
cmVxdWVzdC51cmwoKS5wcm90b2NvbCgpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+YmVnaW5B
cHBCb3VuZERvbWFpbkNoZWNrKGhvc3QudG9TdHJpbmcoKSwgcHJvdG9jb2wudG9TdHJpbmcoKSwg
bGlzdGVuZXIpOwogI2VuZGlmCi0gICAgQVBJOjpOYXZpZ2F0aW9uKiBtYWluRnJhbWVOYXZpZ2F0
aW9uID0gZnJhbWUuaXNNYWluRnJhbWUoKSA/IG5hdmlnYXRpb24uZ2V0KCkgOiBudWxscHRyOwot
ICAgIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEuZnJhbWVJRCA/IHByb2Nlc3MtPndlYkZyYW1lKCpvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEuZnJhbWVJRCkgOiBudWxscHRyOwogCi0gICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkg
PSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNl
ckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgYXV0byB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlciA9IG5hdmlnYXRp
b24tPmlzTG9hZGVkV2l0aE5hdmlnYXRpb25TaGFyZWQoKSB8fCB1c2VySW5pdGlhdGVkQWN0aXZp
dHk7CiAgICAgaWYgKCFzZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQpAQCAtNTIxMCwyNCArNTI0
MCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjZW5kaWYKIAogICAgIGlmIChtX3BvbGlj
eUNsaWVudCkKLSAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9y
aWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKKyAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsICZmcmFtZSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
KSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogICAgIGVsc2UgewotICAgICAgICBhdXRvIGRlc3RpbmF0
aW9uRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyks
IHRoaXMpOwotICAgICAgICBSZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsK
LSAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQotICAg
ICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigp
OwotICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkgewotICAgICAgICAgICAgYXV0byogb3JpZ2lu
YXRpbmdQYWdlID0gb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5h
dGluZ1BhZ2VJRCkgOiBudWxscHRyOwotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSksIG9y
aWdpbmF0aW5nUGFnZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24KLSAgICAgICAgICAgICYmIGRlc3RpbmF0aW9uRnJhbWVJbmZvLT5pc01haW5GcmFtZSgp
Ci0gICAgICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3Qo
KSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKLSAgICAgICAgICAgICYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLm5hdmlnYXRpb25UeXBlICE9IFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlOjpCYWNrRm9y
d2FyZDsKLQotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJ
bmZvLmdldCgpLCBkZXN0aW5hdGlvbkZyYW1lSW5mby5wdHIoKSwgV1RGOjpudWxsb3B0LCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcmlnaW5hbFJlcXVlc3QudXJsKCksIHNob3VsZE9wZW5BcHBMaW5rcywg
V1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpLCBtYWluRnJhbWVOYXZpZ2F0aW9uKTsKLQog
I2lmIEhBVkUoQVBQX1NTTykKICAgICAgICAgaWYgKG1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6
YXRpb25Jbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gfHwgbV9zaG91bGRTdXBwcmVzc1NP
QXV0aG9yaXphdGlvbkluQWxsTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKQogICAgICAgICAgICAg
bmF2aWdhdGlvbkFjdGlvbi0+dW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0aW9uKCk7CkBA
IC01MzI5LDcgKzUzNDMsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWUKICAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2VzcywgZnJhbWUpOwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKG1fcHJvY2Vz
cywgcmVxdWVzdC51cmwoKSk7CiAKLSAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+
c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1lSURdIChQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dh
cm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgIFJl
ZlB0cjxBUEk6OkZyYW1lSW5mbz4gc291cmNlRnJhbWVJbmZvOworICAgIGlmIChmcmFtZSkKKyAg
ICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZy
YW1lSW5mbyksIHRoaXMpOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3By
b2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2Vz
dHVyZVRva2VuSWRlbnRpZmllcik7CisgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSBtX21h
aW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJsKCkuaG9z
dCgpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlvbjo6
Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8uZ2V0
KCksIG51bGxwdHIsIGZyYW1lTmFtZSwgV1RGTW92ZShyZXF1ZXN0KSwgVVJMIHsgfSwgc2hvdWxk
T3BlbkFwcExpbmtzLCBXVEZNb3ZlKHVzZXJJbml0aWF0ZWRBY3Rpdml0eSkpOworICAgIAorICAg
IGF1dG8gbGlzdGVuZXIgPSBtYWtlUmVmKGZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHko
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaWRlbnRpZmllciwgbGlzdGVu
ZXJJRCwgZnJhbWVJRCwgbmF2aWdhdGlvbkFjdGlvbl0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4m
JiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBPcHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bj4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZJ
WE1FOiBBc3NlcnQgdGhlIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBpcyBudWxscHRyIGhlcmUgb25j
ZSBjbGllbnRzIG9mIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZVdpdGhQb2xpY2llcyBnbyBhd2F5
LgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CkBAIC01MzM4LDI0
ICs1MzYwLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVu
ZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIG51bGxwdHIsIFdURk1vdmUoc2Vu
ZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxs
cHRyLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNlbmRlcikp
OwogICAgIH0sIFNob3VsZEV4cGVjdFNhZmVCcm93c2luZ1Jlc3VsdDo6Tm8sIFNob3VsZEV4cGVj
dEFwcEJvdW5kRG9tYWluUmVzdWx0OjpObykpOwogCiAgICAgaWYgKG1fcG9saWN5Q2xpZW50KQot
ICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKCp0
aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb25EYXRhLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdU
Rk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUmVmUHRyPEFQSTo6
RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Ci0gICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAg
ICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFt
ZUluZm8pLCB0aGlzKTsKLQotICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IG1f
cHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJH
ZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3Mg
PSBtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+dXJsKCkuaG9zdCgpICE9IHJlcXVlc3QudXJs
KCkuaG9zdCgpOwotICAgICAgICBhdXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRp
b25BY3Rpb246OmNyZWF0ZShXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJh
bWVJbmZvLmdldCgpLCBudWxscHRyLCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7
IH0sIHNob3VsZE9wZW5BcHBMaW5rcywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsK
LQorICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KCp0aGlzLCAqZnJhbWUsIG5hdmlnYXRpb25BY3Rpb24uZ2V0KCksIHJlcXVlc3QsIGZyYW1lTmFt
ZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIGVsc2UKICAgICAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBuYXZpZ2F0
aW9uQWN0aW9uLmdldCgpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7Ci0KLSAgICB9Ci0gICAg
ICAgIAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIFBvbGljeUNo
ZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLApAQCAtNTM3Niw4ICs1Mzg3LDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsCiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVxdWVzdC51
cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgcmVzcG9uc2UudXJsKCkpOwog
ICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uSUQgPyBt
X25hdmlnYXRpb25TdGF0ZS0+bmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpIDogbnVsbHB0cjsKKyAg
ICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpjcmVh
dGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdldCgp
LCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0ZSk7
CisKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
clByb3h5KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHdlYlBhZ2VJRCwg
ZnJhbWVJRCwgaWRlbnRpZmllciwgbGlzdGVuZXJJRCwgbmF2aWdhdGlvbiA9IFdURk1vdmUobmF2
aWdhdGlvbiksCi0gICAgICAgIHByb2Nlc3NdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBB
UEk6OldlYnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vz
c1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2Fm
ZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgeworICAgICAgICBwcm9jZXNzLCBu
YXZpZ2F0aW9uUmVzcG9uc2VdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNp
dGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1
ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5n
V2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRo
ZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBvZiBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAgUkVM
RUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5n
V2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTM4NiwxNCArNTM5OSwxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAgIAotICAg
ICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQo
KSwgbnVsbHB0ciwgV1RGTW92ZShzZW5kZXIpKTsKKyAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNp
c2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIsIFdURk1vdmUobmF2
aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBTaG91bGRFeHBlY3RT
YWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERvbWFpblJlc3VsdDo6
Tm8pKTsKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5k
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwg
Y2FuU2hvd01JTUVUeXBlLCBXVEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFu
ZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIGVsc2UgewotICAg
ICAgICBhdXRvIG5hdmlnYXRpb25SZXNwb25zZSA9IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlOjpj
cmVhdGUoQVBJOjpGcmFtZUluZm86OmNyZWF0ZShXVEZNb3ZlKGZyYW1lSW5mbyksIHRoaXMpLmdl
dCgpLCByZXF1ZXN0LCByZXNwb25zZSwgY2FuU2hvd01JTUVUeXBlLCBkb3dubG9hZEF0dHJpYnV0
ZSk7CisgICAgZWxzZQogICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25SZXNwb25zZSgqdGhpcywgV1RGTW92ZShuYXZpZ2F0aW9uUmVzcG9uc2UpLCBX
VEZNb3ZlKGxpc3RlbmVyKSwgcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVu
YWJsZVRvSW1wbGVtZW50UG9saWN5KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtNjAzMiw2ICs2
MDQzLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxv
YWRQcm94eSYgZG93bmxvYWQpCiAgICAgcGFnZUNsaWVudCgpLmhhbmRsZURvd25sb2FkUmVxdWVz
dChkb3dubG9hZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVEb3dubG9hZChjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAg
YXV0byYgZG93bmxvYWQgPSBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZXN1bWVEb3dubG9hZCh3
ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMsIHJlc3VtZURhdGEsIHBhdGgsIENhbGxEb3dubG9hZERp
ZFN0YXJ0OjpZZXMpOworICAgIGRvd25sb2FkLnNldERlc3RpbmF0aW9uRmlsZW5hbWUocGF0aCk7
CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpkb3dubG9hZFJlcXVlc3QoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9h
ZFByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byYgZG93bmxvYWQgPSBw
cm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5kb3dubG9hZCh3ZWJzaXRlRGF0YVN0b3JlKCksIHRoaXMs
IHJlcXVlc3QsIHsgfSk7CisgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VD
b250ZW50U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIHBhZ2VDbGllbnQoKS5kaWRD
aGFuZ2VDb250ZW50U2l6ZShzaXplKTsKQEAgLTY2MDEsMTggKzY2MjUsMjYgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRl
bURhdGEmIGl0ZW0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKLSAgICBpZiAoaXRl
bS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZEltYWdlVG9EaXNrKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3Rv
cmUsIHRoaXMsIFVSTChVUkwoKSwgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhp
dFRlc3RSZXN1bHREYXRhKCkuYWJzb2x1dGVJbWFnZVVSTCkpOwotICAgICAgICByZXR1cm47ICAg
IAotICAgIH0KKyAgICBzdHJ1Y3QgRG93bmxvYWRJbmZvIHsKKyAgICAgICAgU3RyaW5nIHVybDsK
KyAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lOworICAgIH07CisgICAgT3B0aW9uYWw8
RG93bmxvYWRJbmZvPiBkb3dubG9hZEluZm87CisgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykKKyAgICAgICAgZG93bmxvYWRJbmZv
ID0ge3sgbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1bHREYXRh
KCkuYWJzb2x1dGVJbWFnZVVSTCwgeyB9IH19OwogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENv
bnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTGlua1RvRGlzaykgewogICAgICAgICBhdXRvJiBoaXRU
ZXN0UmVzdWx0ID0gbV9hY3RpdmVDb250ZXh0TWVudUNvbnRleHREYXRhLndlYkhpdFRlc3RSZXN1
bHREYXRhKCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dl
YnNpdGVEYXRhU3RvcmUsIHRoaXMsIFVSTChVUkwoKSwgaGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxp
bmtVUkwpLCBoaXRUZXN0UmVzdWx0LmxpbmtTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFn
RG93bmxvYWRNZWRpYVRvRGlzaykgewotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
ZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBVUkwoVVJMKCksIG1fYWN0aXZlQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVkaWFV
UkwpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBoaXRUZXN0
UmVzdWx0LmFic29sdXRlTGlua1VSTCwgaGl0VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5h
bWUgfX07CisgICAgfQorICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0Rvd25sb2FkTWVkaWFUb0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7IG1fYWN0aXZl
Q29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRlTWVk
aWFVUkwsIHsgfSB9fTsKKyAgICBpZiAoZG93bmxvYWRJbmZvKSB7CisgICAgICAgIGF1dG8mIGRv
d25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKG1fd2Vic2l0ZURhdGFT
dG9yZSwgdGhpcywgVVJMKFVSTCgpLCBkb3dubG9hZEluZm8tPnVybCksIGRvd25sb2FkSW5mby0+
c3VnZ2VzdGVkRmlsZW5hbWUpOworICAgICAgICBkb3dubG9hZC5zZXREaWRTdGFydENhbGxiYWNr
KFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8qIGRvd25sb2FkKSB7
CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3dubG9hZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPmNvbnRleHRNZW51RGlk
Q3JlYXRlRG93bmxvYWQoKnRoaXMsICpkb3dubG9hZCk7CisgICAgICAgIH0pOwogICAgIH0KICAg
ICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdDaGVja1NwZWxsaW5nV2hp
bGVUeXBpbmcpIHsKICAgICAgICAgVGV4dENoZWNrZXI6OnNldENvbnRpbnVvdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCghVGV4dENoZWNrZXI6OnN0YXRlKCkuaXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyMzJl
ZDM3YmQxYmY5MzBhYWY4Zjk5ODQzNmQ2MzA1NDJlYTkzMDg1Li45OGU4NjM2ZThlYjYwY2Q0YTA0
YmIwOGE4ZjlmMTBiZjc5OWIyYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMTE2Niw4ICsxMTY2LDggQEAgcHVibGljOgogCiAgICAgY2xhc3MgUG9saWN5RGVj
aXNpb25TZW5kZXI7CiAgICAgZW51bSBjbGFzcyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
IDogYm9vbCB7IE5vLCBZZXMgfTsKLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKLSAgICB2b2lkIHJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYsIFJlZlB0
cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsK
KyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBB
UEk6Ok5hdmlnYXRpb24qLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFZhcmlhbnQ8
UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4+
JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlPiA9IHsgfSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA9IFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3M6Ok5vKTsKKyAgICB2b2lkIHJlY2VpdmVkTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVm
PEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwg
V2ViRnJhbWVQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbShj
b25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CiAKQEAgLTEyODEsNiAr
MTI4MSw4IEBAIHB1YmxpYzoKICAgICBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9u
UGFyYW1ldGVycyhXZWJQcm9jZXNzUHJveHkmLCBEcmF3aW5nQXJlYVByb3h5JiwgUmVmUHRyPEFQ
STo6V2Vic2l0ZVBvbGljaWVzPiYmID0gbnVsbHB0cik7CiAKICAgICB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jik7CisgICAgdm9pZCByZXN1bWVEb3dubG9hZChjb25z
dCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+JiYpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKERvd25s
b2FkUHJveHkqKT4mJik7CiAKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKTsKICAgICB2b2lkIGNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNv
bnN0IFN0cmluZyYgd29yZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggNWI3NGFjYjRiMDA1NmU3MTE3NzBiYmMxNDBkYWM3ZjUzYzI3NDZjMy4uMTBj
NTc1NWZiZDA1Y2MwMTYwZGU1NGJmZGQ0OWZmY2MyNGFlNzZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTE0OCw3ICsxMTQ4LDcgQEAgRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSwgV2ViUGFnZVByb3gKICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKIH0KIAotRG93bmxv
YWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEb3dubG9hZFByb3h5JiBXZWJQcm9j
ZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQ
YWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNv
bnN0IFN0cmluZyYgcGF0aCwgQ2FsbERvd25sb2FkRGlkU3RhcnQgY2FsbERvd25sb2FkRGlkU3Rh
cnQpCiB7CiAgICAgYXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoZGF0
YVN0b3JlLCBSZXNvdXJjZVJlcXVlc3QoKSwgaW5pdGlhdGluZ1BhZ2UsIHsgfSk7CiAKQEAgLTEx
NTYsNyArMTE1Niw3IEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29sOjpyZXN1bWVEb3du
bG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhCiAgICAgaWYgKCFwYXRoLmlz
RW1wdHkoKSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNh
bmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRXcml0ZSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7
CiAKLSAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBkb3dubG9hZFBy
b3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVmZXJlbmNlKCksIHBhdGgsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUpLCAwKTsKKyAgICBkYXRhU3RvcmUubmV0d29ya1Byb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzdW1lRG93bmxvYWQoZGF0YVN0b3JlLnNl
c3Npb25JRCgpLCBkb3dubG9hZFByb3h5LmRvd25sb2FkSUQoKSwgcmVzdW1lRGF0YS5kYXRhUmVm
ZXJlbmNlKCksIHBhdGgsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIGNhbGxEb3dubG9hZERpZFN0
YXJ0KSwgMCk7CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDlkNzY1NDlhMjJmZDdlZDI0MTZhYTY2MzIw
Mzg5NDIxYWNhZjhmMTUuLmFjZTU3ZmU4Y2IwMWM2NDQ2MzVkYmQ0ZWM4Y2M0Njk1YWU1MzU4MjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTE5LDYgKzEx
OSw3IEBAIGludCB3ZWJQcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHdlYlByb2Nlc3NUaHJvdWdo
cHV0UU9TKCk7CiAjZW5kaWYKIAorZW51bSBjbGFzcyBDYWxsRG93bmxvYWREaWRTdGFydCA6IGJv
b2w7CiBlbnVtIGNsYXNzIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgOiBib29sOwogCiBj
bGFzcyBXZWJQcm9jZXNzUG9vbCBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OlByb2Nlc3NQb29sPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nl
c3NQb29sPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CkBAIC0yMDcsNyArMjA4LDcg
QEAgcHVibGljOgogI2VuZGlmCiAKICAgICBEb3dubG9hZFByb3h5JiBkb3dubG9hZChXZWJzaXRl
RGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSA9IHsgfSk7
Ci0gICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYsIFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0YSwg
Y29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBEb3dubG9hZFByb3h5JiByZXN1bWVEb3dubG9hZChX
ZWJzaXRlRGF0YVN0b3JlJiwgV2ViUGFnZVByb3h5KiBpbml0aWF0aW5nUGFnZSwgY29uc3QgQVBJ
OjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENhbGxEb3dubG9hZERpZFN0
YXJ0KTsKIAogICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRh
KFJlZlB0cjxBUEk6Ok9iamVjdD4mJiB1c2VyRGF0YSkgeyBtX2luamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YSA9IFdURk1vdmUodXNlckRhdGEpOyB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc0ZDc5N2ZmYjY5ZDA2
NjcyNjNkMDRmNDMwOWRlYTE5ZmNiYmEwMzIuLjQzZDU0ZThkZGZjOTk2YzY5ZTVhNWJjM2ZkZjNl
MzQzMmVhZmFiOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMjE4LDcgKzIxOCw2IEBACiAJCTFBNDNFODJBMTg4RjNDREMwMDlFNEQz
MCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDNFODI4MTg4RjNDREMwMDlFNEQzMCAvKiBfV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0
SW5qZWN0ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3Rl
ZEJ1bmRsZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QkExMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ0
NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTFBNDQ1QkEzMTg0RDVG
Q0YwMDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTIxODRENUZDRjAwNEIzNDE0IC8q
IFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUE0NDVCQTUxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4
dENvbm5lY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMUE0ODMyQ0MxQTlCQzQ2NTAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDgzMkNBMUE5QkM0
NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTQ4MzJDRTFBOUJDNDg0MDA4QjRERkUgLyog
V0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDRDFBOUJDNDg0MDA4QjRERkUgLyogV0tXZWJzaXRl
RGF0YVJlY29yZEludGVybmFsLmggKi87IH07CkBAIC0zMzEsNyArMzMwLDcgQEAKIAkJMUFCN0Q0
Q0ExMjg4QUFBNzAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENEM4MTI4OEFBQTcwMENGRDA4QyAvKiBE
b3dubG9hZFByb3h5LmggKi87IH07CiAJCTFBQjdENjE5MTI4OEI5RDkwMENGRDA4QyAvKiBEb3du
bG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENjE3MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCN0Q2MUExMjg4QjlEOTAwQ0ZEMDhD
IC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCN0Q2MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJv
eHlNZXNzYWdlcy5oICovOyB9OwotCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3du
bG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
N0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQUI3RDc4RDEyODhDRDlBMDBDRkQwOEMg
LyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFFQzE4
NDAwODA5MDBFOUFFNjkgLyogV0tQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFQjE4NDAwODA5MDBFOUFFNjkgLyog
V0tQYWdlTG9hZGVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUUxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNs
aWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFC
OEExRUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBQjhBMUYwMTg0MDBCMDAw
MEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUI4QTFFRjE4NDAwQjAwMDBFOUFFNjkgLyogV0tQYWdlRm9y
bUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC0xMjIxLDYgKzEyMjAsOCBAQAogCQk1QzIwQ0JBMDFCQjFFQ0Q4MDA4OTVCQjEgLyogTmV0
d29ya1Nlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMjBDQjlFMUJCMEREMTgwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbi5oICovOyB9Owog
CQk1QzI2OTU4NTIwMDQzMjEyMDA1QzQzOUIgLyogV0tPcGVuUGFuZWxQYXJhbWV0ZXJzUHJpdmF0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyNjk1
ODQyMDA0MkYxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzI5OERBMDFD
M0RGMDIxMDA0NzBBRkUgLyogUGVuZGluZ0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5OEQ5RTFDM0RFRjI5MDA0NzBBRkUgLyogUGVu
ZGluZ0Rvd25sb2FkLmggKi87IH07CisJCTVDMkQ1NzQ4MjU3RkZBNEIwMDY3OUE3MiAvKiBXS0Nv
bnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUMyRDU3NDcyNTdGRkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2Fk
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNUMyRUJERkEyNTY0MzgwQjAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMkVCREY5MjU2NDM1MjAw
MEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMzNTlDMEQyMTU0NzM5RjAwOUU3OTQ4IC8qIFdLRGVw
cmVjYXRlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMzNTlDMEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVDNDYwOUU3MjI0MzE3QjQwMDk5
NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tD
b250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1
bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxp
c3RBY3Rpb25JbnRlcm5hbC5oICovOyB9OwpAQCAtMTg2NCw2ICsxODY1LDkgQEAKIAkJQ0VFNEFF
MkIxQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRUU0QUUyQTFBNURDRjQzMDAwMkY0OUIgLyogVUlLaXRT
UEkuaCAqLzsgfTsKIAkJRDNCOTQ4NDcxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCOTQ4NDMx
MUZGNEI2NTAwMDMyQjM5IC8qIFdlYlBvcHVwTWVudS5oICovOyB9OwogCQlEM0I5NDg0OTExRkY0
QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2Vi
U2VhcmNoUG9wdXBNZW51LmggKi87IH07CisJCURGMEM1RjI4MjUyRUNCOEUwMEQ5MjFEQiAvKiBX
S0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBERjBDNUYyNDI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJREYwQzVGMkEyNTJFQ0I4RTAwRDky
MURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRE
ZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsK
KwkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjUyNTJFQ0I4
RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovOyB9OwogCQlERjQ2MkUwRjIzRjIy
RjU1MDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjQ2MkUwRTIzRjIyRjUzMDBFRkYzNUYg
LyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJREY0NjJFMTIyM0YzMzhCRTAwRUZGMzVGIC8qIFdLQ29u
dGVudFdvcmxkUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxkUHJpdmF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCURG
ODRDRUU0MjQ5QUEyNEQwMDkwOTZGNiAvKiBXS1BERkhVRFZpZXcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERjg0Q0VFMjI0OUFBMjFGMDA5MDk2RjYg
LyogV0tQREZIVURWaWV3Lm1tICovOyB9OwpAQCAtMjQ5NCw3ICsyNDk4LDYgQEAKIAkJMUE0M0U4
MjgxODhGM0NEQzAwOUU0RDMwIC8qIF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0NDVCOUUxODRENUZCNTAwNEIzNDE0
IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRI
aXN0b3J5Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4
dEhpc3RvcnlDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE0NDVCQTIx
ODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QkE0MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRl
eHRDb25uZWN0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29udGV4dENvbm5lY3Rpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUE0ODMyQzExQTk2NUEzQzAwOEI0REZFIC8qIFdlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0ODMyQzkxQTlCQzQ2NTAwOEI0
REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYnNpdGVEYXRhUmVjb3JkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjY5MCw4ICsyNjkzLDggQEAKIAkJMUFCN0Q1RTkxMjg4QjhDMDAwQ0ZEMDhD
IC8qIERvd25sb2FkUHJveHkubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG93
bmxvYWRQcm94eS5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFC
N0Q2MTcxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRG93bmxvYWRQcm94eU1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0Rvd25sb2FkUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQkxQUI3RDYxODEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlcy5o
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZXMuaDsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJMUFCN0Q3OEIxMjg4Q0Q5QTAw
Q0ZEMDhDIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQUI3RDc4QzEyODhD
RDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXS0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZFJlZi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0Rvd25sb2FkUmVmLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8q
IFdLUGFnZUxvYWRlckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S1BhZ2VMb2FkZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFCOEEx
RUQxODQwMEFDQjAwRTlBRTY5IC8qIFdLUGFnZVBvbGljeUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VQb2xpY3lDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlRm9ybUNsaWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDIxMiw2ICs0MjE1LDggQEAKIAkJNUMy
QjFBRjMyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNDIyM0FCNzI4MDBCOTFDRjcgLyogRG93bmxvYWRN
b25pdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvd25sb2FkTW9uaXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzJCMUFGNTIyM0MxRkQyMDBCOTFD
RjcgLyogRG93bmxvYWRQcm94eU1hcENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRG93bmxvYWRQcm94eU1hcENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1QzJENTc0NzI1N0ZGQTEyMDA2NzlBNzIgLyogV0tDb250ZXh0RG93bmxv
YWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tDb250ZXh0RG93
bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUMyRUJERjkyNTY0
MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tEb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1QzM1OUMwQzIxNTQ3MzIxMDA5RTc5NDggLyogV0tEZXByZWNhdGVkLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRGVwcmVjYXRlZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1QzNBRUE4RTFGRTFGMURGMDAyMzE4RDMgLyogV2Vic2l0ZVBvbGljaWVz
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJzaXRlUG9s
aWNpZXNEYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM0NjA5RTIyMjQz
MEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0ODksNiArNTQ5NCwxMCBAQAogCQlEM0I5NDg0MzExRkY0
QjY1MDAwMzJCMzkgLyogV2ViUG9wdXBNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlBvcHVwTWVudS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEM0I5
NDg0NDExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBNZW51LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVudS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQzQjk0ODQ1MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJT
ZWFyY2hQb3B1cE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2Vh
cmNoUG9wdXBNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjIzMjUy
RUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tEb3dubG9hZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV0tEb3dubG9hZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlERjBDNUYyNTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZEludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWRJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyog
V0tEb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUw
RTIzRjIyRjUzMDBFRkYzNUYgLyogV0tIVFRQQ29va2llU3RvcmVQcml2YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjQ2MkUxMTIzRjMzOEFEMDBFRkYzNUYgLyogV0tD
b250ZW50V29ybGRQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
Q29udGVudFdvcmxkUHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjU4
QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJXaGVlbEV2ZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03Njg5LDYgKzc2OTgsMTAgQEAKIAkJCQk1Q0UwQzM2ODIyOUYy
RDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLm1tICovLAogCQkJCTVDRTBD
MzZCMjI5RjJENEIwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm9JbnRlcm5hbC5o
ICovLAogCQkJCTVDRTBDMzZBMjI5RjJENEEwMDM2OTVGMCAvKiBXS0NvbnRleHRNZW51RWxlbWVu
dEluZm9Qcml2YXRlLmggKi8sCisJCQkJREYwQzVGMjQyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93
bmxvYWQuaCAqLywKKwkJCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIxREIgLyogV0tEb3dubG9hZC5t
bSAqLywKKwkJCQlERjBDNUYyNjI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERlbGVnYXRl
LmggKi8sCisJCQkJREYwQzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5h
bC5oICovLAogCQkJCTFBRjQ1OTJEMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggKi8sCiAJ
CQkJMUFGNDU5MkMxOTQ2NEIyMDAwRjlENEEyIC8qIFdLRXJyb3IubW0gKi8sCiAJCQkJMUEyRDI1
MkExOTQ2ODhGRDAwNDUzN0IwIC8qIFdLRXJyb3JJbnRlcm5hbC5oICovLApAQCAtOTY1OCw3ICs5
NjcxLDcgQEAKIAkJCQkxQUU1MkY5MzE5MjAxRjZCMDBBMUZBMzcgLyogV0tDb250ZXh0Q29uZmln
dXJhdGlvblJlZi5jcHAgKi8sCiAJCQkJMUFFNTJGOTQxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYuaCAqLywKIAkJCQkxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQg
LyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICovLAotCQkJCTFBNDQ1QkEyMTg0RDVGQ0Yw
MDRCMzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovLAorCQkJCTVDMkQ1NzQ3MjU3
RkZBMTIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovLAogCQkJCTFBNDQ1
QkEwMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCiAJCQkJ
MUE0NDVCOUUxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50
LmggKi8sCiAJCQkJQTFFQTAyMzUxREFCRkY3RTAwOTYwMjFGIC8qIFdLQ29udGV4dE1lbnVMaXN0
ZW5lci5jcHAgKi8sCkBAIC05NjY5LDggKzk2ODIsOSBAQAogCQkJCTUxMkY1OEYxMTJBODhBNTQw
MDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwICovLAogCQkJCTUxMkY1OEYyMTJBODhBNTQwMDYy
OTUzMCAvKiBXS0NyZWRlbnRpYWwuaCAqLywKIAkJCQk1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMg
LyogV0tDcmVkZW50aWFsVHlwZXMuaCAqLywKLQkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMg
LyogV0tEb3dubG9hZC5jcHAgKi8sCi0JCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdL
RG93bmxvYWQuaCAqLywKKwkJCQk1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyogV0tEb3dubG9h
ZENsaWVudC5oICovLAorCQkJCTFBQjdENzhDMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2Fk
UmVmLmNwcCAqLywKKwkJCQkxQUI3RDc4QjEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJl
Zi5oICovLAogCQkJCUJDRTQ2OTU3MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9u
TGlzdGVuZXIuY3BwICovLAogCQkJCUJDRTQ2OTU4MTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1T
dWJtaXNzaW9uTGlzdGVuZXIuaCAqLywKIAkJCQlCQ0QwMTM5ODExMEZBNDIwMDAzQjhBNjcgLyog
V0tGcmFtZS5jcHAgKi8sCkBAIC0xMjAzMSw3ICsxMjA0NSw3IEBACiAJCQkJQkNCOUUyNEIxMTIw
RTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFNTJGOTgx
OTIwMjY3MjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKLQkJCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQgLyog
V0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDMkQ1NzQ4MjU3
RkZBNEIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE0NDVCQTExODRENUZDMTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1QjlGMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM3OTVENzAyMjlG
MzczRjAwM0ZGMUM0IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjA2NCw4ICsxMjA3OCwxMiBAQAogCQkJCUJDNUQyNEM1MTZDRDcwODgwMDdENTQ2MSAv
KiBXS0RPTVJhbmdlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjkzRUJFQUIxNjI3RDlD
OTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMjExNjI2
MzMwODAwNzA1NEY1IC8qIFdLRE9NVGV4dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJCQkx
QUI3RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJREYwQzVGMjgyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTVDMkVCREZBMjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQlERjBDNUYyQTI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZERl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlERjBDNUYyQjI1MkVENDQwMDBEOTIxREIgLyog
V0tEb3dubG9hZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MzcyODFBMjIxQURDNzQ0
MDA5RTBERTYgLyogV0tEb3dubG9hZFByb2dyZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkxQUI3
RDc4RDEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRjQwOUJBMTgxRTZFNjRCQzAwOURBMjhFIC8qIFdLRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyRUNGNjZDRTIxRDZCNzdFMDA5RTVDM0YgLyogV0tFZGl0Q29t
bWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFGNDU5MkYxOTQ2NEIyMDAwRjlENEEyIC8qIFdL
RXJyb3IuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IGYwY2E4NDY0NzkyYzZkNDcyYTg1NGM3NTEzOTViMjkxOTIwYjVk
MjMuLjIzNDg0ZDY0ZjFhYTgwYjk0MGFjYmQ1M2RhMjlhNWZlMDM0ODgwM2EgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5NSBAQAor
MjAyMC0xMi0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIEludHJvZHVjZSBuZXcgZG93bmxvYWQgU1BJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc3NDcKKworICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50
eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxv
YWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlUG9saWN5Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRDb250
ZXh0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9Db250ZXh0TWVudURvd25sb2FkLm1tOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRG
aWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW06CisgICAgICAgICgtW0JlY29tZURvd25s
b2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVj
aXNpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvRG93bmxvYWQubW06CisgICAgICAgICgtW0NvbnZlcnRSZXNwb25zZVRvRG93bmxvYWROYXZp
Z2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6
ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWROYXZpZ2F0aW9uUmVz
cG9uc2VGcm9tTWVtb3J5Q2FjaGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWROYXZpZ2F0aW9u
UmVzcG9uc2VGcm9tTWVtb3J5Q2FjaGVEZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRp
b246XSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKGRvd25sb2FkVGVzdFNlcnZlcik6Cisg
ICAgICAgIChjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKToKKyAgICAgICAgKHNpbXBsZURv
d25sb2FkVGVzdFNlcnZlcik6CisgICAgICAgIChjaGVja0ZpbGVDb250ZW50cyk6CisgICAgICAg
ICh0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QpOgorICAgICAgICAoLVtEb3dubG9hZFRlc3RTY2hl
bWVEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNp
c2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjptdXRhdGVGaWxlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkUHJvZ3Jlc3Mu
bW06CisgICAgICAgICgtW0Rvd25sb2FkUHJvZ3Jlc3NUZXN0UnVubmVyIHdlYlZpZXc6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9u
Lm1tOgorICAgICAgICAoLVtQU09OTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbToKKyAgICAgICAgKFRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
OgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjpuZXdSZXF1ZXN0OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2U6c3VnZ2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rl
c3REb3dubG9hZERlbGVnYXRlIGRvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRl
bjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIGRvd25sb2Fk
RGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZDpk
aWRGYWlsV2l0aEVycm9yOnJlc3VtZURhdGE6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIHdlYlZpZXc6bmF2aWdhdGlvblJlc3BvbnNlOmRpZEJlY29tZURvd25sb2FkOl0pOgor
ICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3du
bG9hZERlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF0pOgorICAgICAgICAoLVtUZXN0
RG93bmxvYWREZWxlZ2F0ZSB0YWtlQ2FsbGJhY2tSZWNvcmRdKToKKyAgICAgICAgKC1bVGVzdERv
d25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkU3RhcnQ6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RU
b1VSTDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkOmRpZFJlY2VpdmVSZXNwb25zZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFdyaXRlRGF0YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5h
bWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9h
ZERlbGVnYXRlIF9kb3dubG9hZERpZEZpbmlzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVz
dERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZEZhaWxXaXRoRXJyb3I6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZENyZWF0ZURl
c3RpbmF0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDogQ29waWVkIGZyb20gVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW06IENvcGllZCBmcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0uCisgICAgICAgICgtW1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOgorICAgICAgICAo
LVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0VG9VUkw6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkaWRSZWNlaXZlUmVzcG9uc2U6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUgX2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZSBfZG93bmxvYWREaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtUZXN0
TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6CisgICAgICAgICgt
W1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RMZWdh
Y3lEb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpdKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93
bmxvYWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRl
T3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdX
aXRoT3B0aW9ucyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZEZpbmlzaCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZhaWwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZFN0YXJ0KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRDYW5jZWwpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKwogMjAyMC0xMi0wNCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIEFQSSB0ZXN0IGdhcmRlbmluZywg
ZGlzYWJsZSBmYWlsaW5nIHRlc3RzIG9uIEJpZyBTdXIuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggZDk3ZjI2NmU0MDVlY2ZhYTQxNDE5NDU5OTA4OGFkNTQwYmQ0ZDA5ZS4u
ZjVhOWQyMTc2NWY2OGFmMjJmZmI5NGUzODUyM2Q3ZDY0OWU0NTFmYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvU291cmNlc0NvY29hLnR4dApAQCAtMjcsNiArMjcsNyBAQCBXS1dlYlZpZXdDb25maWd1cmF0
aW9uRXh0cmFzLm1tCiBjb2NvYS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0
Q29jb2EubW0KIGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tCitjb2NvYS9UZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQogY29j
b2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0VUlEZWxlZ2F0ZS5tbQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4MDY3ZDQ1ODMxYjJkMzBlMzU1ZDQwMjc1MTE1YmRmNzAxYjE5MzhmLi5m
ZDgxOGU5Yjc2MzgyMGFhNjI1MTk1ZDZhNDA0MWQ3NTUxZTRhZjM5IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjIyNSw4ICsyMjI1LDggQEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRC
IC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkUyN0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5v
bmljYWxpemF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
VVJMQ2Fub25pY2FsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3
MTQ4OTQyMTIzQTQwNzAwRkRFM0M1IC8qIFdLV2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRl
c3REb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRl
c3REb3dubG9hZERlbGVnYXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzcyRThDRTI0NEZGQ0U0MDAzODFFQjcg
LyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsgcGF0aCA9IGNvY29hL1Rlc3REb3du
bG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzcyRThDRDI0
NEZGQ0UzMDAzODFFQjcgLyogVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgcGF0
aCA9IGNvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxv
YWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzNBODFBMjMy
MzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWluUGFnZVBs
dWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1bmRsZVJl
dGFpblBhZ2VQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzk2NDBG
MUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yODExLDYgKzI4MTEsOCBAQAogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2
M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlERjRCMjczODIxQTQ3NzI3MDA5QkQxQ0EgLyog
V0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLTlNEaWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDZGMjUzNEUxMjAwMDhGNjND
QyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFRlc3RE
b3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGNkJDNDcwMjUzNEUxMjAwMDhGNjNDQyAv
KiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0RG93bmxvYWREZWxl
Z2F0ZS5oOyBwYXRoID0gY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREZCOEZGMzEyNDkyRjUxQTAwRjAwQjBEIC8qIFByZWNvbm5lY3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmVjb25uZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMg
LyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZURpc2FibGVXaXRo
aW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTEyMjBEQzkxNTVCMjg3RDAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBNZW1vcnlD
YWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5odG1sOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzEzMiw4ICszMTM0LDEwIEBACiAJCQkJQ0U2NDBDQTYyMzcwQTRG
MzAwQzVDQUE0IC8qIFRlc3RDb2NvYS5tbSAqLywKIAkJCQk1Q0U3NTk0ODIyQTg4M0E1MDBDMTI0
MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLmggKi8sCiAJCQkJNUNFNzU5NDcyMkE4ODNBNTAw
QzEyNDA5IC8qIFRlc3RDb250ZXh0TWVudURyaXZlci5tbSAqLywKLQkJCQk1QzcyRThDRDI0NEZG
Q0UzMDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKLQkJCQk1QzcyRThDRTI0
NEZGQ0U0MDAzODFFQjcgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJREY2QkM0
NzAyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8sCisJCQkJREY2
QkM0NkYyNTM0RTEyMDAwOEY2M0NDIC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovLAorCQkJ
CTVDNzJFOENEMjQ0RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5o
ICovLAorCQkJCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZS5tbSAqLywKIAkJCQkyRDFDMDRBNTFENzYyOThCMDAwQTY4MTYgLyogVGVzdE5hdmln
YXRpb25EZWxlZ2F0ZS5oICovLAogCQkJCTJEMUMwNEE2MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0
TmF2aWdhdGlvbkRlbGVnYXRlLm1tICovLAogCQkJCTUxNjI4MTIzMjMyNUMxN0EwMEJCN0U0MiAv
KiBUZXN0UERGRG9jdW1lbnQuaCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gu
Y3BwCmluZGV4IGNhNjk3YWMzNWE5YWE1MjBhNWIxOWY1YzdiNzQzYzE3Yzg0NGM1MzguLmM0NTc1
ODY1MDVkYjNlNGRiYWJkYjA3MTJhMGU2NjNiZGIyOWM3N2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVE
ZXN0aW5hdGlvbkNyYXNoLmNwcApAQCAtMjksNDIgKzI5LDQxIEBACiAKICNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgotI2luY2x1ZGUg
PFdlYktpdC9XS0Rvd25sb2FkLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4K
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBzdGF0aWMgYm9vbCBkaWREZWNpZGVEZXN0
aW5hdGlvbjsKIAotc3RhdGljIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
S1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVm
IGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQorc3RhdGljIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VS
ZWYsIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBsaXN0ZW5lciwgV0tUeXBlUmVmLCBjb25zdCB2
b2lkKikKIHsKICAgICBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChsaXN0ZW5lcik7CiB9
CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxl
bmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5nUmVmLCBi
b29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25z
ZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqKQogewogICAgIGRpZERlY2lkZURlc3RpbmF0
aW9uID0gdHJ1ZTsKLSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25s
b2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICByZXR1cm4gVXRpbDo6
dG9XSygiL3RtcC9XZWJLaXRBUElUZXN0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaCIp
LmxlYWtSZWYoKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0Q29udGV4dERvd25sb2FkQ2xpZW50KFdL
Q29udGV4dFJlZiBjb250ZXh0KQorc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVj
b21lRG93bmxvYWQoV0tQYWdlUmVmIHBhZ2UsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmIG5hdmln
YXRpb25SZXNwb25zZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rv
d25sb2FkQ2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xp
ZW50KSk7Ci0KICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTsKLQotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRl
eHQsICZjbGllbnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3Bv
bnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3du
bG9hZFNldENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKIH0KIAogc3RhdGljIHZvaWQg
c2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYgcGFnZSkKIHsKLSAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ2xpZW50VjAgbmF2aWdhdGlvbkNsaWVudDsKKyAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50
VjMgbmF2aWdhdGlvbkNsaWVudDsKICAgICBtZW1zZXQoJm5hdmlnYXRpb25DbGllbnQsIDAsIHNp
emVvZihuYXZpZ2F0aW9uQ2xpZW50KSk7CiAKLSAgICBuYXZpZ2F0aW9uQ2xpZW50LmJhc2UudmVy
c2lvbiA9IDA7Ci0gICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uID0gZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjsKKyAgICBuYXZpZ2F0aW9u
Q2xpZW50LmJhc2UudmVyc2lvbiA9IDM7CisgICAgbmF2aWdhdGlvbkNsaWVudC5kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UgPSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U7CisgICAgbmF2aWdhdGlvbkNsaWVudC5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IG5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkOwogCiAgICAgV0tQYWdl
U2V0UGFnZU5hdmlnYXRpb25DbGllbnQocGFnZSwgJm5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiB9
CkBAIC03Miw3ICs3MSw2IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdl
UmVmIHBhZ2UpCiBURVNUKFdlYktpdCwgRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoKQog
ewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soV0tDb250
ZXh0Q3JlYXRlV2l0aENvbmZpZ3VyYXRpb24obnVsbHB0cikpOwotICAgIHNldENvbnRleHREb3du
bG9hZENsaWVudChjb250ZXh0LmdldCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3
KGNvbnRleHQuZ2V0KCkpOwogICAgIHNldFBhZ2VQb2xpY3lDbGllbnQod2ViVmlldy5wYWdlKCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0NvbnRl
eHRNZW51RG93bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMv
Q29udGV4dE1lbnVEb3dubG9hZC5tbQppbmRleCAxNTkzMGU1NDZkYmFhM2RhOWQ1ZWQyMTViNmM4
YjljYzYxMDlhZjBmLi43NTU2ZjYxMmQ1ZTNiOWJhNGY0Y2Q2ZjUyNmM5NThjMTdmM2YxZjI2IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4dE1l
bnVEb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMv
Q29udGV4dE1lbnVEb3dubG9hZC5tbQpAQCAtMjgsNyArMjgsOCBAQAogI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLQ29udGV4dE1lbnVJdGVtLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZC5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWRDbGllbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS0Rv
d25sb2FkUmVmLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQYWdlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tQYWdlQ29udGV4dE1lbnVDbGllbnQuaD4KICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oPgpAQCAtNjIsMTIgKzYzLDEyIEBAIHN0YXRpYyB2b2lkIGdldENvbnRleHRNZW51
RnJvbVByb3Bvc2VkTWVudShXS1BhZ2VSZWYgcGFnZSwgV0tBcnJheVJlZiBwcm9wb3NlZE1lCiAg
ICAgfQogfQogCi1zdGF0aWMgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmlu
Z1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCosIGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3Ry
aW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCB2b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxl
bmFtZSBpcyBwcm92aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0
dHJpYnV0ZSBpbiB0aGUgSFRNTC4KICAgICBFWFBFQ1RfV0tfU1RSRVEoImRvd25sb2FkQXR0cmli
dXRlVmFsdWUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogCi0gICAgV0tEb3dubG9hZENhbmNl
bChkb3dubG9hZCk7CisgICAgV0tEb3dubG9hZENhbmNlbChkb3dubG9hZCwgbnVsbHB0ciwgbnVs
bHB0cik7CiAgICAgZGlkRGVjaWRlRG93bmxvYWREZXN0aW5hdGlvbiA9IHRydWU7CiAKICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRPcmlnaW5hdGluZ1BhZ2UsIFdLRG93bmxvYWRHZXRPcmlnaW5hdGlu
Z1BhZ2UoZG93bmxvYWQpKTsKQEAgLTc2LDI1ICs3NywyOSBAQCBzdGF0aWMgV0tTdHJpbmdSZWYg
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rv
d25sbwogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvQ29udGV4dE1l
bnVEb3dubG9hZCIpLmxlYWtSZWYoKTsKIH0KIAorc3RhdGljIHZvaWQgY29udGV4dE1lbnVEaWRD
cmVhdGVEb3dubG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAgY2xpZW50Owor
ICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7CisgICAgY2xpZW50LmJhc2Uu
dmVyc2lvbiA9IDA7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlID0g
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7CisgICAgV0tEb3dubG9hZFNl
dENsaWVudChkb3dubG9hZCwgJmNsaWVudC5iYXNlKTsKK30KKwogLy8gQ2hlY2tzIHRoYXQgdGhl
IEhUTUwgZG93bmxvYWQgYXR0cmlidXRlIGlzIHVzZWQgYXMgc3VnZ2VzdGVkIGZpbGVuYW1lIHdo
ZW4gc2VsZWN0aW5nCiAvLyB0aGUgIkRvd25sb2FkIExpbmtlZCBGaWxlIiBpdGVtIGluIHRoZSBj
b250ZXh0IG1lbnUuCiBURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3dubG9h
ZEF0dHJpYnV0ZSkKIHsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBh
ZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKLSAgICBX
S0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKLSAgICBtZW1zZXQoJmNsaWVudCwgMCwg
c2l6ZW9mKGNsaWVudCkpOwotICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVu
dC5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50
KGNvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7Ci0KICAgICBXS1JldGFpblB0cjxXS1BhZ2VH
cm91cFJlZj4gcGFnZUdyb3VwID0gYWRvcHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlm
aWVyKFV0aWw6OnRvV0soIk15R3JvdXAiKS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBhZ2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZp
Z2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRW
MyBsb2FkZXJDbGllbnQ7CiAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2Fk
ZXJDbGllbnQpKTsKLSAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2Fk
ZXJDbGllbnQuYmFzZS52ZXJzaW9uID0gMzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2
aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmlnYXRpb247CisgICAgbG9hZGVyQ2xpZW50LmNvbnRleHRN
ZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOwogICAg
IFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KHdlYlZpZXcucGFnZSgpLCAmbG9hZGVyQ2xp
ZW50LmJhc2UpOwogCiAgICAgV0tQYWdlQ29udGV4dE1lbnVDbGllbnRWMyBjb250ZXh0TWVudUNs
aWVudDsKQEAgLTExNCwzNCArMTE5LDM4IEBAIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25s
b2FkSFRNTERvd25sb2FkQXR0cmlidXRlKQogICAgIFV0aWw6OnJ1bigmZGlkRGVjaWRlRG93bmxv
YWREZXN0aW5hdGlvbik7CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdLQ29udGV4dFJlZiwgV0tE
b3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGJvb2wq
LCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLVVJMUmVzcG9uc2VSZWYsIFdLU3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2
b2lkKikKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhlIHN1Z2dlc3RlZCBmaWxlbmFtZSBpcyBwcm92
aWRlZCBhbmQgbWF0Y2hlcyB0aGUgdmFsdWUgb2YgdGhlIGRvd25sb2FkIGF0dHJpYnV0ZSBpbiB0
aGUgSFRNTCwgYWZ0ZXIgc2FuaXRpemF0aW9uLgogICAgIEVYUEVDVF9XS19TVFJFUSgidGVzdDFf
dGVzdDJfZG93bmxvYWRBdHRyaWJ1dGVWYWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAK
LSAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRv
d25sb2FkLCBudWxscHRyLCBudWxscHRyKTsKICAgICBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0
aW9uID0gdHJ1ZTsKIAogICAgIHJldHVybiBVdGlsOjp0b1dLKCIvdG1wL1dlYktpdEFQSVRlc3Qv
Q29udGV4dE1lbnVEb3dubG9hZCIpLmxlYWtSZWYoKTsKIH0KIAotVEVTVChXZWJLaXQsIENvbnRl
eHRNZW51RG93bmxvYWRIVE1MRG93bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3N0YXRpYyB2
b2lkIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250
YWluaW5nU2xhc2hlcyhXS1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7
Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYwIGNsaWVudDsKKyAgICBXS0Rvd25sb2Fk
Q2xpZW50VjAgY2xpZW50OwogICAgIG1lbXNldCgmY2xpZW50LCAwLCBzaXplb2YoY2xpZW50KSk7
CiAgICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWVDb250YWluaW5nU2xhc2hlczsKLSAgICBXS0NvbnRleHRTZXREb3dubG9hZENsaWVu
dChjb250ZXh0LmdldCgpLCAmY2xpZW50LmJhc2UpOworICAgIGNsaWVudC5kZWNpZGVEZXN0aW5h
dGlvbldpdGhSZXNwb25zZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
Q29udGFpbmluZ1NsYXNoZXM7CisgICAgV0tEb3dubG9hZFNldENsaWVudChkb3dubG9hZCwgJmNs
aWVudC5iYXNlKTsKK30KKworVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxvYWRIVE1MRG93
bmxvYWRBdHRyaWJ1dGVXaXRoU2xhc2hlcykKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5k
bGUoKSk7CiAKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwID0gYWRv
cHRXSyhXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFV0aWw6OnRvV0soIk15R3JvdXAi
KS5nZXQoKSkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCksIHBh
Z2VHcm91cC5nZXQoKSk7CiAKLSAgICBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xp
ZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMyBsb2FkZXJDbGllbnQ7CiAgICAgbWVt
c2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKLSAgICBsb2FkZXJD
bGllbnQuYmFzZS52ZXJzaW9uID0gMDsKKyAgICBsb2FkZXJDbGllbnQuYmFzZS52ZXJzaW9uID0g
MzsKICAgICBsb2FkZXJDbGllbnQuZGlkRmluaXNoTmF2aWdhdGlvbiA9IGRpZEZpbmlzaE5hdmln
YXRpb247CisgICAgbG9hZGVyQ2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBj
b250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmlu
Z1NsYXNoZXM7CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdl
KCksICZsb2FkZXJDbGllbnQuYmFzZSk7CiAKICAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYz
IGNvbnRleHRNZW51Q2xpZW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCmluZGV4IDQzMzkxMzExMDFmMmNk
ZDk1MDk4NjdlZmU5NDRmNmU3N2VmMzllZGIuLjUwMWY5OTdkY2Q4Mjk4YzFlN2U5NTU2MWQ1ZTg5
NzUwZjUxZDM2MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KQEAgLTE1MSw3ICsxNTEsNyBAQCBURVNU
KENvbnRlbnRGaWx0ZXJpbmcsIFVSTEFmdGVyU2VydmVyUmVkaXJlY3QpCiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cgogewotICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZCk7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5RG93bmxvYWQpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3
aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggM2FlZmViOGVjMzM1ZTEwMjMyZmY4ZTVj
ODBjNmY3OWJkMzVlZmMwOC4uZDk2MWFhODhkMDBkYzY2MWU1NmVmNjIwOGZlZGQ1ODliNjBmYTNj
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3du
bG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCkBAIC0zMywxMSArMzMsMTUgQEAKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9y
dCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdERvd25sb2FkRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLmgiCiAjaW1wb3J0ICJUZXN0UHJvdG9jb2wuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKKyNpbXBvcnQgPEZvdW5kYXRpb24vTlNVUkxSZXNwb25zZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLRG93bmxvYWQuaD4KICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLTmF2aWdhdGlvblJlc3BvbnNlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgpAQCAtMTc0LDcgKzE3OCw3IEBAIFRFU1QoX1dL
RG93bmxvYWQsIERvd25sb2FkUmVxdWVzdCkKIEBpbXBsZW1lbnRhdGlvbiBDb252ZXJ0UmVzcG9u
c2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVnYXRlCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRp
b25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4p
KFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKLSAgICBkZWNp
c2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOwor
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkKTsK
IH0KIEBlbmQKIApAQCAtOTc3LDcgKzk4MSw3IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2Fk
TW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkKICAgICBFWFBFQ1RfRkFMU0UoX2RpZEZpbmlzaE5h
dmlnYXRpb24pOwogICAgIEVYUEVDVF9XS19TVFJFUShfV0tMZWdhY3lFcnJvckRvbWFpbiwgZXJy
b3IuZG9tYWluKTsKICAgICBfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IFlFUzsKLSAg
ICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQorICAgIGlmIChfcmVzcG9uc2VQb2xpY3kg
IT0gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9h
ZCkKICAgICAgICAgaXNEb25lID0gdHJ1ZTsKIH0KIApAQCAtOTg1LDcgKzk4OSw3IEBAIFRFU1Qo
X1dLRG93bmxvYWQsIERvd25sb2FkTW9uaXRvclJldHVyblRvRm9yZWdyb3VuZCkKIHsKICAgICBF
WFBFQ1RfRkFMU0UoX2RpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOwogICAgIF9kaWRGaW5p
c2hOYXZpZ2F0aW9uID0gWUVTOwotICAgIGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisg
ICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25s
b2FkIHx8IF9kaWRTdGFydERvd25sb2FkKQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBA
IC0xMDI0LDcgKzEwMjgsNyBAQCBURVNUKFdlYktpdCwgRG93bmxvYWROYXZpZ2F0aW9uUmVzcG9u
c2VGcm9tTWVtb3J5Q2FjaGUpCiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJMLmFic29sdXRl
U3RyaW5nLCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAogICAgIE5TVVJMICpzZWNv
bmRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9idW5kbGUtZmlsZS9zaW1wbGUy
Lmh0bWwiXTsKLSAgICBbZGVsZWdhdGUgc2V0UmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOworICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBv
bGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXTsKICAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsK
QEAgLTEwNTEsNyArMTA1NSw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRpb25SZXNw
b25zZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgZGlkRmluaXNo
TmF2aWdhdGlvbl0pOwogICAgIEVYUEVDVF9XS19TVFJFUShmaXJzdFVSTC5hYnNvbHV0ZVN0cmlu
ZywgW3dlYlZpZXcgVVJMXS5hYnNvbHV0ZVN0cmluZyk7CiAKLSAgICBbZGVsZWdhdGUgc2V0UmVz
cG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWRdOwor
ICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eURvd25sb2FkXTsKICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOnNlY29uZFVSTF1dOwogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKQEAgLTExODksMjQgKzExOTMsMzAgQEAgU3RyaW5n
IGxvbmdTdHJpbmcoTENoYXIgYykKICAgICByZXR1cm4gU3RyaW5nKHZlY3Rvci5kYXRhKCksIGxl
bmd0aCk7CiB9CiAKLVRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK2VudW0gY2xhc3MgSW5jbHVk
ZUVUYWcgOiBib29sIHsgTm8sIFllcyB9OworZW51bSBjbGFzcyBUZXJtaW5hdGVBZnRlckZpcnN0
UmVwbHkgOiBib29sIHsgTm8sIFllcyB9OworCitzdGF0aWMgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWcgaW5jbHVkZUVUYWcgPSBJbmNsdWRl
RVRhZzo6WWVzLCBGdW5jdGlvbjx2b2lkKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24pPiYmIHRl
cm1pbmF0b3IgPSBudWxscHRyKQogewotICAgIHVzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
OwotICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwXShDb25uZWN0aW9u
IGNvbm5lY3Rpb24pIG11dGFibGUgeworICAgIHJldHVybiB7IFtpbmNsdWRlRVRhZywgdGVybWlu
YXRvciA9IFdURk1vdmUodGVybWluYXRvciksIGNvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJL
aXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0YWJsZSB7CiAgICAgICAgIHN3aXRjaCAo
Kytjb25uZWN0aW9uQ291bnQpIHsKICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgY29ubmVj
dGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25dKFZlY3RvcjxjaGFyPiYmKSB7Ci0g
ICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmcoCi0gICAgICAgICAgICAg
ICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgotICAgICAgICAgICAgICAgICAgICAiRVRhZzog
dGVzdFxyXG4iCisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbaW5j
bHVkZUVUYWcsIGNvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0b3IpXSAo
VmVjdG9yPGNoYXI+JiYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBtYWtlU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIs
CisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVFVGFnID09IEluY2x1ZGVFVGFnOjpZZXMgPyAi
RVRhZzogdGVzdFxyXG4iIDogIiIsCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0
aDogMTAwMDBcclxuIgogICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjog
YXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKICAgICAgICAgICAgICAg
ICAgICAgIlxyXG4iLCBsb25nU3RyaW5nPDUwMDA+KCdhJykKLSAgICAgICAgICAgICAgICApKTsK
KyAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChXVEZN
b3ZlKHJlc3BvbnNlKSwgW2Nvbm5lY3Rpb24sIHRlcm1pbmF0b3IgPSBXVEZNb3ZlKHRlcm1pbmF0
b3IpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlcm1pbmF0b3IpCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hdG9yKGNvbm5lY3Rpb24pOworICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSAyOgotICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5l
Y3Rpb25dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24u
cmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CiAgICAgICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRl
cz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUoKSkpOwogICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChtYWtlU3RyaW5nKAogICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBh
cnRpYWwgQ29udGVudFxyXG4iCkBAIC0xMjIwLDE2ICsxMjMwLDY0IEBAIFRFU1QoX1dLRG93bmxv
YWQsIFJlc3VtZSkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICB9Ci0gICAgfSk7CisgICAgfX07Cit9CisKK3N0YXRpYyB2b2lkIGNo
ZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoTlNVUkwgKmZpbGUpCit7CisgICAgTlNEYXRhICpm
aWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZlVSTDpmaWxlXTsKKyAgICBF
WFBFQ1RfRVEoZmlsZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKKyAgICBFWFBFQ1RfVFJVRShm
aWxlQ29udGVudHMuYnl0ZXMpOworICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMgJiYgZmlsZUNv
bnRlbnRzLmxlbmd0aCA9PSAxMDAwMHUpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA1MDAwOyBpKyspCisgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
cio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7CisgICAgICAgIGZvciAoc2l6ZV90IGkg
PSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsKKyAgICB9Cit9CisK
K3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNpbXBsZURvd25sb2FkVGVzdFNlcnZl
cigpCit7CisgICAgcmV0dXJuIHsgW10oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0
aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtjb25uZWN0aW9u
XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJp
bmcoCisgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAw
MFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7
IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgIlxyXG4iLCBs
b25nU3RyaW5nPDUwMDA+KCdhJykKKyAgICAgICAgICAgICkpOworICAgICAgICB9KTsKKyAgICB9
fTsKK30KIAotICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNU
ZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3du
bG9hZFJlc3VtZVRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworc3RhdGljIHZvaWQgY2hlY2tGaWxl
Q29udGVudHMoTlNVUkwgKmZpbGUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRDb250ZW50cykKK3sK
KyAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJM
OmZpbGVdOworICAgIEVYUEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCBleHBlY3RlZENvbnRl
bnRzLmxlbmd0aCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbGVDb250ZW50cy5s
ZW5ndGg7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihm
aWxlQ29udGVudHMuYnl0ZXMpW2ldLCBleHBlY3RlZENvbnRlbnRzW2ldKTsKK30KKworc3RhdGlj
IE5TVVJMICp0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKQoreworICAgIE5TVVJMICp0ZW1wRGly
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNd
OwogICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gY3JlYXRlRGlyZWN0b3J5QXRV
Ukw6dGVtcERpciB3aXRoSW50ZXJtZWRpYXRlRGlyZWN0b3JpZXM6WUVTIGF0dHJpYnV0ZXM6bmls
IGVycm9yOm5pbF07Ci0gICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIg
VVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKLSAgICBbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3RlZERvd25sb2Fk
RmlsZSBlcnJvcjpuaWxdOworICAgIE5TVVJMICpmaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKyAgICBbW05TRmlsZU1hbmFnZXIgZGVm
YXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpmaWxlIGVycm9yOm5pbF07CisgICAgcmV0dXJu
IGZpbGU7Cit9CisKK1RFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKK3sKKyAgICB1c2luZyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSTsKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9l
c05vdEV4aXN0KCk7CiAKICAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9s
aWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeURvd25sb2FkKTsKICAgICB9OwogCiAgICAgZW51bSBjbGFzcyBDYWxs
YmFjayA6IHVpbnQ4X3QgeyBTdGFydCwgV3JpdGVEYXRhLCBEZWNpZGVEZXN0aW5hdGlvbiwgQ3Jl
YXRlRGVzdGluYXRpb24sIENhbmNlbCwgRmluaXNoIH07CkBAIC0xMjQwLDEwICsxMjk4LDExIEBA
IFRFU1QoX1dLRG93bmxvYWQsIFJlc3VtZSkKICAgICBfX2Jsb2NrIFJldGFpblB0cjxfV0tEb3du
bG9hZD4gZG93bmxvYWQ7CiAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXN1bWVEYXRh
OwogCi0gICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSk7CisgICAgYXV0byBkb3dubG9hZERlbGVnYXRlID0gYWRvcHROUyhbVGVzdExl
Z2FjeURvd25sb2FkRGVsZWdhdGUgbmV3XSk7CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IF4oX1dLRG93bmxvYWQgKiwg
TlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKEJP
T0wsIE5TU3RyaW5nICopKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkRl
Y2lkZURlc3RpbmF0aW9uKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoWUVTLCBbdGVtcERp
ciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6c3VnZ2VzdGVkRmlsZW5hbWVdLnBhdGgpOwor
ICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoImV4YW1wbGUudHh0Iiwgc3VnZ2VzdGVkRmlsZW5hbWUp
OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIGV4cGVjdGVkRG93bmxvYWRGaWxlLnBh
dGgpOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kaWRXcml0ZURhdGEgPSBe
KF9XS0Rvd25sb2FkICpkb3dubG9hZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0
b3RhbEJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgewog
ICAgICAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpXcml0ZURhdGEpOwpAQCAtMTI1OCw3
ICsxMzE3LDcgQEAgVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIH07CiAgICAgZG93bmxv
YWREZWxlZ2F0ZS5nZXQoKS5kaWRDcmVhdGVEZXN0aW5hdGlvbiA9IF4oX1dLRG93bmxvYWQgKiwg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uKSB7CiAgICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJh
Y2s6OkNyZWF0ZURlc3RpbmF0aW9uKTsKLSAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRlc3RpbmF0
aW9uLCBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJd
LnBhdGgpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRpb24sIGV4cGVjdGVkRG93
bmxvYWRGaWxlLnBhdGgpOwogICAgIH07CiAgICAgZG93bmxvYWREZWxlZ2F0ZS5nZXQoKS5kb3du
bG9hZERpZENhbmNlbCA9IF4oX1dLRG93bmxvYWQgKmRvd25sb2FkKSB7CiAgICAgICAgIGNhbGxi
YWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkNhbmNlbCk7CkBAIC0xMjk2LDE1ICsxMzU1LDcgQEAgVEVT
VChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIFV0aWw6OnNwaW5SdW5Mb29wKDEwKTsKICAgICB1
c2xlZXAoMTAwMDApOwogCi0gICAgTlNEYXRhICpmaWxlQ29udGVudHMgPSBbTlNEYXRhIGRhdGFX
aXRoQ29udGVudHNPZlVSTDpleHBlY3RlZERvd25sb2FkRmlsZV07Ci0gICAgRVhQRUNUX0VRKGZp
bGVDb250ZW50cy5sZW5ndGgsIDEwMDAwdSk7Ci0gICAgRVhQRUNUX1RSVUUoZmlsZUNvbnRlbnRz
LmJ5dGVzKTsKLSAgICBpZiAoZmlsZUNvbnRlbnRzLmJ5dGVzKSB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgNTAwMDsgaSsrKQotICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYScpOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gNTAwMDsgaSA8IDEwMDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdiJyk7
Ci0gICAgfQorICAgIGNoZWNrUmVzdW1lZERvd25sb2FkQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUpOwogfQogCiBAaW50ZXJmYWNlIERvd25sb2FkVGVzdFNjaGVtZURlbGVnYXRlIDogTlNP
YmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgpAQCAtMTMxNCw3ICsxMzY1LDcgQEAgVEVTVChf
V0tEb3dubG9hZCwgUmVzdW1lKQogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7CiAgICAgaWYgKFtuYXZpZ2F0aW9u
UmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGhhc1N1ZmZpeDpAIi9kb3dubG9h
ZCJdKQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
QmVjb21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CkBAIC0xMzczLDQgKzE0MjQsMTIw
MiBAQCBURVNUKF9XS0Rvd25sb2FkLCBTdWJmcmFtZVNlY3VyaXR5T3JpZ2luKQogICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPGJvZHk+PGlm
cmFtZSBzcmM9J2h0dHA6Ly8xMjcuMC4wLjE6JWQvcGFnZSc+PC9pZnJhbWU+PC9ib2R5PiIsIHNl
cnZlci5wb3J0KCldIGJhc2VVUkw6bmlsXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmlzRG9uZSk7CiB9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIHZvaWQg
Y2hlY2tDYWxsYmFja1JlY29yZChUZXN0RG93bmxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUsIFZlY3Rv
cjxEb3dubG9hZENhbGxiYWNrPiBleHBlY3RlZENhbGxiYWNrcykKK3sKKyAgICBhdXRvIGFjdHVh
bENhbGxiYWNrcyA9IGRlbGVnYXRlLnRha2VDYWxsYmFja1JlY29yZDsKKyAgICBFWFBFQ1RfRVEo
YWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhwZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHN0ZDo6bWluKGFjdHVhbENhbGxiYWNrcy5zaXplKCksIGV4
cGVjdGVkQ2FsbGJhY2tzLnNpemUoKSk7IGkrKykKKyAgICAgICAgRVhQRUNUX0VRKGFjdHVhbENh
bGxiYWNrc1tpXSwgZXhwZWN0ZWRDYWxsYmFja3NbaV0pOworfQorCitURVNUKFdLRG93bmxvYWQs
IEZpbmlzaFN1Y2Nlc3NmdWxseSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHNpbXBsZURvd25sb2Fk
VGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxl
VGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3
IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVs
ZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9h
ZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
ZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQucHJv
Z3Jlc3MuZmlsZVVSTCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgICAgICBFWFBFQ1RfTk9UX05VTEwoZG93bmxvYWQucHJvZ3Jl
c3MuZmlsZVVSTCk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQucHJvZ3Jl
c3MuZmlsZVVSTC5hYnNvbHV0ZVN0cmluZywgZXhwZWN0ZWREb3dubG9hZEZpbGUuYWJzb2x1dGVT
dHJpbmcpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEb3dubG9hZERpZEZpbmlzaF07
CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmlu
Zzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdy
aXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9
CisKK3N0YXRpYyB2b2lkIHJlc3VtZUFuZEZpbmlzaERvd25sb2FkKE5TRGF0YSAqcmVzdW1lRGF0
YSwgTlNVUkwgKmRlc3RpbmF0aW9uKQoreworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxv
YWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgIGNo
ZWNrRmlsZUNvbnRlbnRzKGRlc3RpbmF0aW9uLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisg
ICAgICAgIGF1dG8gKmRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9y
ZWxlYXNlXTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10p
OworCisgICAgICAgIFt3ZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6cmVzdW1l
RGF0YSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAg
ICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgICAgICBFWFBFQ1RfTlVM
TChkb3dubG9hZC5kZWxlZ2F0ZSk7CisgICAgICAgIH1dOworICAgICAgICB3aGlsZSAoIXJldGFp
bmVkRG93bmxvYWQpCisgICAgICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAgICAgICAK
KyAgICAgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRTZWNvbmQ1ayA9IGZhbHNlOworICAgICAg
ICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlKTsKKyAgICAgICAg
cmV0YWluZWREb3dubG9hZC5nZXQoKS5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxl
Z2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNV
UkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJM
ICopKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfTsKKyAg
ICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgaW50
NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2Fk
LCByZXRhaW5lZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShieXRlc1dy
aXR0ZW4gKyA1MDAwLCB0b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
dG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSwgMTAwMDApOworICAgICAgICAgICAgRVhQRUNUX0VR
KGRvd25sb2FkLnByb2dyZXNzLnRvdGFsVW5pdENvdW50LCAxMDAwMCk7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoZG93bmxvYWQucHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50LCB0b3RhbEJ5dGVz
V3JpdHRlbik7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuID09IDUwMDApCisgICAgICAg
ICAgICAgICAgZG93bmxvYWRlZFNlY29uZDVrID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICAgICAg
X19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9h
ZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgICAgIEVYUEVD
VF9FUShyZXRhaW5lZERvd25sb2FkLmdldCgpLCBkb3dubG9hZCk7CisgICAgICAgICAgICBFWFBF
Q1RfVFJVRShkb3dubG9hZGVkU2Vjb25kNWspOworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1
ZTsKKyAgICAgICAgfTsKKworICAgICAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAgICAg
ICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhkZXN0aW5hdGlvbik7CisgICAgICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlz
aAorICAgICAgICB9KTsKKyAgICAgICAgRVhQRUNUX0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCku
d2ViVmlldywgd2ViVmlldy5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXRhaW5l
ZERvd25sb2FkLmdldCgpLndlYlZpZXcpOworICAgIH0KKyAgICBFWFBFQ1RfTk9UX05VTEwocmV0
YWluZWREb3dubG9hZC5nZXQoKSk7CisgICAgRVhQRUNUX05VTEwocmV0YWluZWREb3dubG9hZC5n
ZXQoKS53ZWJWaWV3KTsKK30KKworc3RhdGljIHZvaWQgd2FpdEZvckZpcnN0NWsoVGVzdERvd25s
b2FkRGVsZWdhdGUgKmRlbGVnYXRlKQoreworICAgIF9fYmxvY2sgYm9vbCBkb3dubG9hZGVkRmly
c3Q1ayA9IGZhbHNlOworICAgIEFTU0VSVCghZGVsZWdhdGUuZGlkV3JpdGVEYXRhKTsKKyAgICBk
ZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKiwgaW50NjRfdCBieXRlc1dyaXR0
ZW4sIGludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVk
VG9Xcml0ZSkgeworICAgICAgICBFWFBFQ1RfRVEoYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3Jp
dHRlbik7CisgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAw
MCk7CisgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAgICAgIGRvd25s
b2FkZWRGaXJzdDVrID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRlZEZp
cnN0NWspOworfQorCitURVNUKFdLRG93bmxvYWQsIENhbmNlbEFuZFJlc3VtZSkKK3sKKyAgICBh
dXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rv
d25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRv
d25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBk
ZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwg
TlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5T
VVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNl
cnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5l
ZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5l
ZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworCisgICAgd2hpbGUgKCFyZXRhaW5l
ZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5k
RmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhCisg
ICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRmFpbEFuZFJlc3VtZSkKK3sKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6WWVzLCBbJl0g
KFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3YWl0Rm9y
Rmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7CisgICAg
fSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05v
dEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgX19ibG9j
ayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgZGVsZWdhdGUubmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmln
YXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5l
ZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4
cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFp
bFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkb3dubG9hZCwgcmV0YWlu
ZWREb3dubG9hZC5nZXQoKSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9t
YWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2Rl
LCBOU1VSTEVycm9yTmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgd2hpbGUgKCFyZXRhaW5l
ZFJlc3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmVzdW1lQW5k
RmluaXNoRG93bmxvYWQocmV0YWluZWRSZXN1bWVEYXRhLmdldCgpLCBleHBlY3RlZERvd25sb2Fk
RmlsZSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNp
ZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIENhbmNlbE5vUmVzdW1lRGF0YSkKK3sKKyAgICBhdXRvIHNlcnZl
ciA9IGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZzo6Tm8pOworICAgIE5TVVJMICpleHBl
Y3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZp
ZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0
cjxXS0Rvd25sb2FkPiByZXRhaW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9h
ZCA9IGRvd25sb2FkOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAg
ICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxv
YWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERv
d25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIFtyZXRhaW5lZERvd25sb2FkIGNhbmNl
bDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRh
KTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsK
KyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1
MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURh
dGEKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGYWlsTm9SZXN1bWVEYXRhKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpO
bywgWyZdIChUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIHsKKyAgICAgICAg
d2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworICAgICAgICBjb25uZWN0aW9uLnRlcm1pbmF0ZSgp
OworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhh
dERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisK
KyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25S
ZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxl
Z2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBO
U0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5k
b21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgRVhQRUNU
X05VTEwocmVzdW1lRGF0YSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsK
KyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9h
ZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWls
V2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIEZJWE1FOiBNYWtlIHRoaXMgd29yayBpbiBDRk5l
dHdvcmsuCisjaWYgSEFWRShDRk5FVF9SRVNQT05TRV9DQUxMQkFDS19XSVRIX05PX0NPTlRFTlQp
CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lQWZ0ZXJaZXJvQnl0ZXNSZWNlaXZlZCkKK3sKKyAg
ICBPcHRpb25hbDxUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uPiBzZXJ2ZXJDb25uZWN0aW9uOwor
ICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25uZWN0aW9uQ291bnQgPSAwLCAmc2VydmVyQ29ubmVj
dGlvbl0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKKyAg
ICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uID0gY29ubmVjdGlvbjsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24uc2VuZCgKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIw
MCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAg
ICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwi
ZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIgorICAgICAgICAg
ICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0oVmVj
dG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKHN0cm5z
dHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxuIiwgcmVxdWVzdC5zaXpl
KCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAgICAg
ICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAgICAg
ICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiAx
MDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8MTAwPigneCcp
CisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRl
bXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tX
ZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxv
YWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgfTsKKyAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBbJl0o
V0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOworICAgICAgICBzZXJ2ZXJDb25uZWN0aW9uLT50ZXJtaW5hdGUoKTsK
KyAgICB9OworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRh
OworICAgIGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJv
ciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9y
LmNvZGUsIE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICByZXRhaW5l
ZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvd25s
b2FkRmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4o
V0tEb3dubG9hZCAqKSB7CisgICAgICAgIGRvd25sb2FkRmluaXNoZWQgPSB0cnVlOworICAgIH07
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICB3aGls
ZSAoIXJldGFpbmVkUmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAg
ICAKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxl
RXhpc3RzQXRQYXRoOmV4cGVjdGVkRG93bmxvYWRGaWxlLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFM
U0UoZG93bmxvYWRGaW5pc2hlZCk7CisgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVz
dW1lRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG93bmxvYWRGaW5pc2hlZCk7CisgICAgY2hlY2tG
aWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8MTAwPigneCcpKTsK
KworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKKyNlbmRpZgorCit2b2lkIHRlc3RSZXN1
bWVBZnRlck11dGF0aW5nRGlzayhOU1VSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QsIE5TVVJMICpl
eHBlY3RlZERvd25sb2FkRmlsZSwgdm9pZChebXV0YXRlRmlsZSkodm9pZCkpCit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2Vi
Vmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWlu
UHRyPFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25S
ZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25s
b2FkID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7Cisg
ICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3du
bG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBs
ZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
ZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0
ZSk7CisgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gbmlsOworCisgICAgX19ibG9jayBSZXRh
aW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVkRG93bmxvYWQg
Y2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVkUmVzdW1lRGF0
YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVkUmVzdW1lRGF0
YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgbXV0
YXRlRmlsZSgpOworCisgICAgX19ibG9jayBib29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IHJlc3VtZURvd25sb2FkRnJvbVJlc3VtZURhdGE6cmV0YWluZWRSZXN1bWVEYXRhLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWRE
aWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisgICAg
Y2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9u
UmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJl
Y2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlv
biwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBS
ZXN1bWVXaXRob3V0SW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIo
W2Nvbm5lY3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlv
bikgbXV0YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAg
ICAgY2FzZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1d
KFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VT
dHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250
ZW50LUxlbmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNw
b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAg
ICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUw
MDA+KCdhJykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisjaWYgIVVTRShMRUdB
Q1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAgICAgICAgICAgICAvLyBNb2phdmUgQ0ZOZXR3
b3JrIHNlbmRzIGEgcmFuZ2UgcmVxdWVzdCB3aGVuIHJlc3VtaW5nIGEgZG93bmxvYWQgYWZ0ZXIg
cmVtb3ZpbmcgYWxyZWFkeS1kb3dubG9hZGVkIGRhdGEuCisgICAgICAgICAgICAgICAgRVhQRUNU
X0ZBTFNFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZSIsIHJlcXVlc3Quc2l6ZSgpKSk7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKKyAg
ICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAgICAgICAgICAg
ICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3Ro
OiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAg
ICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ3gnKQorICAgICAgICAgICAgICAgICkpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRpbmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVj
dGVkRG93bmxvYWRGaWxlLCBeeworICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAg
ICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0
ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9yXTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgIH0pOworCisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUs
IGxvbmdTdHJpbmc8MTAwMDA+KCd4JykpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdp
dGhFeHRyYUluaXRpYWxEYXRhT25EaXNrKQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKFtjb25u
ZWN0aW9uQ291bnQgPSAwXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11
dGFibGUgeworICAgICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0
b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5n
KAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1M
ZW5ndGg6IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtRGlzcG9zaXRp
b246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiZXhhbXBsZS50eHRcIlxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzw1MDAwPign
YScpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQ
UmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgICAgIEVY
UEVDVF9UUlVFKHN0cm5zdHIocmVxdWVzdC5kYXRhKCksICJSYW5nZTogYnl0ZXM9NTAwMC1cclxu
IiwgcmVxdWVzdC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFr
ZVN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwNiBQYXJ0aWFsIENvbnRl
bnRcclxuIgorICAgICAgICAgICAgICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAg
ICAgICAgICAgICJDb250ZW50LVJhbmdlOiBieXRlcyA1MDAwLTk5OTkvMTAwMDBcclxuIgorICAg
ICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDUwMDBcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8MTAwMDA+KCdk
JykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgfQorICAgIH0pOworICAgIAorICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmls
ZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIHRlc3RSZXN1bWVBZnRlck11dGF0
aW5nRGlzayhzZXJ2ZXIucmVxdWVzdCgpLCBleHBlY3RlZERvd25sb2FkRmlsZSwgXnsKKyAgICAg
ICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CisgICAgICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGVycm9yOiZlcnJv
cl07CisgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW1so
TlNTdHJpbmcgKiltYWtlU3RyaW5nKGxvbmdTdHJpbmc8MzAwMD4oJ2InKSwgbG9uZ1N0cmluZzwz
MDAwPignYycpKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVU
b1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworICAgIH0pOworCisg
ICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsIG1ha2VTdHJpbmcobG9u
Z1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMwMDA+KCdjJyksIGxvbmdTdHJpbmc8NTAw
MD4oJ2QnKSkpOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlc3VtZVdpdGhJbnZhbGlkUmVzdW1l
RGF0YSkKK3sKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXRE
b2VzTm90RXhpc3QoKTsKKyAgICBFWFBFQ1RfVFJVRShbW0AiaW5pdGlhbCBkYXRhIG9uIGRpc2si
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRvVVJMOmV4cGVj
dGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBm
YWxzZTsKKyAgICBAdHJ5IHsKKyAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVz
dW1lRGF0YTpbQCJpbnZhbGlkIHJlc3VtZSBkYXRhIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkg
eworICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH1dOworICAgIH0g
QGNhdGNoIChOU0V4Y2VwdGlvbiAqZSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZS5uYW1l
LCBOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbik7CisgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9
IHRydWU7CisgICAgfQorICAgIEVYUEVDVF9UUlVFKGNhdWdodEV4Y2VwdGlvbik7Cit9CisKK1RF
U1QoV0tEb3dubG9hZCwgUmVzdW1lQ2FudFJlY29ubmVjdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9
IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9
IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3RE
b3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtb
V0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVn
YXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxXS0Rvd25sb2FkPiByZXRh
aW5lZERvd25sb2FkOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgcmV0YWluZWREb3dubG9hZCA9IGRvd25sb2FkOworICAg
ICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7Cisg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAg
ICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKKyAgICB3YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50
cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TRGF0YT4gcmV0YWluZWRSZXN1bWVEYXRhOworICAgIFtyZXRhaW5l
ZERvd25sb2FkIGNhbmNlbDpeKE5TRGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICByZXRhaW5l
ZFJlc3VtZURhdGEgPSByZXN1bWVEYXRhOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWRS
ZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgc2VydmVyLmNh
bmNlbCgpOworICAgIAorICAgIHJldGFpbmVkRG93bmxvYWQgPSBuaWw7CisgICAgW3dlYlZpZXcg
cmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5l
ZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAgICAgIEVYUEVDVF9OVUxMKGRvd25sb2FkLmRlbGVn
YXRlKTsKKyAgICB9XTsKKyAgICB3aGlsZSAoIXJldGFpbmVkRG93bmxvYWQpCisgICAgICAgIFV0
aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICByZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0
ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0Rh
dGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVy
cm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTChyZXN1bWVE
YXRhKTsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUp
OworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNU
KFdLRG93bmxvYWQsIFVua25vd25Db250ZW50TGVuZ3RoKQoreworICAgIEhUVFBTZXJ2ZXIgc2Vy
dmVyKFtdKENvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICBjb25uZWN0aW9uLnJlY2Vp
dmVIVFRQUmVxdWVzdChbPV0oVmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rp
b24uc2VuZChtYWtlU3RyaW5nKCJIVFRQLzEuMSAyMDAgT0tcclxuXHJcbiIsIGxvbmdTdHJpbmc8
NTAwMD4oJ2EnKSkpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWRE
b3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5h
dmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGRvbmUgPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9
IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkV3JpdGVEYXRhID0gXihXS0Rv
d25sb2FkICpkb3dubG9hZCwgaW50NjRfdCBieXRlc1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRl
c1dyaXR0ZW4sIGludDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKGRvd25sb2FkLnByb2dyZXNzLnRvdGFsVW5pdENvdW50LCAtMSk7CisgICAg
ICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQucHJvZ3Jlc3MuY29tcGxldGVkVW5pdENvdW50LCB0
b3RhbEJ5dGVzV3JpdHRlbik7CisgICAgICAgICAgICBpZiAoYnl0ZXNXcml0dGVuICE9IDUwMDAp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0
ZXNXcml0dGVuLCA1MDAwKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0b3RhbEJ5dGVzRXhwZWN0
ZWRUb1dyaXRlLCAtMSk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0
aWw6OnJ1bigmZG9uZSk7CisgICAgY2hlY2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZp
bGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRXcml0ZURhdGEKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBJbnZh
bGlkQXJndW1lbnRzKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0
b3JlbGVhc2VdOworICAgIF9fYmxvY2sgYm9vbCBjYXVnaHRFeGNlcHRpb24gPSBmYWxzZTsKKyAg
ICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJWaWV3
IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNw
b25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQg
KF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEB0cnkgeworICAg
ICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnLyJdKTsKKyAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAq
ZSkgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUsIE5TSW52YWxpZEFy
Z3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgICAgICAgICBjYXVnaHRFeGNlcHRpb24gPSB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2F1
Z2h0RXhjZXB0aW9uKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgIH0pOworfQorCitz
dGF0aWMgSFRUUFNlcnZlciByZWRpcmVjdFNlcnZlcigpCit7CisgICAgcmV0dXJuIHt7CisgICAg
ICAgIHsgIi8iLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9yZWRpcmVjdFRhcmdldCIgfSwgeyAi
Q3VzdG9tLU5hbWUiLCAiQ3VzdG9tLVZhbHVlIiB9fSB9IH0sCisgICAgICAgIHsgIi9yZWRpcmVj
dFRhcmdldCIsIHsgImhpIiB9IH0sCisgICAgfX07Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVk
aXJlY3RBbGxvdykKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIE5TTXV0
YWJsZVVSTFJlcXVlc3QgKnNlcnZlclJlcXVlc3QgPSBbW3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJs
ZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICBzZXJ2ZXJSZXF1ZXN0LkhUVFBCb2R5ID0gW0AiYm9k
eSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgIAorICAgIF9f
YmxvY2sgYm9vbCBmaW5pc2hlZERvd25sb2FkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnRE
b3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93
bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2UgKnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVl
c3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkg
eworICAgICAgICAgICAgRVhQRUNUX05VTEwocmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBX
ZSBwcm9iYWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJM
LmFic29sdXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXND
b2RlLCAzMDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRl
ckZpZWxkc1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVY
UEVDVF9XS19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3Qu
VVJMIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1
dGVTdHJpbmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGly
ZWN0UG9saWN5QWxsb3cpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0
aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU1VSTFJlc3Bv
bnNlICpyZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3Vn
Z2VzdGVkRmlsZW5hbWUsICJyZWRpcmVjdFRhcmdldC50eHQiKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShyZXNwb25zZS5VUkwucGF0aCwgIi9yZWRpcmVjdFRhcmdldCIpOworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwucGF0aCwg
Ii8iKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nLCBzZXJ2ZXJSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyk7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihXS0Rvd25s
b2FkICopIHsKKyAgICAgICAgICAgIGZpbmlzaGVkRG93bmxvYWQgPSB0cnVlOworICAgICAgICB9
OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmluaXNoZWREb3dubG9hZCk7CisKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImhpIik7CisgICAgCisgICAgRVhQ
RUNUX0VRKHNlcnZlci50b3RhbFJlcXVlc3RzKCksIDJ1KTsKKworICAgIGNoZWNrQ2FsbGJhY2tS
ZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRpcmVjdENhbmNl
bCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IHJlZGlyZWN0U2VydmVyKCk7CisgICAgTlNVUkxSZXF1
ZXN0ICpzZXJ2ZXJSZXF1ZXN0ID0gc2VydmVyLnJlcXVlc3QoKTsKKyAgICBhdXRvIGRlbGVnYXRl
ID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmln
YXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGNhbmNlbGxlZCA9
IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uID0gXihXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNl
ICpyZXNwb25zZSwgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0LCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeSkpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19T
VFJFUShyZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShyZXNwb25zZS5zdGF0dXNDb2RlLCAz
MDEpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLmFsbEhlYWRlckZpZWxk
c1tAIkN1c3RvbS1OYW1lIl0sICJDdXN0b20tVmFsdWUiKTsKKyAgICAgICAgICAgIEVYUEVDVF9X
S19TVFJFUShyZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZywgW3NlcnZlclJlcXVlc3QuVVJMIFVS
TEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInJlZGlyZWN0VGFyZ2V0Il0uYWJzb2x1dGVTdHJp
bmcpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5Q2FuY2VsKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJv
ciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7
CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgICAgIEVYUEVD
VF9XS19TVFJFUShlcnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAg
RVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAg
Y2FuY2VsbGVkID0gdHJ1ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmNh
bmNlbGxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3QsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKKyAgICBFWFBFQ1RfRVEoc2VydmVyLnRvdGFsUmVx
dWVzdHMoKSwgMXUpOworfQorCitURVNUKFdLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdEZhaWx1
cmUpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeyB9KTsKKyAgICBOU1VSTFJlcXVlc3QgKnNl
cnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIHNlcnZlci5jYW5jZWwoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBi
b29sIGZhaWxlZCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVl
c3Q6c2VydmVyUmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2Fk
KSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBOU0Vycm9yICpl
cnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
ZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q29ubmVjdFRvSG9zdCk7CisgICAgICAgICAgICBm
YWlsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVk
KTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25s
b2FkLCBEb3dubG9hZFJlcXVlc3Q0MDQpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoeworICAg
ICAgICB7ICIvIiwgeyA0MDQsIHsgfSwgImh0dHAgYm9keSIgfSB9CisgICAgfSk7CisgICAgTlNV
UkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sg
Ym9vbCBkaWRGaW5pc2ggPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdS
ZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpk
b3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAg
ICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQg
KiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIp
KE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25s
b2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNo
ID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1
ZTsKKyAgICAgICAgfTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaCk7CisKKyAg
ICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImh0dHAgYm9keSIpOwor
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gsCisgICAgfSk7
Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgTmV0d29ya1Byb2Nlc3NDcmFzaCkKK3sKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25s
b2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9u
c2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNl
ICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25z
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRl
bGVnYXRlKTsKKyAgICAKKyAgICBfX2Jsb2NrIGJvb2wgdGVybWluYXRlZCA9IGZhbHNlOworICAg
IGRlbGVnYXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJy
b3IsIE5TRGF0YSAqKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4sIE5T
VVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJv
ck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOworICAg
IH07CisgICAgW3dlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF90ZXJtaW5h
dGVOZXR3b3JrUHJvY2Vzc107CisgICAgVXRpbDo6cnVuKCZ0ZXJtaW5hdGVkKTsKKyAgICBjaGVj
a0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5h
dmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1l
RG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2Fk
LCBTdWdnZXN0ZWRGaWxlbmFtZUZyb21Ib3N0KQoreworICAgIEhUVFBTZXJ2ZXIgc2VydmVyKHsK
KyAgICAgICAgeyAiLyIsIHsgImRvd25sb2FkIGNvbnRlbnQiIH0gfQorICAgIH0pOworICAgIE5T
VVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVh
c2VdOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBkZWxlZ2F0
ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdL
TmF2aWdhdGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRv
d25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpyZXNw
b25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmls
ZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2Uuc3VnZ2VzdGVkRmlsZW5hbWUsICIxMjcuMC4wLjEudHh0Iik7CisgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAg
fTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVs
ZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiZG93bmxvYWQgY29udGVudCIpOworICAgIGNoZWNrQ2Fs
bGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdh
dGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNl
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3du
bG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVxdWVzdEhU
VFBCb2R5KQoreworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgX19ibG9j
ayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W1tzZXJ2ZXIucmVxdWVzdCgpIG11dGFibGVDb3B5XSBhdXRvcmVsZWFzZV07CisgICAgcmVxdWVz
dC5IVFRQQm9keSA9IFtAImJvZHkiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnJlcXVlc3QgY29t
cGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1Rf
TlVMTChkb3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuSFRUUEJvZHkpOyAvLyBGSVhNRTogV2UgcHJv
YmFibHkgd2FudCB0byBtYWtlIHRoaXMgbm9uLW51bGwuCisgICAgICAgIGRvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIFV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUGF0
aE11c3RFeGlzdCkKK3sKKyAgICBOU1VSTCAqdGVtcERpciA9IFtOU1VSTCBmaWxlVVJMV2l0aFBh
dGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiRG93bmxvYWRUZXN0Il0gaXNEaXJlY3Rvcnk6WUVTXTsKKyAgICBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDp0ZW1wRGlyIGVycm9yOm5pbF07CisgICAg
TlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gW3RlbXBEaXIgVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiZXhhbXBsZS50eHQiXTsKKworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBh
dXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KworICAgIF9fYmxvY2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0
aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlv
blJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNp
bmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICos
IHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAg
ZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21haW4s
IE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JDYW5ub3RDcmVhdGVGaWxlKTsKKyAgICAgICAgICAgIGZhaWxlZCA9IHRydWU7Cisg
ICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVz
dCgpXTsKKyAgICBVdGlsOjpydW4oJmZhaWxlZCk7CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChk
ZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQs
IEZpbGVNdXN0Tm90RXhpc3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2
ZXIoKTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKKyAgICBfX2Jsb2NrIGF1dG8gcmV0YWluZWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJW
aWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0g
cmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRh
dGEgb24gZGlzayIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRl
VG9VUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKworICAgIF9fYmxv
Y2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICByZXRhaW5lZERlbGVnYXRlLmdldCgpLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQu
ZGVsZWdhdGUgPSByZXRhaW5lZERlbGVnYXRlLmdldCgpOworICAgICAgICByZXRhaW5lZERlbGVn
YXRlLmdldCgpLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
ZG93bmxvYWQsIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25I
YW5kbGVyKShOU1VSTCAqKSkgeworCisgICAgICAgICAgICByZXRhaW5lZERlbGVnYXRlID0gYWRv
cHROUyhbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisKKyAgICAgICAgICAgIHJldGFpbmVk
RGVsZWdhdGUuZ2V0KCkuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJy
b3IuZG9tYWluLCBOU1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgICAgICAgICBFWFBFQ1RfRVEo
ZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgICAg
IGZhaWxlZCA9IHRydWU7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBVdGlsOjpydW4oJmZh
aWxlZCk7CisKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKHJldGFpbmVkRGVsZWdhdGUuZ2V0KCks
IHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBEZXN0aW5hdGlvbk51bGxTdHJpbmcpCit7CisgICAgYXV0
byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tU
ZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOwor
ICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dl
YlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsK
KyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUu
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVz
cG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAgICAgICAgfTsKKyAgICAg
ICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICpl
cnJvciwgTlNEYXRhICopIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21h
aW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JDYW5jZWxsZWQpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAgICAg
ICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVn
YXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKKy8vIE1vamF2ZSBkb3dubG9hZCB0
YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVzdCBldmFs
dWF0aW9uLgorI2lmICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCitURVNUKFdLRG93
bmxvYWQsIENoYWxsZW5nZVN1Y2Nlc3MpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoe3sgIi8i
LCB7ICJkb3dubG9hZCBjb250ZW50IiB9fX0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcyk7
CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVs
ZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUu
ZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGZp
bmlzaGVkID0gdHJ1ZTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZENoYWxsZW5n
ZSA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVu
Z2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVR
KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0
aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFs
IGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0
XSk7CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOwor
ICAgIH07CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4o
JmZpbmlzaGVkKTsKKyAgICBFWFBFQ1RfVFJVRShyZWNlaXZlZENoYWxsZW5nZSk7CisgICAgY2hl
Y2tGaWxlQ29udGVudHMoZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRl
RGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7Cit9Cisj
ZW5kaWYKKworVEVTVChXS0Rvd25sb2FkLCBDaGFsbGVuZ2VGYWlsdXJlKQoreworICAgIEhUVFBT
ZXJ2ZXIgc2VydmVyKHsgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Js
b2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9
IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURh
dGEpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRv
bWFpbik7CisjaWYgVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBN
b2phdmUgZG93bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBz
ZXJ2ZXIgdHJ1c3QgZXZhbHVhdGlvbi4KKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5T
VVJMRXJyb3JTZWN1cmVDb25uZWN0aW9uRmFpbGVkKTsKKyNlbHNlCisgICAgICAgIEVYUEVDVF9F
UShlcnJvci5jb2RlLCBOU1VSTEVycm9yQ2FuY2VsbGVkKTsKKyNlbmRpZgorICAgICAgICBmYWls
ZWQgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdlID0g
ZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
XihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50
aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNV
UkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuaWwp
OworICAgICAgICByZWNlaXZlZENoYWxsZW5nZSA9IHRydWU7CisgICAgfTsKKyAgICBbd2ViVmll
dyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyNpZiAhVVNF
KExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hh
bGxlbmdlKTsKKyNlbmRpZgorICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyNp
ZiAhVVNFKExFR0FDWV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAvLyBNb2phdmUgZG93
bmxvYWQgdGFza3MgZG9uJ3QgY2FsbCBkaWRSZWNlaXZlQ2hhbGxlbmdlIGZvciBzZXJ2ZXIgdHJ1
c3QgZXZhbHVhdGlvbi4KKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsCisjZW5kaWYKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhF
cnJvcgorICAgIH0pOworfQorCit2b2lkIGJsb2JUZXN0KGJvb2wgZG93bmxvYWRGcm9tTmF2aWdh
dGlvbkFjdGlvbiwgc3RkOjppbml0aWFsaXplcl9saXN0PERvd25sb2FkQ2FsbGJhY2s+IGV4cGVj
dGVkQ2FsbGJhY2tzKQoreworICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAi
ZnVuY3Rpb24gZG93bmxvYWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYScpOyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7Igor
ICAgICIgICAgYS5ocmVmID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmRv
d25sb2FkID0gJ2Rvd25sb2FkRmlsZW5hbWUnOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAg
In0iCisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4i
OworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RF
eGlzdCgpOworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWwgYmFzZVVSTDpuaWxdOworICAgIGF1
dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwor
ICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICph
Y3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
KSkgeworICAgICAgICBpZiAoW2FjdGlvbi5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0Vx
dWFsVG9TdHJpbmc6QCJhYm91dDpibGFuayJdKQorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKGFj
dGlvbi5zaG91bGRQZXJmb3JtRG93bmxvYWQpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoYWN0aW9uLnNob3VsZFBlcmZvcm1Eb3dubG9hZCk7CisgICAg
ICAgICAgICBpZiAoZG93bmxvYWRGcm9tTmF2aWdhdGlvbkFjdGlvbikgeworICAgICAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAg
IH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkID0gXihX
S1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIFdLRG93bmxvYWQgKmRvd25s
b2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShhY3Rpb24ucmVxdWVzdC5VUkwuc2NoZW1l
LCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1
ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVs
ZWdhdGU7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVE
b3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwg
V0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShk
b3dubG9hZC5vcmlnaW5hbFJlcXVlc3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURl
c3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICpy
ZXNwb25zZSwgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5VUkwu
c2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoc3VnZ2VzdGVkRmlsZW5h
bWUsICJkb3dubG9hZEZpbGVuYW1lIik7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVj
dGVkRG93bmxvYWRGaWxlKTsKKyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7
CisgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxvYWQgKikgeworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBj
aGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgIjEyMyIpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIGV4cGVjdGVkQ2FsbGJhY2tzKTsKK30KKworVEVTVChX
S0Rvd25sb2FkLCBCbG9iUmVzcG9uc2UpCit7CisgICAgYmxvYlRlc3QoZmFsc2UsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVz
cG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVz
dGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAgfSk7CisKKyAgICBibG9iVGVzdCh0
cnVlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxv
YWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNoCisgICAg
fSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQmxvYlJlc3BvbnNlTm9GaWxlbmFtZSkKK3sKKyAg
ICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD4iCisgICAgImZ1bmN0aW9uIGRvd25sb2FkQmxv
YigpIHsiCisgICAgIiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsiCisg
ICAgIiAgICB2YXIgYiA9IG5ldyBCbG9iKFsxLDIsM10pOyIKKyAgICAiICAgIGEuaHJlZiA9IFVS
TC5jcmVhdGVPYmplY3RVUkwoYik7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAifSIKKyAg
ICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0
cHM6Ly93ZWJraXQub3JnLyJdXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gPSBeKFdLTmF2aWdhdGlvbkFjdGlvbiAqYWN0aW9uLCB2b2lkICheY29tcGxldGlvbkhhbmRs
ZXIpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKGFj
dGlvbi5zaG91bGRQZXJmb3JtRG93bmxvYWQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJlc3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9z
dCwgIndlYmtpdC5vcmciKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwK
KyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24KKyAgICB9KTsKK30K
KworVEVTVChXS0Rvd25sb2FkLCBTdWJmcmFtZU9yaWdpbmF0b3IpCit7CisgICAgY29uc3QgY2hh
ciogZ3JhbmRjaGlsZEZyYW1lSFRNTCA9ICI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxv
YWRCbG9iKCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScp
OyIKKyAgICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVm
ID0gVVJMLmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9
IgorICAgICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsK
KyAgICBIVFRQU2VydmVyIGdyYW5kY2hpbGRGcmFtZVNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7
IGdyYW5kY2hpbGRGcmFtZUhUTUwgfSB9CisgICAgfSk7CisgICAgSFRUUFNlcnZlciBjaGlsZEZy
YW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCI8aWZyYW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGdyYW5kY2hp
bGRGcmFtZVNlcnZlci5wb3J0KCldIH0gfQorICAgIH0pOworICAgIE5TVVJMUmVxdWVzdCAqZ3Jh
bmRjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5yZXF1ZXN0
KCk7CisgICAgTlNVUkxSZXF1ZXN0ICpjaGlsZEZyYW1lU2VydmVyUmVxdWVzdCA9IGNoaWxkRnJh
bWVTZXJ2ZXIucmVxdWVzdCgpOworICAgIHVpbnQxNl90IGdyYW5kY2hpbGRGcmFtZVNlcnZlclBv
cnQgPSBncmFuZGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpOworCisgICAgTlNTdHJpbmcgKm1haW5I
VE1MID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8aWZyYW1lIHNyYz0naHR0cDovLzEy
Ny4wLjAuMTolZC8nPjwvaWZyYW1lPiIsIGNoaWxkRnJhbWVTZXJ2ZXIucG9ydCgpXTsKKworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIFt3ZWJW
aWV3IGxvYWRIVE1MU3RyaW5nOm1haW5IVE1MIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZy8iXV07CisKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93
bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIGRlbGVnYXRlLmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZSA9IF4oV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCB2b2lkICheY29t
cGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSkgeworICAgICAgICBp
ZiAoW3Jlc3BvbnNlLnJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6
QCJodHRwOi8vd2Via2l0Lm9yZy8iXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNl
LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Y2hpbGRGcmFtZVNlcnZlclJlcXVl
c3QuVVJMLmFic29sdXRlU3RyaW5nXQorICAgICAgICAgICAgfHwgW3Jlc3BvbnNlLnJlc3BvbnNl
LlVSTC5hYnNvbHV0ZVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6Z3JhbmRjaGlsZEZyYW1lU2VydmVy
UmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmddKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxv
YWQpOworICAgIH07CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIFdL
RG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNwb25zZS5y
ZXNwb25zZS5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVz
cG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLmhvc3QsICIxMjcuMC4wLjEiKTsKKyAgICAgICAg
RVhQRUNUX0VRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5wb3J0LCBncmFuZGNoaWxk
RnJhbWVTZXJ2ZXJQb3J0KTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
KyAgICB9OworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGVj
aWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNl
LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRG
aWxlbmFtZSwgIlVua25vd24iKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOworICAgIGNo
ZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFj
dGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
CisgICAgfSk7Cit9CisKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
SU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
b3dubG9hZFByb2dyZXNzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Eb3dubG9hZFByb2dyZXNzLm1tCmluZGV4IGYwMDNhYzI4Y2UxZTg5NjdmNWRhYjBkODg4Y2M3
ODY4NzUxMTY1NjkuLjFjOTI1NjY0YzBlNTcxNTZjZjM5OGUzNmFiMmRiYmRlMzhkNWVkNmIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWRQ
cm9ncmVzcy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkUHJvZ3Jlc3MubW0KQEAgLTMyNiw3ICszMjYsNyBAQCBzdGF0aWMgdm9pZCogcHJvZ3Jl
c3NPYnNlcnZpbmdDb250ZXh0ID0gJnByb2dyZXNzT2JzZXJ2aW5nQ29udGV4dDsKIC0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFu
ZGxlcgogewogICAgIGlmIChtX3N0YXJ0VHlwZSA9PSBEb3dubG9hZFN0YXJ0VHlwZTo6Q29udmVy
dExvYWRUb0Rvd25sb2FkKQotICAgICAgICBkZWNpc2lvbkhhbmRsZXIoX1dLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQpOworICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZCk7CiAgICAgZWxzZQogICAgICAgICBkZWNp
c2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclBy
aXZhY3kubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJv
d3NlclByaXZhY3kubW0KaW5kZXggOTc1ODdkNjUwNzIzZDAyZTNlYWVjZmJiNTE0MzhhOTllNDc5
MjM4MS4uMmNmZmM5YTcwOWY1NTBkZmExZGQ1YzMxZGIyMjk4MmI0YWUwZDFjNiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2
YWN5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQpAQCAtMTM3Miw2ICsxMzcyLDggQEAgVEVTVChJbkFwcEJyb3dzZXJQ
cml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKICAgICAg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIg
YXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxk
LmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwogICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKCEhZXJyb3IpOworICAgICAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiRVJST1IgJUAiLCBlcnJvcik7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJh
bWUpCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6
QCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3Qt
YWJvdXQtYmxhbmstc3ViZnJhbWUiXSk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dh
cE9uTmF2aWdhdGlvbi5tbQppbmRleCBhN2Q0ZTUzYTM1MTc5MjQ1ZDFlOTA0MGMzZWE1NmUzYTA4
MjIzZmNkLi5iOTEyZDE2NWI3YWRjOTExYTg0NDFmODJlMmNiNDQ1MGQ2MDgyZmI5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25O
YXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgUmV0
YWluUHRyPE5TVVJMPiBjbGllbnRSZWRpcmVjdERlc3RpbmF0aW9uVVJMOwogCiAtICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3Bv
bnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRs
ZXIKIHsKLSAgICBkZWNpc2lvbkhhbmRsZXIoc2hvdWxkQ29udmVydFRvRG93bmxvYWQgPyBfV0tO
YXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJlc3Bv
bnNlUG9saWN5QWxsb3cpOworICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3du
bG9hZCA/IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWQgOiBXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeUFsbG93KTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjoo
V0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbQppbmRleCBhZTJiYzdmZTY2NTM0ZDY3OWE0OGZi
NDFmNjEzZjNlMDhhMDgwMWJmLi4xZjk3ZDI5NDIyMDJlODBjZGYzMDYwMGY1NjViZTRiMGUxMzJl
ZjA4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1
aWNrTG9vay5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1F1
aWNrTG9vay5tbQpAQCAtMzY0LDcgKzM2NCw3IEBAIFRFU1QoUXVpY2tMb29rLCBDYW5jZWxSZXNw
b25zZUFmdGVyTG9hZGluZ1ByZXZpZXcpCiAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiB7Ci0gICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tRdWlja0xvb2tEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNE
b2N1bWVudFVSTCByZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNv
bWVEb3dubG9hZF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbUXVpY2tMb29rRGVs
ZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBhZ2VzRG9jdW1lbnRVUkwgcmVz
cG9uc2VQb2xpY3k6V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZF0pOwogICAgIHJ1
blRlc3REZWNpZGVCZWZvcmVMb2FkaW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOnBhZ2VzRG9jdW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJy
b3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlv
bkVycm9yXS5jb2RlKTsKICAgICBFWFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmln
YXRpb25dKTsKQEAgLTM3OSw3ICszNzksNyBAQCBURVNUKFF1aWNrTG9vaywgRG93bmxvYWRSZXNw
b25zZUJlZm9yZUxvYWRpbmdQcmV2aWV3KQogI2lmIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPiAxMzA0MDAKIFRFU1QoUXVpY2tMb29rLCBEb3dubG9h
ZFJlc3BvbnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpw
YWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1FVHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVU
eXBlIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25s
b2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCBwcmV2aWV3TUlN
RVR5cGU6cGFnZXNEb2N1bWVudFByZXZpZXdNSU1FVHlwZSByZXNwb25zZVBvbGljeTpXS05hdmln
YXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7CiAgICAgcnVuVGVzdERlY2lkZUFmdGVyTG9h
ZGluZyhkZWxlZ2F0ZS5nZXQoKSwgW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpwYWdlc0Rv
Y3VtZW50VVJMXSk7CiAgICAgRVhQRUNUX0VRKFdlYktpdEVycm9yRnJhbWVMb2FkSW50ZXJydXB0
ZWRCeVBvbGljeUNoYW5nZSwgW2RlbGVnYXRlIG5hdmlnYXRpb25FcnJvcl0uY29kZSk7CiAgICAg
RVhQRUNUX0ZBTFNFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hOYXZpZ2F0aW9uXSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmgKaW5kZXggN2FhZDIz
YzNlYzViNDIxNzUxZWRjODQwMGMwYTBlYTYwYjhjNDg1Yi4uNDM4ZWJkMDFhODFhNWI3ODYyNzI2
YzkzYzA2YTg3ODMyYWM1ODQxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdERvd25sb2FkRGVsZWdhdGUuaApAQCAtMjQsMTcgKzI0LDM1IEBACiAgKi8KIAogI2ltcG9y
dCA8V2ViS2l0L1dlYktpdC5oPgotI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUu
aD4KIAotQGludGVyZmFjZSBUZXN0RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25s
b2FkRGVsZWdhdGU+Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2Fk
RGlkU3RhcnQpKF9XS0Rvd25sb2FkICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZv
aWQgKF5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwg
Kik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25z
ZSkoX1dLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWlu
dDY0X3QsIHVpbnQ2NF90KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVj
aWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3Ry
aW5nICosIHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOwotQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9h
ZCAqLCBOU0Vycm9yICopOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3du
bG9hZERpZENhbmNlbCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29w
eSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQg
KiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGluYXRpb24pKF9XS0Rvd25sb2Fk
ICosIE5TU3RyaW5nICopOworZW51bSBjbGFzcyBEb3dubG9hZENhbGxiYWNrIDogdWludDhfdCB7
CisgICAgV2lsbFJlZGlyZWN0LAorICAgIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgIERl
Y2lkZURlc3RpbmF0aW9uLAorICAgIERpZFdyaXRlRGF0YSwKKyAgICBEaWRGaW5pc2gsCisgICAg
RGlkRmFpbFdpdGhFcnJvciwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQsCisg
ICAgTmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgTmF2aWdhdGlvbkFjdGlv
biwKKyAgICBOYXZpZ2F0aW9uUmVzcG9uc2UsCit9OworCitAaW50ZXJmYWNlIFRlc3REb3dubG9h
ZERlbGVnYXRlIDogTlNPYmplY3Q8V0tEb3dubG9hZERlbGVnYXRlLCBXS05hdmlnYXRpb25EZWxl
Z2F0ZT4KKworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF53aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbikoV0tEb3dubG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqLCBOU1VSTFJl
cXVlc3QgKiwgdm9pZCAoXikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSk7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkoV0tEb3dubG9hZCAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4p
KE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikp
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0aW5hdGlvblVz
aW5nUmVzcG9uc2UpKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2
b2lkICheKShOU1VSTCAqKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFdyaXRlRGF0YSkoV0tEb3dubG9hZCAqLCBpbnQ2NF90LCBpbnQ2NF90LCBpbnQ2NF90KTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKFdLRG93
bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRo
RXJyb3IpKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqLCBOU0RhdGEgKik7CisKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2Fk
KShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uQWN0aW9uICosIFdLRG93bmxvYWQgKik7CitAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29t
ZURvd25sb2FkKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbikoV0tOYXZpZ2F0aW9uQWN0aW9uICosIHZvaWQgKF4pKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSkpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpKFdLTmF2aWdhdGlvblJlc3BvbnNlICos
IHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSk7CisKKy0gKHZvaWQpd2FpdEZv
ckRvd25sb2FkRGlkRmluaXNoOworLSAoVmVjdG9yPERvd25sb2FkQ2FsbGJhY2s+KXRha2VDYWxs
YmFja1JlY29yZDsKKwogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUubW0KaW5kZXggMWRiNWNkODExYWI2ZjVkOTliNDEzZTZkMjFhYWEz
MDJhODAxZmRkMy4uZThkYTk4YTUzMDRlY2I0NjJkZmIyODI4NDAwMDE1OTgzNjI4MWIwOSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
CkBAIC0yNiw2OCArMjYsMTEzIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RE
b3dubG9hZERlbGVnYXRlLmgiCiAKLUBpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0
ZQorI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgogCi0tICh2
b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCi17Ci0gICAgaWYg
KF9kb3dubG9hZERpZFN0YXJ0KQotICAgICAgICBfZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7
CitAaW1wbGVtZW50YXRpb24gVGVzdERvd25sb2FkRGVsZWdhdGUgeworICAgIFZlY3RvcjxEb3du
bG9hZENhbGxiYWNrPiBfY2FsbGJhY2tSZWNvcmQ7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihf
V0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOihOU1VS
TCAqKXVybAorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOihOU0hUVFBVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS0Rv
d25sb2FkUmVkaXJlY3RQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGlmIChfZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwpCi0gICAgICAgIF9kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChkb3dubG9hZCwgdXJsKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25s
b2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCk7CisKKyAgICBBU1NFUlQoX3dpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKTsKKyAgICBfd2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oZG93bmxvYWQs
IHJlc3BvbnNlLCByZXF1ZXN0LCBkZWNpc2lvbkhhbmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZQorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2Fk
IGRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNl
IHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVy
CiB7Ci0gICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIF9kaWRSZWNlaXZlUmVz
cG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERv
d25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uKTsKKworICAgIEFTU0VSVChfZGVjaWRl
RGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlKTsKKyAgICBfZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jl
c3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSwgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbXBsZXRpb25I
YW5kbGVyKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQg
ZGlkV3JpdGVEYXRhOih1aW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVp
bnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2
NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxv
YWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3QpYnl0ZXNXcml0dGVuIHRvdGFsQnl0
ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQogeworICAgIC8vIGRpZFdy
aXRlRGF0YSBpcyBjYWxsZWQgYSBub25kZXRlcm1pbmlzdGljIG51bWJlciBvZiB0aW1lcywgc28g
b25seSByZWNvcmQgb25jZSBpbiBhIHNlcmllcy4KKyAgICBpZiAoX2NhbGxiYWNrUmVjb3JkLmlz
RW1wdHkoKSB8fCBfY2FsbGJhY2tSZWNvcmQubGFzdCgpICE9IERvd25sb2FkQ2FsbGJhY2s6OkRp
ZFdyaXRlRGF0YSkKKyAgICAgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxi
YWNrOjpEaWRXcml0ZURhdGEpOworCiAgICAgaWYgKF9kaWRXcml0ZURhdGEpCiAgICAgICAgIF9k
aWRXcml0ZURhdGEoZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRv
dGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZToo
TlNTdHJpbmcgKilmaWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxv
d092ZXJ3cml0ZSwgTlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgorLSAo
dm9pZClkb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bv
c2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIEFTU0VS
VChfZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgIF9kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBs
ZXRpb25IYW5kbGVyKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJh
Y2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKTsKKworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGRvd25sb2FkLCBjaGFsbGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBlbHNl
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VQZXJm
b3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZEZpbmlz
aDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZClkb3dubG9hZERpZEZpbmlzaDooV0tE
b3dubG9hZCAqKWRvd25sb2FkCiB7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9h
ZENhbGxiYWNrOjpEaWRGaW5pc2gpOworCiAgICAgaWYgKF9kb3dubG9hZERpZEZpbmlzaCkKICAg
ICAgICAgX2Rvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKIH0KIAotLSAodm9pZClfZG93bmxv
YWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhFcnJvcjooTlNFcnJvciAqKWVy
cm9yCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdpdGhF
cnJvcjooTlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEKIHsK
KyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRo
RXJyb3IpOworCiAgICAgaWYgKF9kaWRGYWlsV2l0aEVycm9yKQotICAgICAgICBfZGlkRmFpbFdp
dGhFcnJvcihkb3dubG9hZCwgZXJyb3IpOworICAgICAgICBfZGlkRmFpbFdpdGhFcnJvcihkb3du
bG9hZCwgZXJyb3IsIHJlc3VtZURhdGEpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZERpZENhbmNl
bDooX1dLRG93bmxvYWQgKilkb3dubG9hZAorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25B
Y3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZAogewotICAgIGlm
IChfZG93bmxvYWREaWRDYW5jZWwpCi0gICAgICAgIF9kb3dubG9hZERpZENhbmNlbChkb3dubG9h
ZCk7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uQmVjYW1lRG93bmxvYWQpOworCisgICAgaWYgKF9uYXZpZ2F0aW9uQWN0aW9uRGlk
QmVjb21lRG93bmxvYWQpCisgICAgICAgIF9uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxv
YWQod2ViVmlldywgbmF2aWdhdGlvbkFjdGlvbiwgZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9k
b3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3Bv
bnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRpZEJlY29tZURvd25sb2FkOihXS0Rvd25sb2FkICop
ZG93bmxvYWQKIHsKLSAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
LSAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShkb3dubG9hZCwgY2hh
bGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgX2NhbGxiYWNrUmVjb3JkLmFwcGVuZChE
b3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCk7CisKKyAg
ICBpZiAoX25hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICBfbmF2
aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQod2ViVmlldywgbmF2aWdhdGlvblJlc3Bv
bnNlLCBkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNl
ICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jYWxsYmFja1JlY29y
ZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlKTsKKworICAgIGlm
IChfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQorICAgICAgICBfZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKG5hdmlnYXRpb25SZXNwb25zZSwgZGVjaXNpb25IYW5k
bGVyKTsKICAgICBlbHNlCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOworICAgICAgICBkZWNpc2lv
bkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZCk7Cit9CisKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIK
K3sKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb24pOworCisgICAgaWYgKF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQor
ICAgICAgICBfZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihuYXZpZ2F0aW9uQWN0aW9u
LCBkZWNpc2lvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKK30KKworLSAodm9pZCl3YWl0Rm9yRG93bmxv
YWREaWRGaW5pc2gKK3sKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBB
U1NFUlQoIV9kb3dubG9hZERpZEZpbmlzaCk7CisgICAgX2Rvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgIH07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAq
KWRlc3RpbmF0aW9uCistIChWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxiYWNrUmVj
b3JkCiB7Ci0gICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgX2RpZENyZWF0
ZURlc3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7CisgICAgcmV0dXJuIHN0ZDo6ZXhj
aGFuZ2UoX2NhbGxiYWNrUmVjb3JkLCB7IH0pOwogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDUxMjQ2MWVhMTJjOWNhZGE2MTVkMWUyYzRhNTczMWYxZDE1ZDEzZAotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVs
ZWdhdGUuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dl
YktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Rvd25sb2FkRGVsZWdhdGUuaD4KKworQGludGVy
ZmFjZSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSA6IE5TT2JqZWN0PF9XS0Rvd25sb2FkRGVs
ZWdhdGU+CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlkU3Rh
cnQpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkoX1dLRG93bmxvYWQgKiwgTlNVUkwgKik7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2VpdmVSZXNwb25zZSkoX1dL
RG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkV3JpdGVEYXRhKShfV0tEb3dubG9hZCAqLCB1aW50NjRfdCwgdWludDY0X3Qs
IHVpbnQ2NF90KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpKF9XS0Rvd25sb2FkICosIE5TU3RyaW5nICos
IHZvaWQgKF4pKEJPT0wsIE5TU3RyaW5nICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZG93bmxvYWREaWRGaW5pc2gpKF9XS0Rvd25sb2FkICopOworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGYWlsV2l0aEVycm9yKShfV0tEb3dubG9hZCAqLCBO
U0Vycm9yICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERp
ZENhbmNlbCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoX1dLRG93bmxvYWQgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSB2b2lkICheZGlkQ3JlYXRlRGVzdGluYXRpb24pKF9XS0Rvd25sb2FkICosIE5T
U3RyaW5nICopOworQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODc3YTkyNGJkZmU2OTVl
MGI3OTE1Yjk1ZWZlOWYwNWRiZjFjYTA4MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUuaCIKKworQGltcGxlbWVudGF0aW9uIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlCisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93
bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkU3RhcnQpCisgICAgICAgIF9kb3dubG9hZERp
ZFN0YXJ0KGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICop
ZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJMICopdXJsCit7Cisg
ICAgaWYgKF9kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKKyAgICAgICAgX2RpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGRvd25sb2FkLCB1cmwpOworfQorCistICh2b2lkKV9kb3du
bG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZXNwb25zZQoreworICAgIGlmIChfZGlkUmVjZWl2ZVJlc3BvbnNlKQorICAgICAg
ICBfZGlkUmVjZWl2ZVJlc3BvbnNlKGRvd25sb2FkLCByZXNwb25zZSk7Cit9CisKKy0gKHZvaWQp
X2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YToodWludDY0X3Qp
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOih1aW50NjRfdCl0b3RhbEJ5dGVzV3JpdHRl
biB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOih1aW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlCit7CisgICAgaWYgKF9kaWRXcml0ZURhdGEpCisgICAgICAgIF9kaWRXcml0ZURhdGEo
ZG93bmxvYWQsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGUpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3du
bG9hZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilm
aWxlbmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCBhbGxvd092ZXJ3cml0ZSwg
TlNTdHJpbmcgKmRlc3RpbmF0aW9uKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEFTU0VSVChf
ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIF9kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShkb3dubG9hZCwgZmlsZW5hbWUsIGNvbXBsZXRp
b25IYW5kbGVyKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRGaW5pc2g6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQorICAgICAgICBfZG93
bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAg
ICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25s
b2FkLCBlcnJvcik7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2VsOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkCit7CisgICAgaWYgKF9kb3dubG9hZERpZENhbmNlbCkKKyAgICAgICAgX2Rv
d25sb2FkRGlkQ2FuY2VsKGRvd25sb2FkKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rv
d25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVu
dGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcsIG5pbCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZENyZWF0ZURlc3RpbmF0aW9uOihOU1N0cmluZyAqKWRlc3RpbmF0aW9u
Cit7CisgICAgaWYgKF9kaWRDcmVhdGVEZXN0aW5hdGlvbikKKyAgICAgICAgX2RpZENyZWF0ZURl
c3RpbmF0aW9uKGRvd25sb2FkLCBkZXN0aW5hdGlvbik7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggMGM2YzY1MTQxN2MyMTZiZjc3MzBh
ZGE3N2I3MTA2ZDkwZmJhMjYzMy4uNTNjNTEyMTFiZjdjOTcwZjU2N2UxMDlmYmY3Mjc3N2I4Y2Ri
YjNlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTQw
LDYgKzQwLDggQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5o
PgogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0
L1dLQ3JlZGVudGlhbC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25sb2FkQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRSZWYuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tGcmFt
ZUhhbmRsZVJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1lSW5mb1JlZi5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS0hUVFBDb29raWVTdG9yZVJlZi5oPgpAQCAtODAsNiArODIsNyBAQAogI2lu
Y2x1ZGUgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuaD4K
KyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgpAQCAtMTMyLDYgKzEzNSwzMyBAQCBzdGF0aWMgV0tTdHJpbmdSZWYgY29weVNpZ25l
ZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqKQogICAg
IHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiTUlIRk1IRXdYREFOQmdrcWhr
aUc5dzBCQVFFRkFBTkxBREJJQWtFQW5YMFRJTEpyT01VdWUlMkJQdHdCUkU2WGZWJTBBV3RLUWJz
c2h4azVaaGNVd2N3eXZjbklxOWI4MlFoSmRvQUNkRDM0cnFmQ0FJTkQ0NmZYS1FVbmIwbXZLelFJ
RCUwQUFRQUJGaEZOYjNwcGJHeGhTWE5OZVVaeWFXVnVaREFOQmdrcWhraUc5dzBCQVFRRkFBTkJB
QUt2MkVleDJuJTJGUyUwQXIlMkY3aUpOcm9XbFN6U010VGlRVEVCJTJCQURXSEdqOXUxeHJVck9p
bHElMkZvMmN1UXhJZlpjTlprWUFrV1A0RHVicVclMEFpMCUyRiUyRnJnQnZtY28lM0QiKTsKIH0K
IAordm9pZCBUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVk
KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
c3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZv
KSktPmRvd25sb2FkRGlkU3RhcnQoZG93bmxvYWQpOworCisgICAgV0tEb3dubG9hZENsaWVudFYw
IGNsaWVudCB7CisgICAgICAgIHsgMCwgY2xpZW50SW5mbyB9LAorICAgICAgICBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTCwKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCisgICAgICAgIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKKyAgICAg
ICAgbnVsbHB0ciwgLy8gZGlkV3JpdGVEYXRhCisgICAgICAgIFRlc3RDb250cm9sbGVyOjpkb3du
bG9hZERpZEZpbmlzaCwKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFpbAor
ICAgIH07CisKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2Up
OworfQorCit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93
bmxvYWQoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgbmF2aWdhdGlvbkRpZEJlY29t
ZURvd25sb2FkU2hhcmVkKGRvd25sb2FkLCBjbGllbnRJbmZvKTsKK30KKwordm9pZCBUZXN0Q29u
dHJvbGxlcjo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV0tQYWdlUmVmLCBX
S05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3sKKyAgICBuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQo
ZG93bmxvYWQsIGNsaWVudEluZm8pOworfQorCiBBc3luY1Rhc2sqIEFzeW5jVGFzazo6bV9jdXJy
ZW50VGFzazsKIAogYm9vbCBBc3luY1Rhc2s6OnJ1bigpCkBAIC0zMzYsNzIgKzM2Niw3MiBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgV0tQYWdlVUlDbGllbnRWOCBvdGhlclBhZ2VV
SUNsaWVudCA9IHsKICAgICAgICAgeyA4LCB2aWV3IH0sCi0gICAgICAgIDAsIC8vIGNyZWF0ZU5l
d1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAotICAgICAgICAwLCAvLyBzaG93UGFnZQorICAg
ICAgICBudWxscHRyLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAg
ICAgICAgbnVsbHB0ciwgLy8gc2hvd1BhZ2UKICAgICAgICAgY2xvc2VPdGhlclBhZ2UsCi0gICAg
ICAgIDAsIC8vIHRha2VGb2N1cworICAgICAgICBudWxscHRyLCAvLyB0YWtlRm9jdXMKICAgICAg
ICAgZm9jdXMsCiAgICAgICAgIHVuZm9jdXMsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c1RleHQK
LSAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMAotICAgICAgICAwLCAvLyBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAgICAgICAw
LCAvLyBkaWROb3RIYW5kbGVLZXlFdmVudAotICAgICAgICAwLCAvLyBkaWROb3RIYW5kbGVXaGVl
bEV2ZW50Ci0gICAgICAgIDAsIC8vIHRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBz
ZXRUb29sYmFyc0FyZVZpc2libGUKLSAgICAgICAgMCwgLy8gbWVudUJhcklzVmlzaWJsZQotICAg
ICAgICAwLCAvLyBzZXRNZW51QmFySXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHN0YXR1c0Jhcklz
VmlzaWJsZQotICAgICAgICAwLCAvLyBzZXRTdGF0dXNCYXJJc1Zpc2libGUKLSAgICAgICAgMCwg
Ly8gaXNSZXNpemFibGUKLSAgICAgICAgMCwgLy8gc2V0SXNSZXNpemFibGUKKyAgICAgICAgbnVs
bHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAg
ICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAK
KyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdEFsZXJ0X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0U3RhdHVzVGV4dAorICAgICAgICBudWxscHRy
LCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCisgICAg
ICAgIG51bGxwdHIsIC8vIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxw
dHIsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50CisgICAgICAgIG51bGxwdHIsIC8vIGRpZE5vdEhh
bmRsZVdoZWVsRXZlbnQKKyAgICAgICAgbnVsbHB0ciwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCisg
ICAgICAgIG51bGxwdHIsIC8vIHNldFRvb2xiYXJzQXJlVmlzaWJsZQorICAgICAgICBudWxscHRy
LCAvLyBtZW51QmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldE1lbnVCYXJJc1Zp
c2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIG51
bGxwdHIsIC8vIHNldFN0YXR1c0JhcklzVmlzaWJsZQorICAgICAgICBudWxscHRyLCAvLyBpc1Jl
c2l6YWJsZQorICAgICAgICBudWxscHRyLCAvLyBzZXRJc1Jlc2l6YWJsZQogICAgICAgICBnZXRX
aW5kb3dGcmFtZSwKICAgICAgICAgc2V0V2luZG93RnJhbWUsCiAgICAgICAgIHJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCwKLSAgICAgICAgMCwgLy8gZGlkRHJhdwotICAgICAgICAwLCAvLyBw
YWdlRGlkU2Nyb2xsCi0gICAgICAgIDAsIC8vIGV4Y2VlZGVkRGF0YWJhc2VRdW90YQorICAgICAg
ICBudWxscHRyLCAvLyBkaWREcmF3CisgICAgICAgIG51bGxwdHIsIC8vIHBhZ2VEaWRTY3JvbGwK
KyAgICAgICAgbnVsbHB0ciwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCiAgICAgICAgIHJ1bk9w
ZW5QYW5lbCwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdCwKLSAgICAgICAgMCwgLy8gaGVhZGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGZvb3Rlckhl
aWdodAotICAgICAgICAwLCAvLyBkcmF3SGVhZGVyCi0gICAgICAgIDAsIC8vIGRyYXdGb290ZXIK
KyAgICAgICAgbnVsbHB0ciwgLy8gaGVhZGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGZv
b3RlckhlaWdodAorICAgICAgICBudWxscHRyLCAvLyBkcmF3SGVhZGVyCisgICAgICAgIG51bGxw
dHIsIC8vIGRyYXdGb290ZXIKICAgICAgICAgcHJpbnRGcmFtZSwKICAgICAgICAgcnVuTW9kYWws
Ci0gICAgICAgIDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1haW5GcmFtZQotICAgICAg
ICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyCi0gICAgICAgIDAsIC8vIHNo
b3VsZEludGVycnVwdEphdmFTY3JpcHQKLSAgICAgICAgMCwgLy8gY3JlYXRlTmV3UGFnZV9kZXBy
ZWNhdGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIDAsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
Ci0gICAgICAgIDAsIC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0Ci0gICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNh
dGVkRm9yVXNlV2l0aFYxCi0gICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAw
LCAvLyBoaWRlQ29sb3JQaWNrZXIKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkCi0gICAgICAgIDAsIC8vIHBpbm5lZFN0YXRlRGlkQ2hhbmdlCi0gICAgICAgIDAs
IC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAv
LyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVzcwotICAgICAgICAwLCAvLyBkaWRDYW5jZWxUcmFj
a2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCi0gICAgICAgIDAsIC8vIGlzUGxheWluZ0F1ZGlv
RGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZvck1h
aW5GcmFtZQorICAgICAgICBudWxscHRyLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9s
ZGVyCisgICAgICAgIG51bGxwdHIsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKKyAgICAg
ICAgbnVsbHB0ciwgLy8gY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYxCisgICAg
ICAgIG51bGxwdHIsIC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50CisgICAgICAgIG51bGxwdHIs
IC8vIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0CisgICAgICAg
IG51bGxwdHIsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxCisgICAgICAgIG51bGxwdHIsIC8vIHNob3dDb2xvclBpY2tlcgorICAgICAgICBu
dWxscHRyLCAvLyBoaWRlQ29sb3JQaWNrZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gdW5hdmFpbGFi
bGVQbHVnaW5CdXR0b25DbGlja2VkCisgICAgICAgIG51bGxwdHIsIC8vIHBpbm5lZFN0YXRlRGlk
Q2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEJlZ2luVHJhY2tpbmdQb3RlbnRpYWxMb25n
TW91c2VQcmVzcworICAgICAgICBudWxscHRyLCAvLyBkaWRSZWNvZ25pemVMb25nTW91c2VQcmVz
cworICAgICAgICBudWxscHRyLCAvLyBkaWRDYW5jZWxUcmFja2luZ1BvdGVudGlhbExvbmdNb3Vz
ZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvclVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0LAotICAgICAgICAw
LCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRB
bGVydAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAvLyBy
dW5KYXZhU2NyaXB0UHJvbXB0Ci0gICAgICAgIDAsIC8vIHVudXNlZDUKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkQ2xpY2tBdXRvZmlsbEJ1dHRvbgorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZh
U2NyaXB0QWxlcnQKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdENvbmZpcm0KKyAg
ICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAorICAgICAgICBudWxscHRyLCAv
LyB1bnVzZWQ1CiAgICAgICAgIGNyZWF0ZU90aGVyUGFnZSwKICAgICAgICAgcnVuSmF2YVNjcmlw
dEFsZXJ0LAotICAgICAgICAwLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQotICAgICAgICAwLCAv
LyBydW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRD
b25maXJtCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFTY3JpcHRQcm9tcHQKICAgICAgICAg
Y2hlY2tVc2VyTWVkaWFQZXJtaXNzaW9uRm9yT3JpZ2luLAotICAgICAgICAwLCAvLyBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwKLSAgICAgICAgMCwgLy8gZnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbAor
ICAgICAgICBudWxscHRyLCAvLyBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUKICAgICAgICAg
cmVxdWVzdFBvaW50ZXJMb2NrLAotICAgICAgICAwLAorICAgICAgICBudWxscHRyLCAvLyBkaWRM
b3NlUG9pbnRlckxvY2sKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudChuZXdQYWdl
LCAmb3RoZXJQYWdlVUlDbGllbnQuYmFzZSk7CiAgICAgCkBAIC00MTAsMTYgKzQ0MCwxNiBAQCBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbgogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAg
ICAgIGRlY2lkZVBvbGljeUZvclBsdWdpbkxvYWQsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9u
YWxOYXZpZ2F0aW9uCiAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTmF2aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bgotICAgICAgICAwLCAvLyBkaWRDb21taXROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZp
bmlzaE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmFpbE5hdmlnYXRpb24KLSAgICAgICAg
MCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKLSAgICAgICAgMCwgLy8gZGlk
RmluaXNoRG9jdW1lbnRMb2FkCi0gICAgICAgIDAsIC8vIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b24KLSAgICAgICAgMCwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAv
LyBkaWRDb21taXROYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaE5hdmln
YXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbE5hdmlnYXRpb24KKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWUKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkRmluaXNoRG9jdW1lbnRMb2FkCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gcmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2UKICAgICAgICAgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZSwK
ICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAogICAgICAgICBwcm9j
ZXNzRGlkQ3Jhc2gsCkBAIC00MjgsOSArNDU4LDEyIEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29u
CiAgICAgICAgIHdpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkRW5kTmF2aWdh
dGlvbkdlc3R1cmUsCiAgICAgICAgIGRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3Qs
Ci0gICAgICAgIDAsIC8vIHdlYlByb2Nlc3NEaWRUZXJtaW5hdGUKLSAgICAgICAgMCwgLy8gY29u
dGVudFJ1bGVMaXN0Tm90aWZpY2F0aW9uCi0gICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmcKKyAgICAgICAgbnVsbHB0ciwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0
ZQorICAgICAgICBudWxscHRyLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KKyAgICAg
ICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZywKKyAgICAgICAgbmF2aWdh
dGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkLAorICAgICAgICBuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbnVsbHB0ciAvLyBjb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkCiAgICAgfTsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChuZXdQ
YWdlLCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7CiAKQEAgLTc1MCwxNiArNzgzLDE2IEBA
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0
T3B0aW9ucyYgb3B0aW9ucykKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biwKICAgICAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlLAogICAgICAgICBk
ZWNpZGVQb2xpY3lGb3JQbHVnaW5Mb2FkLAotICAgICAgICAwLCAvLyBkaWRTdGFydFByb3Zpc2lv
bmFsTmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2
aWdhdGlvbgogICAgICAgICBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24sCi0gICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24KKyAg
ICAgICAgbnVsbHB0ciwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgogICAgICAgICBk
aWRDb21taXROYXZpZ2F0aW9uLAogICAgICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uLAotICAgICAg
ICAwLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkSW5TdWJmcmFtZQotICAgICAgICAwLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKLSAg
ICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbgotICAgICAgICAwLCAvLyByZW5k
ZXJpbmdQcm9ncmVzc0RpZENoYW5nZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2aWdh
dGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFt
ZQorICAgICAgICBudWxscHRyLCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgbnVs
bHB0ciwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyBy
ZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlLAogICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsCiAgICAgICAgIHByb2Nlc3NEaWRDcmFzaCwKQEAgLTc2OCwyOCArODAxLDE0IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykKICAgICAgICAgd2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBk
aWRFbmROYXZpZ2F0aW9uR2VzdHVyZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1
cmVTbmFwc2hvdCwKLSAgICAgICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQotICAgICAg
ICAwLCAvLyBjb250ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1
YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZworICAgICAgICBudWxscHRyLCAvLyB3ZWJQcm9jZXNz
RGlkVGVybWluYXRlCisgICAgICAgIG51bGxwdHIsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNh
dGlvbgorICAgICAgICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nLAorICAg
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkLAorICAgICAgICBudWxscHRyIC8vIGNvbnRleHRN
ZW51RGlkQ3JlYXRlRG93bmxvYWQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KG1fbWFpbldlYlZpZXctPnBhZ2UoKSwgJnBhZ2VOYXZpZ2F0aW9uQ2xpZW50LmJhc2Up
OwotCi0gICAgV0tDb250ZXh0RG93bmxvYWRDbGllbnRWMSBkb3dubG9hZENsaWVudCA9IHsKLSAg
ICAgICAgeyAxLCB0aGlzIH0sCi0gICAgICAgIGRvd25sb2FkRGlkU3RhcnQsCi0gICAgICAgIDAs
IC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZQotICAgICAgICAwLCAvLyBkaWRS
ZWNlaXZlUmVzcG9uc2UKLSAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZURhdGEKLSAgICAgICAgMCwg
Ly8gc2hvdWxkRGVjb2RlU291cmNlRGF0YU9mTUlNRVR5cGUKLSAgICAgICAgZGVjaWRlRGVzdGlu
YXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUsCi0gICAgICAgIDAsIC8vIGRpZENyZWF0ZURlc3Rp
bmF0aW9uCi0gICAgICAgIGRvd25sb2FkRGlkRmluaXNoLAotICAgICAgICBkb3dubG9hZERpZEZh
aWwsCi0gICAgICAgIGRvd25sb2FkRGlkQ2FuY2VsLAotICAgICAgICAwLCAvLyBwcm9jZXNzRGlk
Q3Jhc2g7Ci0gICAgICAgIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwKLSAg
ICB9OwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50KGNvbnRleHQoKSwgJmRvd25sb2Fk
Q2xpZW50LmJhc2UpOwogICAgIAogICAgIC8vIHRoaXMgc2hvdWxkIGp1c3QgYmUgZG9uZSBvbiB0
aGUgcGFnZT8KICAgICBXS1BhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudFYxIGluamVjdGVkQnVuZGxl
Q2xpZW50ID0gewpAQCAtMjA3OSw0NSArMjA5OCwzNSBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLQXV0aGVu
dAogfQogCiAKLS8vIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Ci0KLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgc3RhdGljX2Nhc3Q8VGVz
dENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlk
U3RhcnQoY29udGV4dCwgZG93bmxvYWQpOwotfQorLy8gV0tEb3dubG9hZENsaWVudAogICAgIAot
V0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S1N0cmluZ1JlZiBmaWxlbmFtZSwgYm9vbCogYWxsb3dPdmVyd3JpdGUsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShjb250ZXh0LCBkb3dubG9hZCwgZmlsZW5hbWUsIGFsbG93T3ZlcndyaXRlKTsK
LX0KLQotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVm
IGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CitXS1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2Vz
dGVkRmlsZW5hbWUoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNw
b25zZSwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGNvbnRleHQsIGRvd25sb2FkKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihj
bGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25s
b2FkLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25s
b2FkRGlkRmFpbChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tFcnJvclJlZiBlcnJvciwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3ZvaWQgVGVzdENvbnRy
b2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCiB7Ci0gICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmFpbChjb250ZXh0LCBkb3du
bG9hZCwgZXJyb3IpOworICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpLT5kb3dubG9hZERpZEZpbmlzaChkb3dubG9hZCk7CiB9CiAK
LXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9p
ZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYgZG93bmxvYWQs
IFdLRXJyb3JSZWYgZXJyb3IsIFdLRGF0YVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZG93bmxvYWREaWRDYW5jZWwoY29udGV4dCwgZG93bmxvYWQpOworICAgIHN0YXRp
Y19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5k
b3dubG9hZERpZEZhaWwoZG93bmxvYWQsIGVycm9yKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0NvbnRleHRSZWYgY29u
dGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmLCBX
S1VSTFJlcXVlc3RSZWYgbmV3UmVxdWVzdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAg
ICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKS0+ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChjb250ZXh0LCBkb3du
bG9hZCwgdXJsKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwoZG93bmxvYWQsIG5ld1JlcXVlc3QpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKQordm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRTdGFydChXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKQogewogICAgIGlmIChtX3Nob3VsZExvZ0Rvd25sb2FkQ2FsbGJhY2tzKQog
ICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBzdGFydGVk
LlxuIik7CiB9CiAKLVdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3Ry
aW5nUmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpCitXS1N0cmluZ1JlZiBUZXN0
Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3du
bG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpCiB7CiAgICAgU3RyaW5nIHN1
Z2dlc3RlZEZpbGVuYW1lID0gdG9XVEZTdHJpbmcoZmlsZW5hbWUpOwogCkBAIC0yMTMzLDI4ICsy
MTQyLDMzIEBAIFdLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsCiAgICAgaWYgKCFkdW1wUmVuZGVyVHJl
ZVRlbXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgKmFsbG93T3ZlcndyaXRlID0g
dHJ1ZTsKICAgICBTdHJpbmcgdGVtcG9yYXJ5Rm9sZGVyID0gU3RyaW5nOjpmcm9tVVRGOChkdW1w
UmVuZGVyVHJlZVRlbXApOwogICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gIlVua25vd24iOworICAgIAorICAgIFN0cmluZyBk
ZXN0aW5hdGlvbiA9IHRlbXBvcmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lOwor
ICAgIGlmIChGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKGRlc3RpbmF0aW9uKSkKKyAgICAgICAgRmls
ZVN5c3RlbTo6ZGVsZXRlRmlsZShkZXN0aW5hdGlvbik7CiAKLSAgICByZXR1cm4gdG9XSyh0ZW1w
b3JhcnlGb2xkZXIgKyAiLyIgKyBzdWdnZXN0ZWRGaWxlbmFtZSkubGVha1JlZigpOworICAgIHJl
dHVybiB0b1dLKGRlc3RpbmF0aW9uKS5sZWFrUmVmKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZikKK3ZvaWQg
VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpCiB7CiAgICAg
aWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCiAgICAgICAgIG1fY3VycmVudEludm9j
YXRpb24tPm91dHB1dFRleHQoIkRvd25sb2FkIGNvbXBsZXRlZC5cbiIpOwogICAgIG1fY3VycmVu
dEludm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiwg
V0tEb3dubG9hZFJlZiwgV0tVUkxSZWYgdXJsKQorYm9vbCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25sb2FkUmVmLCBXS1VSTFJlcXVl
c3RSZWYgcmVxdWVzdCkKIHsKKyAgICBhdXRvIHVybCA9IGFkb3B0V0soV0tVUkxSZXF1ZXN0Q29w
eVVSTChyZXF1ZXN0KSk7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0g
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQobWFrZVN0cmluZygiRG93bmxv
YWQgd2FzIHJlZGlyZWN0ZWQgdG8gXCIiLCB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVN0
cmluZyh1cmwpKSksICJcIi5cbiIpKTsKKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0
cHV0VGV4dChtYWtlU3RyaW5nKCJEb3dubG9hZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RG
U3RyaW5nKGFkb3B0V0soV0tVUkxDb3B5U3RyaW5nKHVybC5nZXQoKSkpKSwgIlwiLlxuIikpOwor
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZh
aWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycm9yKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYg
ZXJyb3IpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpIHsKICAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgZmFpbGVkLlxuIl9z
KTsKQEAgLTIxNjgsMTMgKzIxODIsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERp
ZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmIGVycgogICAgIG1f
Y3VycmVudEludm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwogfQogCi12b2lkIFRlc3RD
b250cm9sbGVyOjpkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYp
Ci17Ci0gICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCi0gICAgICAgIG1fY3Vy
cmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRvd25sb2FkIGNhbmNlbGxlZC5cbiIpOwotICAg
IG1fY3VycmVudEludm9jYXRpb24tPm5vdGlmeURvd25sb2FkRG9uZSgpOwotfQotCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpwcm9jZXNzRGlkQ3Jhc2goKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
Y2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB3aGVuIGNyYXNoIGxvZ3MgYXJlIGJlaW5nIHNh
dmVkIG9uIFdpbmRvd3MsIHNvCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
aW5kZXggZGRlY2EwODgyYTMwOTZlMzdiZmQzZTcwZmVkNGUyMjczZGQ5NmQyOS4uYmI3NWQ1MDcw
MmMzYTUzZjM5ZGUxNTgxZGNjNGQzYjMzNzM5NjRjYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaApAQCAtNDQ0LDE5ICs0NDQsMTkgQEAgcHJpdmF0ZToKICAgICBzdGF0
aWMgdm9pZCBkaWRGaW5pc2hOYXZpZ2F0aW9uKFdLUGFnZVJlZiwgV0tOYXZpZ2F0aW9uUmVmLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqKTsKICAgICB2b2lkIGRpZEZpbmlzaE5hdmln
YXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYpOwogCi0gICAgLy8gV0tDb250ZXh0RG93
bmxvYWRDbGllbnQKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZFN0YXJ0KFdLQ29udGV4dFJl
ZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRTdGFy
dChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYpOwotICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYsIFdLU3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci0gICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25X
aXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1N0cmlu
Z1JlZiBmaWxlbmFtZSwgYm9vbComIGFsbG93T3ZlcndyaXRlKTsKLSAgICBzdGF0aWMgdm9pZCBk
b3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQq
KTsKLSAgICB2b2lkIGRvd25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJl
Zik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZiwgV0tFcnJvclJlZiwgY29uc3Qgdm9pZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRG
YWlsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZik7Ci0gICAgc3RhdGlj
IHZvaWQgZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBjb25z
dCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93
bmxvYWRSZWYpOwotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9p
ZCopOwotICAgIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Nv
bnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmKTsKKyAgICAvLyBXS0Rvd25sb2FkQ2xp
ZW50CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdL
UGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lk
Kik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQo
V0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qg
dm9pZCopOworICAgIHN0YXRpYyB2b2lkIG5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJl
ZChXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0
KFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlv
bldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmLCBXS1VSTFJlc3BvbnNlUmVmLCBX
S1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cisg
ICAgV0tTdHJpbmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tE
b3dubG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRvd25s
b2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25s
b2FkRGlkRmluaXNoKFdLRG93bmxvYWRSZWYpOworICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlk
RmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmLCBXS0RhdGFSZWYsIGNvbnN0IHZvaWQqKTsK
KyAgICB2b2lkIGRvd25sb2FkRGlkRmFpbChXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKKyAg
ICBzdGF0aWMgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93
bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdLVVJMUmVxdWVzdFJlZiwgY29uc3Qgdm9pZCop
OworICAgIGJvb2wgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTChXS0Rvd25s
b2FkUmVmLCBXS1VSTFJlcXVlc3RSZWYpOwogICAgIAogICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NE
aWRDcmFzaChXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHZvaWQgcHJv
Y2Vzc0RpZENyYXNoKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzhjMDMxZWIzMWZmYzYxYTY1NzRiODE4YmM4NzhkOGQx
MDc5YzZmNy4uZTAyMzc3Y2ZhZjE5YjNjZGRmN2ExYTY0MmUzODA3NjBhZGVmMDFmYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTEyLTA4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIG5ldyBkb3dubG9hZCBBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzc0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICAqIGZhc3QvZG9tL0hU
TUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVk
LXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRl
bGVnYXRlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1l
eHBlY3RlZC50eHQ6CisgICAgICAgIE5vdyB0aGF0IE5ldHdvcmtEYXRhVGFza0Jsb2I6OnN1Z2dl
c3RlZEZpbGVuYW1lIGRvZXNuJ3Qgc3VnZ2VzdCAidW5rbm93biIKKyAgICAgICAgdGhlIGNhcGl0
YWxpemF0aW9uIGhhcyBjaGFuZ2VkIHRvICJVbmtub3duIiBmcm9tIE5TVVJMUmVzcG9uc2UncyBz
dWdnZXN0ZWRGaWxlbmFtZS4KKwogMjAyMC0xMi0wNyAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbR1N0cmVhbWVyXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWNoYW5uZWxtZXJnZXJub2RlLWludGVy
ZmFjZS9hY3RpdmUtcHJvY2Vzc2luZy5odHRwcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1kb3du
bG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFjNGJjYWM1ODYy
YzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgzYTNiODZhNzY5
MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBzdWdnZXN0ZWQg
ZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBm
aWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogQmxvYiBVUkwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1k
b3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXIt
dHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKaW5kZXggYmVkYzhkZGEwMWM4
YzEyMzdlMTA2YzY4NTMzNDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVhNThjMDhmYmVlMDZjYjM5NDMx
Y2RjMzFkMGRiNTlhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQv
YW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50
eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRpbmcgVVJMIHdp
dGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGluZyBVUkwgd2l0
aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNvbXBsZXRlZC4K
IFRlc3QgdGhhdCB1c2VyIHRyaWdnZXJlZCBzeW50aGV0aWMgY2xpY2tzIG9uIGFuIGFuY2hvciB3
aXRoIGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBub3QgaWdub3JlZC4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1j
b252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10
by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKaW5kZXggMTExNDBmZDIxODg3
Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEy
ODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVn
YXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVsZWdhdGUt
ZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2Fk
aW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4K
IFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRv
d25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVt
ZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQKaW5k
ZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFk
OGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25s
b2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxl
bWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3Rl
ZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBkb3dubG9hZCBz
aG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFu
Y2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2FkLXNldC1leHBl
Y3RlZC50eHQKaW5kZXggMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2YTE2ZDJhOS4u
Mzc1YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVu
dC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAogRG93
bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAi
dW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJV
bmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415824</attachid>
            <date>2020-12-09 19:43:26 -0800</date>
            <delta_ts>2020-12-10 11:28:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217747-20201209194325.patch</filename>
            <type>text/plain</type>
            <size>317201</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkYjE1Y2FkMjY2MjYyOTIx
ZGM0ZWM1MDlhYzVjN2MwYWM2Y2Y2OTAuLmE2MmMyNmMwMTJiNGViZDBlNjA0YTY3MDkyOTRmODFl
MmYzMDVhOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTgzIEBACisyMDIwLTEyLTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNl
IG5ldyBkb3dubG9hZCBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzc0NworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKwor
ICAgICAgICBTYWZhcmkgY3VycmVudGx5IHVzZXMgX1dLRG93bmxvYWQsIHdoaWNoIGhhcyBldm9s
dmVkIHN0cmFuZ2VseSBvdmVyIHRoZSBsYXN0IGRlY2FkZS4KKyAgICAgICAgSW4gb3JkZXIgdG8g
bWFrZSBhIG5pY2VyIGludGVyZmFjZSwgd2UgbmVlZCB0byBsZWFybiBmcm9tIHRob3NlIGxlc3Nv
bnMgYW5kIHRha2UgYSBzdGVwIGJhY2suCisgICAgICAgIEkgZGlkIHRoYXQsIGFuZCBoZXJlJ3Mg
d2hhdCBJIGNhbWUgdXAgd2l0aDogV0tEb3dubG9hZCBhbmQgV0tEb3dubG9hZERlbGVnYXRlIQor
CisgICAgICAgIE5vdGFibGUgY2hhbmdlcyBpbmNsdWRlOgorICAgICAgICAxLiAgVGhlIGRlbGVn
YXRlIG5vdyBsaXZlcyBvbiB0aGUgZG93bmxvYWQgb2JqZWN0IGluc3RlYWQgb2YgdGhlIHByb2Nl
c3MgcG9vbC4KKyAgICAgICAgMi4gIFdLRG93bmxvYWQgZG9lcyBub3QgY29uZm9ybSB0byBOU0Nv
cHlpbmcgYmVjYXVzZSB3ZSBoYXZlIE5TTWFwVGFibGUgaW5zdGVhZCBvZiBOU0RpY3Rpb25hcnku
CisgICAgICAgIDMuICBwdWJsaXNoUHJvZ3Jlc3NBdFVSTCBpcyBnb25lLiAgVGhhdCB3aWxsIGJl
IHJlaW1wbGVtZW50ZWQgaW4gdGhlIFVJIHByb2Nlc3Mgb2YgdGhlIGNsaWVudCB0aGF0IHVzZWQg
aXQuCisgICAgICAgIDQuICBjYW5jZWwgaGFzIGEgY29tcGxldGlvbiBoYW5kbGVyIHRvIGdldCB0
aGUgcmVzdW1lIGRhdGEgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBkaWRDYW5jZWwgdGhlbiBnZXR0
aW5nIGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4KKyAgICAgICAgNS4gIGRpZEZhaWxXaXRo
RXJyb3IgYWxzbyBnaXZlcyB5b3UgdGhlIHJlc3VtZSBkYXRhLCBzbyB0aGVyZSBpcyBubyB3YXkg
dG8gZ2V0IGl0IGZyb20gdGhlIGRvd25sb2FkIG9iamVjdC4gIFRoYXQncyBtb3JlIGFib3V0IGEg
ZmFpbC9jYW5jZWwKKyAgICAgICAgICAgIGV2ZW50IHRoYW4gYSBwcm9wZXJ0eSBvZiB0aGUgZG93
bmxvYWQuCisgICAgICAgIDYuICB3YXNVc2VySW5pdGlhdGVkIGlzIGdvbmUuICBJbnN0ZWFkLCBX
S05hdmlnYXRpb25EZWxlZ2F0ZSBoYXMgYSBjYWxsYmFjayB0aGF0IGxpbmtzIGEgbmF2aWdhdGlv
biBhY3Rpb24gKHdoZXJlIF9pc1VzZXJJbml0aWF0ZWQgaXMgZXhwb3NlZCkgdG8gdGhlIGRvd25s
b2FkLgorICAgICAgICA3LiAgcmVkaXJlY3RDaGFpbiBpcyBhbHNvIGdvbmUuICBUaGF0IGNhbiBh
bHNvIGJlIGdvdHRlbiBmcm9tIHRoZSBsaW5rIHRvIHRoZSBuYXZpZ2F0aW9uIGFuZCB0aGUgZG93
bmxvYWQgZGVsZWdhdGUncyByZWRpcmVjdCBjYWxsYmFjay4KKyAgICAgICAgOC4gIF9kb3dubG9h
ZERpZFN0YXJ0IGlzIGdvbmUuICBJbnN0ZWFkLCB3ZSBoYXZlIGNvbXBsZXRpb24gaGFuZGxlcnMg
dGhhdCBleHBvc2UgYSBXS0Rvd25sb2FkIG9uY2UgaXQncyBzdGFydGVkLiAgVGhlcmUncyBubyBu
ZWVkIHRvCisgICAgICAgICAgICByZWZlcmVuY2UgdGhlIGRvd25sb2FkIG9iamVjdCBiZWZvcmUg
dGhlbiBhbnl3YXlzLiAgTm90ZTogdGhhdCdzIHdoZW4gdGhlIGRvd25sb2FkICJzdGFydHMiIHdo
aWNoIGlzIGJlZm9yZSBpdCByZWNlaXZlcyB0aGUgcmVzcG9uc2UsCisgICAgICAgICAgICBzbyB0
aGVyZSB3aWxsIGJlIG5vIHNlcnZlciBkZWxheSBpbiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGRv
d25sb2FkIG9iamVjdCBhdmFpbGFiaWxpdGllcy4KKyAgICAgICAgOS4gIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdFRvVVJMIG5vdyBnaXZlcyB5b3UgdGhlIG9wdGlvbiBvZiBjb250aW51aW5nIG9y
IGNhbmNlbGxpbmcuICBUaGlzIHJlZmxlY3RzIHRoZSBhbW91bnQgb2YgY29udHJvbCB0aGUKKyAg
ICAgICAgICAgIFdLTmF2aWdhdGlvbkRlbGVnYXRlIGhhcy4KKyAgICAgICAgMTAuIGRlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lIGFuZCBkaWRSZWNlaXZlUmVzcG9uc2UgaGF2
ZSBiZWVuIG1lcmdlZCwgc2luY2UgdGhleSBhY3R1YWxseSBoYXBwZW4gYXQgdGhlIHNhbWUgdGlt
ZSBhbmQKKyAgICAgICAgICAgIE5TVVJMUmVzcG9uc2UgaGFzIHN1Z2dlc3RlZEZpbGVuYW1lIEFQ
SS4gIGFsbG93T3ZlcndyaXRlIGlzIGFsc28gZ29uZS4gIEl0IHdhc24ndCB1c2VkLCBhbmQgbm90
IHJlYWxseSBuZWVkZWQuCisgICAgICAgIDExLiBkaWRDcmVhdGVEZXN0aW5hdGlvbiBpcyBnb25l
LiAgVGhhdCBjYWxsYmFjayB0aW1lIHdhc24ndCByZWFsbHkgbmVjZXNzYXJ5LiAgSWYgeW91IG5l
ZWQgdG8ga25vdyB3aGVuIGl0J3MgY3JlYXRlZCwgd2FpdCB1bnRpbCB0aGUgZmlyc3QKKyAgICAg
ICAgICAgIGRpZFdyaXRlRGF0YSBjYWxsYmFjay4gIFRoZSBkZXN0aW5hdGlvbiBoYXMgZGVmaW5p
dGVseSBiZWVuIGNyZWF0ZWQgYnkgdGhlbi4KKyAgICAgICAgMTIuIHNob3VsZERlY29kZVNvdXJj
ZURhdGFPZk1JTUVUeXBlIGlzIGdvbmUuICBJdCdzIGFjdHVhbGx5IG5vdCBjYWxsZWQgc2luY2Ug
d2UgYWRvcHRlZCBOU1VSTFNlc3Npb24sIGFuZCB3ZSBzaG91bGQgcmVtb3ZlIHRoZSByZWxhdGVk
IGRlYWQgY29kZS4KKyAgICAgICAgMTMuIG9yaWdpbmF0aW5nRnJhbWUgaXMgZ29uZS4gIE9uIF9X
S0Rvd25sb2FkIGl0IHdhcyBhY3R1YWxseSBhIG5vbi1udWxsIFdLRnJhbWVJbmZvIHRoYXQgb2Z0
ZW4gY29udGFpbmVkIG5vIGluZm9ybWF0aW9uLiAgV2hlbiBpbmZvcm1hdGlvbiB3YXMgdGhlcmUs
CisgICAgICAgICAgICB0aGUgaW5mb3JtYXRpb24gYWNjZXNzIGhhcyBiZWVuIHJlcGxhY2VkIGJ5
IGRpZEJlY29tZURvd25sb2FkIHdoaWNoIGxpbmtzIHRoZSBXS05hdmlnYXRpb25SZXNwb25zZSB3
aGljaCBoYXMgZnJhbWUgaW5mbyBvbiBpdC4KKworICAgICAgICBJIHdyb3RlIEFQSSB0ZXN0cyBm
b3IgZXZlcnl0aGluZyBJIGNvdWxkIHRoaW5rIG9mLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRvd25s
b2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Eb3du
bG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWQ6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2FkOjpwbGF0Zm9ybUNhbmNlbE5ldHdv
cmtMb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tCbG9iLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2VzdGVkRmlsZW5h
bWUgY29uc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmZpbmRQZW5kaW5nRG93bmxvYWRMb2NhdGlvbik6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoLVtXS05l
dHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENvbXBsZXRlV2l0aEVycm9y
Ol0pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5OgorICAgICAgICAqIFNo
YXJlZC9BUEkvQ29jb2EvV2ViS2l0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSSk6CisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3QpOgorICAg
ICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oOgorICAgICAgICAoQVBJOjpEb3du
bG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoQVBJOjpEb3dubG9hZENsaWVu
dDo6ZGlkRmFpbCk6CisgICAgICAgIChBUEk6OkRvd25sb2FkQ2xpZW50OjpkaWRTdGFydCk6IERl
bGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvbkFjdGlvbkRpZEJl
Y29tZURvd25sb2FkKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6Y29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQu
Y3BwOgorICAgICAgICAoV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWRSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLRG93bmxvYWRHZXRUeXBl
SUQpOgorICAgICAgICAoV0tEb3dubG9hZENvcHlSZXF1ZXN0KToKKyAgICAgICAgKFdLRG93bmxv
YWRDYW5jZWwpOgorICAgICAgICAoV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFnZSk6CisgICAg
ICAgIChXS0Rvd25sb2FkR2V0V2FzVXNlckluaXRpYXRlZCk6CisgICAgICAgIChXS0Rvd25sb2Fk
U2V0Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5oLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0
UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVu
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRG93bmxvYWQuaDogQ29waWVkIGZyb20g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2FkLmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2FkLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
V0tEb3dubG9hZCBjYW5jZWw6XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgb3JpZ2luYWxSZXF1
ZXN0XSk6CisgICAgICAgICgtW1dLRG93bmxvYWQgZGVsZWdhdGVdKToKKyAgICAgICAgKC1bV0tE
b3dubG9hZCBzZXREZWxlZ2F0ZTpdKToKKyAgICAgICAgKC1bV0tEb3dubG9hZCBkZWFsbG9jXSk6
CisgICAgICAgICgtW1dLRG93bmxvYWQgX2FwaU9iamVjdF0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tEb3dubG9hZERlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmguCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tO
YXZpZ2F0aW9uQWN0aW9uIGRvd25sb2FkQXR0cmlidXRlXSk6CisgICAgICAgICgtW1dLTmF2aWdh
dGlvbkFjdGlvbiBfc2hvdWxkUGVyZm9ybURvd25sb2FkXSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQ
b29sIF9kb3dubG9hZFVSTFJlcXVlc3Q6d2Vic2l0ZURhdGFTdG9yZTpvcmlnaW5hdGluZ1dlYlZp
ZXc6XSk6CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6
d2Vic2l0ZURhdGFTdG9yZTpwYXRoOm9yaWdpbmF0aW5nV2ViVmlldzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IGRvd25sb2FkUmVxdWVzdDpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IHJlc3VtZURvd25sb2Fk
V2l0aERhdGE6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tEb3dubG9hZC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQu
bW06CisgICAgICAgICgtW19XS0Rvd25sb2FkIGluaXRXaXRoRG93bmxvYWQyOl0pOgorICAgICAg
ICAoK1tfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDpdKToKKyAgICAgICAgKC1bX1dL
RG93bmxvYWQgY2FuY2VsXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHB1Ymxpc2hQcm9ncmVz
c0F0VVJMOl0pOgorICAgICAgICAoLVtfV0tEb3dubG9hZCByZXF1ZXN0XSk6CisgICAgICAgICgt
W19XS0Rvd25sb2FkIG9yaWdpbmF0aW5nV2ViVmlld10pOgorICAgICAgICAoLVtfV0tEb3dubG9h
ZCByZWRpcmVjdENoYWluXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIHdhc1VzZXJJbml0aWF0
ZWRdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgcmVzdW1lRGF0YV0pOgorICAgICAgICAoLVtf
V0tEb3dubG9hZCBvcmlnaW5hdGluZ0ZyYW1lXSk6CisgICAgICAgICgtW19XS0Rvd25sb2FkIF9h
cGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLRG93bmxvYWQgZGVhbGxvY10pOiBEZWxldGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0NvY29hL0xlZ2FjeURvd25sb2FkQ2xpZW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6bGVnYWN5RGlkU3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpM
ZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktp
dDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktp
dDo6TGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0
aW5hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2FkQ2xpZW50Ojpwcm9jZXNz
RGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpMZWdh
Y3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93
bmxvYWRDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViS2l0OjpMZWdhY3lEb3dubG9hZENs
aWVudDo6bGVnYWN5RGlkQ2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6TGVnYWN5RG93bmxvYWRD
bGllbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OkxlZ2FjeURvd25sb2Fk
Q2xpZW50OjpkaWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3Rh
dGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRl
bGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3Bv
bnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKiBV
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpE
b3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRvd25sb2Fk
UHJveHk6OmRpZFN0YXJ0KToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6ZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZFByb3h5OjpkaWRGYWlsKToKKyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0
Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaDoK
KyAgICAgICAgKFdlYktpdDo6RG93bmxvYWRQcm94eTo6c2V0RGlkU3RhcnRDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJLaXQ6OkRvd25sb2FkUHJveHk6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzdW1lRG93bmxvYWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRvd25sb2FkUmVxdWVzdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cmVzdW1l
RG93bmxvYWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAgICAg
ICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTExLTMwICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3Rv
cjogYWRkIHN1cHBvcnQgZm9yIGNyZWF0aW5nIGV4dGVuc2lvbiB0YWJzIGluIFdlYkluc3BlY3Rv
clVJIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvSGVhZGVycy5jbWFrZQppbmRleCAzZTdlNTk1
ODRmZjI4MDAwZTEwZDk5YWU0NGFiZWMzZmZhMjEzOWEyLi4yMTMwNGRhMzBkNzg4MjU0MzY1MjI3
YWE2YjM2ZjBlNzZmNjkwZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0hlYWRlcnMuY21h
a2UKKysrIGIvU291cmNlL1dlYktpdC9IZWFkZXJzLmNtYWtlCkBAIC00Nyw3ICs0Nyw4IEBAIHNl
dChXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
Q29va2llTWFuYWdlci5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbC5oCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dLQ3JlZGVudGlhbFR5cGVzLmgKLSAgICBVSVByb2Nlc3MvQVBJL0Mv
V0tEb3dubG9hZC5oCisgICAgVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRDbGllbnQuaAorICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tG
b3JtU3VibWlzc2lvbkxpc3RlbmVyLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZS5oCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVIYW5kbGVSZWYuaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHAK
aW5kZXggNzI2ZGQ5OTBiYWZkNDM5NGI1YWZjMDMyYTFjZjIwZjE4NDljNDlhYy4uODE3ZjljZDc3
Yzk1MGRlNGQ3YWRmZGNlYzgwNTc1MTI4N2U3NjJlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3BwCkBA
IC05Myw3ICs5Myw3IEBAIHZvaWQgRG93bmxvYWRNYW5hZ2VyOjpkb3dubG9hZERlc3RpbmF0aW9u
RGVjaWRlZChEb3dubG9hZElEIGRvd25sb2FkSUQsIFJlZjxOZXR3CiAgICAgbV9kb3dubG9hZHNB
ZnRlckRlc3RpbmF0aW9uRGVjaWRlZC5zZXQoZG93bmxvYWRJRCwgV1RGTW92ZShuZXR3b3JrRGF0
YVRhc2spKTsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnJlc3VtZURvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlJiYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQgRG93bmxvYWRNYW5h
Z2VyOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25I
YW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewogI2lm
ICFQTEFURk9STShDT0NPQSkKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTA0LDYgKzEwNCwx
MSBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sbwogICAgIGF1dG8gZG93bmxvYWQgPSBtYWtlVW5p
cXVlPERvd25sb2FkPigqdGhpcywgZG93bmxvYWRJRCwgbnVsbHB0ciwgKm5ldHdvcmtTZXNzaW9u
KTsKIAogICAgIGRvd25sb2FkLT5yZXN1bWUocmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlKSk7CisKKyAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRo
ZSBsZWdhY3kgZG93bmxvYWQgQVBJLCBvbmx5IHNlbmQgRGlkU3RhcnQgaWYgd2UncmUgdXNpbmcg
dGhlIG5ldyBBUEkuCisgICAgaWYgKGNhbGxEb3dubG9hZERpZFN0YXJ0ID09IENhbGxEb3dubG9h
ZERpZFN0YXJ0OjpZZXMpCisgICAgICAgIGRvd25sb2FkLT5zZW5kKE1lc3NhZ2VzOjpEb3dubG9h
ZFByb3h5OjpEaWRTdGFydCh7IH0sIHsgfSkpOworCiAgICAgQVNTRVJUKCFtX2Rvd25sb2Fkcy5j
b250YWlucyhkb3dubG9hZElEKSk7CiAgICAgbV9kb3dubG9hZHMuYWRkKGRvd25sb2FkSUQsIFdU
Rk1vdmUoZG93bmxvYWQpKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCA5ODBhMDZmNzgz
OWRiZDVlOWY5ZDUwNDU0MDlhMzNkNzdiMWMwMzg2Li4wMWU1MzFhMzhjMDRkNGEyOTNjZjI0OWE1
MGE5OGViODYwMDkwN2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtNjAsNiArNjAsOCBAQCBjbGFz
cyBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzczsKIGNsYXNzIE5ldHdvcmtMb2FkOwogY2xh
c3MgUGVuZGluZ0Rvd25sb2FkOwogCitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0YXJ0IDog
Ym9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgRG93bmxvYWRNYW5hZ2VyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShEb3dubG9hZE1hbmFnZXIpOwogCkBAIC04Niw3ICs4OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbnZlcnROZXR3b3JrTG9hZFRvRG93bmxvYWQoRG93bmxvYWRJRCwgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtMb2FkPiYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYs
ICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+JiYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmKTsKICAgICB2b2lkIGRvd25sb2FkRGVzdGluYXRpb25EZWNpZGVkKERvd25sb2FkSUQsIFJl
ZjxOZXR3b3JrRGF0YVRhc2s+JiYpOwogCi0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNl
c3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRh
LCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2
b2lkIHJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKIAogICAgIHZvaWQgY2Fu
Y2VsRG93bmxvYWQoRG93bmxvYWRJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxv
YWRDb2NvYS5tbQppbmRleCA5NWY4ZGVjMzAyNTFiODBiYWEyOWNlNTkwODczYTdhYmFlZmRhOWNl
Li41Zjc5OWQ1YzA1YjZiMTg0OGVjNTAzMmQ4NDMwNTBiYTViMWQ2YzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9jb2NvYS9Eb3dubG9hZENvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0KQEAgLTcxLDYgKzcxLDggQEAgdm9pZCBEb3dubG9hZDo6cmVzdW1lKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLAog
ICAgIE5TRGF0YSAqdXBkYXRlZERhdGEgPSBbTlNQcm9wZXJ0eUxpc3RTZXJpYWxpemF0aW9uIGRh
dGFXaXRoUHJvcGVydHlMaXN0OmRpY3Rpb25hcnkgZm9ybWF0Ok5TUHJvcGVydHlMaXN0WE1MRm9y
bWF0X3YxXzAgb3B0aW9uczowIGVycm9yOm51bGxwdHJdOwogI2VuZGlmCiAKKyAgICAvLyBGSVhN
RTogVXNlIG5zRGF0YSBpbnN0ZWFkIG9mIHVwZGF0ZWREYXRhIG9uY2Ugd2UndmUgbWlncmF0ZWQg
ZnJvbSBfV0tEb3dubG9hZCB0byBXS0Rvd25sb2FkCisgICAgLy8gYmVjYXVzZSB0aGVyZSdzIG5v
IHJlYXNvbiB0byBzZXQgdGhlIGxvY2FsIHBhdGggd2UgZ290IGZyb20gdGhlIGRhdGEgYmFjayBp
bnRvIHRoZSBkYXRhLgogICAgIG1fZG93bmxvYWRUYXNrID0gW2NvY29hU2Vzc2lvbi5zZXNzaW9u
V3JhcHBlckZvckRvd25sb2FkcygpLnNlc3Npb24gZG93bmxvYWRUYXNrV2l0aFJlc3VtZURhdGE6
dXBkYXRlZERhdGFdOwogICAgIGF1dG8gdGFza0lkZW50aWZpZXIgPSBbbV9kb3dubG9hZFRhc2sg
dGFza0lkZW50aWZpZXJdOwogICAgIEFTU0VSVCghY29jb2FTZXNzaW9uLnNlc3Npb25XcmFwcGVy
Rm9yRG93bmxvYWRzKCkuZG93bmxvYWRNYXAuY29udGFpbnModGFza0lkZW50aWZpZXIpKTsKQEAg
LTgzLDcgKzg1LDIyIEBAIHZvaWQgRG93bmxvYWQ6OnJlc3VtZShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwKIHZvaWQgRG93bmxvYWQ6OnBs
YXRmb3JtQ2FuY2VsTmV0d29ya0xvYWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQobV9k
b3dubG9hZFRhc2spOwotICAgIFttX2Rvd25sb2FkVGFzayBjYW5jZWxCeVByb2R1Y2luZ1Jlc3Vt
ZURhdGE6bWFrZUJsb2NrUHRyKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoTlNEYXRhICpyZXN1bWVEYXRhKSBtdXRhYmxlIHsKKyAgICBbbV9kb3dubG9h
ZFRhc2sgY2FuY2VsQnlQcm9kdWNpbmdSZXN1bWVEYXRhOm1ha2VCbG9ja1B0cihbcGF0aCA9IHJl
dGFpblB0cihtX2Rvd25sb2FkVGFzay5nZXQoKS5fcGF0aFRvRG93bmxvYWRUYXNrRmlsZSksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0RhdGEgKnJl
c3VtZURhdGEpIG11dGFibGUgeworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykK
KyAgICAgICAgaWYgKHJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIC8vIE1vamF2ZSBkb2VzIG5v
dCBpbmNsdWRlIHRoZSBkb3dubG9hZCBsb2NhdGlvbiBpbiB0aGUgcmVzdW1lIGRhdGEgZnJvbSBD
Rk5ldHdvcmsuIEFkZCBpdCBmcm9tIHRoZSB0YXNrLgorICAgICAgICAgICAgYXV0byB1bmFyY2hp
dmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zy
b21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmlsXSk7CisgICAgICAgICAgICBbdW5hcmNoaXZlciBz
ZXREZWNvZGluZ0ZhaWx1cmVQb2xpY3k6TlNEZWNvZGluZ0ZhaWx1cmVQb2xpY3lSYWlzZUV4Y2Vw
dGlvbl07CisgICAgICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHN0YXRpY19jYXN0
PE5TTXV0YWJsZURpY3Rpb25hcnkgKj4oW1t1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3Nl
czpbTlNTZXQgc2V0V2l0aE9iamVjdHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNs
YXNzXSwgW05TU3RyaW5nIGNsYXNzXSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10s
IFtOU1VSTCBjbGFzc10sIFtOU1VSTFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5
ZWRBcmNoaXZlUm9vdE9iamVjdEtleSJdIG11dGFibGVDb3B5XSkpOworICAgICAgICAgICAgW3Vu
YXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworICAgICAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2Jq
ZWN0OnBhdGguZ2V0KCkgZm9yS2V5OkAiTlNVUkxTZXNzaW9uUmVzdW1lSW5mb0xvY2FsUGF0aCJd
OworICAgICAgICAgICAgYXV0byBlbmNvZGVyID0gYWRvcHROUyhbW05TS2V5ZWRBcmNoaXZlciBh
bGxvY10gaW5pdFJlcXVpcmluZ1NlY3VyZUNvZGluZzpZRVNdKTsKKyAgICAgICAgICAgIFtlbmNv
ZGVyIGVuY29kZU9iamVjdDpkaWN0aW9uYXJ5LmdldCgpIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZl
Um9vdE9iamVjdEtleSJdOworICAgICAgICAgICAgcmVzdW1lRGF0YSA9IFtlbmNvZGVyIGVuY29k
ZWREYXRhXTsKKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHBhdGgpOwor
I2VuZGlmCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5jZSA9IHJlc3VtZURhdGEgPyBJ
UEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdW1lRGF0
YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRhdGFSZWZlcmVuY2UgeyB9Owog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bWVEYXRhUmVmZXJlbmNlKTsKICAgICB9KS5n
ZXQoKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2tCbG9iLmNwcAppbmRleCA4ZDg5N2E0MjMwYWZlMmU5OGRkZGE5YzRhOWQyMTAxNzQ3NGIz
NzkyLi5iOTIwNjgyYzllNDczYmYzNWUwM2ZmM2E2MmY3MDVkM2UxYWMyMTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrQmxvYi5jcHAK
QEAgLTQ0NiwxMCArNDQ2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZXRQZW5kaW5n
RG93bmxvYWRMb2NhdGlvbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBTYW4KIAogU3RyaW5nIE5l
dHdvcmtEYXRhVGFza0Jsb2I6OnN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3QKIHsKLSAgICBpZiAo
IW1fc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gbV9zdWdnZXN0
ZWRGaWxlbmFtZTsKLQotICAgIHJldHVybiAidW5rbm93biJfczsKKyAgICByZXR1cm4gbV9zdWdn
ZXN0ZWRGaWxlbmFtZTsKIH0KIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkb3dubG9hZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGY2YTIzOWExZjY4Zjg5YmU0ZTdkYzg1ZTgwZjEzMTRjNjkwYjdlYjguLjVmZTQ1OTEzMTU0
YmE3NTFmY2Q5NmNhNGRhOTVmNjJmMTUxMWZlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMDUzLDkgKzIwNTMsOSBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBEb3dubG9hZElEIGRvd25sbwogICAgIGRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQo
c2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3Vt
ZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIENhbGxEb3dubG9hZERpZFN0YXJ0
IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewotICAgIGRvd25sb2FkTWFuYWdlcigpLnJlc3VtZURv
d25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVzdW1lRGF0YSwgcGF0aCwgV1RGTW92ZShz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CisgICAgZG93bmxvYWRNYW5hZ2VyKCkucmVzdW1lRG93
bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXN1bWVEYXRhLCBwYXRoLCBXVEZNb3ZlKHNh
bmRib3hFeHRlbnNpb25IYW5kbGUpLCBjYWxsRG93bmxvYWREaWRTdGFydCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNhbmNlbERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTIwNzksMTAgKzIwNzksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpm
aW5kUGVuZGluZ0Rvd25sb2FkTG9jYXRpb24oTmV0d29ya0RhdGFUYXNrJiBuZXR3b3JrRGF0YVRh
cwogewogICAgIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSBuZXR3b3JrRGF0YVRhc2sucGVuZGlu
Z0Rvd25sb2FkSUQoKS50b1VJbnQ2NCgpOwogCi0gICAgLy8gQXMgcGVyIGh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvI2FzLWEtZG93bmxvYWQgKHN0ZXAgMiksIHRoZSBmaWxlbmFtZSBmcm9t
IHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcgotICAgIC8vIHNob3VsZCBvdmVycmlkZSB0
aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGZyb20gdGhlIGRvd25sb2FkIGF0dHJpYnV0ZS4KLSAgICBT
dHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNwb25zZS5pc0F0dGFjaG1lbnRXaXRoRmlsZW5h
bWUoKSA/IHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lKCkgOiBuZXR3b3JrRGF0YVRhc2suc3Vn
Z2VzdGVkRmlsZW5hbWUoKTsKLSAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IE1JTUVUeXBlUmVnaXN0
cnk6OmFwcGVuZEZpbGVFeHRlbnNpb25JZk5lY2Vzc2FyeShzdWdnZXN0ZWRGaWxlbmFtZSwgcmVz
cG9uc2UubWltZVR5cGUoKSk7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gbmV0d29y
a0RhdGFUYXNrLnN1Z2dlc3RlZEZpbGVuYW1lKCk7CiAKICAgICBkb3dubG9hZFByb3h5Q29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkRvd25sb2FkUHJveHk6OkRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxl
bmFtZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG5ldHdvcmtEYXRhVGFzayA9IG1h
a2VSZWYobmV0d29ya0RhdGFUYXNrKV0gKFN0cmluZyYmIGRlc3RpbmF0aW9uLCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBBbGxvd092ZXJ3cml0ZSBh
bGxvd092ZXJ3cml0ZSkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IG5ldHdv
cmtEYXRhVGFzay0+cGVuZGluZ0Rvd25sb2FkSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA2MGQzNmJiNTc1NjdmMzI4ZTdmYWNjZDJl
ODBhMmUxMGE0Mzk4MTE4Li4wNTM1NzEyMmM2ZTk2NjZiNDRlODkyY2Q1ZmE1NzI0YjE0NWVlODQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBA
IC0xMDYsNiArMTA2LDcgQEAgY2xhc3MgTmV0d29ya1Jlc291cmNlTG9hZGVyOwogY2xhc3MgU3Rv
cmFnZU1hbmFnZXJTZXQ7CiBjbGFzcyBXZWJTV1NlcnZlckNvbm5lY3Rpb247CiBjbGFzcyBXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb247CitlbnVtIGNsYXNzIENhbGxEb3dubG9hZERpZFN0
YXJ0IDogYm9vbDsKIGVudW0gY2xhc3MgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIDogYm9v
bDsKIGVudW0gY2xhc3MgU3RvcmFnZUFjY2Vzc1N0YXR1cyA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNz
IFdlYnNpdGVEYXRhRmV0Y2hPcHRpb24gOiB1aW50OF90OwpAQCAtNDIzLDcgKzQyNCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBkb3dubG9hZFJlcXVlc3Qo
UEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiwgY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgdm9pZCByZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25J
RCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBjb25z
dCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKTsKKyAgICB2b2lkIHJl
c3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlJiYsIENhbGxEb3dubG9hZERpZFN0YXJ0KTsKICAgICB2b2lkIGNhbmNlbERvd25s
b2FkKERvd25sb2FkSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJik+JiYpOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHVibGlzaERvd25s
b2FkUHJvZ3Jlc3MoRG93bmxvYWRJRCwgY29uc3QgVVJMJiwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjAxZTI0Y2IyNTYzNmUxN2JkNTU0ZDY4ZjBlOGJm
YWY1MmRhYjJkZS4uNThiM2U0Yzg2OGM3MDEyY2RiMzU2NTZlYWFiZjJiNjE4MWYyYmM3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC00OCw3ICs0OCw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZW5hbWVPcmlnaW5JbldlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIG9sZERvbWFpbiwgVVJMIG5ld0RvbWFpbiwgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzKSAtPiAoKSBBc3luYwog
CiAgICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBl
bnVtOmJvb2wgT3B0aW9uYWw8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQotICAg
IFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJlZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKKyAgICBSZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBJUEM6OkRhdGFSZWZlcmVuY2UgcmVzdW1lRGF0YSwgU3Ry
aW5nIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNp
b25IYW5kbGUsIGVudW06Ym9vbCBXZWJLaXQ6OkNhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3du
bG9hZERpZFN0YXJ0KQogICAgIENhbmNlbERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElEKSAtPiAoSVBDOjpEYXRhUmVmZXJlbmNlIHJlc3VtZURhdGEpIEFzeW5jCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUHVibGlzaERvd25sb2FkUHJvZ3Jlc3MoV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIFVSTCB1cmwsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5kZXggZDVhNDY1YWIw
YjhiMmVmODAxZmYwZmFmZWQyMmUzZjMwYzAzMDE0Zi4uMGQwYWFkNGZmN2QyZjNmMjdjZmUyYjZi
ODExYjYwZWJjNTU5NjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNzY4LDYgKzc2OCwyMCBA
QCBzdGF0aWMgaW5saW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3Jr
U2Vzc2lvbkNvY29hJiBzZXNzaW9uLCBTZQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKKyNp
ZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIGlmIChyZXN1bWVEYXRh
KSB7CisgICAgICAgICAgICAvLyBNb2phdmUgZG9lcyBub3QgaW5jbHVkZSB0aGUgZG93bmxvYWQg
bG9jYXRpb24gaW4gdGhlIHJlc3VtZSBkYXRhIGZyb20gQ0ZOZXR3b3JrLiBBZGQgaXQgZnJvbSB0
aGUgdGFzay4KKyAgICAgICAgICAgIGF1dG8gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVk
VW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdGcm9tRGF0YTpyZXN1bWVEYXRhIGVycm9y
Om5pbF0pOworICAgICAgICAgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5
Ok5TRGVjb2RpbmdGYWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgICAgICAgICAgYXV0
byBkaWN0aW9uYXJ5ID0gYWRvcHROUyhzdGF0aWNfY2FzdDxOU011dGFibGVEaWN0aW9uYXJ5ICo+
KFtbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RPZkNsYXNzZXM6W05TU2V0IHNldFdpdGhPYmplY3Rz
OltOU0RpY3Rpb25hcnkgY2xhc3NdLCBbTlNBcnJheSBjbGFzc10sIFtOU1N0cmluZyBjbGFzc10s
IFtOU051bWJlciBjbGFzc10sIFtOU0RhdGEgY2xhc3NdLCBbTlNVUkwgY2xhc3NdLCBbTlNVUkxS
ZXF1ZXN0IGNsYXNzXSwgbmlsXSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RPYmplY3RLZXki
XSBtdXRhYmxlQ29weV0pKTsKKyAgICAgICAgICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5n
XTsKKyAgICAgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp0YXNrLl9wYXRoVG9Eb3dubG9h
ZFRhc2tGaWxlIGZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2NhbFBhdGgiXTsKKyAg
ICAgICAgICAgIGF1dG8gZW5jb2RlciA9IGFkb3B0TlMoW1tOU0tleWVkQXJjaGl2ZXIgYWxsb2Nd
IGluaXRSZXF1aXJpbmdTZWN1cmVDb2Rpbmc6WUVTXSk7CisgICAgICAgICAgICBbZW5jb2RlciBl
bmNvZGVPYmplY3Q6ZGljdGlvbmFyeS5nZXQoKSBmb3JLZXk6QCJOU0tleWVkQXJjaGl2ZVJvb3RP
YmplY3RLZXkiXTsKKyAgICAgICAgICAgIHJlc3VtZURhdGEgPSBbZW5jb2RlciBlbmNvZGVkRGF0
YV07CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgICAgIGF1dG8gcmVzdW1lRGF0YVJlZmVyZW5j
ZSA9IHJlc3VtZURhdGEgPyBJUEM6OkRhdGFSZWZlcmVuY2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4ocmVzdW1lRGF0YS5ieXRlcyksIHJlc3VtZURhdGEubGVuZ3RoIH0gOiBJUEM6OkRh
dGFSZWZlcmVuY2UgeyB9OwogICAgICAgICBkb3dubG9hZC0+ZGlkRmFpbChlcnJvciwgcmVzdW1l
RGF0YVJlZmVyZW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2Fn
ZXMucHkKaW5kZXggODlmYjhhYmFmOWFlY2UwN2M2MzQ3MGRhM2RiODNjODgzMjZkZDNmMi4uMzQ0
NTUwMDBkZWY4NTRjMzljMmM0NDk3ZGIyN2EyZmQ5NWJmMmRjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC02NzYsNiArNjc2LDcgQEAgZGVmIGhlYWRlcnNf
Zm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3RhdGVDaGFuZ2VJRCc6
IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpBbGxvd092ZXJ3cml0
ZSc6IFsnIkRvd25sb2FkSUQuaCInXSwKICAgICAgICAgJ1dlYktpdDo6QmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJzogWyciU2Vzc2lvblN0YXRlLmgiJ10sCisgICAgICAgICdXZWJLaXQ6OkNhbGxE
b3dubG9hZERpZFN0YXJ0JzogWyciRG93bmxvYWRNYW5hZ2VyLmgiJ10sCiAgICAgICAgICdXZWJL
aXQ6OkNvbnRlbnRXb3JsZElkZW50aWZpZXInOiBbJyJDb250ZW50V29ybGRTaGFyZWQuaCInXSwK
ICAgICAgICAgJ1dlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVlc3QnOiBbJyJEb2N1
bWVudEVkaXRpbmdDb250ZXh0LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6OkZpbmRPcHRpb25zJzog
WyciV2ViRmluZE9wdGlvbnMuaCInXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XZWJLaXQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XZWJL
aXQuaAppbmRleCAxZjdhM2RkM2M2OTczZTEwOTk0ZjVkYzEzN2ZhZjQwNmEyNWVhMjlkLi40MTVk
OTE2NDY1OTZjZWYyN2Y4NzE4M2Y1MmNkZTE5MjBmYjUwNGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV2ViS2l0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dlYktpdC5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW1wb3J0IDxXZWJLaXQv
V0tDb250ZW50UnVsZUxpc3RTdG9yZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLQ29udGVudFdvcmxk
Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tEb3dubG9hZC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93bmxvYWREZWxlZ2F0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3IuaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZpbmRD
b25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tGaW5kUmVzdWx0Lmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCmluZGV4IDdmODBiYTE0OGMw
ZTllN2MxZTcwNjczYzUyYWMxMWViMjIyMGFjZjYuLjRhMTEzNjQ2MTFjZmJjNzBmOTY0NzZhYjMx
ZjllMTUxYzU5MjlhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
U2hhcmVkQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2hhcmVk
QVBJQ2FzdC5oCkBAIC0xMjcsNiArMTI3LDEyIEBAIGF1dG8gdG9BUEkoVCogdCkgLT4gQVBJVHlw
ZQogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFQSVR5cGU+KEFQSTo6T2JqZWN0Ojp3cmFw
KHQpKTsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQVBJVHlwZSA9IHR5cGVu
YW1lIEltcGxUeXBlSW5mbzxUPjo6QVBJVHlwZT4KK2F1dG8gdG9BUEkoVCYgdCkgLT4gQVBJVHlw
ZQoreworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEFQSVR5cGU+KEFQSTo6T2JqZWN0Ojp3
cmFwKCZ0KSk7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEltcGxUeXBlID0g
dHlwZW5hbWUgQVBJVHlwZUluZm88VD46OkltcGxUeXBlPgogYXV0byB0b0ltcGwoVCB0KSAtPiBJ
bXBsVHlwZSoKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9i
amVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCBm
OGEwMjhiMDZiNTEwNjEwOGRkYzNjYmI2OGE0MDFiZmEzNWY3ZGJlLi43ZjA1ODQ1NmRlZTc2NDg5
ODFmZDQ2ZjFmMDA1N2Y3NTNmZDZlMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJ
T2JqZWN0Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXS0NvbnRlbnRSdWxlTGlzdFN0
b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLQ29udGV4dE1lbnVFbGVtZW50SW5mb0ludGVybmFsLmgiCisjaW1wb3J0ICJXS0Rvd25s
b2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRnJhbWVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQg
IldLSFRUUENvb2tpZVN0b3JlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgpAQCAt
NzMsNyArNzQsNiBAQAogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgog
I2ltcG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9X
S0N1c3RvbUhlYWRlckZpZWxkc0ludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tEb3dubG9hZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tFeHBlcmltZW50YWxGZWF0dXJlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJ
bnRlcm5hbC5oIgpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNp
emVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBUeXBlOjpE
b3dubG9hZDoKLSAgICAgICAgd3JhcHBlciA9IFtfV0tEb3dubG9hZCBhbGxvY107CisgICAgICAg
IHdyYXBwZXIgPSBbV0tEb3dubG9hZCBhbGxvY107CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBUeXBlOjpFeHBlcmltZW50YWxGZWF0dXJlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggOWM4OGU5NDZhZDNl
YjUyYmViNDc3ZTRhM2I3M2VlODI0ZWE4NTliOC4uZWM1ZWI1NTcwNjUzMTFjZGUzYzkwZTQ3YTM2
OWI3NDRmY2YxMjdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zNzgsNyArMzc4LDcgQEAgVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHRDb25maWd1cmF0
aW9uUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLQ29va2llTWFuYWdlci5jcHAKIFVJUHJvY2Vz
cy9BUEkvQy9XS0NyZWRlbnRpYWwuY3BwCi1VSVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZC5jcHAK
K1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcAogVUlQcm9jZXNzL0FQSS9DL1dLRm9y
bVN1Ym1pc3Npb25MaXN0ZW5lci5jcHAKIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lLmNwcAogVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWVIYW5kbGVSZWYuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggNTY2OGU0NGY1ZjVmMGFjNGUwZDEzNTEzNTBhMTc5ODYzYTZlMDNkNi4uZmYwZWE3MDZmYjkz
MGZjZDZjNDE4ZDQwY2NjNzhkZTgwZmIzOGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
MzAzLDYgKzMwMyw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3QubW0K
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRXb3JsZC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRl
eHRNZW51RWxlbWVudEluZm8ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZC5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZENvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0Lm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJRG93bmxvYWRDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCmluZGV4
IGQzN2Y2Mjg2OGI2MTI5N2ExMWFmZmYzODAyYTgwYmE2MTJhNGRjZTUuLmRmZjczZmE2NWJmNmZi
MGFkMTdhZmE5OWY1ODJmOTQyZmFmN2EwYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElEb3dubG9hZENsaWVudC5oCkBAIC00OSwxOCArNDksMjAgQEAgZW51bSBjbGFz
cyBBbGxvd092ZXJ3cml0ZSA6IGJvb2w7CiAKIG5hbWVzcGFjZSBBUEkgewogCitjbGFzcyBEYXRh
OworCiBjbGFzcyBEb3dubG9hZENsaWVudCA6IHB1YmxpYyBSZWZDb3VudGVkPERvd25sb2FkQ2xp
ZW50PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+RG93bmxvYWRDbGllbnQoKSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydChXZWJL
aXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbGVnYWN5RGlkU3RhcnQo
V2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXQ6OkRvd25sb2FkUHJveHkmLCBXZWJLaXQ6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkgeyBjaGFsbGVuZ2UubGlzdGVu
ZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OkNhbmNlbCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2Vi
S2l0OjpEb3dubG9hZFByb3h5JiwgdWludDY0X3QsIHVpbnQ2NF90LCB1aW50NjRfdCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdl
YktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXVEY6OlN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092
ZXJ3cml0ZSwgV1RGOjpTdHJpbmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25I
YW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOyB9CiAgICAgdmlydHVhbCB2
b2lkIGRpZENyZWF0ZURlc3RpbmF0aW9uKFdlYktpdDo6RG93bmxvYWRQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWwoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYsIEFQSTo6RGF0YSogcmVzdW1lRGF0YSkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGxl
Z2FjeURpZENhbmNlbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCB3aWxsU2VuZFJlcXVlc3QoV2ViS2l0OjpEb3dubG9hZFByb3h5JiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25BY3Rp
b24uaAppbmRleCBiYmE4NTlhZjJlNDM1ZTlmMDkyNGY0YTMyZTExN2Q5NjM5NWRiZjk1Li5hMDE4
ZTc0NTQyYjdkYjExM2UzMjE0ZGQ1NjFlODZiNWVjODk4ZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkFjdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTcxLDYgKzcxLDgg
QEAgcHVibGljOgogICAgIHZvaWQgdW5zZXRTaG91bGRQZXJmb3JtU09BdXRob3JpemF0aW9uKCkg
eyBtX3Nob3VsZFBlcmZvcm1TT0F1dGhvcml6YXRpb24gPSBmYWxzZTsgfQogI2VuZGlmCiAKKyAg
ICBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1
cm4gbV9uYXZpZ2F0aW9uQWN0aW9uRGF0YTsgfQorICAgIAogcHJpdmF0ZToKICAgICBOYXZpZ2F0
aW9uQWN0aW9uKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lLCBBUEk6OkZyYW1lSW5mbyogdGFyZ2V0
RnJhbWUsIE9wdGlvbmFsPFdURjo6U3RyaW5nPiB0YXJnZXRGcmFtZU5hbWUsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFdURjo6VVJMJiBvcmlnaW5hbFVSTCwgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MsIFJlZlB0cjxVc2VySW5pdGlhdGVkQWN0aW9uPiYmIHVzZXJJ
bml0aWF0ZWRBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbikKICAg
ICAgICAgOiBtX3NvdXJjZUZyYW1lKHNvdXJjZUZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKaW5kZXggMDYxZTE4NmRiZTg4NmEw
NzQyMmJmODNiN2FmY2ZjYmM2YWM5ZTZhZS4uZDgzNjY0ZTA4MjA2YzdmZWJmMjgxZTkyY2VlNDky
NWZmNmFkZGY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRh
dGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eTsKK2NsYXNzIERvd25sb2FkUHJveHk7CiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQcm94
eTsKQEAgLTk5LDYgKzEwMCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVy
aW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBOYXZpZ2F0
aW9uUmVzcG9uc2UmLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgTmF2aWdhdGlvbkFjdGlvbiYsIFdlYktpdDo6RG93bmxvYWRQcm94eSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpEb3dubG9hZFByb3h5JikgeyB9CisKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdl
Lmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQogICAgIHZpcnR1YWwg
dm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTmVnb3RpYXRlTW9kZXJuVExTKGNvbnN0IFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50LmgKaW5kZXggN2QyZTkzNDQ2MmNmM2JkYzE5YTE5YjdkZDMxYTBjMmE5
Y2ViZWQ0Zi4uMjYxMDE4OGE5NzU2OWRiM2UzYzc4YWViMDRhODU4MjUxOTMyZDE1ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaApAQCAtNTAsMTEg
KzUwLDExIEBAIGNsYXNzIFBvbGljeUNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+UG9s
aWN5Q2xpZW50KCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSos
IGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYg
bGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKKyAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBs
aXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKICAgICAgICAgbGlzdGVuZXItPnVzZSgpOwog
ICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCisgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2Vi
RnJhbWVQcm94eSYsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdURjo6U3RyaW5nJiwgUmVmPFdlYktpdDo6V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewog
ICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggM2EwODNjYTQ4NjQ0M2JkODgwNjMzYTVjMjYwNzRl
MjYyZDExMzRiYy4uYTI4YTRjNjE3ZWNkNjk4ZTM0ZDJhOWY4MDFkYWU5OTA3MDE1MWZmZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwCkBAIC0xNzgsNyAr
MTc4LDcgQEAgdm9pZCBXS0NvbnRleHRTZXREb3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29u
dGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxvYWRDbGkKICAgICAgICAgICAgIGluaXRpYWxpemUo
Y2xpZW50KTsKICAgICAgICAgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGlkU3RhcnQo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KSBmaW5hbAorICAgICAgICB2b2lk
IGxlZ2FjeURpZFN0YXJ0KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgZmlu
YWwKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydCkKICAgICAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXS0NvbnRleHRTZXRE
b3dubG9hZENsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0RG93bmxv
YWRDbGkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBtX2NsaWVudC5kaWRG
aW5pc2gobV9jb250ZXh0LCBXZWJLaXQ6OnRvQVBJKCZkb3dubG9hZFByb3h5KSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGRpZEZhaWwoV2ViS2l0
OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikgZmluYWwKKyAgICAgICAgdm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQ
cm94eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Is
IEFQSTo6RGF0YSopIGZpbmFsCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGlkRmFpbCkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
MGMyODdiYjM0NzA0NzNhZDViYzY0ZmNmZDUzODg0Yzc1MmViZWM5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLRG93bmxvYWQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS0Rvd25sb2FkLmgiCi0KLSNp
bmNsdWRlICJBUElBcnJheS5oIgotI2luY2x1ZGUgIkFQSURhdGEuaCIKLSNpbmNsdWRlICJBUElE
b3dubG9hZENsaWVudC5oIgotI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKLSNpbmNsdWRlICJE
b3dubG9hZFByb3h5LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZVByb3h5LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLVdLVHlwZUlEIFdLRG93bmxv
YWRHZXRUeXBlSUQoKQotewotICAgIHJldHVybiB0b0FQSShEb3dubG9hZFByb3h5OjpBUElUeXBl
KTsKLX0KLQotdWludDY0X3QgV0tEb3dubG9hZEdldElEKFdLRG93bmxvYWRSZWYpCi17Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLVdLVVJMUmVxdWVzdFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tE
b3dubG9hZFJlZiBkb3dubG9hZCkKLXsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVz
dDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSkubGVha1JlZigpKTsKLX0KLQot
V0tEYXRhUmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
Ci17Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkb3dubG9hZCktPmxlZ2FjeVJlc3VtZURhdGEo
KSk7Ci19Ci0KLXZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQot
ewotICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Rvd25sb2FkID0gbWFrZVJl
ZigqdG9JbXBsKGRvd25sb2FkKSldIChhdXRvKikgewotICAgICAgICBkb3dubG9hZC0+Y2xpZW50
KCkubGVnYWN5RGlkQ2FuY2VsKGRvd25sb2FkLmdldCgpKTsKLSAgICB9KTsKLX0KLQotV0tQYWdl
UmVmIFdLRG93bmxvYWRHZXRPcmlnaW5hdGluZ1BhZ2UoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkK
LXsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRvd25sb2FkKS0+b3JpZ2luYXRpbmdQYWdlKCkp
OwotfQotCi1XS0FycmF5UmVmIFdLRG93bmxvYWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKQotewotICAgIGF1dG8mIHJlZGlyZWN0Q2hhaW4gPSAgdG9JbXBsKGRvd25s
b2FkKS0+cmVkaXJlY3RDaGFpbigpOwotICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB1
cmxzOwotICAgIHVybHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShyZWRpcmVjdENoYWluLnNpemUo
KSk7Ci0gICAgZm9yIChhdXRvJiByZWRpcmVjdFVSTCA6IHJlZGlyZWN0Q2hhaW4pCi0gICAgICAg
IHVybHMudW5jaGVja2VkQXBwZW5kKEFQSTo6VVJMOjpjcmVhdGUocmVkaXJlY3RVUkwuc3RyaW5n
KCkpKTsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHVybHMp
KS5sZWFrUmVmKCkpOwotfQotCi1ib29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdL
RG93bmxvYWRSZWYgZG93bmxvYWQpCi17Ci0gICAgcmV0dXJuIHRvSW1wbChkb3dubG9hZCktPndh
c1VzZXJJbml0aWF0ZWQoKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLRG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93
bmxvYWQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmNzIwMjc5M2Q1NGY1NDJh
MzkwOTIwNGEzYzgwZGFjYTlhZDIxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS0Rv
d25sb2FkX2gKLSNkZWZpbmUgV0tEb3dubG9hZF9oCi0KLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLRGVwcmVjYXRlZC5oPgotCi0jaWZuZGVmIF9fY3BsdXNw
bHVzCi0jaW5jbHVkZSA8c3RkYm9vbC5oPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
ZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotV0tfRVhQT1JUIFdLVHlwZUlEIFdLRG93bmxvYWRHZXRU
eXBlSUQoKTsKLQotV0tfRVhQT1JUIHVpbnQ2NF90IFdLRG93bmxvYWRHZXRJRChXS0Rvd25sb2Fk
UmVmIGRvd25sb2FkKSBXS19DX0FQSV9ERVBSRUNBVEVEOwotV0tfRVhQT1JUIFdLVVJMUmVxdWVz
dFJlZiBXS0Rvd25sb2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCk7Ci1XS19F
WFBPUlQgV0tEYXRhUmVmIFdLRG93bmxvYWRHZXRSZXN1bWVEYXRhKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpOwotV0tfRVhQT1JUIHZvaWQgV0tEb3dubG9hZENhbmNlbChXS0Rvd25sb2FkUmVmIGRv
d25sb2FkKTsKLVdLX0VYUE9SVCBXS1BhZ2VSZWYgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5nUGFn
ZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBXS0FycmF5UmVmIFdLRG93bmxv
YWRDb3B5UmVkaXJlY3RDaGFpbihXS0Rvd25sb2FkUmVmIGRvd25sb2FkKTsKLVdLX0VYUE9SVCBi
b29sIFdLRG93bmxvYWRHZXRXYXNVc2VySW5pdGlhdGVkKFdLRG93bmxvYWRSZWYgZG93bmxvYWQp
OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gV0tEb3dubG9h
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2Fk
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkQ2xpZW50
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWE2OGFiNmEwMTMzZjU3OGVjNTg5Mzc2NmEwMGYwZjdkNDVhNjkwNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxv
YWRDbGllbnQuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXS0Rvd25s
b2FkQ2xpZW50X2gKKyNkZWZpbmUgV0tEb3dubG9hZENsaWVudF9oCisKKyNpbmNsdWRlIDxXZWJL
aXQvV0tCYXNlLmg+CisKK3R5cGVkZWYgYm9vbCAoKldLRG93bmxvYWRXaWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbikoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNw
b25zZSwgV0tVUkxSZXF1ZXN0UmVmIG5ld1JlcXVlc3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
OwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJl
ZiBjaGFsbGVuZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiBXS1N0cmluZ1Jl
ZiAoKldLRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgV0tTdHJpbmdSZWYgc3VnZ2Vz
dGVkRmlsZW5hbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tE
b3dubG9hZERpZFdyaXRlRGF0YSkoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgbG9uZyBsb25nIGJ5
dGVzV3JpdHRlbiwgbG9uZyBsb25nIHRvdGFsQnl0ZXNXcml0dGVuLCBsb25nIGxvbmcgdG90YWxC
eXRlc0V4cGVjdGVkVG9Xcml0ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS0Rvd25sb2FkRGlkRmluaXNoKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLRG93bmxvYWREaWRGYWlsV2l0aEVy
cm9yKShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Vycm9yUmVmIGVycm9yLCBXS0RhdGFSZWYg
cmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgc3RydWN0IFdL
RG93bmxvYWRDbGllbnRCYXNlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CisgICAgY29uc3Qgdm9pZCAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwor
fSBXS0Rvd25sb2FkQ2xpZW50QmFzZTsKKwordHlwZWRlZiBzdHJ1Y3QgV0tEb3dubG9hZENsaWVu
dFYwIHsKKyAgICBXS0Rvd25sb2FkQ2xpZW50QmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2U7CisKKyAgICAvLyBWZXJzaW9uIDAuCisgICAgV0tEb3dubG9hZFdp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICB3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbjsKKyAgICBXS0Rvd25sb2FkRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICAgICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTsKKyAgICBXS0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgICAgICAgICAg
ICAgICAgICAgIGRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOworICAgIFdLRG93bmxvYWRE
aWRXcml0ZURhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkV3JpdGVE
YXRhOworICAgIFdLRG93bmxvYWREaWRGaW5pc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkRmluaXNoOworICAgIFdLRG93bmxvYWREaWRGYWlsV2l0aEVycm9yICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbFdpdGhFcnJvcjsKK30gV0tEb3du
bG9hZENsaWVudFYwOworCisjZW5kaWYgLyogV0tEb3dubG9hZENsaWVudF9oICovCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmVlYmNjOTJkNzk5YTU1YmFkMTcxMTVjYjg2YTdjOGJjODcwNDYzMzYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS0Rvd25sb2FkUmVmLmNwcApAQCAt
MCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldLRG93bmxvYWRSZWYuaCIKKworI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVk
ZSAiQVBJRGF0YS5oIgorI2luY2x1ZGUgIkFQSURvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAi
QVBJVVJMUmVxdWVzdC5oIgorI2luY2x1ZGUgIkRvd25sb2FkUHJveHkuaCIKKyNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0Rvd25sb2FkQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5LmgiCisKK25hbWVzcGFjZSBBUEkgewordGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50
VHJhaXRzPFdLRG93bmxvYWRDbGllbnRCYXNlPiB7CisgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdL
RG93bmxvYWRDbGllbnRWMD4gVmVyc2lvbnM7Cit9OworfQorCit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitXS1R5cGVJRCBXS0Rvd25sb2FkR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9B
UEkoRG93bmxvYWRQcm94eTo6QVBJVHlwZSk7Cit9CisKK1dLVVJMUmVxdWVzdFJlZiBXS0Rvd25s
b2FkQ29weVJlcXVlc3QoV0tEb3dubG9hZFJlZiBkb3dubG9hZCkKK3sKKyAgICByZXR1cm4gdG9B
UEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHRvSW1wbChkb3dubG9hZCktPnJlcXVlc3QoKSku
bGVha1JlZigpKTsKK30KKwordm9pZCBXS0Rvd25sb2FkQ2FuY2VsKFdLRG93bmxvYWRSZWYgZG93
bmxvYWQsIGNvbnN0IHZvaWQqIGZ1bmN0aW9uQ29udGV4dCwgV0tEb3dubG9hZENhbmNlbENhbGxi
YWNrIGNhbGxiYWNrKQoreworICAgIHJldHVybiB0b0ltcGwoZG93bmxvYWQpLT5jYW5jZWwoW2Z1
bmN0aW9uQ29udGV4dCwgY2FsbGJhY2tdKGF1dG8qIHJlc3VtZURhdGEpIHsKKyAgICAgICAgaWYg
KGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2sodG9BUEkocmVzdW1lRGF0YSksIGZ1bmN0
aW9uQ29udGV4dCk7CisgICAgfSk7Cit9CisKK1dLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2lu
YXRpbmdQYWdlKFdLRG93bmxvYWRSZWYgZG93bmxvYWQpCit7CisgICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChkb3dubG9hZCktPm9yaWdpbmF0aW5nUGFnZSgpKTsKK30KKworYm9vbCBXS0Rvd25sb2Fk
R2V0V2FzVXNlckluaXRpYXRlZChXS0Rvd25sb2FkUmVmIGRvd25sb2FkKQoreworICAgIHJldHVy
biB0b0ltcGwoZG93bmxvYWQpLT53YXNVc2VySW5pdGlhdGVkKCk7Cit9CisKK3ZvaWQgV0tEb3du
bG9hZFNldENsaWVudChXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS0Rvd25sb2FkQ2xpZW50QmFz
ZSogY2xpZW50KQoreworICAgIGNsYXNzIERvd25sb2FkQ2xpZW50IDogcHVibGljIEFQSTo6Q2xp
ZW50PFdLRG93bmxvYWRDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6RG93bmxvYWRDbGllbnQgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRG93bmxvYWRDbGllbnQoY29uc3QgV0tEb3du
bG9hZENsaWVudEJhc2UqIGNsaWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5pdGlhbGl6
ZShjbGllbnQpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICAKKyAgICAgICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFs
bGVuZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSB7CisgICAgICAgICAgICAgICAgY2hhbGxl
bmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpSZWplY3RQcm90ZWN0aW9uU3BhY2VBbmRDb250aW51ZSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jbGll
bnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRvQVBJKGRvd25sb2FkKSwgdG9B
UEkoY2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9h
ZCwgdWludDY0X3QgYnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgdWlu
dDY0X3QgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRXcml0ZURhdGEpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgbV9jbGllbnQuZGlkV3JpdGVEYXRhKHRvQVBJKGRvd25sb2FkKSwg
Ynl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0
ZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXZWJLaXQ6OkRvd25sb2Fk
UHJveHkmIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYktpdDo6QWxsb3dPdmVyd3JpdGUsIFdURjo6U3RyaW5nKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
ZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBkZXN0
aW5hdGlvbiA9IHRvSW1wbChtX2NsaWVudC5kZWNpZGVEZXN0aW5hdGlvbldpdGhSZXNwb25zZSh0
b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUu
aW1wbCgpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CisgICAgICAgICAgICBpZiAoIWRl
c3RpbmF0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpB
bGxvd092ZXJ3cml0ZTo6Tm8sIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpBbGxvd092ZXJ3
cml0ZTo6Tm8sIGRlc3RpbmF0aW9uLT5zdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICB2
b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlkZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2godG9BUEkoZG93
bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBkaWRGYWlsKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6OkRhdGEqIHJlc3VtZURhdGEpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmFpbFdpdGhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsV2l0
aEVycm9yKHRvQVBJKGRvd25sb2FkKSwgdG9BUEkoZXJyb3IpLCB0b0FQSShyZXN1bWVEYXRhKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcHJv
Y2Vzc0RpZENyYXNoKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJyaWRlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRpZEZhaWwoZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBkb3dubG9hZC5y
ZXF1ZXN0KCkudXJsKCksICJOZXR3b3JrIHByb2Nlc3MgY3Jhc2hlZCBkdXJpbmcgZG93bmxvYWQi
IH0sIG51bGxwdHIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCB3aWxsU2VuZFJlcXVlc3Qo
V2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFtX2NsaWVudC53aWxsUGVyZm9ybUhUVFBS
ZWRpcmVjdGlvbih0b0FQSShkb3dubG9hZCksIHRvQVBJKHJlc3BvbnNlKSwgdG9BUEkocmVxdWVz
dCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAg
ICB9CisgICAgfTsKKworICAgIHRvSW1wbChkb3dubG9hZCktPnNldENsaWVudChhZG9wdFJlZigq
bmV3IERvd25sb2FkQ2xpZW50KGNsaWVudCkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLRG93bmxvYWRSZWYuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDU4ZDY3ZWZmY2Y0ZmFkYzBm
ZjBhOTRlNjBjYjZlMjE1MmZjZjBiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tEb3dubG9hZFJlZi5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV0tEb3dubG9hZFJlZl9oCisjZGVmaW5lIFdLRG93bmxvYWRSZWZf
aAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0Rvd25s
b2FkQ2xpZW50Lmg+CisKKyNpZm5kZWYgX19jcGx1c3BsdXMKKyNpbmNsdWRlIDxzdGRib29sLmg+
CisjZW5kaWYKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitX
S19FWFBPUlQgV0tUeXBlSUQgV0tEb3dubG9hZEdldFR5cGVJRCgpOworCitXS19FWFBPUlQgV0tV
UkxSZXF1ZXN0UmVmIFdLRG93bmxvYWRDb3B5UmVxdWVzdChXS0Rvd25sb2FkUmVmIGRvd25sb2Fk
KTsKKwordHlwZWRlZiB2b2lkICgqV0tEb3dubG9hZENhbmNlbENhbGxiYWNrKShXS0RhdGFSZWYg
cmVzdW1lRGF0YSwgY29uc3Qgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lk
IFdLRG93bmxvYWRDYW5jZWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogZnVu
Y3Rpb25Db250ZXh0LCBXS0Rvd25sb2FkQ2FuY2VsQ2FsbGJhY2sgY2FsbGJhY2spOworV0tfRVhQ
T1JUIFdLUGFnZVJlZiBXS0Rvd25sb2FkR2V0T3JpZ2luYXRpbmdQYWdlKFdLRG93bmxvYWRSZWYg
ZG93bmxvYWQpOworV0tfRVhQT1JUIGJvb2wgV0tEb3dubG9hZEdldFdhc1VzZXJJbml0aWF0ZWQo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCk7CitXS19FWFBPUlQgdm9pZCBXS0Rvd25sb2FkU2V0Q2xp
ZW50KFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLRG93bmxvYWRDbGllbnRCYXNlKiBjbGllbnQp
OworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tEb3dubG9h
ZFJlZl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS05h
dmlnYXRpb25BY3Rpb25SZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2
aWdhdGlvbkFjdGlvblJlZi5oCmluZGV4IDlkOGZjZjFlMTk5NzEzYjFmMDliMzI2MjBkMjE1Nzky
NDU0ODZlOWMuLmQ4Y2ViYTRlNGY5MmJhMDliNjkyNGQ1MTkwOWI5YTlkNmI0NTMxNWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlvblJl
Zi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLTmF2aWdhdGlvbkFjdGlv
blJlZi5oCkBAIC0zNCw3ICszNCw3IEBAIGV4dGVybiAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBl
SUQgV0tOYXZpZ2F0aW9uQWN0aW9uR2V0VHlwZUlEKCk7CiAKLVdLX0VYUE9SVCBib29sIFdLTmF2
aWdhdGlvbkFjdGlvblNob3VsZFBlcmZvcm1Eb3dubG9hZChXS05hdmlnYXRpb25BY3Rpb25SZWYp
OworV0tfRVhQT1JUIGJvb2wgV0tOYXZpZ2F0aW9uQWN0aW9uU2hvdWxkUGVyZm9ybURvd25sb2Fk
KFdLTmF2aWdhdGlvbkFjdGlvblJlZiBhY3Rpb24pOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVlNTExOWZkMGNj
MjZjYjhlMTUwMzcxOTUwMGQ5MjdlNDFhYjQyYWYuLjIyNGRjMTgxMTU0MWEyZDIxMmY0NGViODc0
NWFiYjIxYzdhMTE1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cApAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHkuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNs
dWRlICJDb250ZW50QXNTdHJpbmdJbmNsdWRlc0NoaWxkRnJhbWVzLmgiCisjaW5jbHVkZSAiRG93
bmxvYWRQcm94eS5oIgogI2luY2x1ZGUgIkxlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCkBA
IC0xMjQwLDcgKzEyNDEsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdl
UmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIG9yaWdp
bmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNv
dXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1
ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBS
ZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFdlYkZyYW1lUHJv
eHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVz
b3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CkBAIC0xMjUx
LDE0ICsxMjUyLDE0IEBAIHZvaWQgV0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYg
cGFnZVJlZiwgY29uc3QgV0tQYWdlUG9saWN5Q2xpZW50QmFzZSoKICAgICAgICAgICAgIFJlZjxB
UEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXNvdXJj
ZVJlcXVlc3QpOwogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAgICAgICAgICAgIG1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25fZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCh0b0FQSSgmcGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRh
dGEubmF2aWdhdGlvblR5cGUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb2RpZmllcnMp
LCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5tb3VzZUJ1dHRvbiksIHRvQVBJKHJlcXVlc3Qu
cHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9BUEkoJnBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlw
ZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZp
Z2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShyZXF1ZXN0LnB0cigpKSwg
dG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgICAgICBlbHNlIGlmIChtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNl
V2l0aFYxKHRvQVBJKCZwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vZGlmaWVy
cyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNlQnV0dG9uKSwgdG9BUEkob3JpZ2lu
YXRpbmdGcmFtZSksIHRvQVBJKHJlcXVlc3QucHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAg
ICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25B
Y3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRh
dGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0
b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJ
KGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJ
KG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlKSwgdG9BUEkobmF2aWdhdGlvbkFj
dGlvbkRhdGEubW9kaWZpZXJzKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbkRhdGEubW91c2VCdXR0
b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9BUEkob3JpZ2luYWxSZXF1ZXN0LnB0cigp
KSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNl
ckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xp
ZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShm
cmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRv
QVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5tb2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9u
QWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0b0FQSShvcmlnaW5hdGluZ0ZyYW1lKSwgdG9B
UEkob3JpZ2luYWxSZXF1ZXN0LnB0cigpKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGxp
c3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OwogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgUmVmPEFQSTo6
TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pIHsKICAgICAgICAgICAgICAgICBsaXN0ZW5l
ci0+dXNlKCk7CkBAIC0xMjY3LDcgKzEyNjgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lD
bGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZVBvbGljeUNsaWVudEJhc2UqCiAK
ICAgICAgICAgICAgIFJlZjxBUEk6OlVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBBUEk6OlVSTFJlcXVl
c3Q6OmNyZWF0ZShyZXNvdXJjZVJlcXVlc3QpOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0
b0FQSShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRp
b25BY3Rpb25EYXRhLm1vZGlmaWVycyksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb25EYXRhLm1vdXNl
QnV0dG9uKSwgdG9BUEkocmVxdWVzdC5wdHIoKSksIHRvQVBJKGZyYW1lTmFtZS5pbXBsKCkpLCB0
b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24t
PmRhdGEoKS5uYXZpZ2F0aW9uVHlwZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24tPmRhdGEoKS5t
b2RpZmllcnMpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLT5kYXRhKCkubW91c2VCdXR0b24pLCB0
b0FQSShyZXF1ZXN0LnB0cigpKSwgdG9BUEkoZnJhbWVOYW1lLmltcGwoKSksIHRvQVBJKGxpc3Rl
bmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiByZXNvdXJjZVJlc3BvbnNlLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFJlZjxXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3Zl
cnJpZGUKQEAgLTIyNTksNiArMjI2MCwyNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9u
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZQogICAg
ICAgICAgICAgcmV0dXJuIEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6c2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLT5zdHJp
bmcoKSwgdXJsKSk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIG5hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0
aW9uQWN0aW9uJiBhY3Rpb24sIFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQubmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY2xpZW50Lm5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCh0b0FQSSgmcGFnZSks
IHRvQVBJKCZhY3Rpb24pLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9uUmVz
cG9uc2UmIHJlc3BvbnNlLCBXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkKSBvdmVycmlk
ZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IG1fY2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKHRvQVBJKCZwYWdl
KSwgdG9BUEkoJnJlc3BvbnNlKSwgdG9BUEkoJmRvd25sb2FkKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgY29udGV4dE1lbnVEaWRDcmVhdGVE
b3dubG9hZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgV2ViS2l0OjpEb3dubG9hZFByb3h5
JiBkb3dubG9hZCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5jb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIG1fY2xpZW50LmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQodG9BUEko
JnBhZ2UpLCB0b0FQSSgmZG93bmxvYWQpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICB9CisKICAgICAgICAgdm9pZCBkaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKFdlYlBhZ2VQ
cm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDM4MDZkMTg2YWE5
ZmI5Nzc0N2E3M2Q5NzM2MDZhNThlYjQxODhiNjAuLmE0YWFmZTRhOTM1YjMxMGEyMjAxYmY3YjRm
NzQ1NjVlNTUyYjg0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50LmgKQEAgLTcxLDcgKzcxLDEzIEBAIHR5cGVkZWYg
dm9pZCAoKldLUGFnZU5hdmlnYXRpb25XZWJQcm9jZXNzRGlkVGVybWluYXRlQ2FsbGJhY2spKFdL
UGFnZVJlZiBwYWdlLCBXCiB0eXBlZGVmIFdLRGF0YVJlZiAoKldLUGFnZU5hdmlnYXRpb25Db3B5
V2ViQ3J5cHRvTWFzdGVyS2V5Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKIAogdHlwZWRlZiBXS1N0cmluZ1JlZiAoKldLUGFnZU5hdmlnYXRpb25Db3B5
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICAKKwordHlwZWRlZiB2b2lkICgqV0tQYWdl
TmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdl
LCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3R5cGVkZWYgdm9pZCAoKldLUGFn
ZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS05hdmlnYXRpb25SZXNwb25zZVJlZiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFdLRG93bmxv
YWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCit0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VOYXZpZ2F0aW9uQ29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZENhbGxiYWNrKShX
S1BhZ2VSZWYgcGFnZSwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CisKIHR5cGVkZWYgV0tQbHVnaW5Mb2FkUG9saWN5ICgqV0tQYWdlTmF2aWdhdGlvbkRl
Y2lkZVBvbGljeUZvclBsdWdpbkxvYWRDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLUGx1Z2lu
TG9hZFBvbGljeSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgV0tEaWN0aW9uYXJ5UmVmIHBsdWdp
bkluZm9EaWN0aW9uYXJ5LCBXS1N0cmluZ1JlZiogdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZU5hdmlnYXRp
b25EaWRCZWdpbk5hdmlnYXRpb25HZXN0dXJlKShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CkBAIC0yMTMsNiArMjE5LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlTmF2
aWdhdGlvbkNsaWVudFYzIHsKIAogICAgIC8vIFZlcnNpb24gMy4KICAgICBXS1BhZ2VOYXZpZ2F0
aW9uQ29weVNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZ0NhbGxiYWNrIGNvcHlTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc7CisgICAgV0tQYWdlTmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkQ2FsbGJhY2sgbmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25s
b2FkOworICAgIFdLUGFnZU5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkQ2FsbGJh
Y2sgbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CisgICAgV0tQYWdlTmF2aWdh
dGlvbkNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRDYWxsYmFjayBjb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkOwogfSBXS1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjM7CiAKICNpZmRlZiBfX2Nw
bHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RG93bmxvYWQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjIwNGUzYmQ4MWQzZGIzZGUzYjc4MjdjMzVmZDdhNjFmMTA0ZTY0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rv
d25sb2FkLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRp
b24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xh
c3MgV0tGcmFtZUluZm87CitAY2xhc3MgV0tXZWJWaWV3OworQHByb3RvY29sIE5TUHJvZ3Jlc3NS
ZXBvcnRpbmc7CitAcHJvdG9jb2wgV0tEb3dubG9hZERlbGVnYXRlOworCitOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tEb3dubG9hZCA6IE5TT2JqZWN0PE5TUHJvZ3Jlc3NS
ZXBvcnRpbmc+CisKKy8qIEBhYnN0cmFjdCBUaGUgcmVxdWVzdCB1c2VkIHRvIGluaXRpYXRlIHRo
aXMgZG93bmxvYWQuCisgIEBkaXNjdXNzaW9uIElmIHRoZSBvcmlnaW5hbCByZXF1ZXN0IHJlZGly
ZWN0ZWQgdG8gYSBkaWZmZXJlbnQgVVJMLCBvcmlnaW5hbFJlcXVlc3QKKyAgd2lsbCBiZSB1bmNo
YW5nZWQgYWZ0ZXIgdGhlIGRvd25sb2FkIGZvbGxvd3MgdGhlIHJlZGlyZWN0LgorICovCitAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIG51bGxhYmxlKSBOU1VSTFJlcXVlc3QgKm9yaWdp
bmFsUmVxdWVzdDsKKworLyogQGFic3RyYWN0IFRoZSB3ZWIgdmlldyB0aGF0IG9yaWdpbmF0ZWQg
dGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgd2Vhaykg
V0tXZWJWaWV3ICp3ZWJWaWV3OworCisvKiBAYWJzdHJhY3QgVGhlIGRlbGVnYXRlIHRoYXQgcmVj
ZWl2ZXMgcHJvZ3Jlc3MgdXBkYXRlcyBmb3IgdGhpcyBkb3dubG9hZC4gKi8KK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tEb3dubG9hZERlbGVnYXRlPiBkZWxlZ2F0ZTsKKworLyog
QGFic3RyYWN0IENhbmNlbCB0aGUgZG93bmxvYWQuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVy
IEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gY2FuY2VsbGF0aW9uIGlzIGZpbmlzaGVkLgorIEBkaXNj
dXNzaW9uIFRvIGF0dGVtcHQgdG8gcmVzdW1lIHRoZSBkb3dubG9hZCwgY2FsbCBXS1dlYlZpZXcg
cmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTogd2l0aCB0aGUgZGF0YSBnaXZlbiB0byB0aGUg
Y29tcGxldGlvbkhhbmRsZXIuCisgSWYgbm8gcmVzdW1lIGF0dGVtcHQgaXMgcG9zc2libGUgd2l0
aCB0aGlzIHNlcnZlciwgY29tcGxldGlvbkhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBuaWwu
CisgKi8KKy0gKHZvaWQpY2FuY2VsOih2b2lkKF4gX051bGxhYmxlKShOU0RhdGEgKiBfTnVsbGFi
bGUgcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXI7CisKK0BlbmQKKworTlNfQVNTVU1FX05P
Tk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25s
b2FkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmVhODNlNmZjYjYyNzUzNzkzYzUyNTg1YmFlNDk1ZDA2YzYzNWMw
ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tEb3dubG9hZC5tbQpAQCAtMCwwICsxLDI2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCisKKyNpbXBvcnQgIkFQSURv
d25sb2FkQ2xpZW50LmgiCisjaW1wb3J0ICJDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmgi
CisjaW1wb3J0ICJEb3dubG9hZFByb3h5LmgiCisjaW1wb3J0ICJXS0Rvd25sb2FkRGVsZWdhdGUu
aCIKKyNpbXBvcnQgIldLTlNEYXRhLmgiCisjaW1wb3J0ICJXS05TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0IDxGb3Vu
ZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgorCitjbGFz
cyBEb3dubG9hZENsaWVudCBmaW5hbCA6IHB1YmxpYyBBUEk6OkRvd25sb2FkQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBleHBsaWNpdCBEb3dubG9hZENsaWVudChpZCA8V0tEb3dubG9hZERlbGVnYXRl
PiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRlKQorICAgICAgICAsIG1f
cmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5l
d1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0RpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihkb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29t
cGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRpZFdyaXRlRGF0
YTp0b3RhbEJ5dGVzV3JpdHRlbjp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOildKQorICAgICAg
ICAsIG1fcmVzcG9uZHNUb0RpZEZpbmlzaChbbV9kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKGRvd25sb2FkRGlkRmluaXNoOildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0Rp
ZEZhaWxXaXRoRXJyb3IoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZG93
bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpyZXN1bWVEYXRhOildKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRvd25sb2FkOmRlY2lk
ZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjopXSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdl
YktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9y
ZXNwb25kc1RvV2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICAgICAgUmV0YWluUHRy
PE5TVVJMUmVxdWVzdD4gbnNSZXF1ZXN0ID0gcmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6
SFRUUEJvZHlVcGRhdGVQb2xpY3k6OkRvTm90VXBkYXRlSFRUUEJvZHkpOworICAgICAgICBbbV9k
ZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSB3aWxsUGVyZm9ybUhUVFBSZWRpcmVj
dGlvbjpzdGF0aWNfY2FzdDxOU0hUVFBVUkxSZXNwb25zZSAqPihyZXNwb25zZS5uc1VSTFJlc3Bv
bnNlKCkpIG5ld1JlcXVlc3Q6bnNSZXF1ZXN0LmdldCgpIGRlY2lzaW9uSGFuZGxlcjptYWtlQmxv
Y2tQdHIoW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9y
KGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25I
YW5kbGVyOikpXShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29t
cGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgICAg
ICAgICBjYXNlIFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGNhc2UgV0tEb3du
bG9hZFJlZGlyZWN0UG9saWN5QWxsb3c6CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiSW52YWxpZCBXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kgKCVsZCkiLCAobG9uZylw
b2xpY3ldOworICAgICAgICAgICAgfQorICAgICAgICB9KS5nZXQoKV07CisgICAgfQorCisgICAg
dm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpEb3dubG9hZFBy
b3h5JiBkb3dubG9hZCwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFs
bGVuZ2UpIGZpbmFsCisgICAgeworICAgICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcmVzcG9u
ZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKKyAgICAgICAgICAgIHJldHVy
biBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlJlamVjdFByb3RlY3Rpb25TcGFjZUFuZENvbnRp
bnVlKTsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKSBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihjaGFsbGVuZ2UpIGNvbXBs
ZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hhbGxlbmdlID0gbWFrZVJlZihjaGFsbGVuZ2Up
LCBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUo
bV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVk
ZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFu
ZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHN3aXRj
aCAoZGlzcG9zaXRpb24pIHsKKyAgICAgICAgICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZVVzZUNyZWRlbnRpYWw6CisgICAgICAgICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigp
LmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbjo6VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCA/IFdlYkNvcmU6OkNyZWRlbnRpYWwoY3Jl
ZGVudGlhbCkgOiBXZWJDb3JlOjpDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1
bHRIYW5kbGluZzoKKyAgICAgICAgICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxl
dGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQ
ZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZUNhbmNlbEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOgorICAgICAgICAgICAgICAgIGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNo
YWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNl
bCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VSZWplY3RQcm90ZWN0aW9uU3BhY2U6CisgICAgICAgICAgICAgICAgY2hh
bGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKFdlYktpdDo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UmVqZWN0UHJvdGVjdGlvblNwYWNlQW5kQ29udGludWUp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9y
bWF0OkAiSW52YWxpZCBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gKCVsZCki
LCAobG9uZylkaXNwb3NpdGlvbl07CisgICAgICAgICAgICB9CisgICAgICAgIH0pLmdldCgpXTsK
KyAgICB9CisKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1l
KFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXVEY6OlN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBbGxvd092ZXJ3cml0ZSwgV1RGOjpTdHJp
bmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2Rl
bGVnYXRlKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndy
YXBwZXIoZG93bmxvYWQpIGRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZTpyZXNwb25zZS5u
c1VSTFJlc3BvbnNlKCkgc3VnZ2VzdGVkRmlsZW5hbWU6c3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxl
dGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtkb3dubG9hZCA9IG1ha2VSZWYoZG93bmxvYWQpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjaGVja2VyID0g
V2ViS2l0OjpDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5n
ZXQoKS5nZXQoKSwgQHNlbGVjdG9yKGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNw
b25zZTpzdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMICpkZXN0
aW5hdGlvbikgbXV0YWJsZSB7CisgICAgICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhh
bmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7CisKKyAgICAgICAgICAgIGlm
ICghZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoIWRlc3RpbmF0aW9uLmlzRmlsZVVSTCkgeworICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAg
ICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3Jt
YXQ6QCJkZXN0aW5hdGlvbiBtdXN0IGJlIGEgZmlsZSBVUkwiXTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIE5TRmlsZU1hbmFnZXIgKmZpbGVN
YW5hZ2VyID0gW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdOworICAgICAgICAgICAgaWYg
KCFbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpbZGVzdGluYXRpb24gVVJMQnlEZWxldGlu
Z0xhc3RQYXRoQ29tcG9uZW50XS5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQt
PmRpZEZhaWwoW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpO
U1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxs
b3dPdmVyd3JpdGU6Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmIChbZmlsZU1hbmFnZXIgZmlsZUV4aXN0c0F0UGF0aDpkZXN0
aW5hdGlvbi5wYXRoXSkgeworICAgICAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChbZG93bmxvYWRdIHsKKyAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQtPmRpZEZhaWwoW05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOk5TVVJMRXJyb3JEb21haW4gY29kZTpOU1VSTEVycm9yQ2Fu
bm90Q3JlYXRlRmlsZSB1c2VySW5mbzpuaWxdLCB7IH0pOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6QWxsb3dPdmVyd3JpdGU6
Ok5vLCB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgd3JhcHBlcihkb3dubG9hZC5nZXQoKSkucHJvZ3Jlc3MuZmlsZVVSTCA9IGRlc3Rp
bmF0aW9uOworCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJLaXQ6OkFsbG93T3Zl
cndyaXRlOjpObywgZGVzdGluYXRpb24ucGF0aCk7CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9
CisKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKFdlYktpdDo6RG93bmxvYWRQcm94eSYgZG93bmxv
YWQsIHVpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgdWludDY0X3QgdG90YWxCeXRlc1dyaXR0ZW4sIHVp
bnQ2NF90IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpIGZpbmFsCisgICAgeworICAgICAgICBO
U1Byb2dyZXNzICpwcm9ncmVzcyA9IHdyYXBwZXIoZG93bmxvYWQpLnByb2dyZXNzOworICAgICAg
ICBwcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQgPSB0b3RhbEJ5dGVzV3JpdHRlbjsKKyAgICAg
ICAgcHJvZ3Jlc3MudG90YWxVbml0Q291bnQgPSB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOwor
CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkV3JpdGVEYXRhKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVnYXRlIGRvd25sb2FkOndyYXBw
ZXIoZG93bmxvYWQpIGRpZFdyaXRlRGF0YTpieXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46
dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhw
ZWN0ZWRUb1dyaXRlXTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEZpbmlzaChXZWJLaXQ6OkRvd25s
b2FkUHJveHkmIGRvd25sb2FkKSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRl
IHx8ICFtX3Jlc3BvbmRzVG9EaWRGaW5pc2gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgW21fZGVsZWdhdGUgZG93bmxvYWREaWRGaW5pc2g6d3JhcHBlcihkb3dubG9hZCldOworICAg
IH0KKworICAgIHZvaWQgZGlkRmFpbChXZWJLaXQ6OkRvd25sb2FkUHJveHkmIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJOjpEYXRhKiByZXN1bWVEYXRh
KSBmaW5hbAorICAgIHsKKyAgICAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Jlc3BvbmRzVG9E
aWRGYWlsV2l0aEVycm9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFttX2RlbGVn
YXRlIGRvd25sb2FkOndyYXBwZXIoZG93bmxvYWQpIGRpZEZhaWxXaXRoRXJyb3I6ZXJyb3IubnNF
cnJvcigpIHJlc3VtZURhdGE6d3JhcHBlcihyZXN1bWVEYXRhKV07CisgICAgfQorCisgICAgdm9p
ZCBwcm9jZXNzRGlkQ3Jhc2goV2ViS2l0OjpEb3dubG9hZFByb3h5JiBkb3dubG9hZCkgZmluYWwK
KyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvRGlkRmFpbFdp
dGhFcnJvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBbbV9kZWxlZ2F0ZSBkb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkKSBkaWRGYWlsV2l0aEVycm9yOltOU0Vycm9yIGVycm9yV2l0
aERvbWFpbjpOU1VSTEVycm9yRG9tYWluIGNvZGU6TlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9u
TG9zdCB1c2VySW5mbzpuaWxdIHJlc3VtZURhdGE6bmlsXTsKKyAgICB9CisKKyAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tEb3dubG9hZERlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CisKKyAgICBib29sIG1f
cmVzcG9uZHNUb1dpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uIDogMTsKKyAgICBib29sIG1fcmVz
cG9uZHNUb0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA6IDE7CisgICAgYm9vbCBt
X3Jlc3BvbmRzVG9EaWRXcml0ZURhdGEgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvRGlkRmlu
aXNoIDogMTsKKyAgICBib29sIG1fcmVzcG9uZHNUb0RpZEZhaWxXaXRoRXJyb3IgOiAxOworfTsK
KworQGltcGxlbWVudGF0aW9uIFdLRG93bmxvYWQKKworLSAodm9pZCljYW5jZWw6KHZvaWQgKF4p
KE5TRGF0YSAqcmVzdW1lRGF0YSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfZG93bmxvYWQt
PmNhbmNlbChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYXV0byogZGF0YSkgeworICAgICAgICBpZiAoY29tcGxldGlvbkhhbmRsZXIpCisgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih3cmFwcGVyKGRhdGEpKTsKKyAgICB9KTsKK30KKwor
LSAoTlNVUkxSZXF1ZXN0ICopb3JpZ2luYWxSZXF1ZXN0Cit7CisgICAgcmV0dXJuIF9kb3dubG9h
ZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6
RG9Ob3RVcGRhdGVIVFRQQm9keSk7Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICBhdXRvKiBwYWdlID0gX2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKTsKKyAgICBpZiAoIXBh
Z2UpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIGZyb21XZWJQYWdlUHJveHkoKnBh
Z2UpOworfQorCistIChpZCA8V0tEb3dubG9hZERlbGVnYXRlPilkZWxlZ2F0ZQoreworICAgIHJl
dHVybiBfZGVsZWdhdGUuZ2V0KCkuZ2V0KCk7Cit9CisKKy0gKHZvaWQpc2V0RGVsZWdhdGU6KGlk
IDxXS0Rvd25sb2FkRGVsZWdhdGU+KWRlbGVnYXRlCit7CisgICAgX2RlbGVnYXRlID0gZGVsZWdh
dGU7CisgICAgX2Rvd25sb2FkLT5zZXRDbGllbnQoYWRvcHRSZWYoKm5ldyBEb3dubG9hZENsaWVu
dChkZWxlZ2F0ZSkpKTsKK30KKworI3ByYWdtYSBtYXJrIE5TUHJvZ3Jlc3NSZXBvcnRpbmcgcHJv
dG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAoTlNQcm9ncmVzcyAqKXByb2dyZXNzCit7CisgICAg
TlNQcm9ncmVzcyogZG93bmxvYWRQcm9ncmVzcyA9IF9kb3dubG9hZC0+cHJvZ3Jlc3MoKTsKKyAg
ICBpZiAoIWRvd25sb2FkUHJvZ3Jlc3MpIHsKKyAgICAgICAgZG93bmxvYWRQcm9ncmVzcyA9IFtO
U1Byb2dyZXNzIHByb2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEwMF07CisKKyAgICAgICAgZG93
bmxvYWRQcm9ncmVzcy5raW5kID0gTlNQcm9ncmVzc0tpbmRGaWxlOworICAgICAgICBkb3dubG9h
ZFByb2dyZXNzLmZpbGVPcGVyYXRpb25LaW5kID0gTlNQcm9ncmVzc0ZpbGVPcGVyYXRpb25LaW5k
RG93bmxvYWRpbmc7CisKKyAgICAgICAgZG93bmxvYWRQcm9ncmVzcy5jYW5jZWxsYWJsZSA9IFlF
UzsKKyAgICAgICAgZG93bmxvYWRQcm9ncmVzcy5jYW5jZWxsYXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLRG93bmxvYWQ+IHsgc2VsZiB9XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKKyAgICAgICAg
ICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3dlYWtTZWxmID0gV1RGTW92ZSh3ZWFr
U2VsZildIHsKKyAgICAgICAgICAgICAgICAgICAgW3dlYWtTZWxmIGNhbmNlbDpuaWxdOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIFt3ZWFrU2VsZiBjYW5jZWw6bmlsXTsKKyAgICAgICAgfSkuZ2V0KCk7CisK
KyAgICAgICAgX2Rvd25sb2FkLT5zZXRQcm9ncmVzcyhkb3dubG9hZFByb2dyZXNzKTsKKyAgICB9
CisgICAgcmV0dXJuIGRvd25sb2FkUHJvZ3Jlc3M7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworewor
ICAgIF9kb3dubG9hZC0+fkRvd25sb2FkUHJveHkoKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9
CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbgorCistIChB
UEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2Rvd25sb2FkOworfQorCitA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3du
bG9hZERlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIyNTMwNWU0NDdjYzdmNGE0OTk5MDk3YmIzMjg1
MGFlODI5OTk0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS0Rvd25sb2FkRGVsZWdhdGUuaApAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
Rm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tEb3dubG9hZDsKKworLyogQGVudW0gV0tEb3dubG9h
ZFJlZGlyZWN0UG9saWN5CisgQGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRo
ZSBkZWNpc2lvbiBoYW5kbGVyIGZyb20gdGhlIGRvd25sb2FkOndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uOm5ld1JlcXVlc3Q6ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCisgQGNvbnN0YW50IFdL
RG93bmxvYWRSZWRpcmVjdFBvbGljeUNhbmNlbCAgIENhbmNlbCB0aGUgcmVkaXJlY3QuCisgQGNv
bnN0YW50IFdLRG93bmxvYWRSZWRpcmVjdFBvbGljeUFsbG93ICAgIEFsbG93IHRoZSByZWRpcmVj
dC4KKyAqLwordHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tEb3dubG9hZFJlZGlyZWN0UG9s
aWN5KSB7CisgICAgV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5Q2FuY2VsLAorICAgIFdLRG93bmxv
YWRSZWRpcmVjdFBvbGljeUFsbG93LAorfSBOU19TV0lGVF9OQU1FKFdLRG93bmxvYWQuUmVkaXJl
Y3RQb2xpY3kpIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0Bwcm90b2NvbCBXS0Rvd25sb2Fk
RGVsZWdhdGUgPE5TT2JqZWN0PgorCitAcmVxdWlyZWQKKworLyogQGFic3RyYWN0IEludm9rZWQg
d2hlbiB0aGUgZG93bmxvYWQgbmVlZHMgYSBsb2NhdGlvbiB0byB3cml0ZSB0aGUgZG93bmxvYWRl
ZCBieXRlcy4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIGZvciB3aGljaCB3ZSBuZWVk
IGEgZmlsZSB0byB3aGljaCB0byB3cml0ZS4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHNlcnZlciBy
ZXNwb25zZSBpZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9mIGFuIEhUVFAgcmVxdWVz
dCwKKyBvciBhIHN5bnRoZXNpemVkIHJlc3BvbnNlIGZvciBibG9iIGRvd25sb2Fkcy4KKyBAcGFy
YW0gc3VnZ2VzdGVkRmlsZW5hbWUgVGhlIHN1Z2dlc3RlZCBmaWxlbmFtZS4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgVGhlIGNvbXBsZXRpb24gaGFuZGxlciB5b3UgbXVzdCBpbnZva2Ugd2l0
aAorIGVpdGhlciBhIGZpbGUgVVJMIHRvIGJlZ2luIHRoZSBkb3dubG9hZCBvciBuaWwgdG8gY2Fu
Y2VsIHRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGlzIGEgZG93bmxvYWQgb2Yg
YSBibG9iIFVSTCwgcmVzcG9uc2Ugd2lsbCBiZSBudWxsLiAgc3VnZ2VzdGVkRmlsZW5hbWUKKyB3
aWxsIG9mdGVuIGJlIHRoZSBzYW1lIGFzIHJlc3BvbnNlLnN1Z2dlc3RlZEZpbGVuYW1lLCBidXQg
d2ViIGNvbnRlbnQgY2FuIHNwZWNpZnkgdGhlCisgc3VnZ2VzdGVkIGRvd25sb2FkIGZpbGVuYW1l
LiAgSWYgdGhlIGRlc3RpbmF0aW9uIGZpbGUgVVJMIGlzIG5vbi1udWxsLCBpdCBtdXN0IGJlIGEg
ZmlsZQorIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGV4aXN0
IGFuZCBjYW4gYmUgd3JpdHRlbiB0by4KKyAqLworLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZTooTlNVUkxSZXNwb25z
ZSAqKXJlc3BvbnNlIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVu
YW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTCAqIF9OdWxsYWJsZSBkZXN0aW5h
dGlvbikpY29tcGxldGlvbkhhbmRsZXI7CisKK0BvcHRpb25hbAorCisvKiBAYWJzdHJhY3QgSW52
b2tlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVjZWl2ZWQgYW4gSFRUUCByZWRpcmVjdGlvbiBy
ZXNwb25zZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2ZWQgdGhl
IHJlZGlyZWN0LgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVkaXJlY3Rpb24gcmVzcG9uc2UuCisg
QHBhcmFtIG5ld1JlcXVlc3QgVGhlIG5ldyByZXF1ZXN0IHRoYXQgd2lsbCBiZSBzZW50LgorIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBUaGUgY29tcGxldGlvbiBoYW5kbGVyIHlvdSBtdXN0IGlu
dm9rZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdAorIHRvIHByb2NlZWQgd2l0aCB0aGUgcmVk
aXJlY3Rpb24uCisgQGRpc2N1c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBtZXRo
b2QsIGFsbCBzZXJ2ZXIgc3VnZ2VzdGVkIHJlZGlyZWN0cyB3aWxsIGJlIHRha2VuLgorICovCist
ICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxS
ZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93bmxvYWRSZWRp
cmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgSW52b2tlZCB3aGVu
IHRoZSBkb3dubG9hZCBuZWVkcyB0byByZXNwb25kIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGNoYWxs
ZW5nZS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgcmVjZWl2ZWQgdGhlIGF1
dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4KKyBAcGFyYW0gY2hhbGxlbmdlIFRoZSBhdXRoZW50aWNh
dGlvbiBjaGFsbGVuZ2UuCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIFRoZSBjb21wbGV0aW9u
IGhhbmRsZXIgeW91IG11c3QgaW52b2tlIHRvIHJlc3BvbmQgdG8gdGhlIGNoYWxsZW5nZS4gVGhl
CisgZGlzcG9zaXRpb24gYXJndW1lbnQgaXMgb25lIG9mIHRoZSBjb25zdGFudHMgb2YgdGhlIGVu
dW1lcmF0ZWQgdHlwZQorIE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbi4gV2hl
biBkaXNwb3NpdGlvbiBpcyBOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwK
KyB0aGUgY3JlZGVudGlhbCBhcmd1bWVudCBpcyB0aGUgY3JlZGVudGlhbCB0byB1c2UsIG9yIG5p
bCB0byBpbmRpY2F0ZSBjb250aW51aW5nIHdpdGhvdXQgYQorIGNyZWRlbnRpYWwuCisgQGRpc2N1
c3Npb24gSWYgeW91IGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QsIHRoZSB3ZWIgdmlldyB3
aWxsIHJlc3BvbmQgdG8gdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZSB3aXRoIHRoZSBOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlUmVqZWN0UHJvdGVjdGlvblNwYWNlIGRpc3Bvc2l0aW9uLgor
ICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hh
bGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhh
bmRsZXI7CisKKy8qIEBhYnN0cmFjdCBJbnZva2VkIHdoZW4gdGhlIGRvd25sb2FkIGhhcyByZWNl
aXZlZCBhbmQgd3JpdHRlbiBkYXRhIHRvIHRoZSBkZXN0aW5hdGlvbi4KKyBAcGFyYW0gZG93bmxv
YWQgVGhlIGRvd25sb2FkIHRoYXQgaGFzIHdyaXR0ZW4gZGF0YS4KKyBAcGFyYW0gYnl0ZXNXcml0
dGVuIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KKyBAcGFyYW0gdG90YWxCeXRlc1dyaXR0
ZW4gVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorIEBwYXJhbSB0b3RhbEJ5dGVz
RXhwZWN0ZWRUb1dyaXRlIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgdG8gYmUg
d3JpdHRlbi4KKyBAZGlzY3Vzc2lvbiBJZiB0aGlzIGRvd25sb2FkIHdhcyB0aGUgcmVzdWx0IG9m
IHJlc3VtaW5nIGEgcHJldmlvdXMgZG93bmxvYWQsIHRoZW4KKyB0b3RhbEJ5dGVzV3JpdHRlbiB3
aWxsIGJlIGJ5dGVzV3JpdHRlbiBwbHVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYWQgYWxy
ZWFkeSBiZWVuIGRvd25sb2FkZWQuCisgSWYgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBpcyB1
bmtub3duLCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIHdpbGwgYmUgLTEuCisgKi8KKy0gKHZv
aWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRXcml0ZURhdGE6KGludDY0X3Qp
Ynl0ZXNXcml0dGVuIHRvdGFsQnl0ZXNXcml0dGVuOihpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KGludDY0X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZTsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZpbmlz
aGVkIHN1Y2Nlc3NmdWxseS4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgZmlu
aXNoZWQuCisgKi8KKy0gKHZvaWQpZG93bmxvYWREaWRGaW5pc2g6KFdLRG93bmxvYWQgKilkb3du
bG9hZDsKKworLyogQGFic3RyYWN0IEludm9rZWQgd2hlbiB0aGUgZG93bmxvYWQgaGFzIGZhaWxl
ZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25sb2FkIHRoYXQgaGFzIGZhaWxlZC4KKyBAcGFy
YW0gZXJyb3IgVGhlIGVycm9yIGluZGljYXRpbmcgdGhlIGZhaWx1cmUgcmVhc29uLgorIEBwYXJh
bSByZXN1bWVEYXRhIFRoaXMgZGF0YSBjYW4gYmUgcGFzc2VkIHRvIFdLV2ViVmlldyByZXN1bWVE
b3dubG9hZEZyb21SZXN1bWVEYXRhOiB0byBhdHRlbXB0IHRvIHJlc3VtZSB0aGlzIGRvd25sb2Fk
LgorICovCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkRmFpbFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yIHJlc3VtZURhdGE6KG51bGxhYmxlIE5TRGF0YSAqKXJl
c3VtZURhdGE7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tEb3dubG9hZEludGVybmFsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDZjODk0MjBlNmUyN2IxNDNkYjAyNTQwNWNiMzNiN2E5ZDdjNGFmOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Rvd25sb2Fk
SW50ZXJuYWwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiRG93bmxv
YWRQcm94eS5oIgorI2ltcG9ydCAiV0tEb3dubG9hZC5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8
RG93bmxvYWRQcm94eT4geworICAgIHVzaW5nIFdyYXBwZXJDbGFzcyA9IFdLRG93bmxvYWQ7Cit9
OworCit9CisKK0BpbnRlcmZhY2UgV0tEb3dubG9hZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdl
CisgICAgQVBJOjpPYmplY3RTdG9yYWdlPFdlYktpdDo6RG93bmxvYWRQcm94eT4gX2Rvd25sb2Fk
OworICAgIFdlYWtPYmpDUHRyPGlkIDxXS0Rvd25sb2FkRGVsZWdhdGU+ID4gX2RlbGVnYXRlOwor
fQorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
TmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDkzNDA3MGUzZGU0NDk4MmY1NzJiZDVhMTg4ZDEwY2I0
OWNmNzIxMWYuLjZlNjg2OTkyNzkwZmQ4M2U1ZGRkYWY4MDZjMTA0ODIyMzNmZGIyZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
QWN0aW9uLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4x
MCksIGlvcyg4LjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkp
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKIAorLyohIEBhYnN0cmFjdCBBIHZhbHVlIGluZGljYXRp
bmcgd2hldGhlciB0aGUgd2ViIGNvbnRlbnQgdXNlZCBhIGRvd25sb2FkIGF0dHJpYnV0ZSB0byBp
bmRpY2F0ZSB0aGF0IHRoaXMgc2hvdWxkIGJlIGRvd25sb2FkZWQuCisqLworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBCT09MIHNob3VsZFBlcmZvcm1Eb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAjaWYgIVRBUkdF
VF9PU19JUEhPTkUKIAogLyohIEBhYnN0cmFjdCBUaGUgbW9kaWZpZXIga2V5cyB0aGF0IHdlcmUg
aW4gZWZmZWN0IHdoZW4gdGhlIG5hdmlnYXRpb24gd2FzIHJlcXVlc3RlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uLm1t
CmluZGV4IDRkMjBjODBjZWMyNmE3YzI4NjkyYWE4NmQzNGI0MGE2Yjc1MGYwYmUuLjJkNzhlZWVj
MGEyZDdhYzcwMDc5ODZjN2M3ZDVmZTIxYjAxNWE3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtMTE2
LDYgKzExNiwxMSBAQCBzdGF0aWMgV0tTeW50aGV0aWNDbGlja1R5cGUgdG9XS1N5bnRoZXRpY0Ns
aWNrVHlwZShXZWJLaXQ6OldlYk1vdXNlRXZlbnQ6OlN5bnRoZQogICAgIHJldHVybiBfbmF2aWdh
dGlvbkFjdGlvbi0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0
ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpOwogfQogCistIChCT09MKXNob3VsZFBlcmZvcm1Eb3du
bG9hZAoreworICAgIHJldHVybiBfbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25s
b2FkKCk7Cit9CisKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogLSAoV0tTeW50aGV0aWNDbGlj
a1R5cGUpX3N5bnRoZXRpY0NsaWNrVHlwZQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25BY3Rpb25Qcml2YXRlLmgKaW5k
ZXggODVmZDk2ZTRkZDBmZWZlNmJjZjdmZWU5ZDc4YzVlOTkyZjViYzM3Mi4uNTNjYzVhOTdjN2Vh
OTI1NGEzMjUwNGE0ZGU2NGY2YzNmZjNlNWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkFjdGlvblByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uQWN0aW9uUHJpdmF0ZS5o
CkBAIC00NSw3ICs0NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLU3ludGhldGlj
Q2xpY2tUeXBlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2Nhbkhh
bmRsZVJlcXVlc3Q7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3Vs
ZE9wZW5FeHRlcm5hbFNjaGVtZXMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMSksIGlvcyg5
LjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkT3BlbkFw
cExpbmtzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSk7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZFBlcmZvcm1Eb3dubG9hZCBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfc2hvdWxkUGVyZm9ybURvd25sb2FkIFdLX0FQSV9ERVBSRUNB
VEVEX1dJVEhfUkVQTEFDRU1FTlQoImRvd25sb2FkQXR0cmlidXRlIiwgbWFjb3MoMTAuMTUsIFdL
X01BQ19UQkEpLCBpb3MoMTMuMCwgV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIEJPT0wgX3Nob3VsZE9wZW5FeHRlcm5hbFVSTHMgV0tfQVBJX0RFUFJFQ0FU
RUQoInVzZSBfc2hvdWxkT3BlbkV4dGVybmFsU2NoZW1lcyBhbmQgX3Nob3VsZE9wZW5BcHBMaW5r
cyIsIG1hY29zKDEwLjExLCAxMC4xMSksIGlvcyg5LjAsIDkuMCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5o
CmluZGV4IGNmMjEwYWU5MWI2MjlmMmZhY2U3N2UxYmUzNTEwZWI4ODRhMDU4NzguLjk5MWZmZjYx
YzE3MGUzNjZhMjlhZTJlZTc3YWUyMzE1YjVlOTdiZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oCkBAIC0y
OSw2ICsyOSw3IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBXS0Rvd25s
b2FkOwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS05hdmlnYXRpb25BY3Rpb247CiBA
Y2xhc3MgV0tOYXZpZ2F0aW9uUmVzcG9uc2U7CkBAIC00MCwyMCArNDEsMjQgQEAgTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KICB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246
ZGVjaXNpb25IYW5kbGVyOiBtZXRob2QuCiAgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5QWxsb3cgICAgQWxsb3cgdGhlIG5hdmlnYXRpb24gdG8gY29udGludWUu
CisgQGNvbnN0YW50IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkICAgIFR1cm4gdGhl
IG5hdmlnYXRpb24gaW50byBhIGRvd25sb2FkLgogICovCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRl
Z2VyLCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpIHsKICAgICBXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lDYW5jZWwsCiAgICAgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csCisgICAgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4x
MCksIGlvcyg4LjApKTsKIAogLyohIEBlbnVtIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5CiAg
QGFic3RyYWN0IFRoZSBwb2xpY3kgdG8gcGFzcyBiYWNrIHRvIHRoZSBkZWNpc2lvbiBoYW5kbGVy
IGZyb20gdGhlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lz
aW9uSGFuZGxlcjogbWV0aG9kLgogIEBjb25zdGFudCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUNhbmNlbCAgIENhbmNlbCB0aGUgbmF2aWdhdGlvbi4KICBAY29uc3RhbnQgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lBbGxvdyAgICBBbGxvdyB0aGUgbmF2aWdhdGlvbiB0byBjb250aW51ZS4K
KyBAY29uc3RhbnQgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZCAgICBUdXJuIHRo
ZSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZC4KICAqLwogdHlwZWRlZiBOU19FTlVNKE5TSW50
ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpIHsKICAgICBXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeUNhbmNlbCwKICAgICBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93LAor
ICAgIFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKSwKIH0gV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMCksIGlvcyg4LjApKTsKIAogLyohIEEgY2xhc3MgY29uZm9ybWluZyB0byB0aGUg
V0tOYXZpZ2F0aW9uRGVsZWdhdGUgcHJvdG9jb2wgY2FuIHByb3ZpZGUKQEAgLTE2NCw2ICsxNjks
MjQgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kpIHsKICAqLwogLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdl
IHNob3VsZEFsbG93RGVwcmVjYXRlZFRMUzoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAK
Ky8qCisgQGFic3RyYWN0IENhbGxlZCBhZnRlciB1c2luZyBXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3lEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhhdCBjcmVhdGVkIHRo
ZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlvbkFjdGlvbiBUaGUgYWN0aW9uIHRoYXQgaXMg
YmVpbmcgdHVybmVkIGludG8gYSBkb3dubG9hZC4KKyBAcGFyYW0gZG93bmxvYWQgVGhlIGRvd25s
b2FkLgorIEBkaXNjdXNzaW9uIFRoZSBkb3dubG9hZCBuZWVkcyBpdHMgZGVsZWdhdGUgdG8gYmUg
c2V0IHRvIHJlY2VpdmUgdXBkYXRlcyBhYm91dCBpdHMgcHJvZ3Jlc3MuCisqLworLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQg
Kilkb3dubG9hZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCisvKgorIEBhYnN0cmFjdCBDYWxsZWQgYWZ0ZXIgdXNpbmcgV0tOYXZpZ2F0aW9u
UmVzcG9uc2VQb2xpY3lEb3dubG9hZC4KKyBAcGFyYW0gd2ViVmlldyBUaGUgd2ViIHZpZXcgdGhh
dCBjcmVhdGVkIHRoZSBkb3dubG9hZC4KKyBAcGFyYW0gbmF2aWdhdGlvblJlc3BvbnNlIFRoZSBy
ZXNwb25zZSB0aGF0IGlzIGJlaW5nIHR1cm5lZCBpbnRvIGEgZG93bmxvYWQuCisgQHBhcmFtIGRv
d25sb2FkIFRoZSBkb3dubG9hZC4KKyBAZGlzY3Vzc2lvbiBUaGUgZG93bmxvYWQgbmVlZHMgaXRz
IGRlbGVnYXRlIHRvIGJlIHNldCB0byByZWNlaXZlIHVwZGF0ZXMgYWJvdXQgaXRzIHByb2dyZXNz
LgorKi8KKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uUmVz
cG9uc2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRpZEJlY29t
ZURvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiBOU19BU1NVTUVfTk9OTlVM
TF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCBmMDljMmE4ZTZhNWI3ODU1
YmZmOWVhNWZjMzIxMzJhMTUzZWIxNWI1Li5mNmM0N2E1YTU5M2U5YWE0NTYxMDkyOTFkYTdhNjU0
MWM0ODljNTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCkBAIC01OCwxMSArNTgs
MTEgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLU09BdXRob3JpemF0aW9uTG9hZFBv
bGljeSkgewogICAgIF9XS1NPQXV0aG9yaXphdGlvbkxvYWRQb2xpY3lJZ25vcmUsCiB9IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUpLCBpb3MoMTMuMCkpOwogCi1zdGF0aWMgY29uc3QgV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCA9
IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
ICsgMSk7Ci1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFs
bG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShfV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgKyAxKTsKK3N0YXRpYyBjb25zdCBXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkIFdLX0FQ
SV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLTmF2aWdhdGlvbkFjdGlvblBvbGljeURv
d25sb2FkIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkg
PSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyArIDEpOworc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAyKTsKIHN0YXRpYyBjb25zdCBXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIp
KSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dJbk5ld1Byb2Nlc3MgPSAoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5KShfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5
aW5nQXBwTGluayArIDEpOwogCi1zdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYWQgPSAoV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cgKyAxKTsK
K3N0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSBfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCBXS19BUElfREVQUkVDQVRFRF9XSVRIX1JFUExBQ0VN
RU5UKCJXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkIiwgbWFjb3MoMTAuMTAsIFdL
X01BQ19UQkEpLCBpb3MoOC4wLCBXS19JT1NfVEJBKSkgPSAoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QWxsb3cgKyAxKTsKIAogQHByb3RvY29s
IFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CiAKQEAg
LTg4LDYgKzg4LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IF9X
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2EKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgYXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2Ugc2hvdWxkQWxsb3dMZWdhY3lUTFM6KHZvaWQg
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZE5lZ290aWF0ZU1vZGVyblRMUzooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqKWNoYWxsZW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbnRl
eHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV93
ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTooV0tXZWJWaWV3ICopd2ViVmlldzsKIC8v
IEl0ZW0gaXMgbmlsIGlmIHRoZSBnZXN0dXJlIGVuZGVkIHdpdGhvdXQgbmF2aWdhdGlvbi4KIC0g
KHZvaWQpX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZTooV0tXZWJWaWV3ICopd2ViVmll
dyB3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJ
dGVtICopaXRlbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2wubW0KaW5kZXggNGYzNmUyMzI2NDM3MTAyM2QzOGYyODM4MTA3NTFiY2JhOTk4
NTlkYy4uZmFlMzFmMzFiNzk5MTIxZDBlMTczN2NkMDcyMTA4NTQ5ODAyMjAzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KQEAg
LTI4LDExICsyOCwxMyBAQAogCiAjaW1wb3J0ICJBdXRvbWF0aW9uQ2xpZW50LmgiCiAjaW1wb3J0
ICJDYWNoZU1vZGVsLmgiCisjaW1wb3J0ICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbXBvcnQgIkxl
Z2FjeURvd25sb2FkQ2xpZW50LmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJQbHVn
aW5Qcm9jZXNzTWFuYWdlci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXS1dlYnNpdGVEYXRhU3RvcmVJbnRlcm5hbC5oIgpAQCAtNDgxLDEyICs0ODMsMTIgQEAg
c3RhdGljIFdLUHJvY2Vzc1Bvb2wgKnNoYXJlZFByb2Nlc3NQb29sOwogCiAtIChfV0tEb3dubG9h
ZCAqKV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldwogewotICAgIHJldHVybiB3cmFwcGVyKF9wcm9jZXNzUG9v
bC0+ZG93bmxvYWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdl
XSwgcmVxdWVzdCkpOworICAgIHJldHVybiBbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxv
YWQ6d3JhcHBlcihfcHJvY2Vzc1Bvb2wtPmRvd25sb2FkKCpkYXRhU3RvcmUtPl93ZWJzaXRlRGF0
YVN0b3JlLCBbd2ViVmlldyBfcGFnZV0sIHJlcXVlc3QpKV07CiB9CiAKIC0gKF9XS0Rvd25sb2Fk
ICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3VtZURhdGEgd2Vic2l0ZURh
dGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBwYXRoOihOU1N0cmluZyAq
KXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7Ci0gICAgcmV0
dXJuIHdyYXBwZXIoX3Byb2Nlc3NQb29sLT5yZXN1bWVEb3dubG9hZCgqZGF0YVN0b3JlLT5fd2Vi
c2l0ZURhdGFTdG9yZSwgW3dlYlZpZXcgX3BhZ2VdLCBBUEk6OkRhdGE6OmNyZWF0ZVdpdGhvdXRD
b3B5aW5nKHJlc3VtZURhdGEpLmdldCgpLCBwYXRoKSk7CisgICAgcmV0dXJuIFtfV0tEb3dubG9h
ZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKF9wcm9jZXNzUG9vbC0+cmVzdW1lRG93bmxv
YWQoKmRhdGFTdG9yZS0+X3dlYnNpdGVEYXRhU3RvcmUsIFt3ZWJWaWV3IF9wYWdlXSwgQVBJOjpE
YXRhOjpjcmVhdGVXaXRob3V0Q29weWluZyhyZXN1bWVEYXRhKS5nZXQoKSwgcGF0aCwgV2ViS2l0
OjpDYWxsRG93bmxvYWREaWRTdGFydDo6Tm8pKV07CiB9CiAKIC0gKHZvaWQpX2dldEFjdGl2ZVBh
Z2VzT3JpZ2luc0luV2ViUHJvY2Vzc0ZvclRlc3Rpbmc6KHBpZF90KXBpZCBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCheKShOU0FycmF5PE5TU3RyaW5nICo+ICopKWNvbXBsZXRpb25IYW5kbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9v
bFByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sUHJpdmF0ZS5oCmluZGV4IDdjNGZlNGNkOGZiOWFmZmE4Y2EwMzE5Yjk0ODkzYzFmNGU2ODk2
NmMuLmZiOTcyOTI3NWEwYzBkNGJjOTZkOGE1NDc2MGI5NDE2OTlkMWVmOTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oCkBAIC02Miw3ICs2Miw3IEBACiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGNvcHkpIE5TRGljdGlvbmFyeSAqX3BsdWdpbkxvYWRDbGllbnRQb2xpY2llcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjEzKSk7CiAjZW5kaWYKIAotQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWssIHNldHRlcj1fc2V0RG93bmxvYWREZWxlZ2F0ZTopIGlkIDxfV0tEb3dubG9hZERlbGVnYXRl
PiBfZG93bmxvYWREZWxlZ2F0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9
X3NldERvd25sb2FkRGVsZWdhdGU6KSBpZCA8X1dLRG93bmxvYWREZWxlZ2F0ZT4gX2Rvd25sb2Fk
RGVsZWdhdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tEb3dubG9hZC5k
b3dubG9hZERlbGVnYXRlIiwgbWFjb3MoMTAuMTAsIFdLX01BQ19UQkEpLCBpb3MoOC4wLCBXS19J
T1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBdXRvbWF0
aW9uRGVsZWdhdGU6KSBpZCA8X1dLQXV0b21hdGlvbkRlbGVnYXRlPiBfYXV0b21hdGlvbkRlbGVn
YXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkpOwogCiAjaWYgVEFS
R0VUX09TX0lQSE9ORQpAQCAtODMsOCArODMsOSBAQAogCiAtICh2b2lkKV9yZWdpc3RlclVSTFNj
aGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3Q6KE5TU3RyaW5nICopc2NoZW1lIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCi0tIChfV0tEb3dubG9hZCAq
KV9kb3dubG9hZFVSTFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3Qgd2Vic2l0ZURhdGFT
dG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9yaWdpbmF0aW5nV2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpOwotLSAoX1dLRG93bmxvYWQgKilfcmVzdW1lRG93bmxvYWRGcm9tRGF0
YTooTlNEYXRhICopcmVzdW1lRGF0YSB3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3Rv
cmUgKilkYXRhU3RvcmUgIHBhdGg6KE5TU3RyaW5nICopcGF0aCBvcmlnaW5hdGluZ1dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKworLSAoX1dLRG93bmxvYWQgKilfZG93bmxvYWRVUkxSZXF1ZXN0
OihOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFT
dG9yZSAqKWRhdGFTdG9yZSBvcmlnaW5hdGluZ1dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
V0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiV0tXZWJWaWV3IF9kb3dubG9hZFJl
cXVlc3QiLCBtYWNvcygxMC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKTsK
Ky0gKF9XS0Rvd25sb2FkICopX3Jlc3VtZURvd25sb2FkRnJvbURhdGE6KE5TRGF0YSAqKXJlc3Vt
ZURhdGEgd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlICBw
YXRoOihOU1N0cmluZyAqKXBhdGggb3JpZ2luYXRpbmdXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IFdLX0FQSV9ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLV2ViVmlldy5yZXN1bWVE
b3dubG9hZEZyb21SZXN1bWVEYXRhOmNvbXBsZXRpb25IYW5kbGVyOiIsIG1hY29zKDEwLjEwLCBX
S19NQUNfVEJBKSwgaW9zKDguMCwgV0tfSU9TX1RCQSkpOwogCiAvLyBUZXN0IG9ubHkuIFNob3Vs
ZCBiZSBjYWxsZWQgb25seSB3aGlsZSBubyB3ZWIgY29udGVudCBwcm9jZXNzZXMgYXJlIHJ1bm5p
bmcuCiAtICh2b2lkKV90ZXJtaW5hdGVTZXJ2aWNlV29ya2VycyBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0KSwgaW9zKDEyLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaAppbmRleCA3NjFhMWRhMGY2NWIzNjk5N2JhYjQ5ZTY2YzJjMjhlOWZm
MGIwYzhjLi43NDc1YmNhMjY1Yjc3MjY1ZjQ5MmFmYzlhYzA4M2UzMGFlOTBiNzY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0zOCw2ICsz
OCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7
CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOwogQGNsYXNzIFdLQ29udGVudFdvcmxkOwor
QGNsYXNzIFdLRG93bmxvYWQ7CiBAY2xhc3MgV0tGaW5kQ29uZmlndXJhdGlvbjsKIEBjbGFzcyBX
S0ZpbmRSZXN1bHQ7CiBAY2xhc3MgV0tGcmFtZUluZm87CkBAIC00NTAsNiArNDUxLDIwIEBAIFRo
ZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBn
ZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAgKi8KICsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNT
dHJpbmcgKil1cmxTY2hlbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMyksIGlvcygxMS4w
KSk7CiAKKy8qIEBhYnN0cmFjdCBCZWdpbnMgYSBkb3dubG9hZCBpbiB0aGUgY29udGV4dCBvZiB0
aGUgY3VycmVudGx5IGRpc3BsYXllZCB3ZWJwYWdlIGFzIGlmIHRoZSBXS05hdmlnYXRpb25EZWxl
Z2F0ZSB0dXJuZWQgYSBuYXZpZ2F0aW9uIGludG8gYSBkb3dubG9hZCBpbnN0ZWFkCisgQHBhcmFt
IHJlcXVlc3QgVGhlIHJlcXVlc3Qgc3BlY2lmeWluZyB0aGUgVVJMIHRvIGRvd25sb2FkLgorIEBw
YXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBo
YXMgc3RhcnRlZC4KKyBAZGlzY3Vzc2lvbiBUaGUgZG93bmxvYWQgbmVlZHMgaXRzIGRlbGVnYXRl
IHRvIGJlIHNldCBpbiB0aGUgY29tcGxldGlvbkhhbmRsZXIgE3RvIHJlY2VpdmUgdXBkYXRlcyBh
Ym91dCBpdHMgcHJvZ3Jlc3MuCisgKi8KKy0gKHZvaWQpc3RhcnREb3dubG9hZFVzaW5nUmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rv
d25sb2FkICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKKy8qIEBhYnN0cmFjdCBSZXN1bWVzIGEgZG93bmxv
YWQgdGhhdCBmYWlsZWQgb3Igd2FzIGNhbmNlbGVkLgorIEBwYXJhbSByZXN1bWVEYXRhIERhdGEg
ZnJvbSBhIFdLRG93bmxvYWREZWxlZ2F0ZSdzIGRpZEZhaWxXaXRoRXJyb3Igb3IgYSBXS0Rvd25s
b2FkJ3MgY2FuY2VsIGNvbXBsZXRpb25IYW5kbGVyLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxl
ciBBIGJsb2NrIGNhbGxlZCB3aGVuIHRoZSBkb3dubG9hZCBoYXMgcmVzdW1lZC4KKyBAZGlzY3Vz
c2lvbiBUaGUgZG93bmxvYWQgbmVlZHMgaXRzIGRlbGVnYXRlIHRvIGJlIHNldCBpbiB0aGUgY29t
cGxldGlvbkhhbmRsZXIgdG8gcmVjZWl2ZSB1cGRhdGVzIGFib3V0IGl0cyBwcm9ncmVzcy4KKyAq
LworLSAodm9pZClyZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOihOU0RhdGEgKilyZXN1bWVE
YXRhIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKFdLRG93bmxvYWQgKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogLyogQGFic3RyYWN0IFRoZSBtZWRpYSB0eXBlIGZvciB0aGUgV0tXZWJWaWV3CiAgQGRp
c2N1c3Npb24gVGhlIHZhbHVlIG9mIG1lZGlhVHlwZSB3aWxsIG92ZXJyaWRlIHRoZSBub3JtYWwg
dmFsdWUgb2YgdGhlIENTUyBtZWRpYSBwcm9wZXJ0eS4KICBTZXR0aW5nIHRoZSB2YWx1ZSB0byBu
aWwgd2lsbCByZXN0b3JlIHRoZSBub3JtYWwgdmFsdWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAyZGQ3ZWE1ZWE5YzExMzk3YjcyNzQ4
MTgyNzZhNzQ4ZTMwZDljNjc0Li43MGViNTczZjQ0YjcxOTA2M2I0YWJkNGQ2M2Q1Mzc2ZTQzZjFi
MTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KQEAgLTU4LDkgKzU4LDExIEBACiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVy
bmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRmluZENvbmZp
Z3VyYXRpb24uaCIKICNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJX
S0ZyYW1lSW5mb1ByaXZhdGUuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5o
IgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS01lZGlhUGxheWJhY2tTdGF0
ZS5oIgpAQCAtNzA4LDYgKzcxMCw0MiBAQCBzdGF0aWMgdm9pZCBoYXJkd2FyZUtleWJvYXJkQXZh
aWxhYmlsaXR5Q2hhbmdlZENhbGxiYWNrKENGTm90aWZpY2F0aW9uQ2VudGVyUmVmLAogICAgIHJl
dHVybiB3cmFwcGVyKF9wYWdlLT5sb2FkRGF0YSh7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgTUlNRVR5cGUsIGNoYXJhY3RlckVuY29kaW5n
TmFtZSwgYmFzZVVSTC5hYnNvbHV0ZVN0cmluZykpOwogfQogCistICh2b2lkKXN0YXJ0RG93bmxv
YWRVc2luZ1JlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQoXikoV0tEb3dubG9hZCAqKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdlLT5k
b3dubG9hZFJlcXVlc3QocmVxdWVzdCwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8qIGRvd25sb2FkKSB7CisgICAgICAgIGlmIChkb3du
bG9hZCkKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdyYXBwZXIoZG93bmxvYWQpKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7
Cit9CisKKy0gKHZvaWQpcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTooTlNEYXRhICopcmVz
dW1lRGF0YSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShXS0Rvd25sb2FkICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgYXV0byB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFy
Y2hpdmVyIGFsbG9jXSBpbml0Rm9yUmVhZGluZ0Zyb21EYXRhOnJlc3VtZURhdGEgZXJyb3I6bmls
XSk7CisgICAgW3VuYXJjaGl2ZXIgc2V0RGVjb2RpbmdGYWlsdXJlUG9saWN5Ok5TRGVjb2RpbmdG
YWlsdXJlUG9saWN5UmFpc2VFeGNlcHRpb25dOworICAgIE5TRGljdGlvbmFyeSAqZGljdGlvbmFy
eSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdE9mQ2xhc3NlczpbTlNTZXQgc2V0V2l0aE9iamVj
dHM6W05TRGljdGlvbmFyeSBjbGFzc10sIFtOU0FycmF5IGNsYXNzXSwgW05TU3RyaW5nIGNsYXNz
XSwgW05TTnVtYmVyIGNsYXNzXSwgW05TRGF0YSBjbGFzc10sIFtOU1VSTCBjbGFzc10sIFtOU1VS
TFJlcXVlc3QgY2xhc3NdLCBuaWxdIGZvcktleTpAIk5TS2V5ZWRBcmNoaXZlUm9vdE9iamVjdEtl
eSJdOworICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKyAgICBOU1N0cmluZyAqcGF0
aCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIk5TVVJMU2Vzc2lvblJlc3VtZUluZm9Mb2Nh
bFBhdGgiXTsKKworICAgIGlmICghcGF0aCkKKyAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIkludmFsaWQgcmVzdW1lIGRhdGEiXTsK
KworI2lmIFVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKKyAgICAvLyBNb2phdmUgQ0ZO
ZXR3b3JrIGZhaWxzIHRvIHJlc3VtZSBhIGRvd25sb2FkIGlmIHRoZSBkZXN0aW5hdGlvbiBkb2Vz
IG5vdCBleGlzdC4KKyAgICAvLyBJZiBzb21lb25lIGhhcyByZW1vdmVkIHRoZSBkZXN0aW5hdGlv
biBmaWxlLCBtYWtlIGFuIGVtcHR5IGZpbGUgYXQgdGhhdCBsb2NhdGlvbi4KKyAgICBpZiAoIVtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpwYXRoXSkKKyAg
ICAgICAgW1tOU0RhdGEgZGF0YV0gd3JpdGVUb0ZpbGU6cGF0aCBhdG9taWNhbGx5OllFU107Cisj
ZW5kaWYKKworICAgIF9wYWdlLT5yZXN1bWVEb3dubG9hZChBUEk6OkRhdGE6OmNyZWF0ZVdpdGhv
dXRDb3B5aW5nKHJlc3VtZURhdGEpLCBwYXRoLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxv
Y2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byogZG93bmxvYWQpIHsKKyAgICAgICAgaWYg
KGRvd25sb2FkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod3JhcHBlcihkb3dubG9h
ZCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9KTsKK30KKwogLSAoV0tOYXZpZ2F0aW9uICopZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdL
QmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KIHsKICAgICByZXR1cm4gd3JhcHBlcihfcGFnZS0+
Z29Ub0JhY2tGb3J3YXJkSXRlbShpdGVtLl9pdGVtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA4NTRiMjMzMTAx
MzJlN2RhZGVlNjQ5M2VmNzYzYTE2MTgwNzVkMGRjLi41MGE2MmI1NzMyNDA5ZWVkYWVkNzgwYWJl
ZjdhMzg3OWY3NDhiOGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEwOSw2ICsxMDksNyBAQCB0eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKICNlbmRpZgogCiBAY2xhc3MgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGU7CitAY2xhc3MgV0tEb3dubG9hZDsKIEBjbGFzcyBXS0ZyYW1l
SW5mbzsKIEBjbGFzcyBXS1dlYnBhZ2VQcmVmZXJlbmNlczsKIEBjbGFzcyBfV0tBcHBsaWNhdGlv
bk1hbmlmZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0Rvd25sb2FkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93
bmxvYWQuaAppbmRleCBiNGQ4MjZiOWE3MjQ3OGZkMGMwM2U2YjRiMDE4OWYwNzI5OWNlYzczLi5l
YTgyMDMyYTFjZGFjYTZiNDZlOWJjMWZjYTA1ZDhkZTkwMDQ1ZjE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWQuaApAQCAtMjgsMTIgKzI4LDE0
IEBACiAKIEBjbGFzcyBXS0ZyYW1lSW5mbzsKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgV0tE
b3dubG9hZDsKIAotV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjEwKSwgaW9zKDguMCkpCitX
S19DTEFTU19ERVBSRUNBVEVEX1dJVEhfUkVQTEFDRU1FTlQoIldLRG93bmxvYWQiLCBtYWNvcygx
MC4xMCwgV0tfTUFDX1RCQSksIGlvcyg4LjAsIFdLX0lPU19UQkEpKQogQGludGVyZmFjZSBfV0tE
b3dubG9hZCA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CiAKLS0gKHZvaWQpY2FuY2VsOworKyAoaW5z
dGFuY2V0eXBlKWRvd25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLSAo
dm9pZCljYW5jZWw7CiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZC5tbQppbmRleCBkZmVmZTBm
MTY2YTU0OWRkZTY1YmUxMDIyZWI1YzFmZmRlY2MyZGJjLi5kNWUxMWFkNjk0NTRlZDhkZWFiMzU1
NmIwOTI3ZjUwZDhiMzJlMDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLRG93bmxvYWQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0Rvd25sb2FkLm1tCkBAIC0yOCw2NiArMjgsODcgQEAKIAogI2ltcG9ydCAiQVBJ
RG93bmxvYWRDbGllbnQuaCIKICNpbXBvcnQgIkRvd25sb2FkUHJveHkuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tGcmFtZUluZm9JbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tOU0RhdGEuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
IDx3dGYvV2Vha09iakNQdHIuaD4KIAotQGltcGxlbWVudGF0aW9uIF9XS0Rvd25sb2FkIHsKLSAg
ICBBUEk6Ok9iamVjdFN0b3JhZ2U8V2ViS2l0OjpEb3dubG9hZFByb3h5PiBfZG93bmxvYWQ7CitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorc3RhdGljIE5TTWFwVGFibGU8V0tE
b3dubG9hZCAqLCBfV0tEb3dubG9hZCAqPiAqZG93bmxvYWRXcmFwcGVyTWFwKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPE5TTWFwVGFibGU+PiB0YWJsZTsKKyAgICBp
ZiAoIXRhYmxlLmdldCgpKQorICAgICAgICB0YWJsZS5nZXQoKSA9IFtOU01hcFRhYmxlIHdlYWtU
b1dlYWtPYmplY3RzTWFwVGFibGVdOworICAgIHJldHVybiB0YWJsZS5nZXQoKS5nZXQoKTsKIH0K
K0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorCitJR05PUkVfV0FSTklOR1NfQkVH
SU4oImRlcHJlY2F0ZWQtaW1wbGVtZW50YXRpb25zIikKK0BpbXBsZW1lbnRhdGlvbiBfV0tEb3du
bG9hZAorSUdOT1JFX1dBUk5JTkdTX0VORAogCi0tICh2b2lkKWRlYWxsb2MKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aERvd25sb2FkMjooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgX2Rv
d25sb2FkLT5+RG93bmxvYWRQcm94eSgpOworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9kb3dubG9hZCA9IGRvd25sb2FkOworICAgIHJl
dHVybiBzZWxmOworfQogCi0gICAgW3N1cGVyIGRlYWxsb2NdOworKyAoaW5zdGFuY2V0eXBlKWRv
d25sb2FkV2l0aERvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQKK3sKKyAgICBpZiAoX1dL
RG93bmxvYWQgKndyYXBwZXIgPSBbZG93bmxvYWRXcmFwcGVyTWFwKCkgb2JqZWN0Rm9yS2V5OmRv
d25sb2FkXSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CisgICAgX1dLRG93bmxvYWQgKndyYXBw
ZXIgPSBbW1tfV0tEb3dubG9hZCBhbGxvY10gaW5pdFdpdGhEb3dubG9hZDI6ZG93bmxvYWRdIGF1
dG9yZWxlYXNlXTsKKyAgICBbZG93bmxvYWRXcmFwcGVyTWFwKCkgc2V0T2JqZWN0OndyYXBwZXIg
Zm9yS2V5OmRvd25sb2FkXTsKKyAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAogLSAodm9pZCljYW5j
ZWwKIHsKLSAgICBfZG93bmxvYWQtPmNhbmNlbChbZG93bmxvYWQgPSBtYWtlUmVmKCpfZG93bmxv
YWQpXSAoYXV0byopIHsKKyAgICBfZG93bmxvYWQtPl9kb3dubG9hZC0+Y2FuY2VsKFtkb3dubG9h
ZCA9IG1ha2VSZWYoKl9kb3dubG9hZC0+X2Rvd25sb2FkKV0gKGF1dG8qKSB7CiAgICAgICAgIGRv
d25sb2FkLT5jbGllbnQoKS5sZWdhY3lEaWRDYW5jZWwoZG93bmxvYWQuZ2V0KCkpOwogICAgIH0p
OwogfQogCiAtICh2b2lkKXB1Ymxpc2hQcm9ncmVzc0F0VVJMOihOU1VSTCAqKVVSTAogewotICAg
IF9kb3dubG9hZC0+cHVibGlzaFByb2dyZXNzKFVSTCk7CisgICAgX2Rvd25sb2FkLT5fZG93bmxv
YWQtPnB1Ymxpc2hQcm9ncmVzcyhVUkwpOwogfQogCiAtIChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0
CiB7Ci0gICAgcmV0dXJuIF9kb3dubG9hZC0+cmVxdWVzdCgpLm5zVVJMUmVxdWVzdChXZWJDb3Jl
OjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6RG9Ob3RVcGRhdGVIVFRQQm9keSk7CisgICAgcmV0dXJu
IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZXF1ZXN0KCkubnNVUkxSZXF1ZXN0KFdlYkNvcmU6OkhU
VFBCb2R5VXBkYXRlUG9saWN5OjpEb05vdFVwZGF0ZUhUVFBCb2R5KTsKIH0KIAogLSAoV0tXZWJW
aWV3ICopb3JpZ2luYXRpbmdXZWJWaWV3CiB7Ci0gICAgaWYgKGF1dG8qIG9yaWdpbmF0aW5nUGFn
ZSA9IF9kb3dubG9hZC0+b3JpZ2luYXRpbmdQYWdlKCkpCisgICAgaWYgKGF1dG8qIG9yaWdpbmF0
aW5nUGFnZSA9IF9kb3dubG9hZC0+X2Rvd25sb2FkLT5vcmlnaW5hdGluZ1BhZ2UoKSkKICAgICAg
ICAgcmV0dXJuIFtbZnJvbVdlYlBhZ2VQcm94eSgqb3JpZ2luYXRpbmdQYWdlKSByZXRhaW5dIGF1
dG9yZWxlYXNlXTsKICAgICByZXR1cm4gbmlsOwogfQogCiAtKE5TQXJyYXk8TlNVUkwgKj4gKily
ZWRpcmVjdENoYWluCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkoX2Rvd25sb2FkLT5yZWRp
cmVjdENoYWluKCksIFtdIChhdXRvJiB1cmwpIC0+IE5TVVJMICogeworICAgIHJldHVybiBjcmVh
dGVOU0FycmF5KF9kb3dubG9hZC0+X2Rvd25sb2FkLT5yZWRpcmVjdENoYWluKCksIFtdIChhdXRv
JiB1cmwpIC0+IE5TVVJMICogewogICAgICAgICByZXR1cm4gdXJsOwogICAgIH0pLmF1dG9yZWxl
YXNlKCk7CiB9CiAKIC0gKEJPT0wpd2FzVXNlckluaXRpYXRlZAogewotICAgIHJldHVybiBfZG93
bmxvYWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKKyAgICByZXR1cm4gX2Rvd25sb2FkLT5fZG93bmxv
YWQtPndhc1VzZXJJbml0aWF0ZWQoKTsKIH0KIAogLSAoTlNEYXRhICopcmVzdW1lRGF0YQogewot
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5sZWdhY3lSZXN1bWVEYXRhKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoX2Rvd25sb2FkLT5fZG93bmxvYWQtPmxlZ2Fj
eVJlc3VtZURhdGEoKSk7CiB9CiAKIC0gKFdLRnJhbWVJbmZvICopb3JpZ2luYXRpbmdGcmFtZQog
ewotICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+ZnJhbWVJbmZvKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OndyYXBwZXIoJl9kb3dubG9hZC0+X2Rvd25sb2FkLT5mcmFtZUlu
Zm8oKSk7CiB9CiAKIC0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQpAQCAtOTksNyAr
MTIwLDcgQEAKIAogLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKIHsKLSAgICByZXR1cm4gKl9k
b3dubG9hZDsKKyAgICByZXR1cm4gKl9kb3dubG9hZC0+X2Rvd25sb2FkOwogfQogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWRE
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Rvd25sb2Fk
RGVsZWdhdGUuaAppbmRleCBhODNmOTAyOWI1YzczZWM1ZjlkYjc0ZjE0MDdjMjg2NGUyNTExMzU4
Li42NWVhY2NhY2I1ZjcwZTE0YWUzYjk3Mzg3ZjQ2OGE4M2E3YmI3YzgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRG93bmxvYWREZWxlZ2F0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tEb3dubG9hZERlbGVnYXRl
LmgKQEAgLTMxLDYgKzMxLDggQEAKIAogQHByb3RvY29sIF9XS0Rvd25sb2FkRGVsZWdhdGUgPE5T
T2JqZWN0PgogQG9wdGlvbmFsCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCiAt
ICh2b2lkKV9kb3dubG9hZERpZFN0YXJ0OihfV0tEb3dubG9hZCAqKWRvd25sb2FkOwogLSAodm9p
ZClfZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0VG9VUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCksIGlv
cygxMS4zKSk7CiAtICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRS
ZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKQEAgLTQ2LDQgKzQ4LDUg
QEAKIC0gKEJPT0wpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIHNob3VsZERlY29k
ZVNvdXJjZURhdGFPZk1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTMuNCksIGlvcygxMS4zKSk7CiAKIC0gKE5TU3RyaW5nICopX2Rvd25sb2Fk
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZp
bGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lIGFsbG93T3ZlcndyaXRlOihCT09MICopYWxsb3dP
dmVyd3JpdGUgV0tfQVBJX0RFUFJFQ0FURURfV0lUSF9SRVBMQUNFTUVOVCgiX2Rvd25sb2FkOmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOiIs
IG1hY29zKDEwLjEwLCAxMC4xMy40KSwgaW9zKDguMCwgMTEuMykpOworI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0Rvd25sb2FkSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tEb3dubG9hZEludGVybmFsLmgKaW5kZXggZTEyOTBiM2U1NTNhZWNlZDIy
ZDRmYzZkOTA4NjM0MzcwOTJkNDAxMi4uY2E5NGMyMTczNzU3YTU0YTBjNzU1Y2JmMzBmOGUwNWEw
Yjc1YzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0Rvd25sb2FkSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLRG93bmxvYWRJbnRlcm5hbC5oCkBAIC0yNSwxNiArMjUsMTIgQEAKIAogI2ltcG9ydCAi
X1dLRG93bmxvYWQuaCIKIAotI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgotI2ltcG9ydCAiV0tP
YmplY3QuaCIKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8RG93bmxvYWRQcm94eT4gewotICAg
IHVzaW5nIFdyYXBwZXJDbGFzcyA9IF9XS0Rvd25sb2FkOwotfTsKK0BjbGFzcyBXS0Rvd25sb2Fk
OwogCitAaW50ZXJmYWNlIF9XS0Rvd25sb2FkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAg
ICBSZXRhaW5QdHI8V0tEb3dubG9hZD4gX2Rvd25sb2FkOwogfQotCi1AaW50ZXJmYWNlIF9XS0Rv
d25sb2FkICgpIDxXS09iamVjdD4KIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdERvd25sb2FkQ2xpZW50LmNwcAppbmRleCBlMmZhNWM1
YzVkOWM5ZTVkOTY1NTZlNGExZmM4Y2RhZmU5MjExM2ZlLi5lYWRjZDQzZGIzZDliYjU5NmVkZTk4
MDNhMzg2YzI3MDFiMTQ2NGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9XZWJLaXREb3dubG9hZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL2dsaWIvV2ViS2l0RG93bmxvYWRDbGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWRTdGFydChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5KSBvdmVycmlkZQorICAgIHZvaWQgbGVnYWN5RGlkU3RhcnQoRG93
bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEdSZWZQ
dHI8V2ViS2l0RG93bmxvYWQ+IGRvd25sb2FkID0gd2Via2l0V2ViQ29udGV4dEdldE9yQ3JlYXRl
RG93bmxvYWQoJmRvd25sb2FkUHJveHkpOwogICAgICAgICB3ZWJraXREb3dubG9hZFN0YXJ0ZWQo
ZG93bmxvYWQuZ2V0KCkpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHdl
YmtpdERvd25sb2FkRGVzdGluYXRpb25DcmVhdGVkKGRvd25sb2FkLmdldCgpLCBwYXRoKTsKICAg
ICB9CiAKLSAgICB2b2lkIGRpZEZhaWwoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIG92ZXJyaWRlCisgICAgdm9pZCBkaWRGYWlsKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHksIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6
OkRhdGEqKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgR1JlZlB0cjxXZWJLaXREb3dubG9hZD4g
ZG93bmxvYWQgPSB3ZWJraXRXZWJDb250ZXh0R2V0T3JDcmVhdGVEb3dubG9hZCgmZG93bmxvYWRQ
cm94eSk7CiAgICAgICAgIGlmICh3ZWJraXREb3dubG9hZElzQ2FuY2VsbGVkKGRvd25sb2FkLmdl
dCgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5
RG93bmxvYWRDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL0xlZ2FjeURv
d25sb2FkQ2xpZW50LmgKaW5kZXggNzVkNTEyMjFkMmMzNTE4MmY4OTRkYTk4NjEzZDFjYzQwZDBm
MDE1ZS4uYjdmNjQ5MzEwYTQ4ODRmOTJmNTE2NWQwY2JmNzU2NTM4ZTE0MDZlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxvYWRDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5o
CkBAIC00NiwxMiArNDYsMTIgQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICAvLyBGcm9t
IEFQSTo6RG93bmxvYWRDbGllbnQKLSAgICB2b2lkIGRpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBm
aW5hbDsKKyAgICB2b2lkIGxlZ2FjeURpZFN0YXJ0KERvd25sb2FkUHJveHkmKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoRG93bmxvYWRQcm94
eSYsIHVpbnQ2NF90LCB1aW50NjRfdCwgdWludDY0X3QpIGZpbmFsOwogICAgIHZvaWQgZGVjaWRl
RGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFsbG93T3ZlcndyaXRlLCBTdHJpbmcpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGRpZEZpbmlzaChEb3dubG9hZFByb3h5JikgZmluYWw7Ci0gICAgdm9pZCBk
aWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgZmlu
YWw7CisgICAgdm9pZCBkaWRGYWlsKERvd25sb2FkUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgQVBJOjpEYXRhKikgZmluYWw7CiAgICAgdm9pZCBsZWdhY3lEaWRDYW5jZWwo
RG93bmxvYWRQcm94eSYpIGZpbmFsOwogICAgIHZvaWQgd2lsbFNlbmRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShEb3dubG9hZFByb3h5JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTGVnYWN5RG93bmxv
YWRDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9h
ZENsaWVudC5tbQppbmRleCAzZDMxYmRiZjQzYTM2ZWViY2QyMzY5ODVmYTY4YjQ5ZDE2MWU0ZGI0
Li42MDc1NjJhZWU4OGU3NjY5ZjhkOTE4NmZkZDgyNGI2MzU5NTVjNmI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9MZWdhY3lEb3dubG9hZENsaWVudC5tbQpA
QCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiRG93bmxvYWRQcm94eS5oIgogI2ltcG9ydCAiTG9n
Z2luZy5oIgogI2ltcG9ydCAiU3lzdGVtUHJldmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldL
RG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJDcmVkZW50aWFs
LmgiCkBAIC00Nyw2ICs0OCw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitBTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorCiBMZWdhY3lEb3dubG9hZENsaWVudDo6TGVnYWN5
RG93bmxvYWRDbGllbnQoaWQgPF9XS0Rvd25sb2FkRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgIDog
bV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKIHsKQEAgLTc2LDcgKzc5LDcgQEAgc3RhdGljIFN5c3RlbVBy
ZXZpZXdDb250cm9sbGVyKiBzeXN0ZW1QcmV2aWV3Q29udHJvbGxlcihEb3dubG9hZFByb3h5JiBk
b3dubG9hZFAKIH0KICNlbmRpZgogCi12b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRTdGFy
dChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQordm9pZCBMZWdhY3lEb3dubG9hZENsaWVu
dDo6bGVnYWN5RGlkU3RhcnQoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94eSkKIHsKICNpZiBV
U0UoU1lTVEVNX1BSRVZJRVcpCiAgICAgaWYgKGRvd25sb2FkUHJveHkuaXNTeXN0ZW1QcmV2aWV3
RG93bmxvYWQoKSkgewpAQCAtOTAsNyArOTMsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50
OjpkaWRTdGFydChEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5KQogI2VuZGlmCiAKICAgICBp
ZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRTdGFydCkKLSAgICAgICAgW21fZGVsZWdh
dGUgX2Rvd25sb2FkRGlkU3RhcnQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV07CisgICAgICAgIFtt
X2RlbGVnYXRlIF9kb3dubG9hZERpZFN0YXJ0OltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3du
bG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRD
bGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTEwNCw3ICsxMDcs
NyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSwgY29ucwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMuZG93bmxvYWREaWRSZWNlaXZlUmVzcG9uc2UpCi0gICAgICAgIFttX2RlbGVnYXRl
IF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNw
b25zZS5uc1VSTFJlc3BvbnNlKCldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19X
S0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRp
ZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5uc1VSTFJlc3BvbnNlKCldOwogfQogCiB2b2lkIExl
Z2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShEb3dubG9hZFByb3h5JiBkb3dubG9h
ZFByb3h5LCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcml0dGVu
LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKQpAQCAtMTE4LDkgKzEyMSw5IEBA
IHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKERvd25sb2FkUHJveHkm
IGRvd25sb2FkUHJveHksIHVpbnQ2NF90CiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0
aG9kcy5kb3dubG9hZERpZFdyaXRlRGF0YVRvdGFsQnl0ZXNXcml0dGVuVG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxv
YWRQcm94eSkgZGlkV3JpdGVEYXRhOmJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjp0b3Rh
bEJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlOnRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGVdOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRv
d25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFdyaXRlRGF0YTpi
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTp0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXTsKICAgICBlbHNlIGlm
IChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERpZFJlY2VpdmVEYXRhKQotICAgICAgICBbbV9k
ZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkaWRSZWNlaXZlRGF0YTpi
eXRlc1dyaXR0ZW5dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2Fk
IGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZFJlY2VpdmVE
YXRhOmJ5dGVzV3JpdHRlbl07CiB9CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShEb3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5
LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkK
QEAgLTEzMSw3ICsxMzQsNyBAQCB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoRG93bmxvYWRQcm94eSYgZG93bgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQ
cm94eSkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBtYWtlUmVmKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgY2hlY2tl
ciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldCgp
LmdldCgpLCBAc2VsZWN0b3IoX2Rvd25sb2FkOmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZTpjb21wbGV0aW9uSGFuZGxlcjopKV0gKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKSB7CisgICAg
W21fZGVsZWdhdGUgX2Rvd25sb2FkOltfV0tEb3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3
cmFwcGVyKGRvd25sb2FkUHJveHkpXSBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
d3JhcHBlcihhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFthdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IG1ha2VSZWYoYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UpLCBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG1fZGVsZWdhdGUuZ2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOikpXSAoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNy
ZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVl
bkNhbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjaGVja2VyLT5kaWRDYWxs
Q29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTE2Nyw3ICsxNzAsNyBAQCB2b2lkIExlZ2FjeURvd25s
b2FkQ2xpZW50OjpkaWRDcmVhdGVEZXN0aW5hdGlvbihEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5LCBjbwogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRD
cmVhdGVEZXN0aW5hdGlvbikKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkOndyYXBwZXIo
ZG93bmxvYWRQcm94eSkgZGlkQ3JlYXRlRGVzdGluYXRpb246ZGVzdGluYXRpb25dOworICAgICAg
ICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2Fk
OndyYXBwZXIoZG93bmxvYWRQcm94eSldIGRpZENyZWF0ZURlc3RpbmF0aW9uOmRlc3RpbmF0aW9u
XTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25s
b2FkUHJveHkmIGRvd25sb2FkUHJveHkpCkBAIC0xODIsNyArMTg1LDcgQEAgdm9pZCBMZWdhY3lE
b3dubG9hZENsaWVudDo6cHJvY2Vzc0RpZENyYXNoKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZFByb2Nlc3NE
aWRDcmFzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkUHJvY2Vzc0RpZENyYXNoOndy
YXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWRQcm9j
ZXNzRGlkQ3Jhc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAogdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoRG93bmxvYWRQcm94eSYgZG93bmxvYWRQcm94
eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQWxsb3dPdmVyd3JpdGUsIFN0cmlu
Zyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yMDQsMTEgKzIwNywxMSBAQCB2b2lkIExlZ2Fj
eURvd25sb2FkQ2xpZW50OjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShE
b3dubG9hZFByb3h5JgogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy5kb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lQWxsb3dPdmVyd3JpdGUpIHsKICAgICAgICAg
Qk9PTCBhbGxvd092ZXJ3cml0ZSA9IE5POwogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0
ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBhbGxvd092ZXJ3cml0ZTomYWxsb3dPdmVyd3JpdGVd
OworICAgICAgICBOU1N0cmluZyAqZGVzdGluYXRpb24gPSBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6
W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94eSld
IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmZpbGVuYW1lIGFsbG93T3Zl
cndyaXRlOiZhbGxvd092ZXJ3cml0ZV07CiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFS
QVRJT05TX0VORAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihhbGxvd092ZXJ3cml0ZSA/IEFs
bG93T3ZlcndyaXRlOjpZZXMgOiBBbGxvd092ZXJ3cml0ZTo6Tm8sIGRlc3RpbmF0aW9uKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihkb3dubG9h
ZFByb3h5KSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpmaWxlbmFtZSBj
b21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW2NoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXQoKS5nZXQoKSwgQHNlbGVjdG9yKF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjopKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKEJPT0wgYWxsb3dPdmVyd3JpdGUsIE5TU3RyaW5nICpkZXN0aW5hdGlvbikgbXV0YWJsZSB7
CisgICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRo
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6ZmlsZW5hbWUgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtj
aGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUu
Z2V0KCkuZ2V0KCksIEBzZWxlY3RvcihfZG93bmxvYWQ6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWU6Y29tcGxldGlvbkhhbmRsZXI6KSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChCT09MIGFsbG93T3ZlcndyaXRlLCBOU1N0cmlu
ZyAqZGVzdGluYXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBs
ZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMjMzLDEw
ICsyMzYsMTAgQEAgdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmluaXNoKERvd25sb2Fk
UHJveHkmIGRvd25sb2FkUHJveHkpCiAjZW5kaWYKIAogICAgIGlmIChtX2RlbGVnYXRlTWV0aG9k
cy5kb3dubG9hZERpZEZpbmlzaCkKLSAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkRmlu
aXNoOndyYXBwZXIoZG93bmxvYWRQcm94eSldOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWREaWRGaW5pc2g6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93
bmxvYWRQcm94eSldXTsKIH0KIAotdm9pZCBMZWdhY3lEb3dubG9hZENsaWVudDo6ZGlkRmFpbChE
b3dubG9hZFByb3h5JiBkb3dubG9hZFByb3h5LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JiBlcnJvcikKK3ZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OmRpZEZhaWwoRG93bmxvYWRQcm94
eSYgZG93bmxvYWRQcm94eSwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6RGF0YSopCiB7CiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQogICAgIGlmIChkb3dubG9hZFBy
b3h5LmlzU3lzdGVtUHJldmlld0Rvd25sb2FkKCkpIHsKQEAgLTI0OCw3ICsyNTEsNyBAQCB2b2lk
IExlZ2FjeURvd25sb2FkQ2xpZW50OjpkaWRGYWlsKERvd25sb2FkUHJveHkmIGRvd25sb2FkUHJv
eHksIGNvbnN0IFdlYkNvcmU6OgogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMu
ZG93bmxvYWREaWRGYWlsKQotICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxvYWQ6d3JhcHBlcihk
b3dubG9hZFByb3h5KSBkaWRGYWlsV2l0aEVycm9yOmVycm9yLm5zRXJyb3IoKV07CisgICAgICAg
IFttX2RlbGVnYXRlIF9kb3dubG9hZDpbX1dLRG93bmxvYWQgZG93bmxvYWRXaXRoRG93bmxvYWQ6
d3JhcHBlcihkb3dubG9hZFByb3h5KV0gZGlkRmFpbFdpdGhFcnJvcjplcnJvci5uc0Vycm9yKCld
OwogfQogCiB2b2lkIExlZ2FjeURvd25sb2FkQ2xpZW50OjpsZWdhY3lEaWRDYW5jZWwoRG93bmxv
YWRQcm94eSYgZG93bmxvYWRQcm94eSkKQEAgLTI2MywxMyArMjY2LDEzIEBAIHZvaWQgTGVnYWN5
RG93bmxvYWRDbGllbnQ6OmxlZ2FjeURpZENhbmNlbChEb3dubG9hZFByb3h5JiBkb3dubG9hZFBy
b3h5KQogI2VuZGlmCiAKICAgICBpZiAobV9kZWxlZ2F0ZU1ldGhvZHMuZG93bmxvYWREaWRDYW5j
ZWwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZERpZENhbmNlbDp3cmFwcGVyKGRvd25s
b2FkUHJveHkpXTsKKyAgICAgICAgW21fZGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOltfV0tE
b3dubG9hZCBkb3dubG9hZFdpdGhEb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkpXV07CiB9
CiAKIHZvaWQgTGVnYWN5RG93bmxvYWRDbGllbnQ6OndpbGxTZW5kUmVxdWVzdChEb3dubG9hZFBy
b3h5JiBkb3dubG9hZFByb3h5LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
aWYgKG1fZGVsZWdhdGVNZXRob2RzLmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9V
UkwpCi0gICAgICAgIFttX2RlbGVnYXRlIF9kb3dubG9hZDp3cmFwcGVyKGRvd25sb2FkUHJveHkp
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJp
bmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOworICAgICAgICBbbV9kZWxlZ2F0ZSBfZG93bmxv
YWQ6W19XS0Rvd25sb2FkIGRvd25sb2FkV2l0aERvd25sb2FkOndyYXBwZXIoZG93bmxvYWRQcm94
eSldIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMOltOU1VSTCBfd2ViX1VSTFdpdGhXVEZT
dHJpbmc6cmVxdWVzdC51cmwoKS5zdHJpbmcoKV1dOwogCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXF1ZXN0KSk7CiB9CkBAIC0zMDEsNCArMzA0LDYgQEAgdm9pZCBMZWdhY3lEb3du
bG9hZENsaWVudDo6cmVsZWFzZUFjdGl2aXR5VG9rZW5JZk5lY2Vzc2FyeShEb3dubG9hZFByb3h5
JiBkb3dubG8KIH0KICNlbmRpZgogCitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDA0MmU3ODg1NDExZDQxNzdmY2U5YzY3NWVkOGQ0
OGYxMmJiM2Q0ZDYuLjk2NzgzN2FmZTE0YmQ4MzU0YzU2ZDZiZWZlNWQyOTEzNzZhYjg3YTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCkBA
IC0xMjYsNiArMTI2LDEwIEBAIHByaXZhdGU6CiAKICAgICAgICAgUmVmUHRyPEFQSTo6U3RyaW5n
PiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoV2ViUGFnZVByb3h5JiwgdW5zaWdu
ZWQga2V5U2l6ZUluZGV4LCBjb25zdCBSZWZQdHI8QVBJOjpTdHJpbmc+JiBjaGFsbGVuZ2VTdHJp
bmcsIGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCisgICAgICAgIHZvaWQgbmF2aWdhdGlvbkFjdGlv
bkRpZEJlY29tZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VE
aWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZSYs
IERvd25sb2FkUHJveHkmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBjb250ZXh0TWVudURpZENyZWF0
ZURvd25sb2FkKFdlYlBhZ2VQcm94eSYsIERvd25sb2FkUHJveHkmKSBmaW5hbDsKKwogI2lmIFVT
RShRVUlDS19MT09LKQogICAgICAgICB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0
cmluZyYgdXRpKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBXZWJDb3JlOjpTaGFyZWRCdWZmZXImKSBvdmVy
cmlkZTsKQEAgLTIzNSw2ICsyMzksOSBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdX
ZWJQcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dl
YlByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUgOiAxOwogICAgICAgICBib29sIHdlYkNyeXB0
b01hc3RlcktleUZvcldlYlZpZXcgOiAxOworICAgICAgICBib29sIG5hdmlnYXRpb25BY3Rpb25E
aWRCZWNvbWVEb3dubG9hZCA6IDE7CisgICAgICAgIGJvb2wgbmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQgOiAxOworICAgICAgICBib29sIGNvbnRleHRNZW51RGlkQ3JlYXRlRG93
bmxvYWQ7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmVXaXRoTmF2aWdh
dGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEVu
ZE5hdmlnYXRpb25HZXN0dXJlV2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0gOiAx
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1t
CmluZGV4IDc3MzllZDE2YjAyYWQ5Y2U1MTY3YjM3NGQyZWU2YTEyNjM4MjM4M2UuLmNmZDIyMzBh
NTI4ZmI4ZWU3MDdlOWJkZDIxZDA3ZDExN2M4NDMxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KQEAgLTQzLDYgKzQzLDcgQEAKICNp
bXBvcnQgIlNPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3
YXJkTGlzdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0JhY2tGb3J3YXJkTGlzdEl0ZW1JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0ZyYW1lSW5m
b0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBv
cnQgIldLTlNEaWN0aW9uYXJ5LmgiCkBAIC0xODcsNiArMTg4LDkgQEAgdm9pZCBOYXZpZ2F0aW9u
U3RhdGU6OnNldE5hdmlnYXRpb25EZWxlZ2F0ZShpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+IGRl
bGVnYXRlKQogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlld1dlYlByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOildOwogICAgIG1fbmF2
aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2Vi
UHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldyA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OildOwor
ICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21l
RG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
Om5hdmlnYXRpb25BY3Rpb246ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpuYXZpZ2F0aW9uUmVz
cG9uc2U6ZGlkQmVjb21lRG93bmxvYWQ6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkOild
OwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0
aW9uR2VzdHVyZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1dpbGxFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6d2l0aE5hdmlnYXRpb25Ub0JhY2tG
b3J3YXJkTGlzdEl0ZW06KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVyZVdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJ
dGVtID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRF
bmROYXZpZ2F0aW9uR2VzdHVyZTp3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRlbTop
XTsKQEAgLTQ3Miw3ICs0NzYsOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBOU1VSTFJlcXVlc3QgKm5zVVJMUmVxdWVzdCA9IHdyYXBwZXIo
QVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUobmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpKSk7Ci0g
ICAgICAgICAgICBpZiAoW05TVVJMQ29ubmVjdGlvbiBjYW5IYW5kbGVSZXF1ZXN0Om5zVVJMUmVx
dWVzdF0gfHwgd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0
IFVSTF0uc2NoZW1lKSkgeworICAgICAgICAgICAgaWYgKFtOU1VSTENvbm5lY3Rpb24gY2FuSGFu
ZGxlUmVxdWVzdDpuc1VSTFJlcXVlc3RdCisgICAgICAgICAgICAgICAgfHwgd2ViUGFnZS0+dXJs
U2NoZW1lSGFuZGxlckZvclNjaGVtZShbbnNVUkxSZXF1ZXN0IFVSTF0uc2NoZW1lKQorICAgICAg
ICAgICAgICAgIHx8IFtuc1VSTFJlcXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6QCJi
bG9iIl0pIHsKICAgICAgICAgICAgICAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVy
Zm9ybURvd25sb2FkKCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5kb3dubG9hZCgp
OwogICAgICAgICAgICAgICAgIGVsc2UKQEAgLTU1NSw5ICs1NjEsMTIgQEAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUo
KTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RF
Q0xBUkFUSU9OU19CRUdJTgogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lE
b3dubG9hZDoKKyAgICAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAog
ICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRy
eWluZ0FwcExpbms6CiAgICAgICAgICAgICB0cnlTT0F1dGhvcml6YXRpb24oV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uKSwgd2ViUGFnZVByb3h5LCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9j
YWxMaXN0ZW5lciksIHdlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUoYXBpV2Vic2l0ZVBvbGljaWVz
KV0gKGJvb2wgb3B0aW1pemVkTG9hZCkgewogICAgICAgICAgICAgICAgIGlmIChvcHRpbWl6ZWRM
b2FkKSB7CkBAIC02NzEsNyArNjgwLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWcKICAgICAg
ICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZDoKKyAg
ICAgICAgY2FzZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkOgogICAgICAgICAg
ICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xMDg2LDYgKzEwOTUsNDIgQEAgUmVmUHRyPEFQSTo6U3RyaW5nPiBOYXZpZ2F0aW9u
U3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW4KICAgICBy
ZXR1cm4gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFs
bGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmctPnN0cmluZygpLCB1cmwp
KTsKIH0KIAordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6Om5hdmlnYXRp
b25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZChXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRpb25B
Y3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLm5hdmln
YXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKTsKKyAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBuYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikg
ZGlkQmVjb21lRG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25S
ZXNwb25zZSwgRG93bmxvYWRQcm94eSYgZG93bmxvYWQpCit7CisgICAgaWYgKCFtX25hdmlnYXRp
b25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMubmF2aWdhdGlvblJlc3BvbnNlRGlk
QmVjb21lRG93bmxvYWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRl
bGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7Cisg
ICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCkgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcg
bmF2aWdhdGlvblJlc3BvbnNlOndyYXBwZXIobmF2aWdhdGlvblJlc3BvbnNlKSBkaWRCZWNvbWVE
b3dubG9hZDp3cmFwcGVyKGRvd25sb2FkKV07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50Ojpjb250ZXh0TWVudURpZENyZWF0ZURvd25sb2FkKFdlYlBhZ2VQcm94
eSYsIERvd25sb2FkUHJveHkmIGRvd25sb2FkKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxv
YWQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFuYXZp
Z2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtzdGF0aWNfY2FzdDxpZCA8
V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSAg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWQ6d3JhcHBlcihkb3dubG9hZCldOworfQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkU3RhcnRMb2FkRm9yUXVp
Y2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBT
dHJpbmcmIHV0aSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggZDExZDNhMDJhYWY2M2NlMzI5YWU4MWNiOTVh
MmYwYzAxNzJhMGFlNy4uYTRiMzk3YzZlZGVhZDU0NzY5MjA5ZjJhZGIwMGRjZmViNDJhZjUyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlTdXBwb3J0U1BJ
LmgiCiAjaW1wb3J0ICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dn
aW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCAyOWMxN2JlYjMz
ZWQ2NzZjOWM0NDRhNGQ3MmE2MDFmNGNkMDc3ZjM2Li5jNjFiYjNmZDJlZTA0NmYzODI0YzQwYWI5
OTE4MWMwZmNlZTJhMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCkBAIC01OSw3ICs1OSwxMSBAQCBEb3dubG9hZFByb3h5
OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYnNp
dGVEYXRhU3RvcgogewogfQogCi1Eb3dubG9hZFByb3h5Ojp+RG93bmxvYWRQcm94eSgpID0gZGVm
YXVsdDsKK0Rvd25sb2FkUHJveHk6On5Eb3dubG9hZFByb3h5KCkKK3sKKyAgICBpZiAobV9kaWRT
dGFydENhbGxiYWNrKQorICAgICAgICBtX2RpZFN0YXJ0Q2FsbGJhY2sobnVsbHB0cik7Cit9CiAK
IHN0YXRpYyBSZWZQdHI8QVBJOjpEYXRhPiBjcmVhdGVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKIHsKQEAgLTExNyw3ICsxMjEsOSBAQCB2b2lkIERvd25sb2FkUHJveHk6OmRp
ZFN0YXJ0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdn
ZQogICAgIGlmIChtX3JlZGlyZWN0Q2hhaW4uaXNFbXB0eSgpIHx8IG1fcmVkaXJlY3RDaGFpbi5s
YXN0KCkgIT0gcmVxdWVzdC51cmwoKSkKICAgICAgICAgbV9yZWRpcmVjdENoYWluLmFwcGVuZChy
ZXF1ZXN0LnVybCgpKTsKIAotICAgIG1fY2xpZW50LT5kaWRTdGFydCgqdGhpcyk7CisgICAgaWYg
KG1fZGlkU3RhcnRDYWxsYmFjaykKKyAgICAgICAgbV9kaWRTdGFydENhbGxiYWNrKHRoaXMpOwor
ICAgIG1fY2xpZW50LT5sZWdhY3lEaWRTdGFydCgqdGhpcyk7CiB9CiAKIHZvaWQgRG93bmxvYWRQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpA
QCAtMTQ1LDEzICsxNTEsMjIgQEAgdm9pZCBEb3dubG9hZFByb3h5OjpkaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRvdGFsQnl0ZXNXcmkKICAgICBtX2NsaWVu
dC0+ZGlkUmVjZWl2ZURhdGEoKnRoaXMsIGJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc1dyaXR0ZW4s
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUpOwogfQogCi12b2lkIERvd25sb2FkUHJveHk6OmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlLCBB
bGxvd092ZXJ3cml0ZSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIERvd25sb2FkUHJveHk6
OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBTdHJpbmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxs
b3dPdmVyd3JpdGUpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fY2xpZW50LT5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291
cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVu
YW1lKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChB
bGxvd092ZXJ3cml0ZSBhbGxvd092ZXJ3cml0ZSwgU3RyaW5nIGRlc3RpbmF0aW9uKSBtdXRhYmxl
IHsKKyAgICAvLyBBcyBwZXIgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jYXMtYS1kb3du
bG9hZCAoc3RlcCAyKSwgdGhlIGZpbGVuYW1lIGZyb20gdGhlIENvbnRlbnQtRGlzcG9zaXRpb24g
aGVhZGVyCisgICAgLy8gc2hvdWxkIG92ZXJyaWRlIHRoZSBzdWdnZXN0ZWQgZmlsZW5hbWUgZnJv
bSB0aGUgZG93bmxvYWQgYXR0cmlidXRlLgorICAgIGlmIChyZXNwb25zZS5pc0F0dGFjaG1lbnRX
aXRoRmlsZW5hbWUoKSB8fCAoc3VnZ2VzdGVkRmlsZW5hbWUuaXNFbXB0eSgpICYmIG1fc3VnZ2Vz
dGVkRmlsZW5hbWUuaXNFbXB0eSgpKSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSByZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSgpOworICAgIGVsc2UgaWYgKCFtX3N1Z2dlc3RlZEZpbGVu
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBtX3N1Z2dlc3RlZEZp
bGVuYW1lOworICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gTUlNRVR5cGVSZWdpc3RyeTo6YXBwZW5k
RmlsZUV4dGVuc2lvbklmTmVjZXNzYXJ5KHN1Z2dlc3RlZEZpbGVuYW1lLCByZXNwb25zZS5taW1l
VHlwZSgpKTsKKworICAgIG1fY2xpZW50LT5kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZSgqdGhpcywgcmVzcG9uc2UsIFJlc291cmNlUmVzcG9uc2VCYXNlOjpzYW5pdGl6ZVN1
Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKEFsbG93T3ZlcndyaXRlIGFsbG93T3ZlcndyaXRlLCBTdHJpbmcgZGVzdGluYXRp
b24pIG11dGFibGUgewogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZTsKICAgICAgICAgaWYgKCFkZXN0aW5hdGlvbi5pc051bGwoKSkKICAgICAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShkZXN0aW5hdGlvbiwgU2FuZGJv
eEV4dGVuc2lvbjo6VHlwZTo6UmVhZFdyaXRlLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAor
ICAgICAgICBzZXREZXN0aW5hdGlvbkZpbGVuYW1lKGRlc3RpbmF0aW9uKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoZGVzdGluYXRpb24sIFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSksIGFsbG93T3ZlcndyaXRlKTsKICAgICB9KTsKIH0KQEAgLTE3MywxMSArMTg4LDE2IEBAIHZv
aWQgRG93bmxvYWRQcm94eTo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlCiB7CiAgICAgbV9sZWdhY3lSZXN1bWVEYXRhID0gY3JlYXRl
RGF0YShyZXN1bWVEYXRhKTsKIAotICAgIG1fY2xpZW50LT5kaWRGYWlsKCp0aGlzLCBlcnJvcik7
CisgICAgbV9jbGllbnQtPmRpZEZhaWwoKnRoaXMsIGVycm9yLCBtX2xlZ2FjeVJlc3VtZURhdGEu
Z2V0KCkpOwogCiAgICAgLy8gVGhpcyBjYW4gY2F1c2UgdGhlIERvd25sb2FkUHJveHkgb2JqZWN0
IHRvIGJlIGRlbGV0ZWQuCiAgICAgbV9kb3dubG9hZFByb3h5TWFwLmRvd25sb2FkRmluaXNoZWQo
KnRoaXMpOwogfQogCit2b2lkIERvd25sb2FkUHJveHk6OnNldENsaWVudChSZWY8QVBJOjpEb3du
bG9hZENsaWVudD4mJiBjbGllbnQpCit7CisgICAgbV9jbGllbnQgPSBXVEZNb3ZlKGNsaWVudCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAppbmRleCAwNzE4ZTg5M2FiMjU1YmIzYTM1
ZGY3ZWRhOWMzMjkyYzFmNzE4YTRjLi5jMzMwNzgyNWIyMDA4NmRlZDRjODZjNjQ4OGNlNWRkNTdl
YzBjMzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZFByb3h5LmgKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KIAorT0JKQ19DTEFTUyBOU1Byb2dyZXNzOworCiBuYW1lc3Bh
Y2UgQVBJIHsKIGNsYXNzIERhdGE7CiBjbGFzcyBEb3dubG9hZENsaWVudDsKQEAgLTg3LDcgKzg5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2FzVXNlckluaXRpYXRlZChib29sIHZhbHVlKSB7
IG1fd2FzVXNlckluaXRpYXRlZCA9IHZhbHVlOyB9CiAgICAgYm9vbCB3YXNVc2VySW5pdGlhdGVk
KCkgY29uc3QgeyByZXR1cm4gbV93YXNVc2VySW5pdGlhdGVkOyB9CiAKLSAgICBTdHJpbmcgZGVz
dGluYXRpb25GaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzdGluYXRpb25GaWxlbmFtZTsg
fQorICAgIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25GaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGVzdGluYXRpb25GaWxlbmFtZTsgfQogICAgIHZvaWQgc2V0RGVzdGluYXRpb25GaWxlbmFt
ZShjb25zdCBTdHJpbmcmIGQpIHsgbV9kZXN0aW5hdGlvbkZpbGVuYW1lID0gZDsgfQogCiAjaWYg
VVNFKFNZU1RFTV9QUkVWSUVXKQpAQCAtOTcsMTcgKzk5LDE2IEBAIHB1YmxpYzoKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIHZvaWQgcHVibGlzaFByb2dyZXNzKGNvbnN0IFVSTCYpOworICAg
IHZvaWQgc2V0UHJvZ3Jlc3MoTlNQcm9ncmVzcyAqcHJvZ3Jlc3MpIHsgbV9wcm9ncmVzcyA9IHBy
b2dyZXNzOyB9CisgICAgTlNQcm9ncmVzcyAqcHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBtX3By
b2dyZXNzLmdldCgpOyB9CiAjZW5kaWYKIAogICAgIEFQSTo6RnJhbWVJbmZvJiBmcmFtZUluZm8o
KSB7IHJldHVybiBtX2ZyYW1lSW5mby5nZXQoKTsgfQogCiAgICAgQVBJOjpEb3dubG9hZENsaWVu
dCYgY2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0YVN0b3Jl
JiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKLQotICAgIC8vIElQQzo6TWVz
c2FnZVJlY2VpdmVyCi0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldENsaWVudChSZWY8QVBJOjpE
b3dubG9hZENsaWVudD4mJik7CisgICAgdm9pZCBzZXREaWRTdGFydENhbGxiYWNrKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYmIGNhbGxiYWNrKSB7IG1fZGlkU3RhcnRD
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CisgICAgdm9pZCBzZXRTdWdnZXN0ZWRGaWxl
bmFtZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lKSB7IG1fc3VnZ2VzdGVkRmlsZW5h
bWUgPSBzdWdnZXN0ZWRGaWxlbmFtZTsgfQogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIGRpZFN0YXJ0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwpAQCAtMTE4LDcgKzExOSwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRmluaXNoKCk7CiAgICAgdm9pZCBkaWRGYWlsKGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEpOwogICAg
IHZvaWQgd2lsbFNlbmRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlZGlyZWN0
UmVxdWVzdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25z
ZSk7Ci0gICAgdm9pZCBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxl
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKKyAgICB2b2lkIGRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBTdHJp
bmcmJiBzdWdnZXN0ZWRGaWxlbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSwgQWxsb3dPdmVyd3JpdGUpPiYmKTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBEb3dubG9hZFByb3h5KERvd25sb2FkUHJveHlNYXAmLCBXZWJzaXRlRGF0
YVN0b3JlJiwgQVBJOjpEb3dubG9hZENsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBXZWJQYWdlUHJveHkqKTsKKworICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIERvd25sb2FkUHJveHlNYXAm
IG1fZG93bmxvYWRQcm94eU1hcDsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRh
U3RvcmU7CkBAIC0xMzQsNiArMTQxLDEwIEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFVSTD4gbV9y
ZWRpcmVjdENoYWluOwogICAgIGJvb2wgbV93YXNVc2VySW5pdGlhdGVkIHsgdHJ1ZSB9OwogICAg
IFJlZjxBUEk6OkZyYW1lSW5mbz4gbV9mcmFtZUluZm87CisgICAgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChEb3dubG9hZFByb3h5Kik+IG1fZGlkU3RhcnRDYWxsYmFjazsKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBSZXRhaW5QdHI8TlNQcm9ncmVzcz4gbV9wcm9ncmVzczsKKyNlbmRpZgogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDg3ZDRlMzQ0ZTE4
YTIwMjNkMjliZWM0NjBjYWNhZTA1NTI1N2VkLi4wNDZhNmI1MDJmMGY2YTQ3Nzg5ZGQ5MTRhZjE0
ZmY2MWVlMTZjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWFwLmgi
CiAjaW5jbHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRnJhbWVJbmZv
RGF0YS5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCiAjaW5j
bHVkZSAiTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJM
ZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiNWEzY2M3NzEyNjcwNTUzZTVhMjgzYWMz
YThiYTQzZmQ2ZDc1YTI3Li4yNzkyNDVkMDMzM2EzYjU2MzQ1NGRiZjcyZTQ1NWFhOGIzMzllNWI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTU4LDYgKzU4
LDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdG9yTWFu
YWdlci5oIgorI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2Fk
UHJveHkuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFQcm94eS5oIgpAQCAtMzE0MCw3ICszMTQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNsZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9u
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9u
KiBuYXZpZ2F0aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBSZWZQdHI8QVBJOjpXZWJzaXRl
UG9saWNpZXM+JiYgcG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIp
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBSZWY8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIFByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiBwb2xpY2llcywgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjogZnJhbWVJRDog
JWxsdSwgbmF2aWdhdGlvbklEOiAlbGx1LCBwb2xpY3lBY3Rpb246ICV1IiwgZnJhbWUuZnJhbWVJ
RCgpLnRvVUludDY0KCksIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6
IDAsICh1bnNpZ25lZClwb2xpY3lBY3Rpb24pOwogCkBAIC0zMTgwLDcgKzMxODEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246
OkRvd25sb2FkOwogCiAgICAgaWYgKHBvbGljeUFjdGlvbiAhPSBQb2xpY3lBY3Rpb246OlVzZSB8
fCAhZnJhbWUuaXNNYWluRnJhbWUoKSB8fCAhbmF2aWdhdGlvbikgewotICAgICAgICByZWNlaXZl
ZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbiwgV1RGTW92ZShwb2xpY2ll
cyksIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzE5MywxMSArMzE5NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogICAgICAgICB9
CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucHJvY2Vzc0Zvck5hdmlnYXRp
b24oKnRoaXMsICpuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlSZWYoKSwgc291cmNlVVJM
LCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKHdlYnNpdGVEYXRhU3RvcmUp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwb2xpY3lBY3Rpb24sIG5h
dmlnYXRpb24gPSBtYWtlUmVmKCpuYXZpZ2F0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVBy
b2Nlc3MuY29weVJlZigpLAorICAgIHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnByb2Nlc3NGb3JO
YXZpZ2F0aW9uKCp0aGlzLCAqbmF2aWdhdGlvbiwgc291cmNlUHJvY2Vzcy5jb3B5UmVmKCksIHNv
dXJjZVVSTCwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV1RGTW92ZSh3ZWJzaXRlRGF0
YVN0b3JlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcG9saWN5QWN0
aW9uLCBuYXZpZ2F0aW9uID0gbWFrZVJlZigqbmF2aWdhdGlvbiksIG5hdmlnYXRpb25BY3Rpb24g
PSBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBzb3VyY2VQcm9jZXNzID0gc291cmNlUHJvY2Vz
cy5jb3B5UmVmKCksCiAgICAgICAgIHBvbGljaWVzID0gV1RGTW92ZShwb2xpY2llcyksIHNlbmRl
ciA9IFdURk1vdmUoc2VuZGVyKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudF0gKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzc0Zvck5hdmlnYXRpb24sIFN1c3BlbmRlZFBhZ2VQcm94
eSogZGVzdGluYXRpb25TdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJs
ZSB7CiAgICAgICAgIC8vIElmIHRoZSBuYXZpZ2F0aW9uIGhhcyBiZWVuIGRlc3Ryb3llZCwgdGhl
biBubyBuZWVkIHRvIHByb2NlZWQuCiAgICAgICAgIGlmIChpc0Nsb3NlZCgpIHx8ICFuYXZpZ2F0
aW9uU3RhdGUoKS5oYXNOYXZpZ2F0aW9uKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpKSkgewot
ICAgICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b24ucHRyKCksIFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICAg
ICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24ucHRyKCks
IFdURk1vdmUocG9saWNpZXMpLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBXVEZNb3ZlKHNl
bmRlcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMyMzMsMTEgKzMy
MzQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLnB0cigpLCBzaG91bGRQcm9jZXNzU3dhcCA/IG51bGxwdHIgOiBXVEZNb3ZlKHBvbGljaWVz
KSwgV1RGTW92ZShzZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFuZGxlKSwgc2hvdWxkUHJvY2Vz
c1N3YXAgPyBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMgOiBXaWxsQ29udGludWVM
b2FkSW5OZXdQcm9jZXNzOjpObyk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9s
aWN5QWN0aW9uLCBuYXZpZ2F0aW9uLnB0cigpLCBzaG91bGRQcm9jZXNzU3dhcCA/IG51bGxwdHIg
OiBXVEZNb3ZlKHBvbGljaWVzKSwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShz
ZW5kZXIpLCBXVEZNb3ZlKG9wdGlvbmFsSGFuZGxlKSwgc2hvdWxkUHJvY2Vzc1N3YXAgPyBXaWxs
Q29udGludWVMb2FkSW5OZXdQcm9jZXNzOjpZZXMgOiBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzOjpObyk7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlv
biwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
IG5hdmlnYXRpb24sIFJlZlB0cjxBUEk6OldlYnNpdGVQb2xpY2llcz4mJiB3ZWJzaXRlUG9saWNp
ZXMsIFZhcmlhbnQ8UmVmPEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlPiwgUmVmPEFQSTo6TmF2aWdh
dGlvbkFjdGlvbj4+JiYgbmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UsIFJlZjxQb2xpY3lEZWNp
c2lvblNlbmRlcj4mJiBzZW5kZXIsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxs
Q29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewogICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50
aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Okln
bm9yZSwgMCwgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfSk7CkBAIC0zMjUzLDYgKzMyNTQs
MTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogICAgIGlmIChhY3Rpb24gPT0gUG9saWN5QWN0
aW9uOjpEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBkb3dubG9hZCBwcm94eS4KICAg
ICAgICAgYXV0byYgZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlRG93
bmxvYWRQcm94eShtX3dlYnNpdGVEYXRhU3RvcmUsIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+b3JpZ2luYXRpbmdGcmFtZUlu
Zm8oKSA6IEZyYW1lSW5mb0RhdGEgeyB9KTsKKyAgICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRD
YWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIG5hdmlnYXRpb25B
Y3Rpb25PclJlc3BvbnNlID0gV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uT3JSZXNwb25zZSldIChh
dXRvKiBkb3dubG9hZFByb3h5KSB7CisgICAgICAgICAgICBpZiAoIXdlYWtUaGlzIHx8ICFkb3du
bG9hZFByb3h5KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIFdURjo6c3dp
dGNoT24obmF2aWdhdGlvbkFjdGlvbk9yUmVzcG9uc2UsCisgICAgICAgICAgICAgICAgWyZdIChj
b25zdCBSZWY8QVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2U+JiByZXNwb25zZSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIXJlc3BvbnNlLT5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzTnVsbCgpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgZG93bmxvYWRQcm94eS0+c2V0U3VnZ2VzdGVkRmlsZW5h
bWUocmVzcG9uc2UtPmRvd25sb2FkQXR0cmlidXRlKCkpOworICAgICAgICAgICAgICAgICAgICBt
X25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkKCp0
aGlzLCByZXNwb25zZS5nZXQoKSwgKmRvd25sb2FkUHJveHkpOworICAgICAgICAgICAgICAgIH0s
IFsmXSAoY29uc3QgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mIGFjdGlvbikgeworICAgICAg
ICAgICAgICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPm5hdmlnYXRpb25BY3Rpb25EaWRCZWNv
bWVEb3dubG9hZCgqdGhpcywgYWN0aW9uLmdldCgpLCAqZG93bmxvYWRQcm94eSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgKTsKKyAgICAgICAgfSk7CiAgICAgICAgIGlmIChuYXZp
Z2F0aW9uKSB7CiAgICAgICAgICAgICBkb3dubG9hZC5zZXRXYXNVc2VySW5pdGlhdGVkKG5hdmln
YXRpb24tPndhc1VzZXJJbml0aWF0ZWQoKSk7CiAgICAgICAgICAgICBkb3dubG9hZC5zZXRSZWRp
cmVjdENoYWluKG5hdmlnYXRpb24tPnRha2VSZWRpcmVjdENoYWluKCkpOwpAQCAtNTEwNSwxMCAr
NTExOSwyOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIG5hdmlnYXRpb24tPnNldE9y
aWdpbmF0aW5nRnJhbWVJbmZvKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSk7CiAgICAgbmF2aWdh
dGlvbi0+c2V0RGVzdGluYXRpb25GcmFtZVNlY3VyaXR5T3JpZ2luKGZyYW1lSW5mby5zZWN1cml0
eU9yaWdpbik7CiAKKyAgICBBUEk6Ok5hdmlnYXRpb24qIG1haW5GcmFtZU5hdmlnYXRpb24gPSBm
cmFtZS5pc01haW5GcmFtZSgpID8gbmF2aWdhdGlvbi5nZXQoKSA6IG51bGxwdHI7CisgICAgV2Vi
RnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5m
cmFtZUlEID8gcHJvY2Vzcy0+d2ViRnJhbWUoKm9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFt
ZUlEKSA6IG51bGxwdHI7CisgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5mbyA9IEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoRnJhbWVJbmZvRGF0YSB7IGZyYW1lSW5mbyB9LCB0aGlzKTsKKyAgICBS
ZWZQdHI8QVBJOjpGcmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKyAgICBpZiAoIWZyb21BUEkg
JiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCisgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9
IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKKyAgICBlbHNlIGlmICghZnJvbUFQSSkg
eworICAgICAgICBhdXRvKiBvcmlnaW5hdGluZ1BhZ2UgPSBvcmlnaW5hdGluZ1BhZ2VJRCA/IHBy
b2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHI7CisgICAgICAgIHNv
dXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2UpOworICAgIH0KKworICAgIGJvb2wgc2hv
dWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbgorICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWlu
RnJhbWUoKQorICAgICAgICAmJiAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhv
c3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKSkKKyAgICAgICAgJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUgIT0gV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6OkJhY2tGb3J3
YXJkOworCisgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5p
dGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50
aWZpZXIpOworICAgIGF1dG8gbmF2aWdhdGlvbkFjdGlvbiA9IEFQSTo6TmF2aWdhdGlvbkFjdGlv
bjo6Y3JlYXRlKFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBzb3VyY2VGcmFtZUluZm8u
Z2V0KCksIGRlc3RpbmF0aW9uRnJhbWVJbmZvLnB0cigpLCBXVEY6Om51bGxvcHQsIFJlc291cmNl
UmVxdWVzdChyZXF1ZXN0KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBwTGlu
a3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7
CisKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLmRpZEhhbmRs
ZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0KSkgewogICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmluZyByZXF1ZXN0IHRvIGxv
YWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgd2FzIGhhbmRsZWQgYnkgY29udGVudCBm
aWx0ZXIiKTsKLSAgICAgICAgcmV0dXJuIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uOjpJZ25vcmUsIG1fbmF2aWdhdGlvblN0YXRlLT5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCks
IG51bGxwdHIsIFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJldHVybiByZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBtX25hdmlnYXRpb25TdGF0ZS0+bmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb24pLCBX
VEZNb3ZlKHNlbmRlcikpOwogICAgIH0KICNlbmRpZgogCkBAIC01MTIwLDExICs1MTUzLDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQog
ICAgIHNob3VsZEV4cGVjdEFwcEJvdW5kRG9tYWluUmVzdWx0ID0gU2hvdWxkRXhwZWN0QXBwQm91
bmREb21haW5SZXN1bHQ6OlllczsKICNlbmRpZgotICAgIAotICAgIGF1dG8gbGlzdGVuZXIgPSBt
YWtlUmVmKGZyYW1lLnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZN
b3ZlKHNlbmRlciksIG5hdmlnYXRpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmplY3QgPSBwcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKV0g
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2ll
cywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xp
ZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdXYXJuaW5nLCBP
cHRpb25hbDxOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gaXNBcHBCb3VuZERvbWFpbikgbXV0
YWJsZSB7CisKKyAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihmcmFtZS5zZXRVcFBvbGljeUxp
c3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWUg
PSBtYWtlUmVmKGZyYW1lKSwgc2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBu
YXZpZ2F0aW9uQWN0aW9uLCBmcmFtZUluZm8sIHVzZXJEYXRhT2JqZWN0ID0gcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCldIChQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgUmVm
UHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dzaW5nV2FybmluZywgT3B0aW9uYWw8
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzQXBwQm91bmREb21haW4pIG11dGFibGUgewog
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6IGZyYW1lSUQ6ICVsbHUsIG5hdmlnYXRp
b25JRDogJWxsdSwgcG9saWN5QWN0aW9uOiAldSwgc2FmZUJyb3dzaW5nV2FybmluZzogJWQsIGlz
QXBwQm91bmREb21haW46ICVkIiwgZnJhbWUtPmZyYW1lSUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0
aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCAodW5zaWduZWQpcG9saWN5QWN0
aW9uLCAhIXNhZmVCcm93c2luZ1dhcm5pbmcsICEhaXNBcHBCb3VuZERvbWFpbik7CiAKLSAgICAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwg
c2VuZGVyID0gV1RGTW92ZShzZW5kZXIpLCBuYXZpZ2F0aW9uLCBwcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50LCBwb2xpY2llcyA9IG1ha2VSZWZQdHIocG9saWNpZXMpXSAoUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIg
PSBbdGhpcywgcHJvdGVjdGVkVGhpcywgZnJhbWUsIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwg
bmF2aWdhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiks
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xp
Y2llcyldIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICAgICAgICAgIGlmICghcG9saWNp
ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8qIGRlZmF1bHRQb2xpY2llcyA9IG1f
Y29uZmlndXJhdGlvbi0+ZGVmYXVsdFdlYnNpdGVQb2xpY2llcygpKQpAQCAtNTEzMyw3ICs1MTY2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgICAgICAgICBpZiAocG9saWNp
ZXMpCiAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNldEVmZmVjdGl2ZUNvbnRlbnRN
b2RlKGVmZmVjdGl2ZUNvbnRlbnRNb2RlQWZ0ZXJBZGp1c3RpbmdQb2xpY2llcygqcG9saWNpZXMs
IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5nZXQoKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgZnJhbWUsIFdURk1vdmUo
cG9saWNpZXMpLCBXVEZNb3ZlKHNlbmRlcikpOworICAgICAgICAgICAgcmVjZWl2ZWROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3Zl
KG5hdmlnYXRpb25BY3Rpb24pLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBmcmFtZSwg
V1RGTW92ZShwb2xpY2llcyksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgICAgIH07CiAKICNpZiBF
TkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCkBAIC01MjAwLDEwICs1MjMzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXMKICAgICBhdXRvIHByb3RvY29sID0gc2hvdWxkU2VuZFNlY3VyaXR5T3Jp
Z2luRGF0YSA/IGZyYW1lSW5mby5zZWN1cml0eU9yaWdpbi5wcm90b2NvbCA6IHJlcXVlc3QudXJs
KCkucHJvdG9jb2woKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmJlZ2luQXBwQm91bmREb21h
aW5DaGVjayhob3N0LnRvU3RyaW5nKCksIHByb3RvY29sLnRvU3RyaW5nKCksIGxpc3RlbmVyKTsK
ICNlbmRpZgotICAgIEFQSTo6TmF2aWdhdGlvbiogbWFpbkZyYW1lTmF2aWdhdGlvbiA9IGZyYW1l
LmlzTWFpbkZyYW1lKCkgPyBuYXZpZ2F0aW9uLmdldCgpIDogbnVsbHB0cjsKLSAgICBXZWJGcmFt
ZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1l
SUQgPyBwcm9jZXNzLT53ZWJGcmFtZSgqb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQp
IDogbnVsbHB0cjsKIAotICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+
dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9r
ZW5JZGVudGlmaWVyKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IGF1dG8gd2FzUG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIgPSBuYXZpZ2F0aW9uLT5pc0xvYWRl
ZFdpdGhOYXZpZ2F0aW9uU2hhcmVkKCkgfHwgdXNlckluaXRpYXRlZEFjdGl2aXR5OwogICAgIGlm
ICghc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSkKQEAgLTUyMTEsMjQgKzUyNDEsOCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2NlcwogI2VuZGlmCiAKICAgICBpZiAobV9wb2xpY3lDbGllbnQpCi0g
ICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0
aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0Zy
YW1lLCBvcmlnaW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIp
LCBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSk7CisgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKCp0aGlzLCAmZnJhbWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIG9yaWdpbmF0
aW5nRnJhbWUsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0
ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgYXV0byBkZXN0aW5hdGlvbkZyYW1lSW5m
byA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKTsKLSAg
ICAgICAgUmVmUHRyPEFQSTo6RnJhbWVJbmZvPiBzb3VyY2VGcmFtZUluZm87Ci0gICAgICAgIGlm
ICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKLSAgICAgICAgICAgIHNv
dXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKLSAgICAgICAg
ZWxzZSBpZiAoIWZyb21BUEkpIHsKLSAgICAgICAgICAgIGF1dG8qIG9yaWdpbmF0aW5nUGFnZSA9
IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQp
IDogbnVsbHB0cjsKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUoV1RGTW92ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1Bh
Z2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9z
aG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCi0gICAg
ICAgICAgICAmJiBkZXN0aW5hdGlvbkZyYW1lSW5mby0+aXNNYWluRnJhbWUoKQotICAgICAgICAg
ICAgJiYgKG1fbWFpbkZyYW1lICYmIG1fbWFpbkZyYW1lLT51cmwoKS5ob3N0KCkgIT0gcmVxdWVz
dC51cmwoKS5ob3N0KCkpCi0gICAgICAgICAgICAmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZp
Z2F0aW9uVHlwZSAhPSBXZWJDb3JlOjpOYXZpZ2F0aW9uVHlwZTo6QmFja0ZvcndhcmQ7Ci0KLSAg
ICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpjcmVh
dGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQoKSwg
ZGVzdGluYXRpb25GcmFtZUluZm8ucHRyKCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShyZXF1ZXN0
KSwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLCBzaG91bGRPcGVuQXBwTGlua3MsIFdURk1vdmUodXNl
ckluaXRpYXRlZEFjdGl2aXR5KSwgbWFpbkZyYW1lTmF2aWdhdGlvbik7Ci0KICNpZiBIQVZFKEFQ
UF9TU08pCiAgICAgICAgIGlmIChtX3Nob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uIHx8IG1fc2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRp
b25JbkFsbE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbikKICAgICAgICAgICAgIG5hdmlnYXRpb25B
Y3Rpb24tPnVuc2V0U2hvdWxkUGVyZm9ybVNPQXV0aG9yaXphdGlvbigpOwpAQCAtNTMzMCw3ICs1
MzQ0LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lCiAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIGZyYW1lKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChtX3Byb2Nlc3MsIHJlcXVlc3Qu
dXJsKCkpOwogCi0gICAgYXV0byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXJQcm94eShbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpZGVu
dGlmaWVyLCBsaXN0ZW5lcklELCBmcmFtZUlEXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
QVBJOjpXZWJzaXRlUG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNh
ZmVCcm93c2luZ1dhcm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICBSZWZQdHI8QVBJOjpG
cmFtZUluZm8+IHNvdXJjZUZyYW1lSW5mbzsKKyAgICBpZiAoZnJhbWUpCisgICAgICAgIHNvdXJj
ZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0
aGlzKTsKKworICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gbV9wcm9jZXNzLT51c2Vy
SW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklk
ZW50aWZpZXIpOworICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJhbWUgJiYg
bV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsKKyAgICBh
dXRvIG5hdmlnYXRpb25BY3Rpb24gPSBBUEk6Ok5hdmlnYXRpb25BY3Rpb246OmNyZWF0ZShXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgc291cmNlRnJhbWVJbmZvLmdldCgpLCBudWxscHRy
LCBmcmFtZU5hbWUsIFdURk1vdmUocmVxdWVzdCksIFVSTCB7IH0sIHNob3VsZE9wZW5BcHBMaW5r
cywgV1RGTW92ZSh1c2VySW5pdGlhdGVkQWN0aXZpdHkpKTsKKyAgICAKKyAgICBhdXRvIGxpc3Rl
bmVyID0gbWFrZVJlZihmcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGlkZW50aWZpZXIsIGxpc3RlbmVySUQsIGZyYW1l
SUQsIG5hdmlnYXRpb25BY3Rpb25dIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Oldl
YnNpdGVQb2xpY2llcyosIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCwgUmVmUHRyPFNhZmVCcm93c2luZ1dhcm5pbmc+JiYgc2FmZUJyb3dz
aW5nV2FybmluZywgT3B0aW9uYWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogQXNzZXJ0
IHRoZSBBUEk6OldlYnNpdGVQb2xpY2llcyogaXMgbnVsbHB0ciBoZXJlIG9uY2UgY2xpZW50cyBv
ZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9saWNpZXMgZ28gYXdheS4KICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dz
aW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwpAQCAtNTMzOSwyNCArNTM2MSwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCBGcmFtZQogICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGlj
eURlY2lzaW9uKSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBudWxscHRyLCBXVEZNb3ZlKHNlbmRlcikpOworICAg
ICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgbnVsbHB0
ciwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uKSwgV1RGTW92ZShzZW5kZXIpKTsKICAgICB9LCBT
aG91bGRFeHBlY3RTYWZlQnJvd3NpbmdSZXN1bHQ6Ok5vLCBTaG91bGRFeHBlY3RBcHBCb3VuZERv
bWFpblJlc3VsdDo6Tm8pKTsKIAogICAgIGlmIChtX3BvbGljeUNsaWVudCkKLSAgICAgICAgbV9w
b2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigqdGhpcywgKmZyYW1l
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBXVEZNb3ZlKGxpc3Rl
bmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxBUEk6OkZyYW1lSW5mbz4g
c291cmNlRnJhbWVJbmZvOwotICAgICAgICBpZiAoZnJhbWUpCi0gICAgICAgICAgICBzb3VyY2VG
cmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKFdURk1vdmUoZnJhbWVJbmZvKSwgdGhp
cyk7Ci0KLSAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBtX3Byb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7Ci0gICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gbV9tYWluRnJh
bWUgJiYgbV9tYWluRnJhbWUtPnVybCgpLmhvc3QoKSAhPSByZXF1ZXN0LnVybCgpLmhvc3QoKTsK
LSAgICAgICAgYXV0byBuYXZpZ2F0aW9uQWN0aW9uID0gQVBJOjpOYXZpZ2F0aW9uQWN0aW9uOjpj
cmVhdGUoV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIHNvdXJjZUZyYW1lSW5mby5nZXQo
KSwgbnVsbHB0ciwgZnJhbWVOYW1lLCBXVEZNb3ZlKHJlcXVlc3QpLCBVUkwgeyB9LCBzaG91bGRP
cGVuQXBwTGlua3MsIFdURk1vdmUodXNlckluaXRpYXRlZEFjdGl2aXR5KSk7Ci0KKyAgICAgICAg
bV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbigqdGhpcywgKmZy
YW1lLCBuYXZpZ2F0aW9uQWN0aW9uLmdldCgpLCByZXF1ZXN0LCBmcmFtZU5hbWUsIFdURk1vdmUo
bGlzdGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEu
b2JqZWN0KCkpLmdldCgpKTsKKyAgICBlbHNlCiAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgbmF2aWdhdGlvbkFjdGlvbi5n
ZXQoKSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2Jq
ZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwotCi0gICAgfQotICAgICAgICAKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwKQEAgLTUzNzcsOCArNTM4OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLAogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlcXVlc3QudXJsKCkpOwogICAg
IE1FU1NBR0VfQ0hFQ0tfVVJMKHByb2Nlc3MsIHJlc3BvbnNlLnVybCgpKTsKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvbklEID8gbV9uYXZpZ2F0aW9u
U3RhdGUtPm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSA6IG51bGxwdHI7CisgICAgYXV0byBuYXZp
Z2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6RnJh
bWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVzdCwg
cmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOworCiAgICAgYXV0
byBsaXN0ZW5lciA9IG1ha2VSZWYoZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB3ZWJQYWdlSUQsIGZyYW1lSUQsIGlk
ZW50aWZpZXIsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24gPSBXVEZNb3ZlKG5hdmlnYXRpb24pLAot
ICAgICAgICBwcm9jZXNzXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRl
UG9saWNpZXMqLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dh
cm5pbmcsIE9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvY2VzcywgbmF2aWdhdGlvblJl
c3BvbnNlXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpXZWJzaXRlUG9saWNpZXMq
LCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQsIFJlZlB0cjxTYWZlQnJvd3NpbmdXYXJuaW5nPiYmIHNhZmVCcm93c2luZ1dhcm5pbmcsIE9w
dGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IEFzc2VydCB0aGUgQVBJOjpXZWJz
aXRlUG9saWNpZXMqIGlzIG51bGxwdHIgaGVyZSBvbmNlIGNsaWVudHMgb2YgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzIGdvIGF3YXkuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFz
YWZlQnJvd3NpbmdXYXJuaW5nKTsKQEAgLTUzODcsMTQgKzU0MDAsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNp
c2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAKLSAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIG51bGxwdHIs
IFdURk1vdmUoc2VuZGVyKSk7CisgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBudWxscHRyLCBXVEZNb3ZlKG5hdmlnYXRpb25SZXNw
b25zZSksIFdURk1vdmUoc2VuZGVyKSk7CiAgICAgfSwgU2hvdWxkRXhwZWN0U2FmZUJyb3dzaW5n
UmVzdWx0OjpObywgU2hvdWxkRXhwZWN0QXBwQm91bmREb21haW5SZXN1bHQ6Ok5vKSk7CiAgICAg
aWYgKG1fcG9saWN5Q2xpZW50KQogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1F
VHlwZSwgV1RGTW92ZShsaXN0ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKLSAgICBlbHNlIHsKLSAgICAgICAgYXV0byBu
YXZpZ2F0aW9uUmVzcG9uc2UgPSBBUEk6Ok5hdmlnYXRpb25SZXNwb25zZTo6Y3JlYXRlKEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUoV1RGTW92ZShmcmFtZUluZm8pLCB0aGlzKS5nZXQoKSwgcmVxdWVz
dCwgcmVzcG9uc2UsIGNhblNob3dNSU1FVHlwZSwgZG93bmxvYWRBdHRyaWJ1dGUpOworICAgIGVs
c2UKICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UoKnRoaXMsIFdURk1vdmUobmF2aWdhdGlvblJlc3BvbnNlKSwgV1RGTW92ZShsaXN0
ZW5lciksIHByb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0
KCkpLmdldCgpKTsKLSAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1bmFibGVUb0ltcGxl
bWVudFBvbGljeShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTYwMzMsNiArNjA0NCwxOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRv
d25sb2FkKQogICAgIHBhZ2VDbGllbnQoKS5oYW5kbGVEb3dubG9hZFJlcXVlc3QoZG93bmxvYWQp
OwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRvd25s
b2FkID0gcHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVzdW1lRG93bmxvYWQod2Vic2l0ZURhdGFT
dG9yZSgpLCB0aGlzLCByZXN1bWVEYXRhLCBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydDo6WWVz
KTsKKyAgICBkb3dubG9hZC5zZXREZXN0aW5hdGlvbkZpbGVuYW1lKHBhdGgpOworICAgIGRvd25s
b2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQor
Cit2b2lkIFdlYlBhZ2VQcm94eTo6ZG93bmxvYWRSZXF1ZXN0KFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRG93bmxvYWRQcm94eSopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8mIGRvd25sb2FkID0gcHJvY2VzcygpLnBy
b2Nlc3NQb29sKCkuZG93bmxvYWQod2Vic2l0ZURhdGFTdG9yZSgpLCB0aGlzLCByZXF1ZXN0LCB7
IH0pOworICAgIGRvd25sb2FkLnNldERpZFN0YXJ0Q2FsbGJhY2soV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBwYWdlQ2xpZW50KCkuZGlkQ2hhbmdlQ29udGVu
dFNpemUoc2l6ZSk7CkBAIC02NjAyLDE4ICs2NjI2LDI2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVt
KQogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCi0gICAgaWYgKGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnRG93bmxvYWRJbWFnZVRvRGlzaykgewotICAgICAgICBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0b3JlLCB0aGlzLCBV
UkwoVVJMKCksIG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0
RGF0YSgpLmFic29sdXRlSW1hZ2VVUkwpKTsKLSAgICAgICAgcmV0dXJuOyAgICAKLSAgICB9Cisg
ICAgc3RydWN0IERvd25sb2FkSW5mbyB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIFN0
cmluZyBzdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICB9OworICAgIE9wdGlvbmFsPERvd25sb2FkSW5m
bz4gZG93bmxvYWRJbmZvOworICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRl
bVRhZ0Rvd25sb2FkSW1hZ2VUb0Rpc2spCisgICAgICAgIGRvd25sb2FkSW5mbyA9IHt7IG1fYWN0
aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpLmFic29sdXRl
SW1hZ2VVUkwsIHsgfSB9fTsKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0
ZW1UYWdEb3dubG9hZExpbmtUb0Rpc2spIHsKICAgICAgICAgYXV0byYgaGl0VGVzdFJlc3VsdCA9
IG1fYWN0aXZlQ29udGV4dE1lbnVDb250ZXh0RGF0YS53ZWJIaXRUZXN0UmVzdWx0RGF0YSgpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuZG93bmxvYWQobV93ZWJzaXRlRGF0YVN0
b3JlLCB0aGlzLCBVUkwoVVJMKCksIGhpdFRlc3RSZXN1bHQuYWJzb2x1dGVMaW5rVVJMKSwgaGl0
VGVzdFJlc3VsdC5saW5rU3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0Rvd25sb2FkTWVk
aWFUb0Rpc2spIHsKLSAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmRvd25sb2FkKG1f
d2Vic2l0ZURhdGFTdG9yZSwgdGhpcywgVVJMKFVSTCgpLCBtX2FjdGl2ZUNvbnRleHRNZW51Q29u
dGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMKSk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgZG93bmxvYWRJbmZvID0ge3sgaGl0VGVzdFJlc3VsdC5hYnNv
bHV0ZUxpbmtVUkwsIGhpdFRlc3RSZXN1bHQubGlua1N1Z2dlc3RlZEZpbGVuYW1lIH19OworICAg
IH0KKyAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdEb3dubG9hZE1l
ZGlhVG9EaXNrKQorICAgICAgICBkb3dubG9hZEluZm8gPSB7eyBtX2FjdGl2ZUNvbnRleHRNZW51
Q29udGV4dERhdGEud2ViSGl0VGVzdFJlc3VsdERhdGEoKS5hYnNvbHV0ZU1lZGlhVVJMLCB7IH0g
fX07CisgICAgaWYgKGRvd25sb2FkSW5mbykgeworICAgICAgICBhdXRvJiBkb3dubG9hZCA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5kb3dubG9hZChtX3dlYnNpdGVEYXRhU3RvcmUsIHRoaXMs
IFVSTChVUkwoKSwgZG93bmxvYWRJbmZvLT51cmwpLCBkb3dubG9hZEluZm8tPnN1Z2dlc3RlZEZp
bGVuYW1lKTsKKyAgICAgICAgZG93bmxvYWQuc2V0RGlkU3RhcnRDYWxsYmFjayhbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvKiBkb3dubG9hZCkgeworICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhZG93bmxvYWQpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5jb250ZXh0TWVudURpZENyZWF0ZURvd25s
b2FkKCp0aGlzLCAqZG93bmxvYWQpOworICAgICAgICB9KTsKICAgICB9CiAgICAgaWYgKGl0ZW0u
YWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnQ2hlY2tTcGVsbGluZ1doaWxlVHlwaW5nKSB7
CiAgICAgICAgIFRleHRDaGVja2VyOjpzZXRDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
IVRleHRDaGVja2VyOjpzdGF0ZSgpLmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYzM3N2NiNDFmZjJhZjBh
NzVmOTNiMWFmNzM3NmU0ODVhYWI0ZDdiZS4uMjBmYmZhMDgwMWFiMWZjYTE1MDMwMGM0N2E5YmZm
YTQ1NjI0ZDBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTEx
NjYsOCArMTE2Niw4IEBAIHB1YmxpYzoKIAogICAgIGNsYXNzIFBvbGljeURlY2lzaW9uU2VuZGVy
OwogICAgIGVudW0gY2xhc3MgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyA6IGJvb2wgeyBO
bywgWWVzIH07Ci0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYm
LCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gPSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGlu
dWVMb2FkSW5OZXdQcm9jZXNzOjpObyk7Ci0gICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFByb2Nl
c3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJveHkmLCBSZWZQdHI8QVBJOjpXZWJz
aXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CisgICAgdm9pZCBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiwgUmVmUHRyPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiYmLCBWYXJpYW50PFJlZjxBUEk6Ok5h
dmlnYXRpb25SZXNwb25zZT4sIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+PiYmLCBSZWY8UG9s
aWN5RGVjaXNpb25TZW5kZXI+JiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
PSB7IH0sIFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MgPSBXaWxsQ29udGludWVMb2FkSW5O
ZXdQcm9jZXNzOjpObyk7CisgICAgdm9pZCByZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIEFQSTo6TmF2aWdhdGlvbiosIFJlZjxBUEk6Ok5hdmln
YXRpb25BY3Rpb24+JiYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdlYkZyYW1lUHJv
eHkmLCBSZWZQdHI8QVBJOjpXZWJzaXRlUG9saWNpZXM+JiYsIFJlZjxQb2xpY3lEZWNpc2lvblNl
bmRlcj4mJik7CiAKICAgICB2b2lkIGJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYpOwogCkBAIC0xMjgxLDYgKzEyODEsOCBAQCBw
dWJsaWM6CiAgICAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMo
V2ViUHJvY2Vzc1Byb3h5JiwgRHJhd2luZ0FyZWFQcm94eSYsIFJlZlB0cjxBUEk6OldlYnNpdGVQ
b2xpY2llcz4mJiA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3Qo
RG93bmxvYWRQcm94eSYpOworICAgIHZvaWQgcmVzdW1lRG93bmxvYWQoY29uc3QgQVBJOjpEYXRh
JiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RG93bmxvYWRQcm94eSopPiYmKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChEb3dubG9hZFByb3h5Kik+
JiYpOwogCiAgICAgdm9pZCBhZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9y
ZVNlbGVjdGlvbik7CiAgICAgdm9pZCBjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcm
IHdvcmQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4
IDViNzRhY2I0YjAwNTZlNzExNzcwYmJjMTQwZGFjN2Y1M2MyNzQ2YzMuLjEwYzU3NTVmYmQwNWNj
MDE2MGRlNTRiZmRkNDlmZmNjMjRhZTc2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTExNDgsNyArMTE0OCw3IEBAIERvd25sb2FkUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBh
Z2VQcm94CiAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7CiB9CiAKLURvd25sb2FkUHJveHkmIFdl
YlByb2Nlc3NQb29sOjpyZXN1bWVEb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUs
IFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVzdW1lRGF0
YSwgY29uc3QgU3RyaW5nJiBwYXRoKQorRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OnJl
c3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3h5KiBp
bml0aWF0aW5nUGFnZSwgY29uc3QgQVBJOjpEYXRhJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcm
IHBhdGgsIENhbGxEb3dubG9hZERpZFN0YXJ0IGNhbGxEb3dubG9hZERpZFN0YXJ0KQogewogICAg
IGF1dG8mIGRvd25sb2FkUHJveHkgPSBjcmVhdGVEb3dubG9hZFByb3h5KGRhdGFTdG9yZSwgUmVz
b3VyY2VSZXF1ZXN0KCksIGluaXRpYXRpbmdQYWdlLCB7IH0pOwogCkBAIC0xMTU2LDcgKzExNTYs
NyBAQCBEb3dubG9hZFByb3h5JiBXZWJQcm9jZXNzUG9vbDo6cmVzdW1lRG93bmxvYWQoV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlLCBXZWJQYQogICAgIGlmICghcGF0aC5pc0VtcHR5KCkpCiAg
ICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShwYXRoLCBTYW5kYm94RXh0ZW5z
aW9uOjpUeXBlOjpSZWFkV3JpdGUsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCi0gICAgZGF0
YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgZG93bmxvYWRQcm94eS5kb3dubG9h
ZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBwYXRoLCBzYW5kYm94RXh0ZW5zaW9u
SGFuZGxlKSwgMCk7CisgICAgZGF0YVN0b3JlLm5ldHdvcmtQcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlJlc3VtZURvd25sb2FkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwg
ZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHJlc3VtZURhdGEuZGF0YVJlZmVyZW5jZSgpLCBw
YXRoLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBjYWxsRG93bmxvYWREaWRTdGFydCksIDApOwog
ICAgIHJldHVybiBkb3dubG9hZFByb3h5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCA5ZDc2NTQ5YTIyZmQ3ZWQyNDE2YWE2NjMyMDM4OTQyMWFjYWY4
ZjE1Li5hY2U1N2ZlOGNiMDFjNjQ0NjM1ZGJkNGVjOGNjNDY5NWFlNTM1ODIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTExOSw2ICsxMTksNyBAQCBpbnQg
d2ViUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCB3ZWJQcm9jZXNzVGhyb3VnaHB1dFFPUygpOwog
I2VuZGlmCiAKK2VudW0gY2xhc3MgQ2FsbERvd25sb2FkRGlkU3RhcnQgOiBib29sOwogZW51bSBj
bGFzcyBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IDogYm9vbDsKIAogY2xhc3MgV2ViUHJv
Y2Vzc1Bvb2wgZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpQcm9jZXNzUG9vbD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUG9vbD4sIHBy
aXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpAQCAtMjA3LDcgKzIwOCw3IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgRG93bmxvYWRQcm94eSYgZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYs
IFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwotICAgIERvd25s
b2FkUHJveHkmIHJlc3VtZURvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUmLCBXZWJQYWdlUHJveHkq
IGluaXRpYXRpbmdQYWdlLCBjb25zdCBBUEk6OkRhdGEmIHJlc3VtZURhdGEsIGNvbnN0IFN0cmlu
ZyYgcGF0aCk7CisgICAgRG93bmxvYWRQcm94eSYgcmVzdW1lRG93bmxvYWQoV2Vic2l0ZURhdGFT
dG9yZSYsIFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IEFQSTo6RGF0YSYgcmVz
dW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBDYWxsRG93bmxvYWREaWRTdGFydCk7CiAKICAg
ICB2b2lkIHNldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8QVBJ
OjpPYmplY3Q+JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNl
ckRhdGEgPSBXVEZNb3ZlKHVzZXJEYXRhKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNzQ2MDU0ZWQxMDliNGIyOWE2ZGY1OTky
ZGEwOWNjNzA0Y2Y5MjAzLi43ODc5ZjIzNTNkYzFmMzhjNGFhYWZhOTI2NDk2ODdjNDJhOTg0Mjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIyOSw3ICsyMjksNiBAQAogCQkxQTQzRTgyQTE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTQzRTgyODE4OEYzQ0RDMDA5RTREMzAgLyogX1dLUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMUE0NDVCOUYxODRENUZCNTAwNEIzNDE0IC8qIFdLQ29udGV4dEluamVjdGVkQnVu
ZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQTQ0NUI5RTE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGll
bnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkx
QTQ0NUJBMTE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0NDVCQTAxODRENUZD
MTAwNEIzNDE0IC8qIFdLQ29udGV4dEhpc3RvcnlDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQTQ0NUJBMzE4NEQ1RkNGMDA0QjM0MTQg
LyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBNDQ1QkEyMTg0RDVGQ0YwMDRCMzQxNCAvKiBXS0NvbnRleHRE
b3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTFBNDQ1QkE1MTg0RDVGREEwMDRCMzQxNCAvKiBXS0NvbnRleHRDb25uZWN0aW9u
Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFBNDgzMkND
MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dlYnNpdGVEYXRhUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTQ4MzJDQTFBOUJDNDY1MDA4QjRERkUg
LyogV0tXZWJzaXRlRGF0YVJlY29yZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1
YmxpYywgKTsgfTsgfTsKIAkJMUE0ODMyQ0UxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURh
dGFSZWNvcmRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE0ODMyQ0QxQTlCQzQ4NDAwOEI0REZFIC8qIFdLV2Vic2l0ZURhdGFSZWNvcmRJ
bnRlcm5hbC5oICovOyB9OwpAQCAtMzQyLDcgKzM0MSw3IEBACiAJCTFBQjdENENBMTI4OEFBQTcw
MENGRDA4QyAvKiBEb3dubG9hZFByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUI3RDRDODEyODhBQUE3MDBDRkQwOEMgLyogRG93bmxvYWRQcm94
eS5oICovOyB9OwogCQkxQUI3RDYxOTEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUI3RDYxNzEyODhCOUQ5MDBDRkQwOEMgLyogRG93bmxvYWRQcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi87IH07CiAJCTFBQjdENjFBMTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9h
ZFByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjdENjE4MTI4OEI5RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZXMu
aCAqLzsgfTsKLQkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjdENzhCMTI4OENE
OUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUFCN0Q3OEQxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxv
YWRSZWYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUFCOEExRUMxODQwMDgwOTAwRTlB
RTY5IC8qIFdLUGFnZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCOEExRUIxODQwMDgwOTAwRTlBRTY5IC8qIFdLUGFnZUxvYWRl
ckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTFBQjhBMUVFMTg0MDBBQ0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjhBMUVEMTg0MDBB
Q0IwMEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQUI4QTFGMDE4NDAwQjAwMDBFOUFFNjkgLyog
V0tQYWdlRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCOEExRUYxODQwMEIwMDAwRTlBRTY5IC8qIFdLUGFnZUZvcm1DbGllbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIzMSw2
ICsxMjMwLDggQEAKIAkJNUMyMENCQTAxQkIxRUNEODAwODk1QkIxIC8qIE5ldHdvcmtTZXNzaW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzIwQ0I5
RTFCQjBERDE4MDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb24uaCAqLzsgfTsKIAkJNUMyNjk1ODUy
MDA0MzIxMjAwNUM0MzlCIC8qIFdLT3BlblBhbmVsUGFyYW1ldGVyc1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjY5NTg0MjAwNDJGMTIw
MDVDNDM5QiAvKiBXS09wZW5QYW5lbFBhcmFtZXRlcnNQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNUMyOThEQTAxQzNERjAyMTAwNDcw
QUZFIC8qIFBlbmRpbmdEb3dubG9hZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUMyOThEOUUxQzNERUYyOTAwNDcwQUZFIC8qIFBlbmRpbmdEb3dubG9h
ZC5oICovOyB9OworCQk1QzJENTc0ODI1N0ZGQTRCMDA2NzlBNzIgLyogV0tDb250ZXh0RG93bmxv
YWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDMkQ1NzQ3MjU3RkZBMTIwMDY3OUE3MiAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTVDMkVCREZB
MjU2NDM4MEIwMEQ1NUIwNSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzJFQkRGOTI1NjQzNTIwMDBENTVCMDUgLyog
V0tEb3dubG9hZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTVDMzU5QzBEMjE1NDczOUYwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMzU5QzBDMjE1
NDczMjEwMDlFNzk0OCAvKiBXS0RlcHJlY2F0ZWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1QzQ2MDlFNzIyNDMxN0I0MDA5OTQzQzIgLyogX1dL
Q29udGVudFJ1bGVMaXN0QWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzQ2MDlFMjIyNDMwRTRDMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVM
aXN0QWN0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNUM0NjA5RTgyMjQzMTdCQjAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlv
bkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzQ2MDlFNDIyNDMwRTREMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50
ZXJuYWwuaCAqLzsgfTsKQEAgLTE4ODAsNiArMTg4MSw5IEBACiAJCUNFRTRBRTJCMUE1RENGNDMw
MDAyRjQ5QiAvKiBVSUtpdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0VFNEFFMkExQTVEQ0Y0MzAwMDJGNDlCIC8qIFVJS2l0U1BJLmggKi87IH07
CiAJCUQzQjk0ODQ3MTFGRjRCNjUwMDAzMkIzOSAvKiBXZWJQb3B1cE1lbnUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEQzQjk0ODQzMTFGRjRCNjUwMDAz
MkIzOSAvKiBXZWJQb3B1cE1lbnUuaCAqLzsgfTsKIAkJRDNCOTQ4NDkxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRDNCOTQ4NDUxMUZGNEI2NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVw
TWVudS5oICovOyB9OworCQlERjBDNUYyODI1MkVDQjhFMDBEOTIxREIgLyogV0tEb3dubG9hZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREYwQzVGMjQy
NTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJBMjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rv
d25sb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IERGMEM1RjI2MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkRGVsZWdhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCURGMEM1RjJC
MjUyRUQ0NDAwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAv
KiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLzsgfTsKIAkJREY0NjJFMEYyM0YyMkY1NTAwRUZGMzVG
IC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREY0NjJFMEUyM0YyMkY1MzAwRUZGMzVGIC8qIFdLSFRUUENv
b2tpZVN0b3JlUHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCURGNDYyRTEyMjNGMzM4QkUwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFBy
aXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERG
NDYyRTExMjNGMzM4QUQwMEVGRjM1RiAvKiBXS0NvbnRlbnRXb3JsZFByaXZhdGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlERjg0Q0VFNDI0OUFB
MjREMDA5MDk2RjYgLyogV0tQREZIVURWaWV3Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gREY4NENFRTIyNDlBQTIxRjAwOTA5NkY2IC8qIFdLUERGSFVE
Vmlldy5tbSAqLzsgfTsKQEAgLTI1MTEsNyArMjUxNSw2IEBACiAJCTFBNDNFODI4MTg4RjNDREMw
MDlFNEQzMCAvKiBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDQ1QjlFMTg0RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQTQ0NUJBMDE4NEQ1RkMxMDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRIaXN0b3J5Q2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNDQ1QkEyMTg0RDVGQ0YwMDRC
MzQxNCAvKiBXS0NvbnRleHREb3dubG9hZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0NvbnRleHREb3dubG9hZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTQ0NUJBNDE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlv
bkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRleHRDb25u
ZWN0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkMxMUE5
NjVBM0MwMDhCNERGRSAvKiBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNDgzMkM5MUE5QkM0NjUwMDhCNERGRSAvKiBXS1dl
YnNpdGVEYXRhUmVjb3JkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV0tXZWJzaXRlRGF0YVJlY29yZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTI3MDcsOCArMjcxMCw4IEBACiAJCTFBQjdENUU5MTI4OEI4QzAwMENGRDA4QyAvKiBEb3dubG9h
ZFByb3h5Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvd25sb2FkUHJveHku
bWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjdENjE3MTI4OEI5
RDkwMENGRDA4QyAvKiBEb3dubG9hZFByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERvd25sb2FkUHJveHlNZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9Eb3dubG9hZFByb3h5TWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMUFCN0Q2
MTgxMjg4QjlEOTAwQ0ZEMDhDIC8qIERvd25sb2FkUHJveHlNZXNzYWdlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBEb3dubG9hZFByb3h5TWVzc2FnZXMuaDsgcGF0aCA9IERl
cml2ZWRTb3VyY2VzL1dlYktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBX
S0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRG93bmxvYWQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhD
IC8qIFdLRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tEb3dubG9hZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBQjdENzhCMTI4
OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkUmVmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLRG93bmxvYWRSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tEb3dubG9hZFJlZi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVCMTg0MDA4MDkwMEU5QUU2OSAvKiBXS1BhZ2VMb2Fk
ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9hZGVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjhBMUVEMTg0MDBBQ0Iw
MEU5QUU2OSAvKiBXS1BhZ2VQb2xpY3lDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tQYWdlUG9saWN5Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQjhBMUVGMTg0MDBCMDAwMEU5QUU2OSAvKiBXS1BhZ2VGb3JtQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUZvcm1DbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQyMjgsNiArNDIzMSw4IEBACiAJCTVDMkIxQUYzMjIzQUI3
MjgwMEI5MUNGNyAvKiBEb3dubG9hZE1vbml0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRG93bmxvYWRNb25pdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMyQjFBRjQyMjNBQjcyODAwQjkxQ0Y3IC8qIERvd25sb2FkTW9uaXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb3dubG9hZE1vbml0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMyQjFBRjUyMjNDMUZEMjAwQjkxQ0Y3IC8qIERvd25s
b2FkUHJveHlNYXBDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IERvd25sb2FkUHJveHlNYXBDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUMyRDU3NDcyNTdGRkExMjAwNjc5QTcyIC8qIFdLQ29udGV4dERvd25sb2FkQ2xpZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQ29udGV4dERvd25sb2FkQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDMkVCREY5MjU2NDM1MjAwMEQ1NUIw
NSAvKiBXS0Rvd25sb2FkQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdLRG93bmxvYWRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMzNTlD
MEMyMTU0NzMyMTAwOUU3OTQ4IC8qIFdLRGVwcmVjYXRlZC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0RlcHJlY2F0ZWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUMzQUVBOEUxRkUxRjFERjAwMjMxOEQzIC8qIFdlYnNpdGVQb2xpY2llc0RhdGEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzRGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNDYwOUUyMjI0MzBFNEMwMDk5NDND
MiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC01NTMxLDYgKzU1MzYsMTAgQEAKIAkJRDNCOTQ4NDMxMUZGNEI2NTAwMDMyQjM5
IC8qIFdlYlBvcHVwTWVudS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQ
b3B1cE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRDNCOTQ4NDQxMUZGNEI2
NTAwMDMyQjM5IC8qIFdlYlNlYXJjaFBvcHVwTWVudS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJTZWFyY2hQb3B1cE1lbnUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlEM0I5NDg0NTExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNoUG9wdXBN
ZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlYXJjaFBvcHVwTWVu
dS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjBDNUYyMzI1MkVDQjhEMDBEOTIx
REIgLyogV0tEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLRG93bmxvYWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURGMEM1RjI0
MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdLRG93bmxvYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREYw
QzVGMjUyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWRE
ZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0Rvd25sb2FkRGVs
ZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY0NjJFMEUyM0YyMkY1MzAw
RUZGMzVGIC8qIFdLSFRUUENvb2tpZVN0b3JlUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0hUVFBDb29raWVTdG9yZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJREY0NjJFMTEyM0YzMzhBRDAwRUZGMzVGIC8qIFdLQ29udGVudFdvcmxk
UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRlbnRXb3Js
ZFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREY1OEM2MzExMzcxQUM1
ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTmF0aXZlV2ViV2hlZWxFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzczMyw2ICs3NzQyLDEwIEBACiAJCQkJNUNFMEMzNjgyMjlGMkQ0QTAwMzY5NUYw
IC8qIFdLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1Q0UwQzM2QjIyOUYyRDRC
MDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLywKIAkJCQk1
Q0UwQzM2QTIyOUYyRDRBMDAzNjk1RjAgLyogV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvUHJpdmF0
ZS5oICovLAorCQkJCURGMEM1RjI0MjUyRUNCOEQwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggKi8s
CisJCQkJREYwQzVGMjMyNTJFQ0I4RDAwRDkyMURCIC8qIFdLRG93bmxvYWQubW0gKi8sCisJCQkJ
REYwQzVGMjYyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oICovLAorCQkJ
CURGMEM1RjI1MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkSW50ZXJuYWwuaCAqLywKIAkJ
CQkxQUY0NTkyRDE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5oICovLAogCQkJCTFBRjQ1OTJD
MTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0Njg4RkQw
MDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKQEAgLTk3MjksNyArOTc0Miw3IEBACiAJ
CQkJMUFFNTJGOTMxOTIwMUY2QjAwQTFGQTM3IC8qIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYu
Y3BwICovLAogCQkJCTFBRTUyRjk0MTkyMDFGNkIwMEExRkEzNyAvKiBXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmLmggKi8sCiAJCQkJMUE0NDVCQTQxODRENUZEQTAwNEIzNDE0IC8qIFdLQ29udGV4
dENvbm5lY3Rpb25DbGllbnQuaCAqLywKLQkJCQkxQTQ0NUJBMjE4NEQ1RkNGMDA0QjM0MTQgLyog
V0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLywKKwkJCQk1QzJENTc0NzI1N0ZGQTEyMDA2NzlB
NzIgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCAqLywKIAkJCQkxQTQ0NUJBMDE4NEQ1RkMx
MDA0QjM0MTQgLyogV0tDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLAogCQkJCTFBNDQ1QjlFMTg0
RDVGQjUwMDRCMzQxNCAvKiBXS0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJ
CUExRUEwMjM1MURBQkZGN0UwMDk2MDIxRiAvKiBXS0NvbnRleHRNZW51TGlzdGVuZXIuY3BwICov
LApAQCAtOTc0MCw4ICs5NzUzLDkgQEAKIAkJCQk1MTJGNThGMTEyQTg4QTU0MDA2Mjk1MzAgLyog
V0tDcmVkZW50aWFsLmNwcCAqLywKIAkJCQk1MTJGNThGMjEyQTg4QTU0MDA2Mjk1MzAgLyogV0tD
cmVkZW50aWFsLmggKi8sCiAJCQkJNTE4QUNGMTAxMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3JlZGVu
dGlhbFR5cGVzLmggKi8sCi0JCQkJMUFCN0Q3OEMxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxv
YWQuY3BwICovLAotCQkJCTFBQjdENzhCMTI4OENEOUEwMENGRDA4QyAvKiBXS0Rvd25sb2FkLmgg
Ki8sCisJCQkJNUMyRUJERjkyNTY0MzUyMDAwRDU1QjA1IC8qIFdLRG93bmxvYWRDbGllbnQuaCAq
LywKKwkJCQkxQUI3RDc4QzEyODhDRDlBMDBDRkQwOEMgLyogV0tEb3dubG9hZFJlZi5jcHAgKi8s
CisJCQkJMUFCN0Q3OEIxMjg4Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCAqLywKIAkJ
CQlCQ0U0Njk1NzEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVyLmNw
cCAqLywKIAkJCQlCQ0U0Njk1ODEyMTRFREY0MDAwQjk4RUIgLyogV0tGb3JtU3VibWlzc2lvbkxp
c3RlbmVyLmggKi8sCiAJCQkJQkNEMDEzOTgxMTBGQTQyMDAwM0I4QTY3IC8qIFdLRnJhbWUuY3Bw
ICovLApAQCAtMTIxMTMsNyArMTIxMjcsNyBAQAogCQkJCUJDQjlFMjRCMTEyMEUxNUMwMEExMzdF
MCAvKiBXS0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTUyRjk4MTkyMDI2NzIwMEEx
RkEzNyAvKiBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QTQ0NUJBNTE4NEQ1RkRBMDA0QjM0MTQgLyogV0tDb250ZXh0Q29ubmVjdGlvbkNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJMUE0NDVCQTMxODRENUZDRjAwNEIzNDE0IC8qIFdLQ29udGV4dERv
d25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJENTc0ODI1N0ZGQTRCMDA2NzlB
NzIgLyogV0tDb250ZXh0RG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNDQ1
QkExMTg0RDVGQzEwMDRCMzQxNCAvKiBXS0NvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTQ0NUI5RjE4NEQ1RkI1MDA0QjM0MTQgLyogV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNzk1RDcwMjI5RjM3M0YwMDNGRjFD
NCAvKiBXS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMTIxNDYs
OCArMTIxNjAsMTIgQEAKIAkJCQlCQzVEMjRDNTE2Q0Q3MDg4MDA3RDU0NjEgLyogV0tET01SYW5n
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5M0VCRUFCMTYyN0Q5QzkwMDVGODlGMSAv
KiBXS0RPTVRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDIxMTYyNjMzMDgwMDcwNTRG
NSAvKiBXS0RPTVRleHRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCN0Q3OEQxMjg4
Q0Q5QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCURGMEM1RjI4
MjUyRUNCOEUwMEQ5MjFEQiAvKiBXS0Rvd25sb2FkLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzJF
QkRGQTI1NjQzODBCMDBENTVCMDUgLyogV0tEb3dubG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJREYwQzVGMkEyNTJFQ0I4RTAwRDkyMURCIC8qIFdLRG93bmxvYWREZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJREYwQzVGMkIyNTJFRDQ0MDAwRDkyMURCIC8qIFdLRG93bmxvYWRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjM3MjgxQTIyMUFEQzc0NDAwOUUwREU2IC8q
IFdLRG93bmxvYWRQcm9ncmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUFCN0Q3OEQxMjg4Q0Q5
QTAwQ0ZEMDhDIC8qIFdLRG93bmxvYWRSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0MDlCQTE4
MUU2RTY0QkMwMDlEQTI4RSAvKiBXS0RyYWdEZXN0aW5hdGlvbkFjdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkVDRjY2Q0UyMUQ2Qjc3RTAwOUU1QzNGIC8qIFdLRWRpdENvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBRjQ1OTJGMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA1Y2IxZWZkMzU1ZGZlZmVmMmYyMzAxNGFlYTI3MGZlOThjZGEwNzgyLi4yNjg0NGJi
MmM1MzdkNWVlZGY2MmY3ZjQ2ZDYxNzk4MjJjZDdjNGEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMjAtMTItMDkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJ
bnRyb2R1Y2UgbmV3IGRvd25sb2FkIFNQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlk
c29uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVz
dGluYXRpb25DcmFzaC5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVjaWRlRGVz
dGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
bmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2V0UGFnZVBvbGljeUNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0Q29udGV4dERvd25sb2Fk
Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9t
YWMvQ29udGV4dE1lbnVEb3dubG9hZC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRlY2lk
ZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhT
dWdnZXN0ZWRGaWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OmNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250
YWluaW5nU2xhc2hlcyk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Db250ZW50RmlsdGVyaW5nLm1tOgorICAgICAgICAoLVtCZWNvbWVEb3dubG9hZERlbGVnYXRl
IHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tOgorICAgICAgICAoLVtDb252ZXJ0UmVzcG9uc2VUb0Rvd25sb2FkTmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJvbU1l
bW9yeUNhY2hlRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndp
dGhFcnJvcjpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkTmF2aWdhdGlvblJlc3BvbnNlRnJv
bU1lbW9yeUNhY2hlRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgIChkb3dubG9hZFRlc3RTZXJ2ZXIpOgorICAgICAgICAoY2hl
Y2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyk6CisgICAgICAgIChzaW1wbGVEb3dubG9hZFRlc3RT
ZXJ2ZXIpOgorICAgICAgICAoY2hlY2tGaWxlQ29udGVudHMpOgorICAgICAgICAodGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KToKKyAgICAgICAgKC1bRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUg
d2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6ZGVjaXNpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bXV0YXRlRmlsZSk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFByb2dyZXNzLm1tOgorICAgICAg
ICAoLVtEb3dubG9hZFByb2dyZXNzVGVzdFJ1bm5lciB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbToKKyAgICAg
ICAgKC1bUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9RdWlja0xvb2subW06CisgICAgICAgIChURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbToKKyAgICAgICAg
KC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246bmV3UmVxdWVzdDpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3REb3dubG9h
ZERlbGVnYXRlIGRvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFJlc3BvbnNlOnN1Z2dlc3Rl
ZEZpbGVuYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWRE
ZWxlZ2F0ZSBkb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRl
c0V4cGVjdGVkVG9Xcml0ZTpdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93
bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVy
Ol0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBkb3dubG9hZERpZEZpbmlzaDpd
KToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUgZG93bmxvYWQ6ZGlkRmFpbFdpdGhF
cnJvcjpyZXN1bWVEYXRhOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSB3ZWJW
aWV3Om5hdmlnYXRpb25SZXNwb25zZTpkaWRCZWNvbWVEb3dubG9hZDpdKToKKyAgICAgICAgKC1b
VGVzdERvd25sb2FkRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0
ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdKToKKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVs
ZWdhdGUgdGFrZUNhbGxiYWNrUmVjb3JkXSk6CisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVn
YXRlIF9kb3dubG9hZERpZFN0YXJ0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxv
YWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNl
aXZlUmVzcG9uc2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRl
IF9kb3dubG9hZDpkaWRXcml0ZURhdGE6dG90YWxCeXRlc1dyaXR0ZW46dG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bVGVzdERvd25sb2FkRGVsZWdhdGUg
X2Rvd25sb2FkOmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWREaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1Rlc3REb3dubG9hZERl
bGVnYXRlIF9kb3dubG9hZDpkaWRGYWlsV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAo
LVtUZXN0RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRDYW5jZWw6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1Rlc3REb3dubG9hZERlbGVnYXRlIF9kb3dubG9hZDpkaWRDcmVhdGVEZXN0aW5hdGlvbjpd
KTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RMZWdhY3lEb3du
bG9hZERlbGVnYXRlLmg6IENvcGllZCBmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dERvd25sb2FkRGVsZWdhdGUuaC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RM
ZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1tLgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93
bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWREaWRTdGFydDpdKToKKyAgICAgICAgKC1bVGVzdExlZ2Fj
eURvd25sb2FkRGVsZWdhdGUgX2Rvd25sb2FkOmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJM
Ol0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlk
UmVjZWl2ZVJlc3BvbnNlOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0
ZSBfZG93bmxvYWQ6ZGlkV3JpdGVEYXRhOnRvdGFsQnl0ZXNXcml0dGVuOnRvdGFsQnl0ZXNFeHBl
Y3RlZFRvV3JpdGU6XSk6CisgICAgICAgICgtW1Rlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIF9k
b3dubG9hZDpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTpjb21wbGV0aW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUgX2Rvd25s
b2FkRGlkRmluaXNoOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZSBf
ZG93bmxvYWQ6ZGlkRmFpbFdpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bVGVzdExlZ2FjeURvd25s
b2FkRGVsZWdhdGUgX2Rvd25sb2FkRGlkQ2FuY2VsOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TGVnYWN5RG93bmxvYWRE
ZWxlZ2F0ZSBfZG93bmxvYWQ6ZGlkQ3JlYXRlRGVzdGluYXRpb246XSk6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250
cm9sbGVyOjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQpOgorICAgICAgICAoV1RS
OjpUZXN0Q29udHJvbGxlcjo6bmF2aWdhdGlvbkFjdGlvbkRpZEJlY29tZURvd25sb2FkKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVXZWJWaWV3V2l0aE9wdGlvbnMp
OgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3Vn
Z2VzdGVkRmlsZW5hbWUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRGaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWls
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0VG9VUkwpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWRE
aWRTdGFydCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmRvd25sb2Fk
RGlkQ2FuY2VsKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmg6CisKIDIwMjAtMTItMDkgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5j
b20+CiAKICAgICAgICAgUENNOiBNYWtlIEpTT04ga2V5IG5hbWVzIHVzZSB1bmRlcnNjb3JlcyBh
Y2NvcmRpbmcgdG8gdGhlIFczQyBjb252ZXJzYXRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBkOTdmMjY2ZTQwNWVjZmFhNDE0MTk0NTk5MDg4YWQ1NDBiZDRkMDllLi5m
NWE5ZDIxNzY1ZjY4YWYyMmZmYjk0ZTM4NTIzZDdkNjQ5ZTQ1MWZjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNyw2ICsyNyw3IEBAIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b25FeHRyYXMubW0KIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rlc3RD
b2NvYS5tbQogY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0KK2NvY29hL1Rlc3RMZWdhY3lE
b3dubG9hZERlbGVnYXRlLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCiBjb2Nv
YS9UZXN0UHJvdG9jb2wubW0KIGNvY29hL1Rlc3RVSURlbGVnYXRlLm1tCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDgwNjdkNDU4MzFiMmQzMGUzNTVkNDAyNzUxMTViZGY3MDFiMTkzOGYuLmZk
ODE4ZTliNzYzODIwYWE2MjUxOTVkNmE0MDQxZDc1NTFlNGFmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMjI1LDggKzIyMjUsOCBAQAogCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIg
LyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2RTI3QTYyMjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9u
aWNhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBV
UkxDYW5vbmljYWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzcx
NDg5NDIxMjNBNDA3MDBGREUzQzUgLyogV0tXZWJzaXRlRGF0YXN0b3JlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJzaXRlRGF0YXN0b3JlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzcyRThDRDI0NEZGQ0UzMDAzODFFQjcgLyogVGVz
dERvd25sb2FkRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVGVz
dERvd25sb2FkRGVsZWdhdGUuaDsgcGF0aCA9IGNvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNzJFOENFMjQ0RkZDRTQwMDM4MUVCNyAv
KiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVnYXRlLm1tOyBwYXRoID0gY29jb2EvVGVzdERvd25s
b2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzJFOENEMjQ0
RkZDRTMwMDM4MUVCNyAvKiBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBUZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5oOyBwYXRo
ID0gY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9h
ZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0TGVnYWN5RG93bmxv
YWREZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3M0E4MUEyMzIz
MDU5ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVSZXRhaW5QYWdlUGx1
Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQnVuZGxlUmV0
YWluUGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3OTY0MEYx
RUIwMjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTI4MTEsNiArMjgxMSw4IEBACiAJCUQzQkU1RTM0MUU0Q0U4NUUwMEZENTYz
QSAvKiBXS1dlYlZpZXdHZXRDb250ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdLV2ViVmlld0dldENvbnRlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlEQzY5QUE2MjFDRjc3QzY1MDBDNjI3MkYgLyogU2NvcGVkTGFtYmRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZExhbWJkYS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURGNEIyNzM4MjFBNDc3MjcwMDlCRDFDQSAvKiBX
S05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0NkYyNTM0RTEyMDAwOEY2M0ND
IC8qIFRlc3REb3dubG9hZERlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gVGVzdERv
d25sb2FkRGVsZWdhdGUubW07IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY2QkM0NzAyNTM0RTEyMDAwOEY2M0NDIC8q
IFRlc3REb3dubG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFRlc3REb3dubG9hZERlbGVn
YXRlLmg7IHBhdGggPSBjb2NvYS9UZXN0RG93bmxvYWREZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlERkI4RkYzMTI0OTJGNTFBMDBGMDBCMEQgLyogUHJlY29ubmVjdC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByZWNvbm5lY3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMjIwRDlGMTU1QjI1NDgwMDEzRTJGQyAv
KiBNZW1vcnlDYWNoZURpc2FibGVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IE1lbW9yeUNh
Y2hlRGlzYWJsZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0zMTMyLDggKzMxMzQsMTAgQEAKIAkJCQlDRTY0MENBNjIzNzBBNEYz
MDBDNUNBQTQgLyogVGVzdENvY29hLm1tICovLAogCQkJCTVDRTc1OTQ4MjJBODgzQTUwMEMxMjQw
OSAvKiBUZXN0Q29udGV4dE1lbnVEcml2ZXIuaCAqLywKIAkJCQk1Q0U3NTk0NzIyQTg4M0E1MDBD
MTI0MDkgLyogVGVzdENvbnRleHRNZW51RHJpdmVyLm1tICovLAotCQkJCTVDNzJFOENEMjQ0RkZD
RTMwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5oICovLAotCQkJCTVDNzJFOENFMjQ0
RkZDRTQwMDM4MUVCNyAvKiBUZXN0RG93bmxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJCQlERjZCQzQ3
MDI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUuaCAqLywKKwkJCQlERjZC
QzQ2RjI1MzRFMTIwMDA4RjYzQ0MgLyogVGVzdERvd25sb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJ
NUM3MkU4Q0QyNDRGRkNFMzAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLmgg
Ki8sCisJCQkJNUM3MkU4Q0UyNDRGRkNFNDAwMzgxRUI3IC8qIFRlc3RMZWdhY3lEb3dubG9hZERl
bGVnYXRlLm1tICovLAogCQkJCTJEMUMwNEE1MUQ3NjI5OEIwMDBBNjgxNiAvKiBUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmggKi8sCiAJCQkJMkQxQzA0QTYxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3RO
YXZpZ2F0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkJNTE2MjgxMjMyMzI1QzE3QTAwQkI3RTQyIC8q
IFRlc3RQREZEb2N1bWVudC5oICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNwcCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0Rvd25sb2FkRGVjaWRlRGVzdGluYXRpb25DcmFzaC5j
cHAKaW5kZXggY2E2OTdhYzM1YTlhYTUyMGE1YjE5ZjVjN2I3NDNjMTdjODQ0YzUzOC4uYzQ1NzU4
NjUwNWRiM2U0ZGJhYmRiMDcxMmEwZTY2M2JkYjI5Yzc3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9Eb3dubG9hZERlY2lkZURl
c3RpbmF0aW9uQ3Jhc2guY3BwCkBAIC0yOSw0MiArMjksNDEgQEAKIAogI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCi0jaW5jbHVkZSA8
V2ViS2l0L1dLRG93bmxvYWQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIHN0YXRpYyBib29sIGRpZERlY2lkZURlc3Rp
bmF0aW9uOwogCi1zdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdL
UGFnZVJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYg
bGlzdGVuZXIsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCitzdGF0aWMgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZXNwb25zZVJl
ZiwgV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIGxpc3RlbmVyLCBXS1R5cGVSZWYsIGNvbnN0IHZv
aWQqKQogewogICAgIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKGxpc3RlbmVyKTsKIH0K
IAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVu
YW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgV0tTdHJpbmdSZWYsIGJv
b2wqLCBjb25zdCB2b2lkKikKK3N0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNl
UmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCopCiB7CiAgICAgZGlkRGVjaWRlRGVzdGluYXRp
b24gPSB0cnVlOwotICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxv
YWRDYW5jZWwoZG93bmxvYWQsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIHJldHVybiBVdGlsOjp0
b1dLKCIvdG1wL1dlYktpdEFQSVRlc3QvRG93bmxvYWREZWNpZGVEZXN0aW5hdGlvbkNyYXNoIiku
bGVha1JlZigpOwogfQogCi1zdGF0aWMgdm9pZCBzZXRDb250ZXh0RG93bmxvYWRDbGllbnQoV0tD
b250ZXh0UmVmIGNvbnRleHQpCitzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNv
bWVEb3dubG9hZChXS1BhZ2VSZWYgcGFnZSwgV0tOYXZpZ2F0aW9uUmVzcG9uc2VSZWYgbmF2aWdh
dGlvblJlc3BvbnNlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQogewotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93
bmxvYWRDbGllbnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGll
bnQpKTsKLQogICAgIGNsaWVudC5iYXNlLnZlcnNpb24gPSAwOwotICAgIGNsaWVudC5kZWNpZGVE
ZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSA9IGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lOwotCi0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4
dCwgJmNsaWVudC5iYXNlKTsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9u
c2UgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25s
b2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCBz
ZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZiBwYWdlKQogewotICAgIFdLUGFnZU5hdmlnYXRp
b25DbGllbnRWMCBuYXZpZ2F0aW9uQ2xpZW50OworICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRW
MyBuYXZpZ2F0aW9uQ2xpZW50OwogICAgIG1lbXNldCgmbmF2aWdhdGlvbkNsaWVudCwgMCwgc2l6
ZW9mKG5hdmlnYXRpb25DbGllbnQpKTsKIAotICAgIG5hdmlnYXRpb25DbGllbnQuYmFzZS52ZXJz
aW9uID0gMDsKLSAgICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24gPSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOworICAgIG5hdmlnYXRpb25D
bGllbnQuYmFzZS52ZXJzaW9uID0gMzsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50LmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25SZXNwb25zZSA9IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZTsKKyAgICBuYXZpZ2F0aW9uQ2xpZW50Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25s
b2FkID0gbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQ7CiAKICAgICBXS1BhZ2VT
ZXRQYWdlTmF2aWdhdGlvbkNsaWVudChwYWdlLCAmbmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIH0K
QEAgLTcyLDcgKzcxLDYgQEAgc3RhdGljIHZvaWQgc2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VS
ZWYgcGFnZSkKIFRFU1QoV2ViS2l0LCBEb3dubG9hZERlY2lkZURlc3RpbmF0aW9uQ3Jhc2gpCiB7
CiAgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhXS0NvbnRl
eHRDcmVhdGVXaXRoQ29uZmlndXJhdGlvbihudWxscHRyKSk7Ci0gICAgc2V0Q29udGV4dERvd25s
b2FkQ2xpZW50KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSk7CiAgICAgc2V0UGFnZVBvbGljeUNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ29udGV4
dE1lbnVEb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9D
b250ZXh0TWVudURvd25sb2FkLm1tCmluZGV4IDE1OTMwZTU0NmRiYWEzZGE5ZDVlZDIxNWI2Yzhi
OWNjNjEwOWFmMGYuLjc1NTZmNjEyZDVlM2I5YmE0ZjRjZDZmNTI2Yzk1OGMxN2YzZjFmMjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9Db250ZXh0TWVu
dURvd25sb2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9D
b250ZXh0TWVudURvd25sb2FkLm1tCkBAIC0yOCw3ICsyOCw4IEBACiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJL
aXQvV0tDb250ZXh0TWVudUl0ZW0uaD4KLSNpbXBvcnQgPFdlYktpdC9XS0Rvd25sb2FkLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tEb3dubG9hZENsaWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRG93
bmxvYWRSZWYuaD4KICNpbXBvcnQgPFdlYktpdC9XS1BhZ2UuaD4KICNpbXBvcnQgPFdlYktpdC9X
S1BhZ2VDb250ZXh0TWVudUNsaWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg+CkBAIC02MiwxMiArNjMsMTIgQEAgc3RhdGljIHZvaWQgZ2V0Q29udGV4dE1lbnVG
cm9tUHJvcG9zZWRNZW51KFdLUGFnZVJlZiBwYWdlLCBXS0FycmF5UmVmIHByb3Bvc2VkTWUKICAg
ICB9CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLU3RyaW5n
UmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBib29sKiwgY29uc3Qgdm9pZCopCitzdGF0aWMgV0tTdHJp
bmdSZWYgZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoV0tEb3dubG9hZFJl
ZiBkb3dubG9hZCwgV0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5h
bWUsIGNvbnN0IHZvaWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVu
YW1lIGlzIHByb3ZpZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0
cmlidXRlIGluIHRoZSBIVE1MLgogICAgIEVYUEVDVF9XS19TVFJFUSgiZG93bmxvYWRBdHRyaWJ1
dGVWYWx1ZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAKLSAgICBXS0Rvd25sb2FkQ2FuY2Vs
KGRvd25sb2FkKTsKKyAgICBXS0Rvd25sb2FkQ2FuY2VsKGRvd25sb2FkLCBudWxscHRyLCBudWxs
cHRyKTsKICAgICBkaWREZWNpZGVEb3dubG9hZERlc3RpbmF0aW9uID0gdHJ1ZTsKIAogICAgIEVY
UEVDVF9FUShleHBlY3RlZE9yaWdpbmF0aW5nUGFnZSwgV0tEb3dubG9hZEdldE9yaWdpbmF0aW5n
UGFnZShkb3dubG9hZCkpOwpAQCAtNzYsMjUgKzc3LDI5IEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93
bmxvCiAgICAgcmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9Db250ZXh0TWVu
dURvd25sb2FkIikubGVha1JlZigpOwogfQogCitzdGF0aWMgdm9pZCBjb250ZXh0TWVudURpZENy
ZWF0ZURvd25sb2FkKFdLUGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdLRG93bmxvYWRDbGllbnRWMCBjbGllbnQ7Cisg
ICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsKKyAgICBjbGllbnQuYmFzZS52
ZXJzaW9uID0gMDsKKyAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRpb25XaXRoUmVzcG9uc2UgPSBk
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZTsKKyAgICBXS0Rvd25sb2FkU2V0
Q2xpZW50KGRvd25sb2FkLCAmY2xpZW50LmJhc2UpOworfQorCiAvLyBDaGVja3MgdGhhdCB0aGUg
SFRNTCBkb3dubG9hZCBhdHRyaWJ1dGUgaXMgdXNlZCBhcyBzdWdnZXN0ZWQgZmlsZW5hbWUgd2hl
biBzZWxlY3RpbmcKIC8vIHRoZSAiRG93bmxvYWQgTGlua2VkIEZpbGUiIGl0ZW0gaW4gdGhlIGNv
bnRleHQgbWVudS4KIFRFU1QoV2ViS2l0LCBDb250ZXh0TWVudURvd25sb2FkSFRNTERvd25sb2Fk
QXR0cmlidXRlKQogewogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAotICAgIFdL
Q29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OwotICAgIG1lbXNldCgmY2xpZW50LCAwLCBz
aXplb2YoY2xpZW50KSk7Ci0gICAgY2xpZW50LmJhc2UudmVyc2lvbiA9IDA7Ci0gICAgY2xpZW50
LmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWU7Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQo
Y29udGV4dC5nZXQoKSwgJmNsaWVudC5iYXNlKTsKLQogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdy
b3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9wdFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZp
ZXIoVXRpbDo6dG9XSygiTXlHcm91cCIpLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdl
YlZpZXcoY29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAotICAgIFdLUGFnZU5hdmln
YXRpb25DbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYz
IGxvYWRlckNsaWVudDsKICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRl
ckNsaWVudCkpOwotICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRl
ckNsaWVudC5iYXNlLnZlcnNpb24gPSAzOwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hOYXZp
Z2F0aW9uID0gZGlkRmluaXNoTmF2aWdhdGlvbjsKKyAgICBsb2FkZXJDbGllbnQuY29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZCA9IGNvbnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWQ7CiAgICAg
V0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQod2ViVmlldy5wYWdlKCksICZsb2FkZXJDbGll
bnQuYmFzZSk7CiAKICAgICBXS1BhZ2VDb250ZXh0TWVudUNsaWVudFYzIGNvbnRleHRNZW51Q2xp
ZW50OwpAQCAtMTE0LDM0ICsxMTksMzggQEAgVEVTVChXZWJLaXQsIENvbnRleHRNZW51RG93bmxv
YWRIVE1MRG93bmxvYWRBdHRyaWJ1dGUpCiAgICAgVXRpbDo6cnVuKCZkaWREZWNpZGVEb3dubG9h
ZERlc3RpbmF0aW9uKTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tDb250ZXh0UmVmLCBXS0Rv
d25sb2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgYm9vbCos
IGNvbnN0IHZvaWQqKQorc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1
Z2dlc3RlZEZpbGVuYW1lQ29udGFpbmluZ1NsYXNoZXMoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tVUkxSZXNwb25zZVJlZiwgV0tTdHJpbmdSZWYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IHZv
aWQqKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGUgc3VnZ2VzdGVkIGZpbGVuYW1lIGlzIHByb3Zp
ZGVkIGFuZCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgZG93bmxvYWQgYXR0cmlidXRlIGluIHRo
ZSBIVE1MLCBhZnRlciBzYW5pdGl6YXRpb24uCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXN0MV90
ZXN0Ml9kb3dubG9hZEF0dHJpYnV0ZVZhbHVlLnR4dCIsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIAot
ICAgIFdLRG93bmxvYWRDYW5jZWwoZG93bmxvYWQpOworICAgIFdLRG93bmxvYWRDYW5jZWwoZG93
bmxvYWQsIG51bGxwdHIsIG51bGxwdHIpOwogICAgIGRpZERlY2lkZURvd25sb2FkRGVzdGluYXRp
b24gPSB0cnVlOwogCiAgICAgcmV0dXJuIFV0aWw6OnRvV0soIi90bXAvV2ViS2l0QVBJVGVzdC9D
b250ZXh0TWVudURvd25sb2FkIikubGVha1JlZigpOwogfQogCi1URVNUKFdlYktpdCwgQ29udGV4
dE1lbnVEb3dubG9hZEhUTUxEb3dubG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQorc3RhdGljIHZv
aWQgY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZFdpdGhTdWdnZXN0ZWRGaWxlbmFtZUNvbnRh
aW5pbmdTbGFzaGVzKFdLUGFnZVJlZiBwYWdlLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsK
LQotICAgIFdLQ29udGV4dERvd25sb2FkQ2xpZW50VjAgY2xpZW50OworICAgIFdLRG93bmxvYWRD
bGllbnRWMCBjbGllbnQ7CiAgICAgbWVtc2V0KCZjbGllbnQsIDAsIHNpemVvZihjbGllbnQpKTsK
ICAgICBjbGllbnQuYmFzZS52ZXJzaW9uID0gMDsKLSAgICBjbGllbnQuZGVjaWRlRGVzdGluYXRp
b25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUgPSBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRG
aWxlbmFtZUNvbnRhaW5pbmdTbGFzaGVzOwotICAgIFdLQ29udGV4dFNldERvd25sb2FkQ2xpZW50
KGNvbnRleHQuZ2V0KCksICZjbGllbnQuYmFzZSk7CisgICAgY2xpZW50LmRlY2lkZURlc3RpbmF0
aW9uV2l0aFJlc3BvbnNlID0gZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWVD
b250YWluaW5nU2xhc2hlczsKKyAgICBXS0Rvd25sb2FkU2V0Q2xpZW50KGRvd25sb2FkLCAmY2xp
ZW50LmJhc2UpOworfQorCitURVNUKFdlYktpdCwgQ29udGV4dE1lbnVEb3dubG9hZEhUTUxEb3du
bG9hZEF0dHJpYnV0ZVdpdGhTbGFzaGVzKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJl
Zj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRs
ZSgpKTsKIAogICAgIFdLUmV0YWluUHRyPFdLUGFnZUdyb3VwUmVmPiBwYWdlR3JvdXAgPSBhZG9w
dFdLKFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoVXRpbDo6dG9XSygiTXlHcm91cCIp
LmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSwgcGFn
ZUdyb3VwLmdldCgpKTsKIAotICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRWMCBsb2FkZXJDbGll
bnQ7CisgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYzIGxvYWRlckNsaWVudDsKICAgICBtZW1z
ZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwotICAgIGxvYWRlckNs
aWVudC5iYXNlLnZlcnNpb24gPSAwOworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNpb24gPSAz
OwogICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gZGlkRmluaXNoTmF2aWdh
dGlvbjsKKyAgICBsb2FkZXJDbGllbnQuY29udGV4dE1lbnVEaWRDcmVhdGVEb3dubG9hZCA9IGNv
bnRleHRNZW51RGlkQ3JlYXRlRG93bmxvYWRXaXRoU3VnZ2VzdGVkRmlsZW5hbWVDb250YWluaW5n
U2xhc2hlczsKICAgICBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudCh3ZWJWaWV3LnBhZ2Uo
KSwgJmxvYWRlckNsaWVudC5iYXNlKTsKIAogICAgIFdLUGFnZUNvbnRleHRNZW51Q2xpZW50VjMg
Y29udGV4dE1lbnVDbGllbnQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0NvbnRlbnRGaWx0ZXJpbmcubW0KaW5kZXggNDMzOTEzMTEwMWYyY2Rk
OTUwOTg2N2VmZTk0NGY2ZTc3ZWYzOWVkYi4uNTAxZjk5N2RjZDgyOThjMWU3ZTk1NTYxZDVlODk3
NTBmNTFkMzYwYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db250ZW50RmlsdGVyaW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvQ29udGVudEZpbHRlcmluZy5tbQpAQCAtMTUxLDcgKzE1MSw3IEBAIFRFU1Qo
Q29udGVudEZpbHRlcmluZywgVVJMQWZ0ZXJTZXJ2ZXJSZWRpcmVjdCkKIAogLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVy
CiB7Ci0gICAgZGVjaXNpb25IYW5kbGVyKF9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lEb3dubG9hZCk7CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQppbmRleCAzYWVmZWI4ZWMzMzVlMTAyMzJmZjhlNWM4
MGM2Zjc5YmQzNWVmYzA4Li5kOTYxYWE4OGQwMGRjNjYxZTU2ZWY2MjA4ZmVkZDU4OWI2MGZhM2Nl
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25s
b2FkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0KQEAgLTMzLDExICszMywxNSBAQAogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0RG93bmxvYWREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVz
dExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaCIKICNpbXBvcnQgIlRlc3RQcm90b2NvbC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VSTFJlc3BvbnNlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tEb3dubG9hZC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CkBAIC0xNzQsNyArMTc4LDcgQEAgVEVTVChfV0tE
b3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0KQogQGltcGxlbWVudGF0aW9uIENvbnZlcnRSZXNwb25z
ZVRvRG93bmxvYWROYXZpZ2F0aW9uRGVsZWdhdGUKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlv
blJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgogewotICAgIGRlY2lz
aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7Cisg
ICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWQpOwog
fQogQGVuZAogCkBAIC05NzcsNyArOTgxLDcgQEAgVEVTVChfV0tEb3dubG9hZCwgRG93bmxvYWRN
b25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogICAgIEVYUEVDVF9GQUxTRShfZGlkRmluaXNoTmF2
aWdhdGlvbik7CiAgICAgRVhQRUNUX1dLX1NUUkVRKF9XS0xlZ2FjeUVycm9yRG9tYWluLCBlcnJv
ci5kb21haW4pOwogICAgIF9kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gWUVTOwotICAg
IGlmIChfcmVzcG9uc2VQb2xpY3kgIT0gX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21l
RG93bmxvYWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCisgICAgaWYgKF9yZXNwb25zZVBvbGljeSAh
PSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkIHx8IF9kaWRTdGFydERvd25sb2Fk
KQogICAgICAgICBpc0RvbmUgPSB0cnVlOwogfQogCkBAIC05ODUsNyArOTg5LDcgQEAgVEVTVChf
V0tEb3dubG9hZCwgRG93bmxvYWRNb25pdG9yUmV0dXJuVG9Gb3JlZ3JvdW5kKQogewogICAgIEVY
UEVDVF9GQUxTRShfZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CiAgICAgX2RpZEZpbmlz
aE5hdmlnYXRpb24gPSBZRVM7Ci0gICAgaWYgKF9yZXNwb25zZVBvbGljeSAhPSBfV0tOYXZpZ2F0
aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCB8fCBfZGlkU3RhcnREb3dubG9hZCkKKyAg
ICBpZiAoX3Jlc3BvbnNlUG9saWN5ICE9IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxv
YWQgfHwgX2RpZFN0YXJ0RG93bmxvYWQpCiAgICAgICAgIGlzRG9uZSA9IHRydWU7CiB9CiAKQEAg
LTEwMjQsNyArMTAyOCw3IEBAIFRFU1QoV2ViS2l0LCBEb3dubG9hZE5hdmlnYXRpb25SZXNwb25z
ZUZyb21NZW1vcnlDYWNoZSkKICAgICBFWFBFQ1RfV0tfU1RSRVEoZmlyc3RVUkwuYWJzb2x1dGVT
dHJpbmcsIFt3ZWJWaWV3IFVSTF0uYWJzb2x1dGVTdHJpbmcpOwogCiAgICAgTlNVUkwgKnNlY29u
ZFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2J1bmRsZS1maWxlL3NpbXBsZTIu
aHRtbCJdOwotICAgIFtkZWxlZ2F0ZSBzZXRSZXNwb25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07CisgICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9s
aWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRdOwogICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMXV07CiAgICAg
aXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpA
QCAtMTA1MSw3ICsxMDU1LDcgQEAgVEVTVChXZWJLaXQsIERvd25sb2FkTmF2aWdhdGlvblJlc3Bv
bnNlRnJvbU1lbW9yeUNhY2hlKQogICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSBkaWRGaW5pc2hO
YXZpZ2F0aW9uXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKGZpcnN0VVJMLmFic29sdXRlU3RyaW5n
LCBbd2ViVmlldyBVUkxdLmFic29sdXRlU3RyaW5nKTsKIAotICAgIFtkZWxlZ2F0ZSBzZXRSZXNw
b25zZVBvbGljeTpfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZF07Cisg
ICAgW2RlbGVnYXRlIHNldFJlc3BvbnNlUG9saWN5OldLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
RG93bmxvYWRdOwogICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6c2Vjb25kVVJMXV07CiAgICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwpAQCAtMTE4OSwyNCArMTE5MywzMCBAQCBTdHJpbmcg
bG9uZ1N0cmluZyhMQ2hhciBjKQogICAgIHJldHVybiBTdHJpbmcodmVjdG9yLmRhdGEoKSwgbGVu
Z3RoKTsKIH0KIAotVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQorZW51bSBjbGFzcyBJbmNsdWRl
RVRhZyA6IGJvb2wgeyBObywgWWVzIH07CitlbnVtIGNsYXNzIFRlcm1pbmF0ZUFmdGVyRmlyc3RS
ZXBseSA6IGJvb2wgeyBObywgWWVzIH07CisKK3N0YXRpYyBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyIGRvd25sb2FkVGVzdFNlcnZlcihJbmNsdWRlRVRhZyBpbmNsdWRlRVRhZyA9IEluY2x1ZGVF
VGFnOjpZZXMsIEZ1bmN0aW9uPHZvaWQoVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbik+JiYgdGVy
bWluYXRvciA9IG51bGxwdHIpCiB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEk7
Ci0gICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDBdKENvbm5lY3Rpb24g
Y29ubmVjdGlvbikgbXV0YWJsZSB7CisgICAgcmV0dXJuIHsgW2luY2x1ZGVFVGFnLCB0ZXJtaW5h
dG9yID0gV1RGTW92ZSh0ZXJtaW5hdG9yKSwgY29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktp
dEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgc3dpdGNoICgr
K2Nvbm5lY3Rpb25Db3VudCkgewogICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBjb25uZWN0
aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVjdGlvbl0oVmVjdG9yPGNoYXI+JiYpIHsKLSAg
ICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmluZygKLSAgICAgICAgICAgICAg
ICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAgICAgICAgICJFVGFnOiB0
ZXN0XHJcbiIKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFtpbmNs
dWRlRVRhZywgY29ubmVjdGlvbiwgdGVybWluYXRvciA9IFdURk1vdmUodGVybWluYXRvcildIChW
ZWN0b3I8Y2hhcj4mJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgYXV0byByZXNwb25zZSA9
IG1ha2VTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIiwK
KyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZUVUYWcgPT0gSW5jbHVkZUVUYWc6OlllcyA/ICJF
VGFnOiB0ZXN0XHJcbiIgOiAiIiwKICAgICAgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3Ro
OiAxMDAwMFxyXG4iCiAgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bvc2l0aW9uOiBh
dHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgogICAgICAgICAgICAgICAg
ICAgICAiXHJcbiIsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKQotICAgICAgICAgICAgICAgICkpOwor
ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKFdURk1v
dmUocmVzcG9uc2UpLCBbY29ubmVjdGlvbiwgdGVybWluYXRvciA9IFdURk1vdmUodGVybWluYXRv
cildICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBpZiAodGVybWluYXRvcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0b3IoY29ubmVjdGlvbik7CisgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIDI6Ci0gICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbY29ubmVj
dGlvbl0oVmVjdG9yPGNoYXI+JiYgcmVxdWVzdCkgeworICAgICAgICAgICAgY29ubmVjdGlvbi5y
ZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShzdHJuc3RyKHJlcXVlc3QuZGF0YSgpLCAiUmFuZ2U6IGJ5dGVz
PTUwMDAtXHJcbiIsIHJlcXVlc3Quc2l6ZSgpKSk7CiAgICAgICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDYgUGFy
dGlhbCBDb250ZW50XHJcbiIKQEAgLTEyMjAsMTYgKzEyMzAsNjQgQEAgVEVTVChfV0tEb3dubG9h
ZCwgUmVzdW1lKQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICB9KTsKKyAgICB9fTsKK30KKworc3RhdGljIHZvaWQgY2hl
Y2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhOU1VSTCAqZmlsZSkKK3sKKyAgICBOU0RhdGEgKmZp
bGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOmZpbGVdOworICAgIEVY
UEVDVF9FUShmaWxlQ29udGVudHMubGVuZ3RoLCAxMDAwMHUpOworICAgIEVYUEVDVF9UUlVFKGZp
bGVDb250ZW50cy5ieXRlcyk7CisgICAgaWYgKGZpbGVDb250ZW50cy5ieXRlcyAmJiBmaWxlQ29u
dGVudHMubGVuZ3RoID09IDEwMDAwdSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IDUwMDA7IGkrKykKKyAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxjb25zdCBjaGFy
Kj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2EnKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDUwMDA7IGkgPCAxMDAwMDsgaSsrKQorICAgICAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihmaWxlQ29udGVudHMuYnl0ZXMpW2ldLCAnYicpOworICAgIH0KK30KKwor
c3RhdGljIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2ltcGxlRG93bmxvYWRUZXN0U2VydmVy
KCkKK3sKKyAgICByZXR1cm4geyBbXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rp
b24pIHsKKyAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoW2Nvbm5lY3Rpb25d
KFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0cmlu
ZygKKyAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAg
ICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgIkNvbnRlbnQtTGVuZ3RoOiA1MDAw
XHJcbiIKKyAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsg
ZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAiXHJcbiIsIGxv
bmdTdHJpbmc8NTAwMD4oJ2EnKQorICAgICAgICAgICAgKSk7CisgICAgICAgIH0pOworICAgIH19
OworfQogCi0gICAgTlNVUkwgKnRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1Rl
bXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25s
b2FkUmVzdW1lVGVzdCJdIGlzRGlyZWN0b3J5OllFU107CitzdGF0aWMgdm9pZCBjaGVja0ZpbGVD
b250ZW50cyhOU1VSTCAqZmlsZSwgY29uc3QgU3RyaW5nJiBleHBlY3RlZENvbnRlbnRzKQorewor
ICAgIE5TRGF0YSAqZmlsZUNvbnRlbnRzID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6
ZmlsZV07CisgICAgRVhQRUNUX0VRKGZpbGVDb250ZW50cy5sZW5ndGgsIGV4cGVjdGVkQ29udGVu
dHMubGVuZ3RoKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZUNvbnRlbnRzLmxl
bmd0aDsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGZp
bGVDb250ZW50cy5ieXRlcylbaV0sIGV4cGVjdGVkQ29udGVudHNbaV0pOworfQorCitzdGF0aWMg
TlNVUkwgKnRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpCit7CisgICAgTlNVUkwgKnRlbXBEaXIg
PSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkRvd25sb2FkVGVzdCJdIGlzRGlyZWN0b3J5OllFU107
CiAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBjcmVhdGVEaXJlY3RvcnlBdFVS
TDp0ZW1wRGlyIHdpdGhJbnRlcm1lZGlhdGVEaXJlY3RvcmllczpZRVMgYXR0cmlidXRlczpuaWwg
ZXJyb3I6bmlsXTsKLSAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBbdGVtcERpciBV
UkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOwotICAgIFtbTlNGaWxl
TWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmV4cGVjdGVkRG93bmxvYWRG
aWxlIGVycm9yOm5pbF07CisgICAgTlNVUkwgKmZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGlu
Z1BhdGhDb21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZh
dWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmZpbGUgZXJyb3I6bmlsXTsKKyAgICByZXR1cm4g
ZmlsZTsKK30KKworVEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQoreworICAgIHVzaW5nIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJOworICAgIGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVy
KCk7CisKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2Vz
Tm90RXhpc3QoKTsKIAogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKICAgICBuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCku
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25z
ZSAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5
KSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xp
Y3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5RG93bmxvYWQpOwogICAgIH07CiAKICAgICBlbnVtIGNsYXNzIENhbGxi
YWNrIDogdWludDhfdCB7IFN0YXJ0LCBXcml0ZURhdGEsIERlY2lkZURlc3RpbmF0aW9uLCBDcmVh
dGVEZXN0aW5hdGlvbiwgQ2FuY2VsLCBGaW5pc2ggfTsKQEAgLTEyNDAsMTAgKzEyOTgsMTEgQEAg
VEVTVChfV0tEb3dubG9hZCwgUmVzdW1lKQogICAgIF9fYmxvY2sgUmV0YWluUHRyPF9XS0Rvd25s
b2FkPiBkb3dubG9hZDsKICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0RhdGE+IHJlc3VtZURhdGE7
CiAKLSAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0RG93bmxvYWREZWxl
Z2F0ZSBuZXddKTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TGVn
YWN5RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lID0gXihfV0tEb3dubG9hZCAqLCBO
U1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoQk9P
TCwgTlNTdHJpbmcgKikpIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RGVj
aWRlRGVzdGluYXRpb24pOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihZRVMsIFt0ZW1wRGly
IFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpzdWdnZXN0ZWRGaWxlbmFtZV0ucGF0aCk7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUSgiZXhhbXBsZS50eHQiLCBzdWdnZXN0ZWRGaWxlbmFtZSk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFlFUywgZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0
aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRpZFdyaXRlRGF0YSA9IF4o
X1dLRG93bmxvYWQgKmRvd25sb2FkLCB1aW50NjRfdCBieXRlc1dyaXR0ZW4sIHVpbnQ2NF90IHRv
dGFsQnl0ZXNXcml0dGVuLCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CiAg
ICAgICAgIGNhbGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OldyaXRlRGF0YSk7CkBAIC0xMjU4LDcg
KzEzMTcsNyBAQCBURVNUKF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgfTsKICAgICBkb3dubG9h
ZERlbGVnYXRlLmdldCgpLmRpZENyZWF0ZURlc3RpbmF0aW9uID0gXihfV0tEb3dubG9hZCAqLCBO
U1N0cmluZyAqZGVzdGluYXRpb24pIHsKICAgICAgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFj
azo6Q3JlYXRlRGVzdGluYXRpb24pOwotICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZGVzdGluYXRp
b24sIFt0ZW1wRGlyIFVSTEJ5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImV4YW1wbGUudHh0Il0u
cGF0aCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkZXN0aW5hdGlvbiwgZXhwZWN0ZWREb3du
bG9hZEZpbGUucGF0aCk7CiAgICAgfTsKICAgICBkb3dubG9hZERlbGVnYXRlLmdldCgpLmRvd25s
b2FkRGlkQ2FuY2VsID0gXihfV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKICAgICAgICAgY2FsbGJh
Y2tzLmFwcGVuZChDYWxsYmFjazo6Q2FuY2VsKTsKQEAgLTEyOTYsMTUgKzEzNTUsNyBAQCBURVNU
KF9XS0Rvd25sb2FkLCBSZXN1bWUpCiAgICAgVXRpbDo6c3BpblJ1bkxvb3AoMTApOwogICAgIHVz
bGVlcCgxMDAwMCk7CiAKLSAgICBOU0RhdGEgKmZpbGVDb250ZW50cyA9IFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mVVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlXTsKLSAgICBFWFBFQ1RfRVEoZmls
ZUNvbnRlbnRzLmxlbmd0aCwgMTAwMDB1KTsKLSAgICBFWFBFQ1RfVFJVRShmaWxlQ29udGVudHMu
Ynl0ZXMpOwotICAgIGlmIChmaWxlQ29udGVudHMuYnl0ZXMpIHsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCA1MDAwOyBpKyspCi0gICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGZpbGVDb250ZW50cy5ieXRlcylbaV0sICdhJyk7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSA1MDAwOyBpIDwgMTAwMDA7IGkrKykKLSAgICAgICAgICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZmlsZUNvbnRlbnRzLmJ5dGVzKVtpXSwgJ2InKTsK
LSAgICB9CisgICAgY2hlY2tSZXN1bWVkRG93bmxvYWRDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSk7CiB9CiAKIEBpbnRlcmZhY2UgRG93bmxvYWRUZXN0U2NoZW1lRGVsZWdhdGUgOiBOU09i
amVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CkBAIC0xMzE0LDcgKzEzNjUsNyBAQCBURVNUKF9X
S0Rvd25sb2FkLCBSZXN1bWUpCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAq
KW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlv
blJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKIHsKICAgICBpZiAoW25hdmlnYXRpb25S
ZXNwb25zZS5yZXNwb25zZS5VUkwuYWJzb2x1dGVTdHJpbmcgaGFzU3VmZml4OkAiL2Rvd25sb2Fk
Il0pCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lC
ZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNw
b25zZVBvbGljeURvd25sb2FkKTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihX
S05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KQEAgLTEzNzMsNCArMTQyNCwxMjAy
IEBAIFRFU1QoX1dLRG93bmxvYWQsIFN1YmZyYW1lU2VjdXJpdHlPcmlnaW4pCiAgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8Ym9keT48aWZy
YW1lIHNyYz0naHR0cDovLzEyNy4wLjAuMTolZC9wYWdlJz48L2lmcmFtZT48L2JvZHk+Iiwgc2Vy
dmVyLnBvcnQoKV0gYmFzZVVSTDpuaWxdOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKIH0KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgdm9pZCBj
aGVja0NhbGxiYWNrUmVjb3JkKFRlc3REb3dubG9hZERlbGVnYXRlICpkZWxlZ2F0ZSwgVmVjdG9y
PERvd25sb2FkQ2FsbGJhY2s+IGV4cGVjdGVkQ2FsbGJhY2tzKQoreworICAgIGF1dG8gYWN0dWFs
Q2FsbGJhY2tzID0gZGVsZWdhdGUudGFrZUNhbGxiYWNrUmVjb3JkOworICAgIEVYUEVDVF9FUShh
Y3R1YWxDYWxsYmFja3Muc2l6ZSgpLCBleHBlY3RlZENhbGxiYWNrcy5zaXplKCkpOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RkOjptaW4oYWN0dWFsQ2FsbGJhY2tzLnNpemUoKSwgZXhw
ZWN0ZWRDYWxsYmFja3Muc2l6ZSgpKTsgaSsrKQorICAgICAgICBFWFBFQ1RfRVEoYWN0dWFsQ2Fs
bGJhY2tzW2ldLCBleHBlY3RlZENhbGxiYWNrc1tpXSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwg
RmluaXNoU3VjY2Vzc2Z1bGx5KQoreworICAgIGF1dG8gc2VydmVyID0gc2ltcGxlRG93bmxvYWRU
ZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVU
aGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVs
ZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
bmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2Fk
ID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93
bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAg
ZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpk
b3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChkb3dubG9hZC5wcm9n
cmVzcy5maWxlVVJMKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChkb3dubG9hZC5wcm9ncmVz
cy5maWxlVVJMKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5wcm9ncmVz
cy5maWxlVVJMLmFic29sdXRlU3RyaW5nLCBleHBlY3RlZERvd25sb2FkRmlsZS5hYnNvbHV0ZVN0
cmluZyk7CisgICAgICAgIH07CisgICAgfTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRvd25sb2FkRGlkRmluaXNoXTsK
KworICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5n
PDUwMDA+KCdhJykpOworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAg
ICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3Jp
dGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30K
Kworc3RhdGljIHZvaWQgcmVzdW1lQW5kRmluaXNoRG93bmxvYWQoTlNEYXRhICpyZXN1bWVEYXRh
LCBOU1VSTCAqZGVzdGluYXRpb24pCit7CisgICAgX19ibG9jayBSZXRhaW5QdHI8V0tEb3dubG9h
ZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgY2hl
Y2tGaWxlQ29udGVudHMoZGVzdGluYXRpb24sIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAg
ICAgICAgYXV0byAqZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3Jl
bGVhc2VdOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisKKyAgICAgICAgW3dlYlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXN1bWVE
YXRhIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAg
ICAgIHJldGFpbmVkRG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgICAgIEVYUEVDVF9OVUxM
KGRvd25sb2FkLmRlbGVnYXRlKTsKKyAgICAgICAgfV07CisgICAgICAgIHdoaWxlICghcmV0YWlu
ZWREb3dubG9hZCkKKyAgICAgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgICAgIAor
ICAgICAgICBfX2Jsb2NrIGJvb2wgZG93bmxvYWRlZFNlY29uZDVrID0gZmFsc2U7CisgICAgICAg
IEVYUEVDVF9OVUxMKHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUpOworICAgICAgICBy
ZXRhaW5lZERvd25sb2FkLmdldCgpLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVn
YXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VS
TFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwg
KikpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9OworICAg
ICAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93bmxvYWQgKmRvd25sb2FkLCBpbnQ2
NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3Rh
bEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZG93bmxvYWQs
IHJldGFpbmVkRG93bmxvYWQuZ2V0KCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKGJ5dGVzV3Jp
dHRlbiArIDUwMDAsIHRvdGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUSh0
b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlLCAxMDAwMCk7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
ZG93bmxvYWQucHJvZ3Jlc3MudG90YWxVbml0Q291bnQsIDEwMDAwKTsKKyAgICAgICAgICAgIEVY
UEVDVF9FUShkb3dubG9hZC5wcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQsIHRvdGFsQnl0ZXNX
cml0dGVuKTsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPT0gNTAwMCkKKyAgICAgICAg
ICAgICAgICBkb3dubG9hZGVkU2Vjb25kNWsgPSB0cnVlOworICAgICAgICB9OworICAgICAgICBf
X2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgICAgIGRlbGVnYXRlLmRvd25sb2Fk
RGlkRmluaXNoID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICAgICAgRVhQRUNU
X0VRKHJldGFpbmVkRG93bmxvYWQuZ2V0KCksIGRvd25sb2FkKTsKKyAgICAgICAgICAgIEVYUEVD
VF9UUlVFKGRvd25sb2FkZWRTZWNvbmQ1ayk7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgICAgICB9OworCisgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAgICAg
ICBjaGVja1Jlc3VtZWREb3dubG9hZENvbnRlbnRzKGRlc3RpbmF0aW9uKTsKKyAgICAgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICAgICAgRG93bmxvYWRDYWxsYmFj
azo6RGlkV3JpdGVEYXRhLAorICAgICAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmluaXNo
CisgICAgICAgIH0pOworICAgICAgICBFWFBFQ1RfRVEocmV0YWluZWREb3dubG9hZC5nZXQoKS53
ZWJWaWV3LCB3ZWJWaWV3LmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJldGFpbmVk
RG93bmxvYWQuZ2V0KCkud2ViVmlldyk7CisgICAgfQorICAgIEVYUEVDVF9OT1RfTlVMTChyZXRh
aW5lZERvd25sb2FkLmdldCgpKTsKKyAgICBFWFBFQ1RfTlVMTChyZXRhaW5lZERvd25sb2FkLmdl
dCgpLndlYlZpZXcpOworfQorCitzdGF0aWMgdm9pZCB3YWl0Rm9yRmlyc3Q1ayhUZXN0RG93bmxv
YWREZWxlZ2F0ZSAqZGVsZWdhdGUpCit7CisgICAgX19ibG9jayBib29sIGRvd25sb2FkZWRGaXJz
dDVrID0gZmFsc2U7CisgICAgQVNTRVJUKCFkZWxlZ2F0ZS5kaWRXcml0ZURhdGEpOworICAgIGRl
bGVnYXRlLmRpZFdyaXRlRGF0YSA9IF4oV0tEb3dubG9hZCAqLCBpbnQ2NF90IGJ5dGVzV3JpdHRl
biwgaW50NjRfdCB0b3RhbEJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRU
b1dyaXRlKSB7CisgICAgICAgIEVYUEVDVF9FUShieXRlc1dyaXR0ZW4sIHRvdGFsQnl0ZXNXcml0
dGVuKTsKKyAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUsIDEwMDAw
KTsKKyAgICAgICAgaWYgKGJ5dGVzV3JpdHRlbiA9PSA1MDAwKQorICAgICAgICAgICAgZG93bmxv
YWRlZEZpcnN0NWsgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZGVkRmly
c3Q1ayk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgQ2FuY2VsQW5kUmVzdW1lKQoreworICAgIGF1
dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93
bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0
ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZp
Z2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93
bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNl
RGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAq
LCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93
bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRl
bGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBO
U1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNV
UkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVsZWdhdGUpOworCisgICAgX19i
bG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVk
RG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVk
UmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRG
aW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEKKyAg
ICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBGYWlsQW5kUmVzdW1lKQoreworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpZZXMsIFsmXSAo
VGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIHdhaXRGb3JG
aXJzdDVrKGRlbGVnYXRlKTsKKyAgICAgICAgY29ubmVjdGlvbi50ZXJtaW5hdGUoKTsKKyAgICB9
KTsKKyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90
RXhpc3QoKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19i
bG9jayBSZXRhaW5QdHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBkZWxlZ2F0ZS5uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdh
dGlvblJlc3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVk
RG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhw
ZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWls
V2l0aEVycm9yID0gXihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0
YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRvd25sb2FkLCByZXRhaW5l
ZERvd25sb2FkLmdldCgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJvci5kb21h
aW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IE5TVVJMRXJyb3JOZXR3b3JrQ29ubmVjdGlvbkxvc3QpOworICAgICAgICAgICAgcmV0YWluZWRS
ZXN1bWVEYXRhID0gcmVzdW1lRGF0YTsKKyAgICAgICAgfTsKKyAgICB9OworCisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICB3aGlsZSAoIXJldGFpbmVk
UmVzdW1lRGF0YSkKKyAgICAgICAgVXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXN1bWVBbmRG
aW5pc2hEb3dubG9hZChyZXRhaW5lZFJlc3VtZURhdGEuZ2V0KCksIGV4cGVjdGVkRG93bmxvYWRG
aWxlKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
blJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lk
ZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxXaXRoRXJyb3IsCisgICAgfSk7Cit9CisK
K1RFU1QoV0tEb3dubG9hZCwgQ2FuY2VsTm9SZXN1bWVEYXRhKQoreworICAgIGF1dG8gc2VydmVy
ID0gZG93bmxvYWRUZXN0U2VydmVyKEluY2x1ZGVFVGFnOjpObyk7CisgICAgTlNVUkwgKmV4cGVj
dGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmll
dy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRy
PFdLRG93bmxvYWQ+IHJldGFpbmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2Fk
ID0gZG93bmxvYWQ7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAg
ICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9h
ZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93
bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAg
IF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW3JldGFpbmVkRG93bmxvYWQgY2FuY2Vs
Ol4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEp
OworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUw
MDA+KCdhJykpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxs
YmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0
YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEZhaWxOb1Jlc3VtZURhdGEpCit7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoSW5jbHVkZUVUYWc6Ok5v
LCBbJl0gKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgeworICAgICAgICB3
YWl0Rm9yRmlyc3Q1ayhkZWxlZ2F0ZSk7CisgICAgICAgIGNvbm5lY3Rpb24udGVybWluYXRlKCk7
CisgICAgfSk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0
RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKwor
ICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJl
c3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNw
b25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0
ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVn
YXRlLmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5T
RGF0YSAqcmVzdW1lRGF0YSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRv
bWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29k
ZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgICAgICBFWFBFQ1Rf
TlVMTChyZXN1bWVEYXRhKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9Owor
ICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2Fk
RmlsZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZhaWxX
aXRoRXJyb3IKKyAgICB9KTsKK30KKworLy8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIGluIENGTmV0
d29yay4KKyNpZiBIQVZFKENGTkVUX1JFU1BPTlNFX0NBTExCQUNLX1dJVEhfTk9fQ09OVEVOVCkK
KworVEVTVChXS0Rvd25sb2FkLCBSZXN1bWVBZnRlclplcm9CeXRlc1JlY2VpdmVkKQoreworICAg
IE9wdGlvbmFsPFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24+IHNlcnZlckNvbm5lY3Rpb247Cisg
ICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5lY3Rpb25Db3VudCA9IDAsICZzZXJ2ZXJDb25uZWN0
aW9uXShUZXN0V2ViS2l0QVBJOjpDb25uZWN0aW9uIGNvbm5lY3Rpb24pIG11dGFibGUgeworICAg
ICAgICBzd2l0Y2ggKCsrY29ubmVjdGlvbkNvdW50KSB7CisgICAgICAgIGNhc2UgMToKKyAgICAg
ICAgICAgIHNlcnZlckNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgICAgICAgICAgY29ubmVj
dGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmKSB7CisgICAgICAgICAg
ICAgICAgY29ubmVjdGlvbi5zZW5kKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAw
IE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAg
ICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJl
eGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iCisgICAgICAgICAg
ICAgICAgKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBSZXF1ZXN0KFs9XShWZWN0
b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3RybnN0
cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4iLCByZXF1ZXN0LnNpemUo
KSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAgICAg
ICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAgICAg
IkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6IDEw
MFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJcclxuIiwgbG9uZ1N0cmluZzwxMDA+KCd4JykK
KyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVt
cEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25s
b2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dl
YlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9h
ZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICB9OworICAgIGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IFsmXShX
S0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3Rl
ZERvd25sb2FkRmlsZSk7CisgICAgICAgIHNlcnZlckNvbm5lY3Rpb24tPnRlcm1pbmF0ZSgpOwor
ICAgIH07CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7
CisgICAgZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9y
ICplcnJvciwgTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
cnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3Iu
Y29kZSwgTlNVUkxFcnJvck5ldHdvcmtDb25uZWN0aW9uTG9zdCk7CisgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgZG93bmxv
YWRGaW5pc2hlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLmRvd25sb2FkRGlkRmluaXNoID0gXihX
S0Rvd25sb2FkICopIHsKKyAgICAgICAgZG93bmxvYWRGaW5pc2hlZCA9IHRydWU7CisgICAgfTsK
KworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIHdoaWxl
ICghcmV0YWluZWRSZXN1bWVEYXRhKQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworICAg
IAorICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVF
eGlzdHNBdFBhdGg6ZXhwZWN0ZWREb3dubG9hZEZpbGUucGF0aF0pOworICAgIEVYUEVDVF9GQUxT
RShkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1
bWVEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93
bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZkb3dubG9hZEZpbmlzaGVkKTsKKyAgICBjaGVja0Zp
bGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbG9uZ1N0cmluZzwxMDA+KCd4JykpOwor
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvciwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworI2VuZGlmCisKK3ZvaWQgdGVzdFJlc3Vt
ZUFmdGVyTXV0YXRpbmdEaXNrKE5TVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCwgTlNVUkwgKmV4
cGVjdGVkRG93bmxvYWRGaWxlLCB2b2lkKF5tdXRhdGVGaWxlKSh2b2lkKSkKK3sKKyAgICBhdXRv
IGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICB3ZWJW
aWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBSZXRhaW5Q
dHI8V0tEb3dubG9hZD4gcmV0YWluZWREb3dubG9hZDsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9u
UmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJl
c3BvbnNlICosIFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVkRG93bmxv
YWQgPSBkb3dubG9hZDsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAg
ICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25s
b2FkICpkb3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxl
dGlvbkhhbmRsZXIpKE5TVVJMICopKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihl
eHBlY3RlZERvd25sb2FkRmlsZSk7CisgICAgICAgIH07CisgICAgfTsKKworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnNlcnZlclJlcXVlc3RdOworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRl
KTsKKyAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBuaWw7CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxOU0RhdGE+IHJldGFpbmVkUmVzdW1lRGF0YTsKKyAgICBbcmV0YWluZWREb3dubG9hZCBj
YW5jZWw6XihOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgcmV0YWluZWRSZXN1bWVEYXRh
ID0gcmVzdW1lRGF0YTsKKyAgICB9XTsKKworICAgIHdoaWxlICghcmV0YWluZWRSZXN1bWVEYXRh
KQorICAgICAgICBVdGlsOjpzcGluUnVuTG9vcCgpOworCisgICAgY2hlY2tGaWxlQ29udGVudHMo
ZXhwZWN0ZWREb3dubG9hZEZpbGUsIGxvbmdTdHJpbmc8NTAwMD4oJ2EnKSk7CisKKyAgICBtdXRh
dGVGaWxlKCk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZGlkRmluaXNoID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgcmVzdW1lRG93bmxvYWRGcm9tUmVzdW1lRGF0YTpyZXRhaW5lZFJlc3VtZURhdGEuZ2V0
KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBk
b3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5kb3dubG9hZERp
ZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKyAgICBj
aGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25S
ZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVj
YW1lRG93bmxvYWQsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9u
LAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25s
b2FkQ2FsbGJhY2s6OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJl
c3VtZVdpdGhvdXRJbml0aWFsRGF0YU9uRGlzaykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcihb
Y29ubmVjdGlvbkNvdW50ID0gMF0oVGVzdFdlYktpdEFQSTo6Q29ubmVjdGlvbiBjb25uZWN0aW9u
KSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoICgrK2Nvbm5lY3Rpb25Db3VudCkgeworICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICBjb25uZWN0aW9uLnJlY2VpdmVIVFRQUmVxdWVzdChbPV0o
VmVjdG9yPGNoYXI+JiYpIHsKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLnNlbmQobWFrZVN0
cmluZygKKyAgICAgICAgICAgICAgICAgICAgIkhUVFAvMS4xIDIwMCBPS1xyXG4iCisgICAgICAg
ICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkNvbnRl
bnQtTGVuZ3RoOiAxMDAwMFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LURpc3Bv
c2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cImV4YW1wbGUudHh0XCJcclxuIgorICAgICAg
ICAgICAgICAgICAgICAiXHJcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvbmdTdHJpbmc8NTAw
MD4oJ2EnKQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZl
SFRUUFJlcXVlc3QoWz1dKFZlY3RvcjxjaGFyPiYmIHJlcXVlc3QpIHsKKyNpZiAhVVNFKExFR0FD
WV9DRk5FVFdPUktfRE9XTkxPQURTKQorICAgICAgICAgICAgICAgIC8vIE1vamF2ZSBDRk5ldHdv
cmsgc2VuZHMgYSByYW5nZSByZXF1ZXN0IHdoZW4gcmVzdW1pbmcgYSBkb3dubG9hZCBhZnRlciBy
ZW1vdmluZyBhbHJlYWR5LWRvd25sb2FkZWQgZGF0YS4KKyAgICAgICAgICAgICAgICBFWFBFQ1Rf
RkFMU0Uoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlIiwgcmVxdWVzdC5zaXplKCkpKTsK
KyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtlU3RyaW5nKAorICAg
ICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjAwIE9LXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgIkVUYWc6IHRlc3RcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1MZW5ndGg6
IDEwMDAwXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAg
ICAgICBsb25nU3RyaW5nPDEwMDAwPigneCcpCisgICAgICAgICAgICAgICAgKSk7CisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICB0ZXN0UmVzdW1lQWZ0ZXJNdXRhdGluZ0Rpc2soc2VydmVyLnJlcXVlc3QoKSwgZXhwZWN0
ZWREb3dubG9hZEZpbGUsIF57CisgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmlsOworICAgICAg
ICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpleHBlY3Rl
ZERvd25sb2FkRmlsZSBlcnJvcjomZXJyb3JdOworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7
CisgICAgfSk7CisKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwg
bG9uZ1N0cmluZzwxMDAwMD4oJ3gnKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0
aEV4dHJhSW5pdGlhbERhdGFPbkRpc2spCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoW2Nvbm5l
Y3Rpb25Db3VudCA9IDBdKFRlc3RXZWJLaXRBUEk6OkNvbm5lY3Rpb24gY29ubmVjdGlvbikgbXV0
YWJsZSB7CisgICAgICAgIHN3aXRjaCAoKytjb25uZWN0aW9uQ291bnQpIHsKKyAgICAgICAgY2Fz
ZSAxOgorICAgICAgICAgICAgY29ubmVjdGlvbi5yZWNlaXZlSFRUUFJlcXVlc3QoWz1dKFZlY3Rv
cjxjaGFyPiYmKSB7CisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi5zZW5kKG1ha2VTdHJpbmco
CisgICAgICAgICAgICAgICAgICAgICJIVFRQLzEuMSAyMDAgT0tcclxuIgorICAgICAgICAgICAg
ICAgICAgICAiRVRhZzogdGVzdFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJDb250ZW50LUxl
bmd0aDogMTAwMDBcclxuIgorICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1EaXNwb3NpdGlv
bjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCJleGFtcGxlLnR4dFwiXHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBsb25nU3RyaW5nPDUwMDA+KCdh
JykKKyAgICAgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2ZUhUVFBS
ZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoc3RybnN0cihyZXF1ZXN0LmRhdGEoKSwgIlJhbmdlOiBieXRlcz01MDAwLVxyXG4i
LCByZXF1ZXN0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24uc2VuZChtYWtl
U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAiSFRUUC8xLjEgMjA2IFBhcnRpYWwgQ29udGVu
dFxyXG4iCisgICAgICAgICAgICAgICAgICAgICJFVGFnOiB0ZXN0XHJcbiIKKyAgICAgICAgICAg
ICAgICAgICAgIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzIDUwMDAtOTk5OS8xMDAwMFxyXG4iCisgICAg
ICAgICAgICAgICAgICAgICJDb250ZW50LUxlbmd0aDogNTAwMFxyXG4iCisgICAgICAgICAgICAg
ICAgICAgICJcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgbG9uZ1N0cmluZzwxMDAwMD4oJ2Qn
KQorICAgICAgICAgICAgICAgICkpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgfSk7CisgICAgCisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxl
ID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgdGVzdFJlc3VtZUFmdGVyTXV0YXRp
bmdEaXNrKHNlcnZlci5yZXF1ZXN0KCksIGV4cGVjdGVkRG93bmxvYWRGaWxlLCBeeworICAgICAg
ICBOU0Vycm9yICplcnJvciA9IG5pbDsKKyAgICAgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZXhwZWN0ZWREb3dubG9hZEZpbGUgZXJyb3I6JmVycm9y
XTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOworICAgICAgICBFWFBFQ1RfVFJVRShbWyhO
U1N0cmluZyAqKW1ha2VTdHJpbmcobG9uZ1N0cmluZzwzMDAwPignYicpLCBsb25nU3RyaW5nPDMw
MDA+KCdjJykpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSB3cml0ZVRv
VVJMOmV4cGVjdGVkRG93bmxvYWRGaWxlIGF0b21pY2FsbHk6WUVTXSk7CisgICAgfSk7CisKKyAg
ICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgbWFrZVN0cmluZyhsb25n
U3RyaW5nPDMwMDA+KCdiJyksIGxvbmdTdHJpbmc8MzAwMD4oJ2MnKSwgbG9uZ1N0cmluZzw1MDAw
PignZCcpKSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgUmVzdW1lV2l0aEludmFsaWRSZXN1bWVE
YXRhKQoreworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERv
ZXNOb3RFeGlzdCgpOworICAgIEVYUEVDVF9UUlVFKFtbQCJpbml0aWFsIGRhdGEgb24gZGlzayIg
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHdyaXRlVG9VUkw6ZXhwZWN0
ZWREb3dubG9hZEZpbGUgYXRvbWljYWxseTpZRVNdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dL
V2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZh
bHNlOworICAgIEB0cnkgeworICAgICAgICBbd2ViVmlldyByZXN1bWVEb3dubG9hZEZyb21SZXN1
bWVEYXRhOltAImludmFsaWQgcmVzdW1lIGRhdGEiIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfV07CisgICAgfSBA
Y2F0Y2ggKE5TRXhjZXB0aW9uICplKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShlLm5hbWUs
IE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKTsKKyAgICAgICAgY2F1Z2h0RXhjZXB0aW9uID0g
dHJ1ZTsKKyAgICB9CisgICAgRVhQRUNUX1RSVUUoY2F1Z2h0RXhjZXB0aW9uKTsKK30KKworVEVT
VChXS0Rvd25sb2FkLCBSZXN1bWVDYW50UmVjb25uZWN0KQoreworICAgIGF1dG8gc2VydmVyID0g
ZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0g
dGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERv
d25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tX
S1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPFdLRG93bmxvYWQ+IHJldGFp
bmVkRG93bmxvYWQ7CisgICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93
bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICpkb3dubG9hZCkgeworICAgICAgICByZXRhaW5lZERvd25sb2FkID0gZG93bmxvYWQ7CisgICAg
ICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIGRlbGVnYXRlLmRlY2lk
ZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNl
ICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAg
ICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCld
OworICAgIHdhaXRGb3JGaXJzdDVrKGRlbGVnYXRlKTsKKworICAgIGNoZWNrRmlsZUNvbnRlbnRz
KGV4cGVjdGVkRG93bmxvYWRGaWxlLCBsb25nU3RyaW5nPDUwMDA+KCdhJykpOworCisgICAgX19i
bG9jayBSZXRhaW5QdHI8TlNEYXRhPiByZXRhaW5lZFJlc3VtZURhdGE7CisgICAgW3JldGFpbmVk
RG93bmxvYWQgY2FuY2VsOl4oTlNEYXRhICpyZXN1bWVEYXRhKSB7CisgICAgICAgIHJldGFpbmVk
UmVzdW1lRGF0YSA9IHJlc3VtZURhdGE7CisgICAgfV07CisgICAgd2hpbGUgKCFyZXRhaW5lZFJl
c3VtZURhdGEpCisgICAgICAgIFV0aWw6OnNwaW5SdW5Mb29wKCk7CisKKyAgICBzZXJ2ZXIuY2Fu
Y2VsKCk7CisgICAgCisgICAgcmV0YWluZWREb3dubG9hZCA9IG5pbDsKKyAgICBbd2ViVmlldyBy
ZXN1bWVEb3dubG9hZEZyb21SZXN1bWVEYXRhOnJldGFpbmVkUmVzdW1lRGF0YS5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIHJldGFpbmVk
RG93bmxvYWQgPSBkb3dubG9hZDsKKyAgICAgICAgRVhQRUNUX05VTEwoZG93bmxvYWQuZGVsZWdh
dGUpOworICAgIH1dOworICAgIHdoaWxlICghcmV0YWluZWREb3dubG9hZCkKKyAgICAgICAgVXRp
bDo6c3BpblJ1bkxvb3AoKTsKKworICAgIHJldGFpbmVkRG93bmxvYWQuZ2V0KCkuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRlbGVnYXRl
LmRpZEZhaWxXaXRoRXJyb3IgPSBeKFdLRG93bmxvYWQgKiwgTlNFcnJvciAqZXJyb3IsIE5TRGF0
YSAqcmVzdW1lRGF0YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBO
U1VSTEVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIE5TVVJMRXJy
b3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKHJlc3VtZURh
dGEpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7
CisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1Qo
V0tEb3dubG9hZCwgVW5rbm93bkNvbnRlbnRMZW5ndGgpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2
ZXIoW10oQ29ubmVjdGlvbiBjb25uZWN0aW9uKSB7CisgICAgICAgIGNvbm5lY3Rpb24ucmVjZWl2
ZUhUVFBSZXF1ZXN0KFs9XShWZWN0b3I8Y2hhcj4mJikgeworICAgICAgICAgICAgY29ubmVjdGlv
bi5zZW5kKG1ha2VTdHJpbmcoIkhUVFAvMS4xIDIwMCBPS1xyXG5cclxuIiwgbG9uZ1N0cmluZzw1
MDAwPignYScpKSk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIE5TVVJMICpleHBlY3RlZERv
d25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNOb3RFeGlzdCgpOworICAgIGF1dG8gZGVsZWdh
dGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8g
d2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2
aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZh
bHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0g
XihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVs
ZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5T
VVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VS
TCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZp
bGUpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRXcml0ZURhdGEgPSBeKFdLRG93
bmxvYWQgKmRvd25sb2FkLCBpbnQ2NF90IGJ5dGVzV3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVz
V3JpdHRlbiwgaW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlKSB7CisgICAgICAgICAg
ICBFWFBFQ1RfRVEoZG93bmxvYWQucHJvZ3Jlc3MudG90YWxVbml0Q291bnQsIC0xKTsKKyAgICAg
ICAgICAgIEVYUEVDVF9FUShkb3dubG9hZC5wcm9ncmVzcy5jb21wbGV0ZWRVbml0Q291bnQsIHRv
dGFsQnl0ZXNXcml0dGVuKTsKKyAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gIT0gNTAwMCkK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBFWFBFQ1RfRVEodG90YWxCeXRl
c1dyaXR0ZW4sIDUwMDApOworICAgICAgICAgICAgRVhQRUNUX0VRKHRvdGFsQnl0ZXNFeHBlY3Rl
ZFRvV3JpdGUsIC0xKTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9OworICAg
IH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgVXRp
bDo6cnVuKCZkb25lKTsKKyAgICBjaGVja0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmls
ZSwgbG9uZ1N0cmluZzw1MDAwPignYScpKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVs
ZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAg
ICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3du
bG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAg
RG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRpZFdyaXRlRGF0YQorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIEludmFs
aWRBcmd1bWVudHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRv
cmVsZWFzZV07CisgICAgX19ibG9jayBib29sIGNhdWdodEV4Y2VwdGlvbiA9IGZhbHNlOworICAg
IGF1dG8gc2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZpZXcg
c3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3Bv
bnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgQHRyeSB7CisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmcvIl0pOworICAgICAgICAgICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpl
KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGUubmFtZSwgTlNJbnZhbGlkQXJn
dW1lbnRFeGNlcHRpb24pOworICAgICAgICAgICAgICAgIGNhdWdodEV4Y2VwdGlvbiA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZjYXVn
aHRFeGNlcHRpb24pOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgfSk7Cit9CisKK3N0
YXRpYyBIVFRQU2VydmVyIHJlZGlyZWN0U2VydmVyKCkKK3sKKyAgICByZXR1cm4ge3sKKyAgICAg
ICAgeyAiLyIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL3JlZGlyZWN0VGFyZ2V0IiB9LCB7ICJD
dXN0b20tTmFtZSIsICJDdXN0b20tVmFsdWUiIH19IH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0
VGFyZ2V0IiwgeyAiaGkiIH0gfSwKKyAgICB9fTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZWRp
cmVjdEFsbG93KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgTlNNdXRh
YmxlVVJMUmVxdWVzdCAqc2VydmVyUmVxdWVzdCA9IFtbc2VydmVyLnJlcXVlc3QoKSBtdXRhYmxl
Q29weV0gYXV0b3JlbGVhc2VdOworICAgIHNlcnZlclJlcXVlc3QuSFRUUEJvZHkgPSBbQCJib2R5
IiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107CisgICAgCisgICAgX19i
bG9jayBib29sIGZpbmlzaGVkRG93bmxvYWQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBzdGFydERv
d25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlclJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rv
d25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRl
OworICAgICAgICBkZWxlZ2F0ZS53aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiA9IF4oV0tEb3du
bG9hZCAqLCBOU0hUVFBVUkxSZXNwb25zZSAqcmVzcG9uc2UsIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKSB7
CisgICAgICAgICAgICBFWFBFQ1RfTlVMTChyZXF1ZXN0LkhUVFBCb2R5KTsgLy8gRklYTUU6IFdl
IHByb2JhYmx5IHdhbnQgdG8gbWFrZSB0aGlzIG5vbi1udWxsLgorICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwu
YWJzb2x1dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0Nv
ZGUsIDMwMSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVy
RmllbGRzW0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQ
RUNUX1dLX1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5V
UkwgVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0
ZVN0cmluZyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJl
Y3RQb2xpY3lBbGxvdyk7CisgICAgICAgIH07CisgICAgICAgIGRlbGVnYXRlLmRlY2lkZURlc3Rp
bmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0
aW9uSGFuZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdn
ZXN0ZWRGaWxlbmFtZSwgInJlZGlyZWN0VGFyZ2V0LnR4dCIpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5wYXRoLCAiL3JlZGlyZWN0VGFyZ2V0Iik7CisgICAgICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoZG93bmxvYWQub3JpZ2luYWxSZXF1ZXN0LlVSTC5wYXRoLCAi
LyIpOworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcsIHNlcnZlclJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAg
ICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2ggPSBeKFdLRG93bmxv
YWQgKikgeworICAgICAgICAgICAgZmluaXNoZWREb3dubG9hZCA9IHRydWU7CisgICAgICAgIH07
CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmaW5pc2hlZERvd25sb2FkKTsKKworICAgIGNoZWNr
RmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaGkiKTsKKyAgICAKKyAgICBFWFBF
Q1RfRVEoc2VydmVyLnRvdGFsUmVxdWVzdHMoKSwgMnUpOworCisgICAgY2hlY2tDYWxsYmFja1Jl
Y29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpXaWxsUmVkaXJlY3Qs
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBE
b3dubG9hZENhbGxiYWNrOjpEaWRXcml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6
OkRpZEZpbmlzaAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQsIFJlZGlyZWN0Q2FuY2Vs
KQoreworICAgIGF1dG8gc2VydmVyID0gcmVkaXJlY3RTZXJ2ZXIoKTsKKyAgICBOU1VSTFJlcXVl
c3QgKnNlcnZlclJlcXVlc3QgPSBzZXJ2ZXIucmVxdWVzdCgpOworICAgIGF1dG8gZGVsZWdhdGUg
PSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2Vi
VmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdh
dGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgY2FuY2VsbGVkID0g
ZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVzdDpzZXJ2ZXIucmVx
dWVzdCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAg
ICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUud2lsbFBl
cmZvcm1IVFRQUmVkaXJlY3Rpb24gPSBeKFdLRG93bmxvYWQgKiwgTlNIVFRQVVJMUmVzcG9uc2Ug
KnJlc3BvbnNlLCBOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoV0tEb3dubG9hZFJlZGlyZWN0UG9saWN5KSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKHJlc3BvbnNlLlVSTC5hYnNvbHV0ZVN0cmluZywgc2VydmVyUmVxdWVzdC5VUkwuYWJzb2x1
dGVTdHJpbmcpOworICAgICAgICAgICAgRVhQRUNUX0VRKHJlc3BvbnNlLnN0YXR1c0NvZGUsIDMw
MSk7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UuYWxsSGVhZGVyRmllbGRz
W0AiQ3VzdG9tLU5hbWUiXSwgIkN1c3RvbS1WYWx1ZSIpOworICAgICAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKHJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLCBbc2VydmVyUmVxdWVzdC5VUkwgVVJM
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAicmVkaXJlY3RUYXJnZXQiXS5hYnNvbHV0ZVN0cmlu
Zyk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXS0Rvd25sb2FkUmVkaXJlY3RQb2xp
Y3lDYW5jZWwpOworICAgICAgICB9OworICAgICAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9y
ID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsK
KyAgICAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VtZURhdGEpOworICAgICAgICAgICAgRVhQRUNU
X1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBj
YW5jZWxsZWQgPSB0cnVlOworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmY2Fu
Y2VsbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERv
d25sb2FkQ2FsbGJhY2s6OldpbGxSZWRpcmVjdCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworICAgIEVYUEVDVF9FUShzZXJ2ZXIudG90YWxSZXF1
ZXN0cygpLCAxdSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwgRG93bmxvYWRSZXF1ZXN0RmFpbHVy
ZSkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7IH0pOworICAgIE5TVVJMUmVxdWVzdCAqc2Vy
dmVyUmVxdWVzdCA9IHNlcnZlci5yZXF1ZXN0KCk7CisgICAgc2VydmVyLmNhbmNlbCgpOworICAg
IGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2Vd
OworICAgIGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAg
IHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJv
b2wgZmFpbGVkID0gZmFsc2U7CisgICAgW3dlYlZpZXcgc3RhcnREb3dubG9hZFVzaW5nUmVxdWVz
dDpzZXJ2ZXJSZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tEb3dubG9hZCAqZG93bmxvYWQp
IHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdh
dGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQsIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKnJlc3VtZURhdGEpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShl
cnJvci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgRVhQRUNUX0VRKGVy
cm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5ub3RDb25uZWN0VG9Ib3N0KTsKKyAgICAgICAgICAgIGZh
aWxlZCA9IHRydWU7CisgICAgICAgIH07CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQp
OworCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOworfQorCitURVNUKFdLRG93bmxv
YWQsIERvd25sb2FkUmVxdWVzdDQwNCkKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7CisgICAg
ICAgIHsgIi8iLCB7IDQwNCwgeyB9LCAiaHR0cCBib2R5IiB9IH0KKyAgICB9KTsKKyAgICBOU1VS
TCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhpc3QoKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxlYXNl
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAg
ICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOworCisgICAgX19ibG9jayBi
b29sIGRpZEZpbmlzaCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1Jl
cXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRv
d25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAg
IGRlbGVnYXRlLmRlY2lkZURlc3RpbmF0aW9uVXNpbmdSZXNwb25zZSA9IF4oV0tEb3dubG9hZCAq
LCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlciko
TlNVUkwgKikpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxv
YWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICAgICAgZGVsZWdhdGUuZG93bmxvYWREaWRGaW5pc2gg
PSBeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgICAgICBkaWRGaW5pc2ggPSB0cnVl
OworICAgICAgICB9OworICAgIH1dOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoKTsKKworICAg
IGNoZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiaHR0cCBib2R5Iik7CisK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRX
cml0ZURhdGEsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZEZpbmlzaCwKKyAgICB9KTsK
K30KKworVEVTVChXS0Rvd25sb2FkLCBOZXR3b3JrUHJvY2Vzc0NyYXNoKQoreworICAgIGF1dG8g
c2VydmVyID0gZG93bmxvYWRUZXN0U2VydmVyKCk7CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxv
YWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgYXV0byB3ZWJW
aWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0
aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25z
ZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNv
bXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgIH07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgd2FpdEZvckZpcnN0NWsoZGVs
ZWdhdGUpOworICAgIAorICAgIF9fYmxvY2sgYm9vbCB0ZXJtaW5hdGVkID0gZmFsc2U7CisgICAg
ZGVsZWdhdGUuZGlkRmFpbFdpdGhFcnJvciA9IF4oV0tEb3dubG9hZCAqLCBOU0Vycm9yICplcnJv
ciwgTlNEYXRhICopIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwgTlNV
UkxFcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvci5jb2RlLCBOU1VSTEVycm9y
TmV0d29ya0Nvbm5lY3Rpb25Mb3N0KTsKKyAgICAgICAgdGVybWluYXRlZCA9IHRydWU7CisgICAg
fTsKKyAgICBbd2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX3Rlcm1pbmF0
ZU5ldHdvcmtQcm9jZXNzXTsKKyAgICBVdGlsOjpydW4oJnRlcm1pbmF0ZWQpOworICAgIGNoZWNr
Q2FsbGJhY2tSZWNvcmQoZGVsZWdhdGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2
aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3Bv
bnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVE
b3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6OkRpZFdyaXRlRGF0YSwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6RGlkRmFpbFdpdGhFcnJvcgorICAgIH0pOworfQorCitURVNUKFdLRG93bmxvYWQs
IFN1Z2dlc3RlZEZpbGVuYW1lRnJvbUhvc3QpCit7CisgICAgSFRUUFNlcnZlciBzZXJ2ZXIoewor
ICAgICAgICB7ICIvIiwgeyAiZG93bmxvYWQgY29udGVudCIgfSB9CisgICAgfSk7CisgICAgTlNV
UkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4aXN0KCk7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFz
ZV07CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIGRlbGVnYXRl
Lm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uUmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93
bmxvYWQuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGlu
YXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJlc3Bv
bnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoTlNVUkwgKikpIHsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxl
bmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5zdWdnZXN0ZWRGaWxlbmFtZSwgIjEyNy4wLjAuMS50eHQiKTsKKyAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxl
Z2F0ZSB3YWl0Rm9yRG93bmxvYWREaWRGaW5pc2hdOworCisgICAgY2hlY2tGaWxlQ29udGVudHMo
ZXhwZWN0ZWREb3dubG9hZEZpbGUsICJkb3dubG9hZCBjb250ZW50Iik7CisgICAgY2hlY2tDYWxs
YmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0
aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2Us
CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25s
b2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxi
YWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBSZXF1ZXN0SFRU
UEJvZHkpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRlc3RTZXJ2ZXIoKTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBfX2Jsb2Nr
IGJvb2wgZG9uZSA9IGZhbHNlOworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
W3NlcnZlci5yZXF1ZXN0KCkgbXV0YWJsZUNvcHldIGF1dG9yZWxlYXNlXTsKKyAgICByZXF1ZXN0
LkhUVFBCb2R5ID0gW0AiYm9keSIgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddOworICAgIFt3ZWJWaWV3IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6cmVxdWVzdCBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKGRvd25sb2FkLm9yaWdpbmFsUmVxdWVzdC5IVFRQQm9keSk7IC8vIEZJWE1FOiBXZSBwcm9i
YWJseSB3YW50IHRvIG1ha2UgdGhpcyBub24tbnVsbC4KKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBQYXRo
TXVzdEV4aXN0KQoreworICAgIE5TVVJMICp0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0
aDpbTlNUZW1wb3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6
QCJEb3dubG9hZFRlc3QiXSBpc0RpcmVjdG9yeTpZRVNdOworICAgIFtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOnRlbXBEaXIgZXJyb3I6bmlsXTsKKyAgICBO
U1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSBbdGVtcERpciBVUkxCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJleGFtcGxlLnR4dCJdOworCisgICAgYXV0byBzZXJ2ZXIgPSBkb3dubG9hZFRl
c3RTZXJ2ZXIoKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBu
ZXddIGF1dG9yZWxlYXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1
dG9yZWxlYXNlXTsKKyAgICB3ZWJWaWV3Lm5hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
CisgICAgX19ibG9jayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIGRlbGVnYXRlLm5hdmlnYXRp
b25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9u
UmVzcG9uc2UgKiwgV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZG93bmxvYWQuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICAgICAgZGVsZWdhdGUuZGVjaWRlRGVzdGluYXRpb25Vc2lu
Z1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoZXhwZWN0ZWREb3dubG9hZEZpbGUpOworICAgICAgICB9OworICAgICAgICBk
ZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVycm9y
LCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFpbiwg
TlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvckNhbm5vdENyZWF0ZUZpbGUpOworICAgICAgICAgICAgZmFpbGVkID0gdHJ1ZTsKKyAg
ICAgICAgfTsKKyAgICB9OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0
KCldOworICAgIFV0aWw6OnJ1bigmZmFpbGVkKTsKKyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRl
bGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisg
ICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlQmVjYW1lRG93bmxvYWQsCisgICAgICAg
IERvd25sb2FkQ2FsbGJhY2s6OkRlY2lkZURlc3RpbmF0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yCisgICAgfSk7Cit9CisKK1RFU1QoV0tEb3dubG9hZCwg
RmlsZU11c3ROb3RFeGlzdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZl
cigpOworICAgIE5TVVJMICpleHBlY3RlZERvd25sb2FkRmlsZSA9IHRlbXBGaWxlVGhhdERvZXNO
b3RFeGlzdCgpOworICAgIF9fYmxvY2sgYXV0byByZXRhaW5lZERlbGVnYXRlID0gYWRvcHROUyhb
VGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBy
ZXRhaW5lZERlbGVnYXRlLmdldCgpOworCisgICAgRVhQRUNUX1RSVUUoW1tAImluaXRpYWwgZGF0
YSBvbiBkaXNrIiBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gd3JpdGVU
b1VSTDpleHBlY3RlZERvd25sb2FkRmlsZSBhdG9taWNhbGx5OllFU10pOworCisgICAgX19ibG9j
ayBib29sIGZhaWxlZCA9IGZhbHNlOworICAgIHJldGFpbmVkRGVsZWdhdGUuZ2V0KCkubmF2aWdh
dGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRp
b25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBkb3dubG9hZC5k
ZWxlZ2F0ZSA9IHJldGFpbmVkRGVsZWdhdGUuZ2V0KCk7CisgICAgICAgIHJldGFpbmVkRGVsZWdh
dGUuZ2V0KCkuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICpk
b3dubG9hZCwgTlNVUkxSZXNwb25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhh
bmRsZXIpKE5TVVJMICopKSB7CisKKyAgICAgICAgICAgIHJldGFpbmVkRGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgICAgIGRvd25sb2FkLmRl
bGVnYXRlID0gcmV0YWluZWREZWxlZ2F0ZS5nZXQoKTsKKworICAgICAgICAgICAgcmV0YWluZWRE
ZWxlZ2F0ZS5nZXQoKS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3Ig
KmVycm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgICAgIEVYUEVDVF9XS19TVFJFUShlcnJv
ci5kb21haW4sIE5TVVJMRXJyb3JEb21haW4pOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShl
cnJvci5jb2RlLCBOU1VSTEVycm9yQ2Fubm90Q3JlYXRlRmlsZSk7CisgICAgICAgICAgICAgICAg
ZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGV4cGVjdGVkRG93bmxvYWRGaWxlKTsKKyAgICAgICAgfTsKKyAgICB9OworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFV0aWw6OnJ1bigmZmFp
bGVkKTsKKworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQocmV0YWluZWREZWxlZ2F0ZS5nZXQoKSwg
eworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVycm9yLAorICAgIH0pOwor
fQorCitURVNUKFdLRG93bmxvYWQsIERlc3RpbmF0aW9uTnVsbFN0cmluZykKK3sKKyAgICBhdXRv
IHNlcnZlciA9IGRvd25sb2FkVGVzdFNlcnZlcigpOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rl
c3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIGF1dG8gd2ViVmlldyA9
IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBfX2Jsb2NrIGJvb2wgZmFpbGVkID0gZmFsc2U7Cisg
ICAgZGVsZWdhdGUubmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQgPSBeKFdLV2Vi
VmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgewor
ICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgICAgICBkZWxlZ2F0ZS5k
ZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNw
b25zZSAqLCBOU1N0cmluZyAqLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMICopKSB7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAgICAgICB9OworICAgICAg
ICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0gXihXS0Rvd25sb2FkICosIE5TRXJyb3IgKmVy
cm9yLCBOU0RhdGEgKikgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGVycm9yLmRvbWFp
biwgTlNVUkxFcnJvckRvbWFpbik7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwg
TlNVUkxFcnJvckNhbmNlbGxlZCk7CisgICAgICAgICAgICBmYWlsZWQgPSB0cnVlOworICAgICAg
ICB9OworICAgIH07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07
CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworICAgIGNoZWNrQ2FsbGJhY2tSZWNvcmQoZGVsZWdh
dGUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJlc3BvbnNlLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICAgICAgRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24sCisgICAgICAgIERvd25sb2FkQ2FsbGJh
Y2s6OkRpZEZhaWxXaXRoRXJyb3IKKyAgICB9KTsKK30KKworLy8gTW9qYXZlIGRvd25sb2FkIHRh
c2tzIGRvbid0IGNhbGwgZGlkUmVjZWl2ZUNoYWxsZW5nZSBmb3Igc2VydmVyIHRydXN0IGV2YWx1
YXRpb24uCisjaWYgIVVTRShMRUdBQ1lfQ0ZORVRXT1JLX0RPV05MT0FEUykKK1RFU1QoV0tEb3du
bG9hZCwgQ2hhbGxlbmdlU3VjY2VzcykKK3sKKyAgICBIVFRQU2VydmVyIHNlcnZlcih7eyAiLyIs
IHsgImRvd25sb2FkIGNvbnRlbnQiIH19fSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzKTsK
KyAgICBhdXRvIGRlbGVnYXRlID0gW1tUZXN0RG93bmxvYWREZWxlZ2F0ZSBuZXddIGF1dG9yZWxl
YXNlXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsK
KyAgICBOU1VSTCAqZXhwZWN0ZWREb3dubG9hZEZpbGUgPSB0ZW1wRmlsZVRoYXREb2VzTm90RXhp
c3QoKTsKKyAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5k
b3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgZmlu
aXNoZWQgPSB0cnVlOworICAgIH07CisgICAgX19ibG9jayBib29sIHJlY2VpdmVkQ2hhbGxlbmdl
ID0gZmFsc2U7CisgICAgZGVsZWdhdGUuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ID0gXihXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5n
ZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEo
Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRo
ZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwg
Y3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3Rd
KTsKKyAgICAgICAgcmVjZWl2ZWRDaGFsbGVuZ2UgPSB0cnVlOworICAgIH07CisgICAgZGVsZWdh
dGUuZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJM
UmVzcG9uc2UgKiwgTlNTdHJpbmcgKiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTCAq
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihleHBlY3RlZERvd25sb2FkRmlsZSk7Cisg
ICAgfTsKKyAgICBbd2ViVmlldyBzdGFydERvd25sb2FkVXNpbmdSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAg
ICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH1dOworICAgIFV0aWw6OnJ1bigm
ZmluaXNoZWQpOworICAgIEVYUEVDVF9UUlVFKHJlY2VpdmVkQ2hhbGxlbmdlKTsKKyAgICBjaGVj
a0ZpbGVDb250ZW50cyhleHBlY3RlZERvd25sb2FkRmlsZSwgImRvd25sb2FkIGNvbnRlbnQiKTsK
KyAgICBjaGVja0NhbGxiYWNrUmVjb3JkKGRlbGVnYXRlLCB7CisgICAgICAgIERvd25sb2FkQ2Fs
bGJhY2s6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNr
OjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVE
YXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKK30KKyNl
bmRpZgorCitURVNUKFdLRG93bmxvYWQsIENoYWxsZW5nZUZhaWx1cmUpCit7CisgICAgSFRUUFNl
cnZlciBzZXJ2ZXIoeyB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMpOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAg
IGF1dG8gd2ViVmlldyA9IFtbV0tXZWJWaWV3IG5ld10gYXV0b3JlbGVhc2VdOworICAgIF9fYmxv
Y2sgYm9vbCBmYWlsZWQgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRGYWlsV2l0aEVycm9yID0g
XihXS0Rvd25sb2FkICpkb3dubG9hZCwgTlNFcnJvciAqZXJyb3IsIE5TRGF0YSAqcmVzdW1lRGF0
YSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoZXJyb3IuZG9tYWluLCBOU1VSTEVycm9yRG9t
YWluKTsKKyNpZiBVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIC8vIE1v
amF2ZSBkb3dubG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNl
cnZlciB0cnVzdCBldmFsdWF0aW9uLgorICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgTlNV
UkxFcnJvclNlY3VyZUNvbm5lY3Rpb25GYWlsZWQpOworI2Vsc2UKKyAgICAgICAgRVhQRUNUX0VR
KGVycm9yLmNvZGUsIE5TVVJMRXJyb3JDYW5jZWxsZWQpOworI2VuZGlmCisgICAgICAgIGZhaWxl
ZCA9IHRydWU7CisgICAgfTsKKyAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRDaGFsbGVuZ2UgPSBm
YWxzZTsKKyAgICBkZWxlZ2F0ZS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBe
KFdLRG93bmxvYWQgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2
b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3Np
dGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRp
Y2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIG5pbCk7
CisgICAgICAgIHJlY2VpdmVkQ2hhbGxlbmdlID0gdHJ1ZTsKKyAgICB9OworICAgIFt3ZWJWaWV3
IHN0YXJ0RG93bmxvYWRVc2luZ1JlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRG93bmxvYWQgKmRvd25sb2FkKSB7CisgICAgICAgIGRvd25sb2FkLmRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgfV07CisgICAgVXRpbDo6cnVuKCZmYWlsZWQpOworI2lmICFVU0Uo
TEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgRVhQRUNUX1RSVUUocmVjZWl2ZWRDaGFs
bGVuZ2UpOworI2VuZGlmCisgICAgY2hlY2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworI2lm
ICFVU0UoTEVHQUNZX0NGTkVUV09SS19ET1dOTE9BRFMpCisgICAgICAgIC8vIE1vamF2ZSBkb3du
bG9hZCB0YXNrcyBkb24ndCBjYWxsIGRpZFJlY2VpdmVDaGFsbGVuZ2UgZm9yIHNlcnZlciB0cnVz
dCBldmFsdWF0aW9uLgorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwKKyNlbmRpZgorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGYWlsV2l0aEVy
cm9yCisgICAgfSk7Cit9CisKK3ZvaWQgYmxvYlRlc3QoYm9vbCBkb3dubG9hZEZyb21OYXZpZ2F0
aW9uQWN0aW9uLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8RG93bmxvYWRDYWxsYmFjaz4gZXhwZWN0
ZWRDYWxsYmFja3MpCit7CisgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+IgorICAgICJm
dW5jdGlvbiBkb3dubG9hZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdhJyk7IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisg
ICAgIiAgICBhLmhyZWYgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuZG93
bmxvYWQgPSAnZG93bmxvYWRGaWxlbmFtZSc7IgorICAgICIgICAgYS5jbGljaygpOyIKKyAgICAi
fSIKKyAgICAiPC9zY3JpcHQ+PGJvZHkgb25sb2FkPSdkb3dubG9hZEJsb2IoKSc+PC9ib2R5PiI7
CisgICAgTlNVUkwgKmV4cGVjdGVkRG93bmxvYWRGaWxlID0gdGVtcEZpbGVUaGF0RG9lc05vdEV4
aXN0KCk7CisgICAgYXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07
CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6aHRtbCBiYXNlVVJMOm5pbF07CisgICAgYXV0
byBkZWxlZ2F0ZSA9IFtbVGVzdERvd25sb2FkRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Cisg
ICAgd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKyAgICBkZWxlZ2F0ZS5k
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0gXihXS05hdmlnYXRpb25BY3Rpb24gKmFj
dGlvbiwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KSB7CisgICAgICAgIGlmIChbYWN0aW9uLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0UoYWN0
aW9uLnNob3VsZFBlcmZvcm1Eb3dubG9hZCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
RVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUsICJibG9iIik7CisgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShhY3Rpb24uc2hvdWxkUGVyZm9ybURvd25sb2FkKTsKKyAgICAg
ICAgICAgIGlmIChkb3dubG9hZEZyb21OYXZpZ2F0aW9uQWN0aW9uKSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAg
fTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQgPSBeKFdL
V2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKmFjdGlvbiwgV0tEb3dubG9hZCAqZG93bmxv
YWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGFjdGlvbi5yZXF1ZXN0LlVSTC5zY2hlbWUs
ICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShkb3dubG9hZC5vcmlnaW5hbFJlcXVl
c3QuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgZG93bmxvYWQuZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmlnYXRpb25SZXNwb25zZURpZEJlY29tZURv
d25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBX
S0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
cmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGRv
d25sb2FkLm9yaWdpbmFsUmVxdWVzdC5VUkwuc2NoZW1lLCAiYmxvYiIpOworICAgICAgICBkb3du
bG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOworICAgIH07CisgICAgZGVsZWdhdGUuZGVjaWRlRGVz
dGluYXRpb25Vc2luZ1Jlc3BvbnNlID0gXihXS0Rvd25sb2FkICosIE5TVVJMUmVzcG9uc2UgKnJl
c3BvbnNlLCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWUsIHZvaWQgKF5jb21wbGV0aW9uSGFu
ZGxlcikoTlNVUkwgKikpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLlVSTC5z
Y2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShzdWdnZXN0ZWRGaWxlbmFt
ZSwgImRvd25sb2FkRmlsZW5hbWUiKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZXhwZWN0
ZWREb3dubG9hZEZpbGUpOworICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsK
KyAgICBkZWxlZ2F0ZS5kb3dubG9hZERpZEZpbmlzaCA9IF4oV0tEb3dubG9hZCAqKSB7CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH07CisgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgIGNo
ZWNrRmlsZUNvbnRlbnRzKGV4cGVjdGVkRG93bmxvYWRGaWxlLCAiMTIzIik7CisgICAgY2hlY2tD
YWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgZXhwZWN0ZWRDYWxsYmFja3MpOworfQorCitURVNUKFdL
RG93bmxvYWQsIEJsb2JSZXNwb25zZSkKK3sKKyAgICBibG9iVGVzdChmYWxzZSwgeworICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENh
bGxiYWNrOjpOYXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZp
Z2F0aW9uUmVzcG9uc2UsCisgICAgICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNw
b25zZUJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0
aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGlkV3JpdGVEYXRhLAorICAgICAg
ICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9KTsKKworICAgIGJsb2JUZXN0KHRy
dWUsIHsKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAg
ICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRD
YWxsYmFjazo6TmF2aWdhdGlvbkFjdGlvbkJlY2FtZURvd25sb2FkLAorICAgICAgICBEb3dubG9h
ZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
RGlkV3JpdGVEYXRhLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEaWRGaW5pc2gKKyAgICB9
KTsKK30KKworVEVTVChXS0Rvd25sb2FkLCBCbG9iUmVzcG9uc2VOb0ZpbGVuYW1lKQoreworICAg
IE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PiIKKyAgICAiZnVuY3Rpb24gZG93bmxvYWRCbG9i
KCkgeyIKKyAgICAiICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyIKKyAg
ICAiICAgIHZhciBiID0gbmV3IEJsb2IoWzEsMiwzXSk7IgorICAgICIgICAgYS5ocmVmID0gVVJM
LmNyZWF0ZU9iamVjdFVSTChiKTsiCisgICAgIiAgICBhLmNsaWNrKCk7IgorICAgICJ9IgorICAg
ICI8L3NjcmlwdD48Ym9keSBvbmxvYWQ9J2Rvd25sb2FkQmxvYigpJz48L2JvZHk+IjsKKyAgICBh
dXRvIHdlYlZpZXcgPSBbW1dLV2ViVmlldyBuZXddIGF1dG9yZWxlYXNlXTsKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpodG1sIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL3dlYmtpdC5vcmcvIl1dOworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3dubG9hZERl
bGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRlbGVnYXRl
ID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
biA9IF4oV0tOYXZpZ2F0aW9uQWN0aW9uICphY3Rpb24sIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSkgeworICAgICAgICBFWFBFQ1RfRkFMU0UoYWN0
aW9uLnNob3VsZFBlcmZvcm1Eb3dubG9hZCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93KTsKKyAgICB9OworICAgIGRlbGVnYXRlLm5hdmln
YXRpb25SZXNwb25zZURpZEJlY29tZURvd25sb2FkID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0
aW9uUmVzcG9uc2UgKnJlc3BvbnNlLCBXS0Rvd25sb2FkICpkb3dubG9hZCkgeworICAgICAgICBF
WFBFQ1RfV0tfU1RSRVEocmVzcG9uc2UucmVzcG9uc2UuVVJMLnNjaGVtZSwgImJsb2IiKTsKKyAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLl9mcmFtZS5zZWN1cml0eU9yaWdpbi5ob3N0
LCAid2Via2l0Lm9yZyIpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZp
bGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkLAor
ICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpEZWNpZGVEZXN0aW5hdGlvbgorICAgIH0pOworfQor
CitURVNUKFdLRG93bmxvYWQsIFN1YmZyYW1lT3JpZ2luYXRvcikKK3sKKyAgICBjb25zdCBjaGFy
KiBncmFuZGNoaWxkRnJhbWVIVE1MID0gIjxzY3JpcHQ+IgorICAgICJmdW5jdGlvbiBkb3dubG9h
ZEJsb2IoKSB7IgorICAgICIgICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7
IgorICAgICIgICAgdmFyIGIgPSBuZXcgQmxvYihbMSwyLDNdKTsiCisgICAgIiAgICBhLmhyZWYg
PSBVUkwuY3JlYXRlT2JqZWN0VVJMKGIpOyIKKyAgICAiICAgIGEuY2xpY2soKTsiCisgICAgIn0i
CisgICAgIjwvc2NyaXB0Pjxib2R5IG9ubG9hZD0nZG93bmxvYWRCbG9iKCknPjwvYm9keT4iOwor
ICAgIEhUVFBTZXJ2ZXIgZ3JhbmRjaGlsZEZyYW1lU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsg
Z3JhbmRjaGlsZEZyYW1lSFRNTCB9IH0KKyAgICB9KTsKKyAgICBIVFRQU2VydmVyIGNoaWxkRnJh
bWVTZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgZ3JhbmRjaGls
ZEZyYW1lU2VydmVyLnBvcnQoKV0gfSB9CisgICAgfSk7CisgICAgTlNVUkxSZXF1ZXN0ICpncmFu
ZGNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gZ3JhbmRjaGlsZEZyYW1lU2VydmVyLnJlcXVlc3Qo
KTsKKyAgICBOU1VSTFJlcXVlc3QgKmNoaWxkRnJhbWVTZXJ2ZXJSZXF1ZXN0ID0gY2hpbGRGcmFt
ZVNlcnZlci5yZXF1ZXN0KCk7CisgICAgdWludDE2X3QgZ3JhbmRjaGlsZEZyYW1lU2VydmVyUG9y
dCA9IGdyYW5kY2hpbGRGcmFtZVNlcnZlci5wb3J0KCk7CisKKyAgICBOU1N0cmluZyAqbWFpbkhU
TUwgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjxpZnJhbWUgc3JjPSdodHRwOi8vMTI3
LjAuMC4xOiVkLyc+PC9pZnJhbWU+IiwgY2hpbGRGcmFtZVNlcnZlci5wb3J0KCldOworCisgICAg
YXV0byB3ZWJWaWV3ID0gW1tXS1dlYlZpZXcgbmV3XSBhdXRvcmVsZWFzZV07CisgICAgW3dlYlZp
ZXcgbG9hZEhUTUxTdHJpbmc6bWFpbkhUTUwgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnLyJdXTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBbW1Rlc3REb3du
bG9hZERlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOworICAgIHdlYlZpZXcubmF2aWdhdGlvbkRl
bGVnYXRlID0gZGVsZWdhdGU7CisgICAgZGVsZWdhdGUuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlID0gXihXS05hdmlnYXRpb25SZXNwb25zZSAqcmVzcG9uc2UsIHZvaWQgKF5jb21w
bGV0aW9uSGFuZGxlcikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKSB7CisgICAgICAgIGlm
IChbcmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpA
Imh0dHA6Ly93ZWJraXQub3JnLyJdCisgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpjaGlsZEZyYW1lU2VydmVyUmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmddCisgICAgICAgICAgICB8fCBbcmVzcG9uc2UucmVzcG9uc2Uu
VVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpncmFuZGNoaWxkRnJhbWVTZXJ2ZXJS
ZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZ10pCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9h
ZCk7CisgICAgfTsKKyAgICBkZWxlZ2F0ZS5uYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3du
bG9hZCA9IF4oV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvblJlc3BvbnNlICpyZXNwb25zZSwgV0tE
b3dubG9hZCAqZG93bmxvYWQpIHsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHJlc3BvbnNlLnJl
c3BvbnNlLlVSTC5zY2hlbWUsICJibG9iIik7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShyZXNw
b25zZS5fZnJhbWUuc2VjdXJpdHlPcmlnaW4uaG9zdCwgIjEyNy4wLjAuMSIpOworICAgICAgICBF
WFBFQ1RfRVEocmVzcG9uc2UuX2ZyYW1lLnNlY3VyaXR5T3JpZ2luLnBvcnQsIGdyYW5kY2hpbGRG
cmFtZVNlcnZlclBvcnQpOworICAgICAgICBkb3dubG9hZC5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgIH07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkZWxlZ2F0ZS5kZWNp
ZGVEZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UgPSBeKFdLRG93bmxvYWQgKiwgTlNVUkxSZXNwb25z
ZSAqcmVzcG9uc2UsIE5TU3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZSwgdm9pZCAoXmNvbXBsZXRp
b25IYW5kbGVyKShOU1VSTCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEocmVzcG9uc2Uu
VVJMLnNjaGVtZSwgImJsb2IiKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKHN1Z2dlc3RlZEZp
bGVuYW1lLCAiVW5rbm93biIpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOworICAg
ICAgICBkb25lID0gdHJ1ZTsKKyAgICB9OworICAgIFV0aWw6OnJ1bigmZG9uZSk7CisgICAgY2hl
Y2tDYWxsYmFja1JlY29yZChkZWxlZ2F0ZSwgeworICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpO
YXZpZ2F0aW9uQWN0aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uQWN0
aW9uLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UsCisgICAg
ICAgIERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25BY3Rpb24sCisgICAgICAgIERvd25sb2Fk
Q2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZSwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6
TmF2aWdhdGlvbkFjdGlvbiwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlvblJl
c3BvbnNlLAorICAgICAgICBEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2VCZWNh
bWVEb3dubG9hZCwKKyAgICAgICAgRG93bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24K
KyAgICB9KTsKK30KKworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJ
T1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rv
d25sb2FkUHJvZ3Jlc3MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0Rvd25sb2FkUHJvZ3Jlc3MubW0KaW5kZXggZjAwM2FjMjhjZTFlODk2N2Y1ZGFiMGQ4ODhjYzc4
Njg3NTExNjU2OS4uMWM5MjU2NjRjMGU1NzE1NmNmMzk4ZTM2YWIyZGJiZGUzOGQ1ZWQ2YiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZFBy
b2dyZXNzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWRQcm9ncmVzcy5tbQpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyB2b2lkKiBwcm9ncmVz
c09ic2VydmluZ0NvbnRleHQgPSAmcHJvZ3Jlc3NPYnNlcnZpbmdDb250ZXh0OwogLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNw
b25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5k
bGVyCiB7CiAgICAgaWYgKG1fc3RhcnRUeXBlID09IERvd25sb2FkU3RhcnRUeXBlOjpDb252ZXJ0
TG9hZFRvRG93bmxvYWQpCi0gICAgICAgIGRlY2lzaW9uSGFuZGxlcihfV0tOYXZpZ2F0aW9uUmVz
cG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hZCk7CisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkKTsKICAgICBlbHNlCiAgICAgICAgIGRlY2lz
aW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJp
dmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93
c2VyUHJpdmFjeS5tbQppbmRleCA5NzU4N2Q2NTA3MjNkMDJlM2VhZWNmYmI1MTQzOGE5OWU0Nzky
MzgxLi4yY2ZmYzlhNzA5ZjU1MGRmYTFkZDVjMzFkYjIyOTgyYjRhZTBkMWM2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZh
Y3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJy
b3dzZXJQcml2YWN5Lm1tCkBAIC0xMzcyLDYgKzEzNzIsOCBAQCBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgICAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBh
cmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CiAgICAgICAgICAgICBFWFBFQ1RfRkFM
U0UoISFlcnJvcik7CisgICAgICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICAgICAgV1RG
TG9nQWx3YXlzKCJFUlJPUiAlQCIsIGVycm9yKTsKICAgICAgICAgICAgIGlmIChpc01haW5GcmFt
ZSkKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpA
ImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZhY3ktdGVzdC1h
Ym91dC1ibGFuay1zdWJmcmFtZSJdKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Byb2Nlc3NTd2Fw
T25OYXZpZ2F0aW9uLm1tCmluZGV4IGE3ZDRlNTNhMzUxNzkyNDVkMWU5MDQwYzNlYTU2ZTNhMDgy
MjNmY2QuLmI5MTJkMTY1YjdhZGM5MTFhODQ0MWY4MmUyY2I0NDUwZDYwODJmYjkgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
cm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNVUkw+IGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkw7CiAKIC0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6KFdLTmF2aWdhdGlvblJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cgogewotICAgIGRlY2lzaW9uSGFuZGxlcihzaG91bGRDb252ZXJ0VG9Eb3dubG9hZCA/IF9XS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29tZURvd25sb2FkIDogV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3lBbGxvdyk7CisgICAgZGVjaXNpb25IYW5kbGVyKHNob3VsZENvbnZlcnRUb0Rvd25s
b2FkID8gV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEb3dubG9hZCA6IFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5QWxsb3cpOwogfQogCiAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihX
S05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1F1aWNrTG9vay5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUXVpY2tMb29rLm1tCmluZGV4IGFlMmJjN2ZlNjY1MzRkNjc5YTQ4ZmI0
MWY2MTNmM2UwOGEwODAxYmYuLjFmOTdkMjk0MjIwMmU4MGNkZjMwNjAwZjU2NWJlNGIwZTEzMmVm
MDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVp
Y2tMb29rLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUXVp
Y2tMb29rLm1tCkBAIC0zNjQsNyArMzY0LDcgQEAgVEVTVChRdWlja0xvb2ssIENhbmNlbFJlc3Bv
bnNlQWZ0ZXJMb2FkaW5nUHJldmlldykKIAogVEVTVChRdWlja0xvb2ssIERvd25sb2FkUmVzcG9u
c2VCZWZvcmVMb2FkaW5nUHJldmlldykKIHsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhb
W1F1aWNrTG9va0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0Rv
Y3VtZW50VVJMIHJlc3BvbnNlUG9saWN5Ol9XS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUJlY29t
ZURvd25sb2FkXSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tRdWlja0xvb2tEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZEZpbGVVUkw6cGFnZXNEb2N1bWVudFVSTCByZXNw
b25zZVBvbGljeTpXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkXSk7CiAgICAgcnVu
VGVzdERlY2lkZUJlZm9yZUxvYWRpbmcoZGVsZWdhdGUuZ2V0KCksIFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6cGFnZXNEb2N1bWVudFVSTF0pOwogICAgIEVYUEVDVF9FUShXZWJLaXRFcnJv
ckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UsIFtkZWxlZ2F0ZSBuYXZpZ2F0aW9u
RXJyb3JdLmNvZGUpOwogICAgIEVYUEVDVF9GQUxTRShbZGVsZWdhdGUgZGlkRmluaXNoTmF2aWdh
dGlvbl0pOwpAQCAtMzc5LDcgKzM3OSw3IEBAIFRFU1QoUXVpY2tMb29rLCBEb3dubG9hZFJlc3Bv
bnNlQmVmb3JlTG9hZGluZ1ByZXZpZXcpCiAjaWYgUExBVEZPUk0oSU9TKSAmJiBfX0lQSE9ORV9P
U19WRVJTSU9OX01JTl9SRVFVSVJFRCA+IDEzMDQwMAogVEVTVChRdWlja0xvb2ssIERvd25sb2Fk
UmVzcG9uc2VBZnRlckxvYWRpbmdQcmV2aWV3KQogewotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbUXVpY2tMb29rRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRGaWxlVVJMOnBh
Z2VzRG9jdW1lbnRVUkwgcHJldmlld01JTUVUeXBlOnBhZ2VzRG9jdW1lbnRQcmV2aWV3TUlNRVR5
cGUgcmVzcG9uc2VQb2xpY3k6X1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxv
YWRdKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1F1aWNrTG9va0RlbGVnYXRlIGFs
bG9jXSBpbml0V2l0aEV4cGVjdGVkRmlsZVVSTDpwYWdlc0RvY3VtZW50VVJMIHByZXZpZXdNSU1F
VHlwZTpwYWdlc0RvY3VtZW50UHJldmlld01JTUVUeXBlIHJlc3BvbnNlUG9saWN5OldLTmF2aWdh
dGlvblJlc3BvbnNlUG9saWN5RG93bmxvYWRdKTsKICAgICBydW5UZXN0RGVjaWRlQWZ0ZXJMb2Fk
aW5nKGRlbGVnYXRlLmdldCgpLCBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnBhZ2VzRG9j
dW1lbnRVUkxdKTsKICAgICBFWFBFQ1RfRVEoV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRl
ZEJ5UG9saWN5Q2hhbmdlLCBbZGVsZWdhdGUgbmF2aWdhdGlvbkVycm9yXS5jb2RlKTsKICAgICBF
WFBFQ1RfRkFMU0UoW2RlbGVnYXRlIGRpZEZpbmlzaE5hdmlnYXRpb25dKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUuaAppbmRleCA3YWFkMjNj
M2VjNWI0MjE3NTFlZGM4NDAwYzBhMGVhNjBiOGM0ODViLi40MzhlYmQwMWE4MWE1Yjc4NjI3MjZj
OTNjMDZhODc4MzJhYzU4NDFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0RG93bmxvYWREZWxlZ2F0ZS5oCkBAIC0yNCwxNyArMjQsMzUgQEAKICAqLwogCiAjaW1wb3J0
IDxXZWJLaXQvV2ViS2l0Lmg+Ci0jaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5o
PgogCi1AaW50ZXJmYWNlIFRlc3REb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxv
YWREZWxlZ2F0ZT4KLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWRE
aWRTdGFydCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9p
ZCAoXmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAq
KTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNl
KShfV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICosIHVpbnQ2NF90LCB1aW50
NjRfdCwgdWludDY0X3QpOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNp
ZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJp
bmcgKiwgdm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOwotQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQgKik7Ci1AcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2Fk
ICosIE5TRXJyb3IgKik7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25s
b2FkRGlkQ2FuY2VsKShfV0tEb3dubG9hZCAqKTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAq
LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOwotQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQg
KiwgTlNTdHJpbmcgKik7CitlbnVtIGNsYXNzIERvd25sb2FkQ2FsbGJhY2sgOiB1aW50OF90IHsK
KyAgICBXaWxsUmVkaXJlY3QsCisgICAgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCisgICAgRGVj
aWRlRGVzdGluYXRpb24sCisgICAgRGlkV3JpdGVEYXRhLAorICAgIERpZEZpbmlzaCwKKyAgICBE
aWRGYWlsV2l0aEVycm9yLAorICAgIE5hdmlnYXRpb25BY3Rpb25CZWNhbWVEb3dubG9hZCwKKyAg
ICBOYXZpZ2F0aW9uUmVzcG9uc2VCZWNhbWVEb3dubG9hZCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
LAorICAgIE5hdmlnYXRpb25SZXNwb25zZSwKK307CisKK0BpbnRlcmZhY2UgVGVzdERvd25sb2Fk
RGVsZWdhdGUgOiBOU09iamVjdDxXS0Rvd25sb2FkRGVsZWdhdGUsIFdLTmF2aWdhdGlvbkRlbGVn
YXRlPgorCitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uKShXS0Rvd25sb2FkICosIE5TSFRUUFVSTFJlc3BvbnNlICosIE5TVVJMUmVx
dWVzdCAqLCB2b2lkICheKShXS0Rvd25sb2FkUmVkaXJlY3RQb2xpY3kpKTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KShXS0Rvd25sb2FkICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXiko
TlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwqKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRlY2lkZURlc3RpbmF0aW9uVXNp
bmdSZXNwb25zZSkoV0tEb3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICosIE5TU3RyaW5nICosIHZv
aWQgKF4pKE5TVVJMICopKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
V3JpdGVEYXRhKShXS0Rvd25sb2FkICosIGludDY0X3QsIGludDY0X3QsIGludDY0X3QpOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoV0tEb3du
bG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkRmFpbFdpdGhF
cnJvcikoV0tEb3dubG9hZCAqLCBOU0Vycm9yICosIE5TRGF0YSAqKTsKKworQHByb3BlcnR5IChu
b25hdG9taWMsIGNvcHkpIHZvaWQgKF5uYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQp
KFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25BY3Rpb24gKiwgV0tEb3dubG9hZCAqKTsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChebmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21l
RG93bmxvYWQpKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb25SZXNwb25zZSAqLCBXS0Rvd25sb2Fk
ICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKShXS05hdmlnYXRpb25BY3Rpb24gKiwgdm9pZCAoXikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5KSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkoV0tOYXZpZ2F0aW9uUmVzcG9uc2UgKiwg
dm9pZCAoXikoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kpKTsKKworLSAodm9pZCl3YWl0Rm9y
RG93bmxvYWREaWRGaW5pc2g7CistIChWZWN0b3I8RG93bmxvYWRDYWxsYmFjaz4pdGFrZUNhbGxi
YWNrUmVjb3JkOworCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3REb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
RG93bmxvYWREZWxlZ2F0ZS5tbQppbmRleCAxZGI1Y2Q4MTFhYjZmNWQ5OWI0MTNlNmQyMWFhYTMw
MmE4MDFmZGQzLi5lOGRhOThhNTMwNGVjYjQ2MmRmYjI4Mjg0MDAwMTU5ODM2MjgxYjA5IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3REb3dubG9hZERlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdERvd25sb2FkRGVsZWdhdGUubW0K
QEAgLTI2LDY4ICsyNiwxMTMgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdERv
d25sb2FkRGVsZWdhdGUuaCIKIAotQGltcGxlbWVudGF0aW9uIFRlc3REb3dubG9hZERlbGVnYXRl
CisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg+CiAKLS0gKHZv
aWQpX2Rvd25sb2FkRGlkU3RhcnQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQKLXsKLSAgICBpZiAo
X2Rvd25sb2FkRGlkU3RhcnQpCi0gICAgICAgIF9kb3dubG9hZERpZFN0YXJ0KGRvd25sb2FkKTsK
K0BpbXBsZW1lbnRhdGlvbiBUZXN0RG93bmxvYWREZWxlZ2F0ZSB7CisgICAgVmVjdG9yPERvd25s
b2FkQ2FsbGJhY2s+IF9jYWxsYmFja1JlY29yZDsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6KF9X
S0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkw6KE5TVVJM
ICopdXJsCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgd2lsbFBlcmZv
cm1IVFRQUmVkaXJlY3Rpb246KE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVz
dDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRG93
bmxvYWRSZWRpcmVjdFBvbGljeSkpZGVjaXNpb25IYW5kbGVyCiB7Ci0gICAgaWYgKF9kaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RUb1VSTCkKLSAgICAgICAgX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dFRvVVJMKGRvd25sb2FkLCB1cmwpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxv
YWRDYWxsYmFjazo6V2lsbFJlZGlyZWN0KTsKKworICAgIEFTU0VSVChfd2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24pOworICAgIF93aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihkb3dubG9hZCwg
cmVzcG9uc2UsIHJlcXVlc3QsIGRlY2lzaW9uSGFuZGxlcik7CiB9CiAKLS0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlCistICh2b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQg
ZGVjaWRlRGVzdGluYXRpb25Vc2luZ1Jlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2Ug
c3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMICpkZXN0aW5hdGlvbikpY29tcGxldGlvbkhhbmRsZXIK
IHsKLSAgICBpZiAoX2RpZFJlY2VpdmVSZXNwb25zZSkKLSAgICAgICAgX2RpZFJlY2VpdmVSZXNw
b25zZShkb3dubG9hZCwgcmVzcG9uc2UpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93
bmxvYWRDYWxsYmFjazo6RGVjaWRlRGVzdGluYXRpb24pOworCisgICAgQVNTRVJUKF9kZWNpZGVE
ZXN0aW5hdGlvblVzaW5nUmVzcG9uc2UpOworICAgIF9kZWNpZGVEZXN0aW5hdGlvblVzaW5nUmVz
cG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlLCBzdWdnZXN0ZWRGaWxlbmFtZSwgY29tcGxldGlvbkhh
bmRsZXIpOwogfQogCi0tICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBk
aWRXcml0ZURhdGE6KHVpbnQ2NF90KWJ5dGVzV3JpdHRlbiB0b3RhbEJ5dGVzV3JpdHRlbjoodWlu
dDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZToodWludDY0
X3QpdG90YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZQorLSAodm9pZClkb3dubG9hZDooV0tEb3dubG9h
ZCAqKWRvd25sb2FkIGRpZFdyaXRlRGF0YTooaW50NjRfdClieXRlc1dyaXR0ZW4gdG90YWxCeXRl
c1dyaXR0ZW46KGludDY0X3QpdG90YWxCeXRlc1dyaXR0ZW4gdG90YWxCeXRlc0V4cGVjdGVkVG9X
cml0ZTooaW50NjRfdCl0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlCiB7CisgICAgLy8gZGlkV3Jp
dGVEYXRhIGlzIGNhbGxlZCBhIG5vbmRldGVybWluaXN0aWMgbnVtYmVyIG9mIHRpbWVzLCBzbyBv
bmx5IHJlY29yZCBvbmNlIGluIGEgc2VyaWVzLgorICAgIGlmIChfY2FsbGJhY2tSZWNvcmQuaXNF
bXB0eSgpIHx8IF9jYWxsYmFja1JlY29yZC5sYXN0KCkgIT0gRG93bmxvYWRDYWxsYmFjazo6RGlk
V3JpdGVEYXRhKQorICAgICAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJh
Y2s6OkRpZFdyaXRlRGF0YSk7CisKICAgICBpZiAoX2RpZFdyaXRlRGF0YSkKICAgICAgICAgX2Rp
ZFdyaXRlRGF0YShkb3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90
YWxCeXRlc0V4cGVjdGVkVG9Xcml0ZSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihO
U1N0cmluZyAqKWZpbGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGFsbG93
T3ZlcndyaXRlLCBOU1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCistICh2
b2lkKWRvd25sb2FkOihXS0Rvd25sb2FkICopZG93bmxvYWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIE5TVVJMQ3JlZGVudGlhbCopKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgQVNTRVJU
KF9kZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgX2RlY2lkZURl
c3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBmaWxlbmFtZSwgY29tcGxl
dGlvbkhhbmRsZXIpOworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFj
azo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOworCisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpCisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoZG93bmxvYWQsIGNoYWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZv
cm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkRmluaXNo
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKWRvd25sb2FkRGlkRmluaXNoOihXS0Rv
d25sb2FkICopZG93bmxvYWQKIHsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2Fk
Q2FsbGJhY2s6OkRpZEZpbmlzaCk7CisKICAgICBpZiAoX2Rvd25sb2FkRGlkRmluaXNoKQogICAg
ICAgICBfZG93bmxvYWREaWRGaW5pc2goZG93bmxvYWQpOwogfQogCi0tICh2b2lkKV9kb3dubG9h
ZDooX1dLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJy
b3IKKy0gKHZvaWQpZG93bmxvYWQ6KFdLRG93bmxvYWQgKilkb3dubG9hZCBkaWRGYWlsV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IgcmVzdW1lRGF0YTooTlNEYXRhICopcmVzdW1lRGF0YQogewor
ICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6RGlkRmFpbFdpdGhF
cnJvcik7CisKICAgICBpZiAoX2RpZEZhaWxXaXRoRXJyb3IpCi0gICAgICAgIF9kaWRGYWlsV2l0
aEVycm9yKGRvd25sb2FkLCBlcnJvcik7CisgICAgICAgIF9kaWRGYWlsV2l0aEVycm9yKGRvd25s
b2FkLCBlcnJvciwgcmVzdW1lRGF0YSk7CiB9CiAKLS0gKHZvaWQpX2Rvd25sb2FkRGlkQ2FuY2Vs
OihfV0tEb3dubG9hZCAqKWRvd25sb2FkCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgbmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFj
dGlvbiBkaWRCZWNvbWVEb3dubG9hZDooV0tEb3dubG9hZCAqKWRvd25sb2FkCiB7Ci0gICAgaWYg
KF9kb3dubG9hZERpZENhbmNlbCkKLSAgICAgICAgX2Rvd25sb2FkRGlkQ2FuY2VsKGRvd25sb2Fk
KTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERvd25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRp
b25BY3Rpb25CZWNhbWVEb3dubG9hZCk7CisKKyAgICBpZiAoX25hdmlnYXRpb25BY3Rpb25EaWRC
ZWNvbWVEb3dubG9hZCkKKyAgICAgICAgX25hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9h
ZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uQWN0aW9uLCBkb3dubG9hZCk7CiB9CiAKLS0gKHZvaWQpX2Rv
d25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
LCBOU1VSTENyZWRlbnRpYWwqKSljb21wbGV0aW9uSGFuZGxlcgorLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9u
c2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGlkQmVjb21lRG93bmxvYWQ6KFdLRG93bmxvYWQgKilk
b3dubG9hZAogewotICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQot
ICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGRvd25sb2FkLCBjaGFs
bGVuZ2UsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBfY2FsbGJhY2tSZWNvcmQuYXBwZW5kKERv
d25sb2FkQ2FsbGJhY2s6Ok5hdmlnYXRpb25SZXNwb25zZUJlY2FtZURvd25sb2FkKTsKKworICAg
IGlmIChfbmF2aWdhdGlvblJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQpCisgICAgICAgIF9uYXZp
Z2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZCh3ZWJWaWV3LCBuYXZpZ2F0aW9uUmVzcG9u
c2UsIGRvd25sb2FkKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVzcG9uc2Ug
KiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2NhbGxiYWNrUmVjb3Jk
LmFwcGVuZChEb3dubG9hZENhbGxiYWNrOjpOYXZpZ2F0aW9uUmVzcG9uc2UpOworCisgICAgaWYg
KF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpCisgICAgICAgIF9kZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UobmF2aWdhdGlvblJlc3BvbnNlLCBkZWNpc2lvbkhhbmRs
ZXIpOwogICAgIGVsc2UKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7CisgICAgICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeURvd25sb2FkKTsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgor
eworICAgIF9jYWxsYmFja1JlY29yZC5hcHBlbmQoRG93bmxvYWRDYWxsYmFjazo6TmF2aWdhdGlv
bkFjdGlvbik7CisKKyAgICBpZiAoX2RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pCisg
ICAgICAgIF9kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG5hdmlnYXRpb25BY3Rpb24s
IGRlY2lzaW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2b2lkKXdhaXRGb3JEb3dubG9h
ZERpZEZpbmlzaAoreworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZhbHNlOworICAgIEFT
U0VSVCghX2Rvd25sb2FkRGlkRmluaXNoKTsKKyAgICBfZG93bmxvYWREaWRGaW5pc2ggPSBeKFdL
RG93bmxvYWQgKikgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKIH0KIAotLSAodm9pZClfZG93bmxvYWQ6
KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGluYXRpb246KE5TU3RyaW5nICop
ZGVzdGluYXRpb24KKy0gKFZlY3RvcjxEb3dubG9hZENhbGxiYWNrPil0YWtlQ2FsbGJhY2tSZWNv
cmQKIHsKLSAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9uKQotICAgICAgICBfZGlkQ3JlYXRl
RGVzdGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKKyAgICByZXR1cm4gc3RkOjpleGNo
YW5nZShfY2FsbGJhY2tSZWNvcmQsIHsgfSk7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdExlZ2FjeURvd25sb2FkRGVsZWdhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNTEyNDYxZWExMmM5Y2FkYTYxNWQxZTJjNGE1NzMxZjFkMTVkMTNkCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxl
Z2F0ZS5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxXZWJLaXQvV2Vi
S2l0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLRG93bmxvYWREZWxlZ2F0ZS5oPgorCitAaW50ZXJm
YWNlIFRlc3RMZWdhY3lEb3dubG9hZERlbGVnYXRlIDogTlNPYmplY3Q8X1dLRG93bmxvYWREZWxl
Z2F0ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZG93bmxvYWREaWRTdGFy
dCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKShfV0tEb3dubG9hZCAqLCBOU1VSTCAqKTsKK0Bw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlkUmVjZWl2ZVJlc3BvbnNlKShfV0tE
b3dubG9hZCAqLCBOU1VSTFJlc3BvbnNlICopOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRXcml0ZURhdGEpKF9XS0Rvd25sb2FkICosIHVpbnQ2NF90LCB1aW50NjRfdCwg
dWludDY0X3QpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5kZWNpZGVEZXN0
aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSkoX1dLRG93bmxvYWQgKiwgTlNTdHJpbmcgKiwg
dm9pZCAoXikoQk9PTCwgTlNTdHJpbmcgKikpOworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kb3dubG9hZERpZEZpbmlzaCkoX1dLRG93bmxvYWQgKik7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgdm9pZCAoXmRpZEZhaWxXaXRoRXJyb3IpKF9XS0Rvd25sb2FkICosIE5T
RXJyb3IgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRvd25sb2FkRGlk
Q2FuY2VsKShfV0tEb3dubG9hZCAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShfV0tEb3dubG9hZCAqLCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsKikpOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIHZvaWQgKF5kaWRDcmVhdGVEZXN0aW5hdGlvbikoX1dLRG93bmxvYWQgKiwgTlNT
dHJpbmcgKik7CitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RMZWdhY3lEb3dubG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NzdhOTI0YmRmZTY5NWUw
Yjc5MTViOTVlZmU5ZjA1ZGJmMWNhMDgzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TGVnYWN5RG93bmxvYWREZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJUZXN0TGVnYWN5
RG93bmxvYWREZWxlZ2F0ZS5oIgorCitAaW1wbGVtZW50YXRpb24gVGVzdExlZ2FjeURvd25sb2Fk
RGVsZWdhdGUKKworLSAodm9pZClfZG93bmxvYWREaWRTdGFydDooX1dLRG93bmxvYWQgKilkb3du
bG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRTdGFydCkKKyAgICAgICAgX2Rvd25sb2FkRGlk
U3RhcnQoZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93bmxvYWQgKilk
b3dubG9hZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTDooTlNVUkwgKil1cmwKK3sKKyAg
ICBpZiAoX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKQorICAgICAgICBfZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0VG9VUkwoZG93bmxvYWQsIHVybCk7Cit9CisKKy0gKHZvaWQpX2Rvd25s
b2FkOihfV0tEb3dubG9hZCAqKWRvd25sb2FkIGRpZFJlY2VpdmVSZXNwb25zZTooTlNVUkxSZXNw
b25zZSAqKXJlc3BvbnNlCit7CisgICAgaWYgKF9kaWRSZWNlaXZlUmVzcG9uc2UpCisgICAgICAg
IF9kaWRSZWNlaXZlUmVzcG9uc2UoZG93bmxvYWQsIHJlc3BvbnNlKTsKK30KKworLSAodm9pZClf
ZG93bmxvYWQ6KF9XS0Rvd25sb2FkICopZG93bmxvYWQgZGlkV3JpdGVEYXRhOih1aW50NjRfdCli
eXRlc1dyaXR0ZW4gdG90YWxCeXRlc1dyaXR0ZW46KHVpbnQ2NF90KXRvdGFsQnl0ZXNXcml0dGVu
IHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU6KHVpbnQ2NF90KXRvdGFsQnl0ZXNFeHBlY3RlZFRv
V3JpdGUKK3sKKyAgICBpZiAoX2RpZFdyaXRlRGF0YSkKKyAgICAgICAgX2RpZFdyaXRlRGF0YShk
b3dubG9hZCwgYnl0ZXNXcml0dGVuLCB0b3RhbEJ5dGVzV3JpdHRlbiwgdG90YWxCeXRlc0V4cGVj
dGVkVG9Xcml0ZSk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3dubG9hZCAqKWRvd25s
b2FkIGRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZp
bGVuYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIGFsbG93T3ZlcndyaXRlLCBO
U1N0cmluZyAqZGVzdGluYXRpb24pKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgQVNTRVJUKF9k
ZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgX2RlY2lkZURlc3Rp
bmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKGRvd25sb2FkLCBmaWxlbmFtZSwgY29tcGxldGlv
bkhhbmRsZXIpOworfQorCistICh2b2lkKV9kb3dubG9hZERpZEZpbmlzaDooX1dLRG93bmxvYWQg
Kilkb3dubG9hZAoreworICAgIGlmIChfZG93bmxvYWREaWRGaW5pc2gpCisgICAgICAgIF9kb3du
bG9hZERpZEZpbmlzaChkb3dubG9hZCk7Cit9CisKKy0gKHZvaWQpX2Rvd25sb2FkOihfV0tEb3du
bG9hZCAqKWRvd25sb2FkIGRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAg
IGlmIChfZGlkRmFpbFdpdGhFcnJvcikKKyAgICAgICAgX2RpZEZhaWxXaXRoRXJyb3IoZG93bmxv
YWQsIGVycm9yKTsKK30KKworLSAodm9pZClfZG93bmxvYWREaWRDYW5jZWw6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQKK3sKKyAgICBpZiAoX2Rvd25sb2FkRGlkQ2FuY2VsKQorICAgICAgICBfZG93
bmxvYWREaWRDYW5jZWwoZG93bmxvYWQpOworfQorCistICh2b2lkKV9kb3dubG9hZDooX1dLRG93
bmxvYWQgKilkb3dubG9hZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50
aWFsKikpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoX2RpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSkKKyAgICAgICAgX2RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShkb3dubG9hZCwgY2hhbGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURl
ZmF1bHRIYW5kbGluZywgbmlsKTsKK30KKworLSAodm9pZClfZG93bmxvYWQ6KF9XS0Rvd25sb2Fk
ICopZG93bmxvYWQgZGlkQ3JlYXRlRGVzdGluYXRpb246KE5TU3RyaW5nICopZGVzdGluYXRpb24K
K3sKKyAgICBpZiAoX2RpZENyZWF0ZURlc3RpbmF0aW9uKQorICAgICAgICBfZGlkQ3JlYXRlRGVz
dGluYXRpb24oZG93bmxvYWQsIGRlc3RpbmF0aW9uKTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA3NjZhMGRhOWNjYzRiMzBjYTBhNmM4
NjA0NDY2ODA5MjFhNjkxN2U3Li5kMmNiZWY0MjUzZGZlNjUxMzI4NzIzZDU3OWRiMzQxNGJmMWRh
NzhjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtNDAs
NiArNDAsOCBAQAogI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRDb25maWd1cmF0aW9uUmVmLmg+
CiAjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dFByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJLaXQv
V0tDcmVkZW50aWFsLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRG93bmxvYWRDbGllbnQuaD4KKyNp
bmNsdWRlIDxXZWJLaXQvV0tEb3dubG9hZFJlZi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0ZyYW1l
SGFuZGxlUmVmLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLRnJhbWVJbmZvUmVmLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0L1dLSFRUUENvb2tpZVN0b3JlUmVmLmg+CkBAIC04MCw2ICs4Miw3IEBACiAjaW5j
bHVkZSA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC0xMzIsNiArMTM1LDMzIEBAIHN0YXRpYyBXS1N0cmluZ1JlZiBjb3B5U2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCopCiAgICAg
cmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJNSUhGTUhFd1hEQU5CZ2txaGtp
Rzl3MEJBUUVGQUFOTEFEQklBa0VBblgwVElMSnJPTVV1ZSUyQlB0d0JSRTZYZlYlMEFXdEtRYnNz
aHhrNVpoY1V3Y3d5dmNuSXE5YjgyUWhKZG9BQ2REMzRycWZDQUlORDQ2ZlhLUVVuYjBtdkt6UUlE
JTBBQVFBQkZoRk5iM3BwYkd4aFNYTk5lVVp5YVdWdVpEQU5CZ2txaGtpRzl3MEJBUVFGQUFOQkFB
S3YyRWV4Mm4lMkZTJTBBciUyRjdpSk5yb1dsU3pTTXRUaVFURUIlMkJBRFdIR2o5dTF4clVyT2ls
cSUyRm8yY3VReElmWmNOWmtZQWtXUDREdWJxVyUwQWkwJTJGJTJGcmdCdm1jbyUzRCIpOwogfQog
Cit2b2lkIFRlc3RDb250cm9sbGVyOjpuYXZpZ2F0aW9uRGlkQmVjb21lRG93bmxvYWRTaGFyZWQo
V0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBz
dGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KS0+ZG93bmxvYWREaWRTdGFydChkb3dubG9hZCk7CisKKyAgICBXS0Rvd25sb2FkQ2xpZW50VjAg
Y2xpZW50IHsKKyAgICAgICAgeyAwLCBjbGllbnRJbmZvIH0sCisgICAgICAgIFRlc3RDb250cm9s
bGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMLAorICAgICAgICBudWxs
cHRyLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UKKyAgICAgICAgVGVzdENv
bnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lLAorICAgICAg
ICBudWxscHRyLCAvLyBkaWRXcml0ZURhdGEKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OmRvd25s
b2FkRGlkRmluaXNoLAorICAgICAgICBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGYWlsCisg
ICAgfTsKKworICAgIFdLRG93bmxvYWRTZXRDbGllbnQoZG93bmxvYWQsICZjbGllbnQuYmFzZSk7
Cit9CisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6Om5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3du
bG9hZChXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tEb3dubG9hZFJlZiBkb3du
bG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBuYXZpZ2F0aW9uRGlkQmVjb21l
RG93bmxvYWRTaGFyZWQoZG93bmxvYWQsIGNsaWVudEluZm8pOworfQorCit2b2lkIFRlc3RDb250
cm9sbGVyOjpuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChXS1BhZ2VSZWYsIFdL
TmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIG5hdmlnYXRpb25EaWRCZWNvbWVEb3dubG9hZFNoYXJlZChk
b3dubG9hZCwgY2xpZW50SW5mbyk7Cit9CisKIEFzeW5jVGFzayogQXN5bmNUYXNrOjptX2N1cnJl
bnRUYXNrOwogCiBib29sIEFzeW5jVGFzazo6cnVuKCkKQEAgLTMzNiw3MiArMzY2LDcyIEBAIFdL
UGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyog
cGFyZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBXS1BhZ2VVSUNsaWVudFY4IG90aGVyUGFnZVVJ
Q2xpZW50ID0gewogICAgICAgICB7IDgsIHZpZXcgfSwKLSAgICAgICAgMCwgLy8gY3JlYXRlTmV3
UGFnZV9kZXByZWNhdGVkRm9yVXNlV2l0aFYwCi0gICAgICAgIDAsIC8vIHNob3dQYWdlCisgICAg
ICAgIG51bGxwdHIsIC8vIGNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAg
ICAgICBudWxscHRyLCAvLyBzaG93UGFnZQogICAgICAgICBjbG9zZU90aGVyUGFnZSwKLSAgICAg
ICAgMCwgLy8gdGFrZUZvY3VzCisgICAgICAgIG51bGxwdHIsIC8vIHRha2VGb2N1cwogICAgICAg
ICBmb2N1cywKICAgICAgICAgdW5mb2N1cywKLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFs
ZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFs
ZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFs
ZXJ0X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKLSAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4dAot
ICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwCi0gICAgICAgIDAsIC8vIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAgIDAs
IC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50Ci0gICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZVdoZWVs
RXZlbnQKLSAgICAgICAgMCwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNl
dFRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBtZW51QmFySXNWaXNpYmxlCi0gICAg
ICAgIDAsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc3RhdHVzQmFySXNW
aXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c0JhcklzVmlzaWJsZQotICAgICAgICAwLCAv
LyBpc1Jlc2l6YWJsZQotICAgICAgICAwLCAvLyBzZXRJc1Jlc2l6YWJsZQorICAgICAgICBudWxs
cHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAorICAgICAg
ICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdpdGhWMAor
ICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0QWxlcnRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMAorICAgICAgICBudWxscHRyLCAvLyBzZXRTdGF0dXNUZXh0CisgICAgICAgIG51bGxwdHIs
IC8vIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAKKyAgICAg
ICAgbnVsbHB0ciwgLy8gbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICAgICAgbnVsbHB0
ciwgLy8gZGlkTm90SGFuZGxlS2V5RXZlbnQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkTm90SGFu
ZGxlV2hlZWxFdmVudAorICAgICAgICBudWxscHRyLCAvLyB0b29sYmFyc0FyZVZpc2libGUKKyAg
ICAgICAgbnVsbHB0ciwgLy8gc2V0VG9vbGJhcnNBcmVWaXNpYmxlCisgICAgICAgIG51bGxwdHIs
IC8vIG1lbnVCYXJJc1Zpc2libGUKKyAgICAgICAgbnVsbHB0ciwgLy8gc2V0TWVudUJhcklzVmlz
aWJsZQorICAgICAgICBudWxscHRyLCAvLyBzdGF0dXNCYXJJc1Zpc2libGUKKyAgICAgICAgbnVs
bHB0ciwgLy8gc2V0U3RhdHVzQmFySXNWaXNpYmxlCisgICAgICAgIG51bGxwdHIsIC8vIGlzUmVz
aXphYmxlCisgICAgICAgIG51bGxwdHIsIC8vIHNldElzUmVzaXphYmxlCiAgICAgICAgIGdldFdp
bmRvd0ZyYW1lLAogICAgICAgICBzZXRXaW5kb3dGcmFtZSwKICAgICAgICAgcnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsLAotICAgICAgICAwLCAvLyBkaWREcmF3Ci0gICAgICAgIDAsIC8vIHBh
Z2VEaWRTY3JvbGwKLSAgICAgICAgMCwgLy8gZXhjZWVkZWREYXRhYmFzZVF1b3RhCisgICAgICAg
IG51bGxwdHIsIC8vIGRpZERyYXcKKyAgICAgICAgbnVsbHB0ciwgLy8gcGFnZURpZFNjcm9sbAor
ICAgICAgICBudWxscHRyLCAvLyBleGNlZWRlZERhdGFiYXNlUXVvdGEKICAgICAgICAgcnVuT3Bl
blBhbmVsLAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0LAotICAgICAgICAwLCAvLyBoZWFkZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZm9vdGVySGVp
Z2h0Ci0gICAgICAgIDAsIC8vIGRyYXdIZWFkZXIKLSAgICAgICAgMCwgLy8gZHJhd0Zvb3Rlcgor
ICAgICAgICBudWxscHRyLCAvLyBoZWFkZXJIZWlnaHQKKyAgICAgICAgbnVsbHB0ciwgLy8gZm9v
dGVySGVpZ2h0CisgICAgICAgIG51bGxwdHIsIC8vIGRyYXdIZWFkZXIKKyAgICAgICAgbnVsbHB0
ciwgLy8gZHJhd0Zvb3RlcgogICAgICAgICBwcmludEZyYW1lLAogICAgICAgICBydW5Nb2RhbCwK
LSAgICAgICAgMCwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFpbkZyYW1lCi0gICAgICAg
IDAsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIKLSAgICAgICAgMCwgLy8gc2hv
dWxkSW50ZXJydXB0SmF2YVNjcmlwdAotICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQK
LSAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEKLSAgICAgICAgMCwgLy8gc2hvd0NvbG9yUGlja2VyCi0gICAgICAgIDAs
IC8vIGhpZGVDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWQKLSAgICAgICAgMCwgLy8gcGlubmVkU3RhdGVEaWRDaGFuZ2UKLSAgICAgICAgMCwg
Ly8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdNb3VzZVByZXNzCi0gICAgICAgIDAsIC8v
IGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNzCi0gICAgICAgIDAsIC8vIGRpZENhbmNlbFRyYWNr
aW5nUG90ZW50aWFsTG9uZ01vdXNlUHJlc3MKLSAgICAgICAgMCwgLy8gaXNQbGF5aW5nQXVkaW9E
aWRDaGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQ29tcGxldGVSdWJiZXJCYW5kRm9yTWFp
bkZyYW1lCisgICAgICAgIG51bGxwdHIsIC8vIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xk
ZXIKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdAorICAgICAg
ICBudWxscHRyLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEKKyAgICAg
ICAgbnVsbHB0ciwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQKKyAgICAgICAgbnVsbHB0ciwg
Ly8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QKKyAgICAgICAg
bnVsbHB0ciwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JV
c2VXaXRoVjEKKyAgICAgICAgbnVsbHB0ciwgLy8gc2hvd0NvbG9yUGlja2VyCisgICAgICAgIG51
bGxwdHIsIC8vIGhpZGVDb2xvclBpY2tlcgorICAgICAgICBudWxscHRyLCAvLyB1bmF2YWlsYWJs
ZVBsdWdpbkJ1dHRvbkNsaWNrZWQKKyAgICAgICAgbnVsbHB0ciwgLy8gcGlubmVkU3RhdGVEaWRD
aGFuZ2UKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkQmVnaW5UcmFja2luZ1BvdGVudGlhbExvbmdN
b3VzZVByZXNzCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFJlY29nbml6ZUxvbmdNb3VzZVByZXNz
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZENhbmNlbFRyYWNraW5nUG90ZW50aWFsTG9uZ01vdXNl
UHJlc3MKKyAgICAgICAgbnVsbHB0ciwgLy8gaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UKICAgICAg
ICAgZGVjaWRlUG9saWN5Rm9yVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3QsCi0gICAgICAgIDAs
IC8vIGRpZENsaWNrQXV0b2ZpbGxCdXR0b24KLSAgICAgICAgMCwgLy8gcnVuSmF2YVNjcmlwdEFs
ZXJ0Ci0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAgIDAsIC8vIHJ1
bkphdmFTY3JpcHRQcm9tcHQKLSAgICAgICAgMCwgLy8gdW51c2VkNQorICAgICAgICBudWxscHRy
LCAvLyBkaWRDbGlja0F1dG9maWxsQnV0dG9uCisgICAgICAgIG51bGxwdHIsIC8vIHJ1bkphdmFT
Y3JpcHRBbGVydAorICAgICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0Q29uZmlybQorICAg
ICAgICBudWxscHRyLCAvLyBydW5KYXZhU2NyaXB0UHJvbXB0CisgICAgICAgIG51bGxwdHIsIC8v
IHVudXNlZDUKICAgICAgICAgY3JlYXRlT3RoZXJQYWdlLAogICAgICAgICBydW5KYXZhU2NyaXB0
QWxlcnQsCi0gICAgICAgIDAsIC8vIHJ1bkphdmFTY3JpcHRDb25maXJtCi0gICAgICAgIDAsIC8v
IHJ1bkphdmFTY3JpcHRQcm9tcHQKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdENv
bmZpcm0KKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuSmF2YVNjcmlwdFByb21wdAogICAgICAgICBj
aGVja1VzZXJNZWRpYVBlcm1pc3Npb25Gb3JPcmlnaW4sCi0gICAgICAgIDAsIC8vIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbAotICAgICAgICAwLCAvLyBmdWxsc2NyZWVuTWF5UmV0dXJuVG9J
bmxpbmUKKyAgICAgICAgbnVsbHB0ciwgLy8gcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsCisg
ICAgICAgIG51bGxwdHIsIC8vIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZQogICAgICAgICBy
ZXF1ZXN0UG9pbnRlckxvY2ssCi0gICAgICAgIDAsCisgICAgICAgIG51bGxwdHIsIC8vIGRpZExv
c2VQb2ludGVyTG9jawogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KG5ld1BhZ2Us
ICZvdGhlclBhZ2VVSUNsaWVudC5iYXNlKTsKICAgICAKQEAgLTQxMCwxNiArNDQwLDE2IEBAIFdL
UGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyog
cGFyZW50VmlldywgV0tQYWdlQ29uCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24sCiAgICAgICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSwKICAgICAg
ICAgZGVjaWRlUG9saWN5Rm9yUGx1Z2luTG9hZCwKLSAgICAgICAgMCwgLy8gZGlkU3RhcnRQcm92
aXNpb25hbE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU3RhcnRQcm92aXNpb25h
bE5hdmlnYXRpb24KICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uLAotICAgICAgICAwLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
Ci0gICAgICAgIDAsIC8vIGRpZENvbW1pdE5hdmlnYXRpb24KLSAgICAgICAgMCwgLy8gZGlkRmlu
aXNoTmF2aWdhdGlvbgotICAgICAgICAwLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgotICAgICAgICAw
LCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQotICAgICAgICAwLCAvLyBkaWRG
aW5pc2hEb2N1bWVudExvYWQKLSAgICAgICAgMCwgLy8gZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bgotICAgICAgICAwLCAvLyByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZQorICAgICAgICBudWxs
cHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8v
IGRpZENvbW1pdE5hdmlnYXRpb24KKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkRmluaXNoTmF2aWdh
dGlvbgorICAgICAgICBudWxscHRyLCAvLyBkaWRGYWlsTmF2aWdhdGlvbgorICAgICAgICBudWxs
cHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZQorICAgICAgICBudWxscHRy
LCAvLyBkaWRGaW5pc2hEb2N1bWVudExvYWQKKyAgICAgICAgbnVsbHB0ciwgLy8gZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbgorICAgICAgICBudWxscHRyLCAvLyByZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZQogICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlLAog
ICAgICAgICBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsCiAgICAgICAgIHByb2Nl
c3NEaWRDcmFzaCwKQEAgLTQyOCw5ICs0NTgsMTIgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVy
OjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24K
ICAgICAgICAgd2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRFbmROYXZpZ2F0
aW9uR2VzdHVyZSwKICAgICAgICAgZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCwK
LSAgICAgICAgMCwgLy8gd2ViUHJvY2Vzc0RpZFRlcm1pbmF0ZQotICAgICAgICAwLCAvLyBjb250
ZW50UnVsZUxpc3ROb3RpZmljYXRpb24KLSAgICAgICAgY29weVNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZworICAgICAgICBudWxscHRyLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRl
CisgICAgICAgIG51bGxwdHIsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgorICAgICAg
ICBjb3B5U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nLAorICAgICAgICBuYXZpZ2F0
aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG5hdmlnYXRpb25SZXNwb25zZURp
ZEJlY29tZURvd25sb2FkLAorICAgICAgICBudWxscHRyIC8vIGNvbnRleHRNZW51RGlkQ3JlYXRl
RG93bmxvYWQKICAgICB9OwogICAgIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KG5ld1Bh
Z2UsICZwYWdlTmF2aWdhdGlvbkNsaWVudC5iYXNlKTsKIApAQCAtNzUwLDE2ICs3ODMsMTYgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RP
cHRpb25zJiBvcHRpb25zKQogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
LAogICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UsCiAgICAgICAgIGRl
Y2lkZVBvbGljeUZvclBsdWdpbkxvYWQsCi0gICAgICAgIDAsIC8vIGRpZFN0YXJ0UHJvdmlzaW9u
YWxOYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZp
Z2F0aW9uCiAgICAgICAgIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2
aWdhdGlvbiwKLSAgICAgICAgMCwgLy8gZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorICAg
ICAgICBudWxscHRyLCAvLyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiAgICAgICAgIGRp
ZENvbW1pdE5hdmlnYXRpb24sCiAgICAgICAgIGRpZEZpbmlzaE5hdmlnYXRpb24sCi0gICAgICAg
IDAsIC8vIGRpZEZhaWxOYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIGRpZEZhaWxQcm92aXNpb25h
bExvYWRJblN1YmZyYW1lCi0gICAgICAgIDAsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZAotICAg
ICAgICAwLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCi0gICAgICAgIDAsIC8vIHJlbmRl
cmluZ1Byb2dyZXNzRGlkQ2hhbmdlCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxOYXZpZ2F0
aW9uCisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
CisgICAgICAgIG51bGxwdHIsIC8vIGRpZEZpbmlzaERvY3VtZW50TG9hZAorICAgICAgICBudWxs
cHRyLCAvLyBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uCisgICAgICAgIG51bGxwdHIsIC8vIHJl
bmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlCiAgICAgICAgIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UsCiAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSwKICAgICAgICAgcHJvY2Vzc0RpZENyYXNoLApAQCAtNzY4LDI4ICs4MDEsMTQgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb25zKQogICAgICAgICB3aWxsRW5kTmF2aWdhdGlvbkdlc3R1cmUsCiAgICAgICAgIGRp
ZEVuZE5hdmlnYXRpb25HZXN0dXJlLAogICAgICAgICBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVy
ZVNuYXBzaG90LAotICAgICAgICAwLCAvLyB3ZWJQcm9jZXNzRGlkVGVybWluYXRlCi0gICAgICAg
IDAsIC8vIGNvbnRlbnRSdWxlTGlzdE5vdGlmaWNhdGlvbgotICAgICAgICBjb3B5U2lnbmVkUHVi
bGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCisgICAgICAgIG51bGxwdHIsIC8vIHdlYlByb2Nlc3NE
aWRUZXJtaW5hdGUKKyAgICAgICAgbnVsbHB0ciwgLy8gY29udGVudFJ1bGVMaXN0Tm90aWZpY2F0
aW9uCisgICAgICAgIGNvcHlTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcsCisgICAg
ICAgIG5hdmlnYXRpb25BY3Rpb25EaWRCZWNvbWVEb3dubG9hZCwKKyAgICAgICAgbmF2aWdhdGlv
blJlc3BvbnNlRGlkQmVjb21lRG93bmxvYWQsCisgICAgICAgIG51bGxwdHIgLy8gY29udGV4dE1l
bnVEaWRDcmVhdGVEb3dubG9hZAogICAgIH07CiAgICAgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25D
bGllbnQobV9tYWluV2ViVmlldy0+cGFnZSgpLCAmcGFnZU5hdmlnYXRpb25DbGllbnQuYmFzZSk7
Ci0KLSAgICBXS0NvbnRleHREb3dubG9hZENsaWVudFYxIGRvd25sb2FkQ2xpZW50ID0gewotICAg
ICAgICB7IDEsIHRoaXMgfSwKLSAgICAgICAgZG93bmxvYWREaWRTdGFydCwKLSAgICAgICAgMCwg
Ly8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlCi0gICAgICAgIDAsIC8vIGRpZFJl
Y2VpdmVSZXNwb25zZQotICAgICAgICAwLCAvLyBkaWRSZWNlaXZlRGF0YQotICAgICAgICAwLCAv
LyBzaG91bGREZWNvZGVTb3VyY2VEYXRhT2ZNSU1FVHlwZQotICAgICAgICBkZWNpZGVEZXN0aW5h
dGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZSwKLSAgICAgICAgMCwgLy8gZGlkQ3JlYXRlRGVzdGlu
YXRpb24KLSAgICAgICAgZG93bmxvYWREaWRGaW5pc2gsCi0gICAgICAgIGRvd25sb2FkRGlkRmFp
bCwKLSAgICAgICAgZG93bmxvYWREaWRDYW5jZWwsCi0gICAgICAgIDAsIC8vIHByb2Nlc3NEaWRD
cmFzaDsKLSAgICAgICAgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RUb1VSTAotICAg
IH07Ci0gICAgV0tDb250ZXh0U2V0RG93bmxvYWRDbGllbnQoY29udGV4dCgpLCAmZG93bmxvYWRD
bGllbnQuYmFzZSk7CiAgICAgCiAgICAgLy8gdGhpcyBzaG91bGQganVzdCBiZSBkb25lIG9uIHRo
ZSBwYWdlPwogICAgIFdLUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5kbGVD
bGllbnQgPSB7CkBAIC0yMDc5LDQ1ICsyMDk4LDM1IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXS1BhZ2VSZWYgcGFnZSwgV0tBdXRoZW50
CiB9CiAKIAotLy8gV0tDb250ZXh0RG93bmxvYWRDbGllbnQKLQotdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRTdGFydChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tEb3dubG9hZFJlZiBk
b3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBzdGF0aWNfY2FzdDxUZXN0
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRT
dGFydChjb250ZXh0LCBkb3dubG9hZCk7Ci19CisvLyBXS0Rvd25sb2FkQ2xpZW50CiAgICAgCi1X
S1N0cmluZ1JlZiBUZXN0Q29udHJvbGxlcjo6ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVk
RmlsZW5hbWUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdL
U3RyaW5nUmVmIGZpbGVuYW1lLCBib29sKiBhbGxvd092ZXJ3cml0ZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRlY2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3Rl
ZEZpbGVuYW1lKGNvbnRleHQsIGRvd25sb2FkLCBmaWxlbmFtZSwgYWxsb3dPdmVyd3JpdGUpOwot
fQotCi12b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZpbmlzaChXS0NvbnRleHRSZWYg
Y29udGV4dCwgV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K1dLU3RyaW5nUmVmIFRlc3RDb250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0
ZWRGaWxlbmFtZShXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlLCBXS1N0cmluZ1JlZiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGaW5pc2goY29udGV4dCwgZG93bmxvYWQpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGVjaWRlRGVzdGluYXRpb25XaXRoU3VnZ2VzdGVkRmlsZW5hbWUoZG93bmxv
YWQsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxv
YWREaWRGYWlsKFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBX
S0Vycm9yUmVmIGVycm9yLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQordm9pZCBUZXN0Q29udHJv
bGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiBkb3dubG9hZCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKIHsKLSAgICBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRGYWlsKGNvbnRleHQsIGRvd25s
b2FkLCBlcnJvcik7CisgICAgc3RhdGljX2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPmRvd25sb2FkRGlkRmluaXNoKGRvd25sb2FkKTsKIH0KIAot
dm9pZCBUZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRDYW5jZWwoV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit2b2lk
IFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiBkb3dubG9hZCwg
V0tFcnJvclJlZiBlcnJvciwgV0tEYXRhUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewot
ICAgIHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpLT5kb3dubG9hZERpZENhbmNlbChjb250ZXh0LCBkb3dubG9hZCk7CisgICAgc3RhdGlj
X2Nhc3Q8VGVzdENvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRv
d25sb2FkRGlkRmFpbChkb3dubG9hZCwgZXJyb3IpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
Ojpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS0Rvd25sb2FkUmVmIGRvd25sb2FkLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCitib29sIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYgZG93bmxvYWQsIFdLVVJMUmVzcG9uc2VSZWYsIFdL
VVJMUmVxdWVzdFJlZiBuZXdSZXF1ZXN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAg
IHN0YXRpY19jYXN0PFRlc3RDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpLT5kb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKGNvbnRleHQsIGRvd25s
b2FkLCB1cmwpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Q29udHJvbGxlcio+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChkb3dubG9hZCwgbmV3UmVxdWVzdCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6
OmRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLRG93bmxvYWRSZWYgZG93
bmxvYWQpCit2b2lkIFRlc3RDb250cm9sbGVyOjpkb3dubG9hZERpZFN0YXJ0KFdLRG93bmxvYWRS
ZWYgZG93bmxvYWQpCiB7CiAgICAgaWYgKG1fc2hvdWxkTG9nRG93bmxvYWRDYWxsYmFja3MpCiAg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPm91dHB1dFRleHQoIkRvd25sb2FkIHN0YXJ0ZWQu
XG4iKTsKIH0KIAotV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tTdHJp
bmdSZWYgZmlsZW5hbWUsIGJvb2wqJiBhbGxvd092ZXJ3cml0ZSkKK1dLU3RyaW5nUmVmIFRlc3RD
b250cm9sbGVyOjpkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rvd25s
b2FkUmVmIGRvd25sb2FkLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSkKIHsKICAgICBTdHJpbmcgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSB0b1dURlN0cmluZyhmaWxlbmFtZSk7CiAKQEAgLTIxMzMsMjggKzIx
NDIsMzMgQEAgV0tTdHJpbmdSZWYgVGVzdENvbnRyb2xsZXI6OmRlY2lkZURlc3RpbmF0aW9uV2l0
aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwKICAgICBpZiAoIWR1bXBSZW5kZXJUcmVl
VGVtcCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAqYWxsb3dPdmVyd3JpdGUgPSB0
cnVlOwogICAgIFN0cmluZyB0ZW1wb3JhcnlGb2xkZXIgPSBTdHJpbmc6OmZyb21VVEY4KGR1bXBS
ZW5kZXJUcmVlVGVtcCk7CiAgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkKICAg
ICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSAiVW5rbm93biI7CisgICAgCisgICAgU3RyaW5nIGRl
c3RpbmF0aW9uID0gdGVtcG9yYXJ5Rm9sZGVyICsgIi8iICsgc3VnZ2VzdGVkRmlsZW5hbWU7Cisg
ICAgaWYgKEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMoZGVzdGluYXRpb24pKQorICAgICAgICBGaWxl
U3lzdGVtOjpkZWxldGVGaWxlKGRlc3RpbmF0aW9uKTsKIAotICAgIHJldHVybiB0b1dLKHRlbXBv
cmFyeUZvbGRlciArICIvIiArIHN1Z2dlc3RlZEZpbGVuYW1lKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIHRvV0soZGVzdGluYXRpb24pLmxlYWtSZWYoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxl
cjo6ZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmKQordm9pZCBU
ZXN0Q29udHJvbGxlcjo6ZG93bmxvYWREaWRGaW5pc2goV0tEb3dubG9hZFJlZikKIHsKICAgICBp
ZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKICAgICAgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY29tcGxldGVkLlxuIik7CiAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xs
ZXI6OmRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tDb250ZXh0UmVmLCBX
S0Rvd25sb2FkUmVmLCBXS1VSTFJlZiB1cmwpCitib29sIFRlc3RDb250cm9sbGVyOjpkb3dubG9h
ZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVxdWVz
dFJlZiByZXF1ZXN0KQogeworICAgIGF1dG8gdXJsID0gYWRvcHRXSyhXS1VSTFJlcXVlc3RDb3B5
VVJMKHJlcXVlc3QpKTsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKLSAg
ICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dChtYWtlU3RyaW5nKCJEb3dubG9h
ZCB3YXMgcmVkaXJlY3RlZCB0byBcIiIsIHRvV1RGU3RyaW5nKGFkb3B0V0soV0tVUkxDb3B5U3Ry
aW5nKHVybCkpKSwgIlwiLlxuIikpOworICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRw
dXRUZXh0KG1ha2VTdHJpbmcoIkRvd25sb2FkIHdhcyByZWRpcmVjdGVkIHRvIFwiIiwgdG9XVEZT
dHJpbmcoYWRvcHRXSyhXS1VSTENvcHlTdHJpbmcodXJsLmdldCgpKSkpLCAiXCIuXG4iKSk7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlkRmFp
bChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyb3IpCit2b2lkIFRl
c3RDb250cm9sbGVyOjpkb3dubG9hZERpZEZhaWwoV0tEb3dubG9hZFJlZiwgV0tFcnJvclJlZiBl
cnJvcikKIHsKICAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykgewogICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5vdXRwdXRUZXh0KCJEb3dubG9hZCBmYWlsZWQuXG4iX3Mp
OwpAQCAtMjE2OCwxMyArMjE4Miw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmRvd25sb2FkRGlk
RmFpbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYgZXJyCiAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7CiB9CiAKLXZvaWQgVGVzdENv
bnRyb2xsZXI6OmRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZikK
LXsKLSAgICBpZiAobV9zaG91bGRMb2dEb3dubG9hZENhbGxiYWNrcykKLSAgICAgICAgbV9jdXJy
ZW50SW52b2NhdGlvbi0+b3V0cHV0VGV4dCgiRG93bmxvYWQgY2FuY2VsbGVkLlxuIik7Ci0gICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+bm90aWZ5RG93bmxvYWREb25lKCk7Ci19Ci0KIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnByb2Nlc3NEaWRDcmFzaCgpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBj
YW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdoZW4gY3Jhc2ggbG9ncyBhcmUgYmVpbmcgc2F2
ZWQgb24gV2luZG93cywgc28KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCBkZGVjYTA4ODJhMzA5NmUzN2JmZDNlNzBmZWQ0ZTIyNzNkZDk2ZDI5Li5iYjc1ZDUwNzAy
YzNhNTNmMzlkZTE1ODFkY2M0ZDNiMzM3Mzk2NGNiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC00NDQsMTkgKzQ0NCwxOSBAQCBwcml2YXRlOgogICAgIHN0YXRp
YyB2b2lkIGRpZEZpbmlzaE5hdmlnYXRpb24oV0tQYWdlUmVmLCBXS05hdmlnYXRpb25SZWYsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCopOwogICAgIHZvaWQgZGlkRmluaXNoTmF2aWdh
dGlvbihXS1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlZik7CiAKLSAgICAvLyBXS0NvbnRleHREb3du
bG9hZENsaWVudAotICAgIHN0YXRpYyB2b2lkIGRvd25sb2FkRGlkU3RhcnQoV0tDb250ZXh0UmVm
LCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFN0YXJ0
KFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZik7Ci0gICAgc3RhdGljIFdLU3RyaW5nUmVmIGRl
Y2lkZURlc3RpbmF0aW9uV2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZiwgV0tTdHJpbmdSZWYgZmlsZW5hbWUsIGJvb2wqIGFsbG93T3ZlcndyaXRlLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKLSAgICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldp
dGhTdWdnZXN0ZWRGaWxlbmFtZShXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLU3RyaW5n
UmVmIGZpbGVuYW1lLCBib29sKiYgYWxsb3dPdmVyd3JpdGUpOwotICAgIHN0YXRpYyB2b2lkIGRv
d25sb2FkRGlkRmluaXNoKFdLQ29udGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCop
OwotICAgIHZvaWQgZG93bmxvYWREaWRGaW5pc2goV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVm
KTsKLSAgICBzdGF0aWMgdm9pZCBkb3dubG9hZERpZEZhaWwoV0tDb250ZXh0UmVmLCBXS0Rvd25s
b2FkUmVmLCBXS0Vycm9yUmVmLCBjb25zdCB2b2lkKik7Ci0gICAgdm9pZCBkb3dubG9hZERpZEZh
aWwoV0tDb250ZXh0UmVmLCBXS0Rvd25sb2FkUmVmLCBXS0Vycm9yUmVmKTsKLSAgICBzdGF0aWMg
dm9pZCBkb3dubG9hZERpZENhbmNlbChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0
IHZvaWQqKTsKLSAgICB2b2lkIGRvd25sb2FkRGlkQ2FuY2VsKFdLQ29udGV4dFJlZiwgV0tEb3du
bG9hZFJlZik7Ci0gICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RUb1VSTChXS0NvbnRleHRSZWYsIFdLRG93bmxvYWRSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lk
Kik7Ci0gICAgdm9pZCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLQ29u
dGV4dFJlZiwgV0tEb3dubG9hZFJlZiwgV0tVUkxSZWYpOworICAgIC8vIFdLRG93bmxvYWRDbGll
bnQKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uQWN0aW9uRGlkQmVjb21lRG93bmxvYWQoV0tQ
YWdlUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQq
KTsKKyAgICBzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uUmVzcG9uc2VEaWRCZWNvbWVEb3dubG9hZChX
S1BhZ2VSZWYsIFdLTmF2aWdhdGlvblJlc3BvbnNlUmVmLCBXS0Rvd25sb2FkUmVmLCBjb25zdCB2
b2lkKik7CisgICAgc3RhdGljIHZvaWQgbmF2aWdhdGlvbkRpZEJlY29tZURvd25sb2FkU2hhcmVk
KFdLRG93bmxvYWRSZWYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIGRvd25sb2FkRGlkU3RhcnQo
V0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIFdLU3RyaW5nUmVmIGRlY2lkZURlc3RpbmF0aW9u
V2l0aFN1Z2dlc3RlZEZpbGVuYW1lKFdLRG93bmxvYWRSZWYsIFdLVVJMUmVzcG9uc2VSZWYsIFdL
U3RyaW5nUmVmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAg
ICBXS1N0cmluZ1JlZiBkZWNpZGVEZXN0aW5hdGlvbldpdGhTdWdnZXN0ZWRGaWxlbmFtZShXS0Rv
d25sb2FkUmVmLCBXS1N0cmluZ1JlZiBmaWxlbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tEb3dubG9hZFJlZiwgY29uc3Qgdm9pZCopOworICAgIHZvaWQgZG93bmxv
YWREaWRGaW5pc2goV0tEb3dubG9hZFJlZik7CisgICAgc3RhdGljIHZvaWQgZG93bmxvYWREaWRG
YWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYsIFdLRGF0YVJlZiwgY29uc3Qgdm9pZCopOwor
ICAgIHZvaWQgZG93bmxvYWREaWRGYWlsKFdLRG93bmxvYWRSZWYsIFdLRXJyb3JSZWYpOworICAg
IHN0YXRpYyBib29sIGRvd25sb2FkRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0VG9VUkwoV0tEb3du
bG9hZFJlZiwgV0tVUkxSZXNwb25zZVJlZiwgV0tVUkxSZXF1ZXN0UmVmLCBjb25zdCB2b2lkKik7
CisgICAgYm9vbCBkb3dubG9hZERpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdFRvVVJMKFdLRG93bmxv
YWRSZWYsIFdLVVJMUmVxdWVzdFJlZik7CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcHJvY2Vzc0Rp
ZENyYXNoKFdLUGFnZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgdm9pZCBwcm9j
ZXNzRGlkQ3Jhc2goKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNzMzMWMzMGI1Y2RlZDkzMzJiMTJkMDhiMjQxMjM2ZmEz
NWQ0MmQzLi5iNDEwNmE4NTc2ZDA1MGFiYmYxNmM0ODVmMjVhMGI1M2FiOTNmNGQ1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMjAtMTItMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgbmV3IGRvd25sb2FkIEFQSQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NzQ3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogZmFzdC9kb20vSFRN
TEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L2RvbS9IVE1MQW5jaG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtdXNlci10cmlnZ2VyZWQt
c3ludGhldGljLWNsaWNrLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMtZGVs
ZWdhdGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgTm93IHRoYXQgTmV0d29ya0RhdGFUYXNrQmxvYjo6c3VnZ2Vz
dGVkRmlsZW5hbWUgZG9lc24ndCBzdWdnZXN0ICJ1bmtub3duIgorICAgICAgICB0aGUgY2FwaXRh
bGl6YXRpb24gaGFzIGNoYW5nZWQgdG8gIlVua25vd24iIGZyb20gTlNVUkxSZXNwb25zZSdzIHN1
Z2dlc3RlZEZpbGVuYW1lLgorCiAyMDIwLTEyLTA5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBh
cHBsZS5jb20+CiAKICAgICAgICAgTWFya2VkIHNvbWUgV1BUIHdvcmtsZXQgdGVzdHMgYXMgZmxh
a3kKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2Fu
Y2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3ItZG93bmxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYWYyZGU5YjFj
NGJjYWM1ODYyYzFkYTU2ZmJiNGJlNmExNmQyYTkuLjM3NWMxOTEyOWFlNjFiYTA2ZTdkNTQ4YTgz
YTNiODZhNzY5MGI2N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNo
b3JFbGVtZW50L2FuY2hvci1kb3dubG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDQgQEAKIERvd25sb2FkIHN0YXJ0ZWQuCi1Eb3dubG9hZGluZyBVUkwgd2l0aCBz
dWdnZXN0ZWQgZmlsZW5hbWUgInVua25vd24uaHRtbCIKK0Rvd25sb2FkaW5nIFVSTCB3aXRoIHN1
Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93bi5odG1sIgogRG93bmxvYWQgY29tcGxldGVkLgogQmxv
YiBVUkwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50
L2FuY2hvci1kb3dubG9hZC11c2VyLXRyaWdnZXJlZC1zeW50aGV0aWMtY2xpY2stZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25s
b2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1leHBlY3RlZC50eHQKaW5kZXggYmVk
YzhkZGEwMWM4YzEyMzdlMTA2YzY4NTMzNDBmMzc5NmY3Y2VlNy4uYzUxMTc3OTVhNThjMDhmYmVl
MDZjYjM5NDMxY2RjMzFkMGRiNTlhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRp
Yy1jbGljay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hv
ckVsZW1lbnQvYW5jaG9yLWRvd25sb2FkLXVzZXItdHJpZ2dlcmVkLXN5bnRoZXRpYy1jbGljay1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiBEb3dubG9hZCBzdGFydGVkLgotRG93bmxvYWRp
bmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZpbGVuYW1lICJ1bmtub3duLmh0bWwiCitEb3dubG9hZGlu
ZyBVUkwgd2l0aCBzdWdnZXN0ZWQgZmlsZW5hbWUgIlVua25vd24uaHRtbCIKIERvd25sb2FkIGNv
bXBsZXRlZC4KIFRlc3QgdGhhdCB1c2VyIHRyaWdnZXJlZCBzeW50aGV0aWMgY2xpY2tzIG9uIGFu
IGFuY2hvciB3aXRoIGEgZG93bmxvYWQgYXR0cmlidXRlIGFyZSBub3QgaWdub3JlZC4KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZp
bGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFzeW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2It
Y29udmVydC10by1kb3dubG9hZC1hc3luYy1kZWxlZ2F0ZS1leHBlY3RlZC50eHQKaW5kZXggMTEx
NDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIwMjdjM2UxMGFkOGIwYzAx
YmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
SFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0LXRvLWRvd25sb2FkLWFz
eW5jLWRlbGVnYXRlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtYXN5bmMt
ZGVsZWdhdGUtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4K
LURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25s
b2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNv
bXBsZXRlZC4KIFRoZSBkb3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252
ZXJ0LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxB
bmNob3JFbGVtZW50L2FuY2hvci1maWxlLWJsb2ItY29udmVydC10by1kb3dubG9hZC1leHBlY3Rl
ZC50eHQKaW5kZXggMTExNDBmZDIxODg3Yjg1MTIwZGFiMTgzZjlmZDliM2QwZjQ3YWM1ZS4uMTIw
MjdjM2UxMGFkOGIwYzAxYmZhN2E2MTEyODZlODU2MjhiZTkzMSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLWZpbGUtYmxvYi1jb252ZXJ0
LXRvLWRvd25sb2FkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
QW5jaG9yRWxlbWVudC9hbmNob3ItZmlsZS1ibG9iLWNvbnZlcnQtdG8tZG93bmxvYWQtZXhwZWN0
ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVS
TCB3aXRoIHN1Z2dlc3RlZCBmaWxlbmFtZSAidW5rbm93biIKK0Rvd25sb2FkaW5nIFVSTCB3aXRo
IHN1Z2dlc3RlZCBmaWxlbmFtZSAiVW5rbm93biIKIERvd25sb2FkIGNvbXBsZXRlZC4KIFRoZSBk
b3dubG9hZCBzaG91bGQgc3VjY2VlZC4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93bmxvYWQtc2V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxBbmNob3JFbGVtZW50L2FuY2hvci1ub2Rvd25sb2Fk
LXNldC1leHBlY3RlZC50eHQKaW5kZXggMDJhZjJkZTliMWM0YmNhYzU4NjJjMWRhNTZmYmI0YmU2
YTE2ZDJhOS4uMzc1YzE5MTI5YWU2MWJhMDZlN2Q1NDhhODNhM2I4NmE3NjkwYjY3ZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTEFuY2hvckVsZW1lbnQvYW5jaG9yLW5vZG93
bmxvYWQtc2V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MQW5j
aG9yRWxlbWVudC9hbmNob3Itbm9kb3dubG9hZC1zZXQtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEs
NCBAQAogRG93bmxvYWQgc3RhcnRlZC4KLURvd25sb2FkaW5nIFVSTCB3aXRoIHN1Z2dlc3RlZCBm
aWxlbmFtZSAidW5rbm93bi5odG1sIgorRG93bmxvYWRpbmcgVVJMIHdpdGggc3VnZ2VzdGVkIGZp
bGVuYW1lICJVbmtub3duLmh0bWwiCiBEb3dubG9hZCBjb21wbGV0ZWQuCiBCbG9iIFVSTAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>