<?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>238400</bug_id>
          
          <creation_ts>2022-03-25 16:44:39 -0700</creation_ts>
          <short_desc>Support ServiceWorkerClients.openWindow</short_desc>
          <delta_ts>2022-03-29 02:57:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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=238478</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>nham</cc>
    
    <cc>thorton</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1855287</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 16:44:39 -0700</bug_when>
    <thetext>Support ServiceWorkerClients.openWindow

rdar://90616651</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855291</commentid>
    <comment_count>1</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 16:58:28 -0700</bug_when>
    <thetext>This is basically a huge plumbing task getting the message up to the client.

And tests for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855293</commentid>
    <comment_count>2</comment_count>
      <attachid>455811</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 17:03:21 -0700</bug_when>
    <thetext>Created attachment 455811
EWS v1

Will get a changelog up later</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855297</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 17:47:35 -0700</bug_when>
    <thetext>&gt; /Volumes/Data/worker/macOS-BigSur-Release-Build-EWS/build/WebKitBuild/Release/usr/local/include/wtf/HashTable.h:684:9: error: static_assert failed due to requirement &apos;sizeof(WTF::KeyValuePair&lt;WebCore::ProcessQualified&lt;WTF::UUID&gt;, WebCore::ServiceWorkerClientData&gt;) &lt;= 128&apos; &quot;Your HashTable types are too big to efficiently move when rehashing.  Consider using UniqueRef instead&quot;

Ouch.

That&apos;s an infuriating thing to creep up on this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855310</commentid>
    <comment_count>4</comment_count>
      <attachid>455815</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 19:30:28 -0700</bug_when>
    <thetext>Created attachment 455815
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855328</commentid>
    <comment_count>5</comment_count>
      <attachid>455823</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-25 21:17:06 -0700</bug_when>
    <thetext>Created attachment 455823
EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855398</commentid>
    <comment_count>6</comment_count>
      <attachid>455849</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-26 09:14:30 -0700</bug_when>
    <thetext>Created attachment 455849
EWS (Continuing to fight other patches that are landing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855403</commentid>
    <comment_count>7</comment_count>
      <attachid>455851</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-26 11:35:09 -0700</bug_when>
    <thetext>Created attachment 455851
EWS yet again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855421</commentid>
    <comment_count>8</comment_count>
      <attachid>455856</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-26 15:29:50 -0700</bug_when>
    <thetext>Created attachment 455856
EWS vX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855446</commentid>
    <comment_count>9</comment_count>
      <attachid>455856</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-27 01:27:07 -0700</bug_when>
    <thetext>Comment on attachment 455856
EWS vX

Patch is not r? so I did not r+ed it.
Some feedback below.


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

&gt; Source/WTF/wtf/HashTable.h:684
&gt; +        static_assert(sizeof(Value) &lt;= 150, &quot;Your HashTable types are too big to efficiently move when rehashing.  Consider using UniqueRef instead&quot;);

Another approach to not get over this size would be to transmit the pageIdentifier outside of the ServiceWorkerClientData from Document to SWServer.
This makes sense especially if we we move the pageIdentifier -&gt; ServiceWorkerClientData resolution for openWindow in NetworkProcess.
That could be done as a follow-up.

&gt; Source/WebCore/workers/service/ServiceWorkerClientData.cpp:66
&gt; +    return { identifier, type, frameType, url.isolatedCopy(), pageIdentifier, lastNavigationWasAppInitiated, isVisible, isFocused, focusOrder };

WTFMove(url).isolatedCopy() is a nice optimization that should allow to use URL::isolatedCopy() &amp;&amp; (string one ref optim), let&apos;s keep it.

&gt; Source/WebCore/workers/service/ServiceWorkerClientData.cpp:84
&gt; +        documentPageIdentifier,

document.pageID()?

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:128
&gt; +    }

Can you add the user activation check, hopefully it should not mess up with layout tests.
Something like:

    auto&amp; serviceWorkerGlobalScope = downcast&lt;ServiceWorkerGlobalScope&gt;(context);
    if (context.settingsValues().serviceWorkersUserGestureEnabled &amp;&amp; !serviceWorkerContext.isProcessingUserGesture()) {
        promise-&gt;reject(Exception { InvalidAccessError, &quot;Clients openWindow requires a user gesture&quot;_s });
        return;
    }

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:130
&gt; +    callOnMainThread([promise = WTFMove(promise), serviceWorkerIdentifier, url = url.isolatedCopy()] () mutable {

By moving the promise ref to main thread, there is a risk it will be destroyed in the main thread (in case service worker is terminated before the call to postTaskToServiceWorker).
We can use addPendingPromise/takePendingPromise and pass an identifier instead.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:137
&gt; +                    promise-&gt;resolveWithJSValue(JSC::jsNull());

Shouldn&apos;t we reject instead? Something like TypeError until we try passing something like an ExceptionOr&lt;PageIdentifier&gt;.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:141
&gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promise = WTFMove(promise)] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {

It is a bit strange to call match here.
I would be tempted to have openWindow directly return a std::optional&lt;ServiceWorkerClientData&gt;/ExceptionOr&lt; ServiceWorkerClientData &gt; instead.
The resolution can be done in NetworkProcess, provided we can have proper handling of the race conditions.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());

Shouldn&apos;t we reject there as well?

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:174
&gt; +    auto innerCallback = [callback = WTFMove(callback)](std::optional&lt;WebCore::PageIdentifier&gt;&amp;&amp; pageIdentifier) mutable {

It seems callback could be directly given here since innerCallback is not doing anything special.
That said, I would be tempted to do a refactoring to get the ServiceWorkerClientData from the pageIdentifier here, instead of doing that resolution in service worker process.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:178
&gt; +    m_connection.networkProcess().parentProcessConnection()-&gt;sendWithAsyncReply(Messages::NetworkProcessProxy::OpenWindowFromServiceWorker { identifier, server-&gt;sessionID(), urlString, worker-&gt;origin().clientOrigin }, WTFMove(innerCallback));

I would be tempted to remove the service worker identifier, I am not sure identifier is useful information for UIProcess.
If we had to pass a service worker identifier to UIProcess, the service worker registration URL might be better suited?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2085
&gt; +    void setServiceWorkerOpenWindowCompletionCallback(CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionCallback) { m_serviceWorkerOpenWindowCompletionCallback = WTFMove(completionCallback); }

We could add an ASSERT(!m_serviceWorkerOpenWindowCompletionCallback).

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2114
&gt; +        newPage-&gt;setServiceWorkerOpenWindowCompletionCallback(WTFMove(innerCallback));

Looking quickly at the spec, I am not exactly clear when we are supposed to resolve the promise. This approach sounds good to me in any case.
Have you looked at what other browsers are doing though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855467</commentid>
    <comment_count>10</comment_count>
      <attachid>455873</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 18:41:01 -0700</bug_when>
    <thetext>Created attachment 455873
One more EWS maybe?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855475</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 19:07:21 -0700</bug_when>
    <thetext>(I didn&apos;t mean to ignore your feedback in my most recent patch - I simply didn&apos;t know there WAS feedback)

Addressing some now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855488</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 20:54:41 -0700</bug_when>
    <thetext>If not replying to a particular comment, I addressed it.
Other feedback inline.

(In reply to youenn fablet from comment #9)
&gt; Comment on attachment 455856 [details]
&gt; EWS vX
&gt; 
&gt; Patch is not r? so I did not r+ed it.
&gt; Some feedback below.
&gt; 
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455856&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/HashTable.h:684
&gt; &gt; +        static_assert(sizeof(Value) &lt;= 150, &quot;Your HashTable types are too big to efficiently move when rehashing.  Consider using UniqueRef instead&quot;);
&gt; 
&gt; Another approach to not get over this size would be to transmit the
&gt; pageIdentifier outside of the ServiceWorkerClientData from Document to
&gt; SWServer.
&gt; This makes sense especially if we we move the pageIdentifier -&gt;
&gt; ServiceWorkerClientData resolution for openWindow in NetworkProcess.
&gt; That could be done as a follow-up.

Alex (who lowered the size to 128) wholeheartedly suggested temporarily raising it.

Especially not since this is hot code or anything.

It really belongs in the client data, and we really should uniqueRef&lt;&gt; all the stuff. That&apos;s the right followup patch, I think.

&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:137
&gt; &gt; +                    promise-&gt;resolveWithJSValue(JSC::jsNull());
&gt; 
&gt; Shouldn&apos;t we reject instead? Something like TypeError until we try passing
&gt; something like an ExceptionOr&lt;PageIdentifier&gt;.

The spec is very precise about this - If there is no valid client after the steps are run, the promise is resolved *successfully* with a value of null.

One case that happens is a blocked popup (e.g. the client refused to create a web view)

The other case is if the window that was created for the URL has navigated away to a domain that is not controlled by the SW.

So it follows....

&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:141
&gt; &gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promise = WTFMove(promise)] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {
&gt; 
&gt; It is a bit strange to call match here.
&gt; I would be tempted to have openWindow directly return a
&gt; std::optional&lt;ServiceWorkerClientData&gt;/ExceptionOr&lt; ServiceWorkerClientData
&gt; &gt; instead.
&gt; The resolution can be done in NetworkProcess, provided we can have proper
&gt; handling of the race conditions.

The match&apos;ing algorithm is used because it&apos;s very possible the page created is not controlled by the SW.

&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; &gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());
&gt; 
&gt; Shouldn&apos;t we reject there as well?

See above.

&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:174
&gt; &gt; +    auto innerCallback = [callback = WTFMove(callback)](std::optional&lt;WebCore::PageIdentifier&gt;&amp;&amp; pageIdentifier) mutable {
&gt; 
&gt; It seems callback could be directly given here since innerCallback is not
&gt; doing anything special.
&gt; That said, I would be tempted to do a refactoring to get the
&gt; ServiceWorkerClientData from the pageIdentifier here, instead of doing that
&gt; resolution in service worker process.

See above for why we run the matching algorithm.

&gt; &gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:2114
&gt; &gt; +        newPage-&gt;setServiceWorkerOpenWindowCompletionCallback(WTFMove(innerCallback));
&gt; 
&gt; Looking quickly at the spec, I am not exactly clear when we are supposed to
&gt; resolve the promise. This approach sounds good to me in any case.
&gt; Have you looked at what other browsers are doing though?

It&apos;s resolved when the initial navigation of the new browsing context is complete (either in success or failure)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855489</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 20:57:41 -0700</bug_when>
    <thetext>The talk about the matching algorithm made me realize I forgot to write a test for the non-controlled case.

Obviously need to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855493</commentid>
    <comment_count>14</comment_count>
      <attachid>455883</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 21:22:45 -0700</bug_when>
    <thetext>Created attachment 455883
PFR v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855504</commentid>
    <comment_count>15</comment_count>
      <attachid>455888</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-27 23:26:57 -0700</bug_when>
    <thetext>Created attachment 455888
PFR v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855512</commentid>
    <comment_count>16</comment_count>
      <attachid>455888</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-28 00:44:19 -0700</bug_when>
    <thetext>Comment on attachment 455888
PFR v2

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

&gt; LayoutTests/http/tests/workers/service/resources/shownotification-openwindow-worker.js:16
&gt; +    await messageClients(&quot;gotUserGestureFail&quot;);

I was initially expecting this test to fail since ServiceWorkerInternals is making sure to disable user gesture
But ServiceWorkerInternals is currently injected after the initial run of the worker script I believe.
Which makes the test pass!
When we start injecting ServiceWorkerInternals sooner, we might have to update the test to add a call to enforce the user gesture for this particular test.

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());

If there is no page identifier, it probably means the navigation failed and the promise should reject, as per https://w3c.github.io/ServiceWorker/#clients-openwindow step 7.2.
Can we add a test where the navigation fails?

&gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:147
&gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promiseIdentifier] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {

The work to identify the corresponding service worker can be done in network process, that would probably more efficient.
openWindow could take a completion handler taking something like Expected/ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; to handle failure/null/client cases.

&gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:175
&gt; +        callback(WTFMove(pageIdentifier));

We could introduce a dedicated std::optional&lt;ServiceWorkerClientData&gt; SWServer::serviceWorkerClientFromPageIdentifier(PageIdentifier) and use it here to do the translation.
If there is no PageId, send back an exception.
If service worker is third party, return std::nullopt.
That would be functionally equivalent to matchWindowWithPageIdentifier, but a bit more efficient and ServiceWorkerClients code would look closer to the spec.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:60
&gt; +    explicit WebsiteDataStoreClient(WKWebsiteDataStore *dataStore, id&lt;_WKWebsiteDataStoreDelegate&gt; delegate)

s/explicit//</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855519</commentid>
    <comment_count>17</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-28 02:06:56 -0700</bug_when>
    <thetext>&gt; &gt; Source/WTF/wtf/HashTable.h:684
&gt; &gt; +        static_assert(sizeof(Value) &lt;= 150, &quot;Your HashTable types are too big to efficiently move when rehashing.  Consider using UniqueRef instead&quot;);

I&apos;ll move to UniqueRef in https://bugs.webkit.org/show_bug.cgi?id=238441.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855628</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-28 09:04:51 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #16)
&gt; Comment on attachment 455888 [details]
&gt; PFR v2
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; &gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());
&gt; 
&gt; If there is no page identifier, it probably means the navigation failed and
&gt; the promise should reject, as per
&gt; https://w3c.github.io/ServiceWorker/#clients-openwindow step 7.2.
&gt; Can we add a test where the navigation fails?


open window step 7.2 does *not* say throw an exception if the navigation fails.

It says throw an exception if &quot;the algorithm steps invoked in the step labeled HandleNavigate throws an exception&quot;

HandleNavigate invokes &quot;Navigate&quot; - https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate

Quickly glancing through that, &quot;Navigate&quot; only throws an exception &quot;If the source browsing context is not allowed to navigate browsingContext&quot;

In this case, the browsing context is new and is always allowed to be navigated.

A *failed* navigation (e.g. server unreachable, network error, etc) falls into:
&quot;If newContext’s Window object’s environment settings object&apos;s creation URL&apos;s origin is not the same as the service worker&apos;s origin, resolve promise with null and abort these steps.&quot;

So it does not throw an exception, but rather returns a null WindowClient to the serviceworker.

&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:147
&gt; &gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promiseIdentifier] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {
&gt; 
&gt; The work to identify the corresponding service worker can be done in network
&gt; process, that would probably more efficient.
&gt; openWindow could take a completion handler taking something like
&gt; Expected/ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; to handle
&gt; failure/null/client cases.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:175
&gt; &gt; +        callback(WTFMove(pageIdentifier));
&gt; 
&gt; We could introduce a dedicated std::optional&lt;ServiceWorkerClientData&gt;
&gt; SWServer::serviceWorkerClientFromPageIdentifier(PageIdentifier) and use it
&gt; here to do the translation.
&gt; If there is no PageId, send back an exception.
&gt; If service worker is third party, return std::nullopt.
&gt; That would be functionally equivalent to matchWindowWithPageIdentifier, but
&gt; a bit more efficient and ServiceWorkerClients code would look closer to the
&gt; spec.

All of this is meant to handle a case that I don&apos;t think is necessary to handle, because we&apos;re not concerned with the known exception case of the navigation steps.

I will run a test in Firefox and Chrome to see if they agree with my reading of the specs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855640</commentid>
    <comment_count>19</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-28 09:33:17 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #18)
&gt; (In reply to youenn fablet from comment #16)
&gt; &gt; Comment on attachment 455888 [details]
&gt; &gt; PFR v2
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; &gt; &gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());
&gt; &gt; 
&gt; &gt; If there is no page identifier, it probably means the navigation failed and
&gt; &gt; the promise should reject, as per
&gt; &gt; https://w3c.github.io/ServiceWorker/#clients-openwindow step 7.2.
&gt; &gt; Can we add a test where the navigation fails?
&gt; 
&gt; 
&gt; open window step 7.2 does *not* say throw an exception if the navigation
&gt; fails.
&gt; 
&gt; It says throw an exception if &quot;the algorithm steps invoked in the step
&gt; labeled HandleNavigate throws an exception&quot;
&gt; 
&gt; HandleNavigate invokes &quot;Navigate&quot; -
&gt; https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate
&gt; 
&gt; Quickly glancing through that, &quot;Navigate&quot; only throws an exception &quot;If the
&gt; source browsing context is not allowed to navigate browsingContext&quot;

The network process callbacks receives an optional&lt;PageIdentifier&gt;.
I would believe a null PageIdentifier would mean there is something wrong going on and it would make sense to me to reject the promise.
Otherwise, if we opened the tab, we should have a PageIdentifier.
Agreed we should either resolve as null or as Client depending on the Client origin.

&gt; In this case, the browsing context is new and is always allowed to be
&gt; navigated.
&gt; 
&gt; A *failed* navigation (e.g. server unreachable, network error, etc) falls
&gt; into:
&gt; &quot;If newContext’s Window object’s environment settings object&apos;s creation
&gt; URL&apos;s origin is not the same as the service worker&apos;s origin, resolve promise
&gt; with null and abort these steps.&quot;
&gt; 
&gt; So it does not throw an exception, but rather returns a null WindowClient to
&gt; the serviceworker.

Sounds good, we got a PageIdentifier, but we will not get any client from it.

&gt; &gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:147
&gt; &gt; &gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promiseIdentifier] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {
&gt; &gt; 
&gt; &gt; The work to identify the corresponding service worker can be done in network
&gt; &gt; process, that would probably more efficient.
&gt; &gt; openWindow could take a completion handler taking something like
&gt; &gt; Expected/ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; to handle
&gt; &gt; failure/null/client cases.
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:175
&gt; &gt; &gt; +        callback(WTFMove(pageIdentifier));
&gt; &gt; 
&gt; &gt; We could introduce a dedicated std::optional&lt;ServiceWorkerClientData&gt;
&gt; &gt; SWServer::serviceWorkerClientFromPageIdentifier(PageIdentifier) and use it
&gt; &gt; here to do the translation.
&gt; &gt; If there is no PageId, send back an exception.
&gt; &gt; If service worker is third party, return std::nullopt.
&gt; &gt; That would be functionally equivalent to matchWindowWithPageIdentifier, but
&gt; &gt; a bit more efficient and ServiceWorkerClients code would look closer to the
&gt; &gt; spec.
&gt; 
&gt; All of this is meant to handle a case that I don&apos;t think is necessary to
&gt; handle, because we&apos;re not concerned with the known exception case of the
&gt; navigation steps.

Not really, this is a different thing, it is more about removing the need to do several IPCs and sending all clients data to service worker process while only one can be sent at the time we have the openWindow response callback from UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855646</commentid>
    <comment_count>20</comment_count>
      <attachid>455888</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-28 09:44:34 -0700</bug_when>
    <thetext>Comment on attachment 455888
PFR v2

The iOS-wk2 failures are a preexisting mess on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855653</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-28 09:57:25 -0700</bug_when>
    <thetext>(In reply to youenn fablet from comment #19)
&gt; (In reply to Brady Eidson from comment #18)
&gt; &gt; (In reply to youenn fablet from comment #16)
&gt; &gt; &gt; Comment on attachment 455888 [details]
&gt; &gt; &gt; PFR v2
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:143
&gt; &gt; &gt; &gt; +                        promise-&gt;resolveWithJSValue(JSC::jsNull());
&gt; &gt; &gt; 
&gt; &gt; &gt; If there is no page identifier, it probably means the navigation failed and
&gt; &gt; &gt; the promise should reject, as per
&gt; &gt; &gt; https://w3c.github.io/ServiceWorker/#clients-openwindow step 7.2.
&gt; &gt; &gt; Can we add a test where the navigation fails?
&gt; &gt; 
&gt; &gt; 
&gt; &gt; open window step 7.2 does *not* say throw an exception if the navigation
&gt; &gt; fails.
&gt; &gt; 
&gt; &gt; It says throw an exception if &quot;the algorithm steps invoked in the step
&gt; &gt; labeled HandleNavigate throws an exception&quot;
&gt; &gt; 
&gt; &gt; HandleNavigate invokes &quot;Navigate&quot; -
&gt; &gt; https://html.spec.whatwg.org/multipage/browsing-the-web.html#navigate
&gt; &gt; 
&gt; &gt; Quickly glancing through that, &quot;Navigate&quot; only throws an exception &quot;If the
&gt; &gt; source browsing context is not allowed to navigate browsingContext&quot;
&gt; 
&gt; The network process callbacks receives an optional&lt;PageIdentifier&gt;.
&gt; I would believe a null PageIdentifier would mean there is something wrong
&gt; going on and it would make sense to me to reject the promise.
&gt; Otherwise, if we opened the tab, we should have a PageIdentifier.
&gt; Agreed we should either resolve as null or as Client depending on the Client
&gt; origin.

I still disagree. 

My design is &quot;if the client opened a window, there&apos;s a page identifier. If the client refused to open a window, there is no page identifier&quot;

There is currently no identified case where &quot;the client opened a window, but something went wrong that should cause us to reject&quot;

Your design would be necessary over mine *if there was* such a case, but there isn&apos;t.
 
&gt; &gt; &gt; &gt; Source/WebCore/workers/service/ServiceWorkerClients.cpp:147
&gt; &gt; &gt; &gt; +                matchWindowWithPageIdentifier(serviceWorkerIdentifier, *pageIdentifier, [promiseIdentifier] (auto&amp; scope, std::optional&lt;ServiceWorkerClientData&gt; clientData) mutable {
&gt; &gt; &gt; 
&gt; &gt; &gt; The work to identify the corresponding service worker can be done in network
&gt; &gt; &gt; process, that would probably more efficient.
&gt; &gt; &gt; openWindow could take a completion handler taking something like
&gt; &gt; &gt; Expected/ExceptionOr&lt;std::optional&lt;ServiceWorkerClientData&gt;&gt; to handle
&gt; &gt; &gt; failure/null/client cases.
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.cpp:175
&gt; &gt; &gt; &gt; +        callback(WTFMove(pageIdentifier));
&gt; &gt; &gt; 
&gt; &gt; &gt; We could introduce a dedicated std::optional&lt;ServiceWorkerClientData&gt;
&gt; &gt; &gt; SWServer::serviceWorkerClientFromPageIdentifier(PageIdentifier) and use it
&gt; &gt; &gt; here to do the translation.
&gt; &gt; &gt; If there is no PageId, send back an exception.
&gt; &gt; &gt; If service worker is third party, return std::nullopt.
&gt; &gt; &gt; That would be functionally equivalent to matchWindowWithPageIdentifier, but
&gt; &gt; &gt; a bit more efficient and ServiceWorkerClients code would look closer to the
&gt; &gt; &gt; spec.
&gt; &gt; 
&gt; &gt; All of this is meant to handle a case that I don&apos;t think is necessary to
&gt; &gt; handle, because we&apos;re not concerned with the known exception case of the
&gt; &gt; navigation steps.
&gt; 
&gt; Not really, this is a different thing, it is more about removing the need to
&gt; do several IPCs and sending all clients data to service worker process while
&gt; only one can be sent at the time we have the openWindow response callback
&gt; from UIProcess.

There&apos;s a lot of process and thread hops here in the case of responding to the SW message *and* the cases where the window would no longer be a valid client by the time the service worker process get&apos;s the reply.

I don&apos;t think pre-matching is obviously better then matching later.

But I also don&apos;t think we&apos;re going to reason our way out of it by trading bugzilla comments here.

I&apos;m going to land the patch as-is (which I think we both agree is not *wrong*), and if we come to agreement that prematching is obviously better I think it would be a great followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855689</commentid>
    <comment_count>22</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-28 11:15:32 -0700</bug_when>
    <thetext>Committed r291979 (248938@main): &lt;https://commits.webkit.org/248938@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455888.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855790</commentid>
    <comment_count>23</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-03-28 15:02:57 -0700</bug_when>
    <thetext>Committed r291994 (248950@trunk): &lt;https://commits.webkit.org/248950@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855967</commentid>
    <comment_count>24</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-29 02:57:30 -0700</bug_when>
    <thetext>&gt; I still disagree. 
&gt; 
&gt; My design is &quot;if the client opened a window, there&apos;s a page identifier. If
&gt; the client refused to open a window, there is no page identifier&quot;
&gt; 
&gt; There is currently no identified case where &quot;the client opened a window, but
&gt; something went wrong that should cause us to reject&quot;
&gt; 
&gt; Your design would be necessary over mine *if there was* such a case, but
&gt; there isn&apos;t.

One such example is if the delegate is not implemented.
There will be no tab opened and it makes more sense for openWindow to reject.

&gt; There&apos;s a lot of process and thread hops here in the case of responding to
&gt; the SW message *and* the cases where the window would no longer be a valid
&gt; client by the time the service worker process get&apos;s the reply.
&gt; 
&gt; I don&apos;t think pre-matching is obviously better then matching later.

I would not expect race conditions here, the UIProcess callback should handle these.
It is not really about matching sooner or later but a simple optimization.
Currently we do:
- UIProcess tells network process that openWindow is done, NetworkProcess notifies ServiceWorker process about this. Service Worker process gets back to network process to get all clients and finally resolves the promise
What we could do:
- UIProcess tells network process that openWindow is done, NetworkProcess translates pageID to client and sends it to ServiceWorker process. ServiceWorker process resolves promise based on this.
We basically remove one service worker process &lt;-&gt; Network process exchange.

I&apos;ll look at this in a follow-up.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455811</attachid>
            <date>2022-03-25 17:03:21 -0700</date>
            <delta_ts>2022-03-25 19:30:28 -0700</delta_ts>
            <desc>EWS v1</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>47103</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggNjIwNDAxMGZhZmNlLi42ZTE0OTMxNDg1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtNTAsNiArNTAsOCBAQCBzdHJ1Y3QgQ2xpZW50
T3JpZ2luIHsKIAogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW47CiAgICAgU2VjdXJp
dHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKKworICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyh0b3BPcmlnaW4udG9TdHJpbmcoKSwgIi0iLCBjbGll
bnRPcmlnaW4udG9TdHJpbmcoKSk7IH0KIH07CiAKIGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRl
eCA5YTk3MGM2NDRjZmIuLjVmZGRmNjE2MjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCwxMiArNTgsMTIgQEAgc3RhdGljIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNjcmlwdEV4ZWN1dGkKIAogU2VydmljZVdvcmtlckNs
aWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYK
IHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRl
ZENvcHkoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1
c2VkLCBmb2N1c09yZGVyIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVU
eXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIgfTsKIH0KIAog
U2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVk
Q29weSgpICYmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBX
VEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
LCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJldHVybiB7IGlkZW50
aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmll
ciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBm
b2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC03NCwx
MSArNzQsMTUgQEAgU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERh
dGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KICAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKICAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQubG9hZGVyKCktPmxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vOwogCisgICAgYXV0
byBkb2N1bWVudFBhZ2VJZGVudGlmaWVyID0gZG9jdW1lbnQucGFnZUlEKCk7CisKICAgICByZXR1
cm4gewogICAgICAgICBjb250ZXh0LmlkZW50aWZpZXIoKSwKICAgICAgICAgaXNEb2N1bWVudCA/
IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3cgOiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZTo6V29ya2VyLAogICAgICAgICB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoY29udGV4
dCksCi0gICAgICAgIGRvY3VtZW50LmNyZWF0aW9uVVJMKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkLAorICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLAorICAgICAgICBkb2N1
bWVudFBhZ2VJZGVudGlmaWVyID8gKmRvY3VtZW50UGFnZUlkZW50aWZpZXIgOiBQYWdlSWRlbnRp
ZmllciB7IH0sCisgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLAogICAgICAg
ICAhZG9jdW1lbnQuaGlkZGVuKCksCiAgICAgICAgIGRvY3VtZW50Lmhhc0ZvY3VzKCksCiAgICAg
ICAgIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggOTZhYTdiOTAzNzViLi40NjlhNTNjNTdmODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlByb2Nlc3NR
dWFsaWZpZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllci5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCkBAIC00NSw2ICs0Niw3IEBA
IHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2VydmljZVdvcmtlckNsaWVu
dFR5cGUgdHlwZTsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIGZyYW1lVHlwZTsK
ICAgICBVUkwgdXJsOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVyOwogICAgIExh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OwogICAgIGJvb2wgaXNWaXNpYmxlIHsgZmFsc2UgfTsKICAgICBib29sIGlzRm9jdXNlZCB7IGZh
bHNlIH07CkBAIC02Miw3ICs2NCw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7
CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBpZGVudGlm
aWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8IGZvY3VzT3JkZXI7CisgICAgZW5j
b2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8PCBwYWdlSWRl
bnRpZmllciA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwg
aXNGb2N1c2VkIDw8IGZvY3VzT3JkZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBA
IC04OCw2ICs5MCwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXImCiAgICAgaWYgKCF1cmwpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHBhZ2VJZGVudGlmaWVyOwor
ICAgIGlmICghcGFnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
ICAgICBzdGQ6Om9wdGlvbmFsPExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOwogICAgIGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBA
IC0xMDgsNyArMTE1LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4g
U2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZm9jdXNP
cmRlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RG
TW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBX
VEZNb3ZlKCp1cmwpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdU
Rk1vdmUoKmlzVmlzaWJsZSksIFdURk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3Jk
ZXIpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0
eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqcGFnZUlk
ZW50aWZpZXIpLCBXVEZNb3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdURk1v
dmUoKmlzVmlzaWJsZSksIFdURk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3JkZXIp
IH0gfTsKIH0KIAogdXNpbmcgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrID0g
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYp
PjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudHMuY3BwCmluZGV4IDk1ZDQwMzQwNDkzNC4uYzc2ODZjM2Q3Mzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50cy5jcHAKQEAgLTk2LDEwICs5Niw2NiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpt
YXRjaEFsbChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGllbgogICAg
IH0pOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQorc3RhdGljIHZvaWQgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSYsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+KT4mJiBj
YWxsYmFjaykKIHsKLSAgICBVTlVTRURfUEFSQU0odXJsKTsKLSAgICBwcm9taXNlLT5yZWplY3Qo
RXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJjbGllbnRzLm9wZW5XaW5kb3coKSBpcyBu
b3QgeWV0IHN1cHBvcnRlZCJfcyB9KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgcGFnZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldICgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGF1dG8gb3B0aW9ucyA9IFNl
cnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMgeyB0cnVlLCBTZXJ2aWNlV29ya2VyQ2xpZW50
VHlwZTo6V2luZG93IH07CisgICAgICAgIGNvbm5lY3Rpb24tPm1hdGNoQWxsKHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBvcHRpb25zLCBbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoVmVjdG9yPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYmIGNsaWVudHNEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBbcGFnZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGNsaWVudHNEYXRhID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY2xpZW50c0RhdGEp
KV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGRh
dGEgOiBjbGllbnRzRGF0YSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wYWdlSWRl
bnRpZmllciA9PSBwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soc2NvcGUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Y2FsbGJhY2soc2NvcGUsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSk7CisgICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3co
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBMT0coU2VydmljZVdvcmtl
ciwgIldlYlByb2Nlc3MgJWkgc2VydmljZSB3b3JrZXIgY2FsbGluZyBvcGVuV2luZG93IHRvIFVS
TCAlcyIsIGdldHBpZCgpLCB1cmxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS50aHJlYWQoKS5pZGVudGlmaWVyKCk7CisgICAgYXV0byB1cmwgPSBjb250ZXh0
LmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygi
VVJMIHN0cmluZyAiLCB1cmxTdHJpbmcsICIgY2Fubm90IHN1Y2Nlc3NmdWxseSBiZSBwYXJzZWQi
KSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh1cmwucHJvdG9jb2xJc0Fi
b3V0KCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwg
bWFrZVN0cmluZygiU2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdygpIGNhbm5vdCBiZSBj
YWxsZWQgd2l0aCBVUkwgIiwgdXJsLnN0cmluZygpKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsID0gdXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRh
YmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xl
dG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBjb25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCB1cmwuc3RyaW5nKCksIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHBhZ2VJZGVudGlmaWVyID0g
V1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlJikgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgTE9HKFNlcnZp
Y2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIGZpbmlzaGVkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpv
cGVuV2luZG93IGNhbGwuIFJlc3VsdGluZyBwYWdlIGlkZW50aWZpZXIgaXMgJXMiLCBnZXRwaWQo
KSwgcGFnZUlkZW50aWZpZXIgPyBwYWdlSWRlbnRpZmllci0+bG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkgOiAiPE5PTkU+Iik7CisKKyAgICAgICAgICAgICAgICBpZiAoIXBhZ2VJZGVudGlm
aWVyKSB7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoSlNWYWx1ZShK
U0M6OmpzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIG1hdGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCAqcGFnZUlkZW50aWZpZXIsIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKGF1dG8mIHNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiBjbGllbnREYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFj
bGllbnREYXRhKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0
aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBhdXRvIGNsaWVu
dCA9IFNlcnZpY2VXb3JrZXJDbGllbnQ6OmdldE9yQ3JlYXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGll
bnREYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJm
YWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihXVEZNb3ZlKGNsaWVudCkpOworICAgICAgICAgICAg
ICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGFpbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5k
ZXggYjI3ODMyM2Y5OTJkLi41ZTI3ZWU0MzllNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY4
LDYgKzY4LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMm
LCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIAorICAgICAgICB2aXJ0dWFs
IHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4m
Jik+JiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0QXNJ
bnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpID0gMDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNjE4NjM0NmNkMTc2Li44ZTBkYTk1MjMx
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODIsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5k
Q2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBvcGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgPSAwOworCiAgICAgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA5ZWRkNDQ1ZTZjYmMu
LjE2MDA2NWQzNmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0Owog
Ci0gICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwogICAgIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmFibGVEb21haW47IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA2N2Nl
ZWY1NDQ4NGQuLjJkZDEwM2Y4NTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udHJvbENsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbgogICAg
ICAgICB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAg
ICB9KTsKIAotICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkg
PyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vIH07CisgICAgU2VydmljZVdvcmtlckNs
aWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJs
KCksIHsgfSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9y
aWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkgfSwgV1RGTW92ZShkYXRh
KSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IGU5YTVhZjQyNzU2Yi4uZjNmZmU4ZmM1NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTU3LDYgKzE1Nywy
NyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9V
bnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7Cisg
ICAgYXV0byogc2VydmVyID0gdGhpcy0+c2VydmVyKCk7CisgICAgaWYgKCFzZXJ2ZXIpIHsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlci0+d29ya2VyQnlJRChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYg
cGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHBhZ2VJ
ZGVudGlmaWVyKSk7CisgICAgfTsKKworICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6T3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgaWRlbnRp
Zmllciwgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5nLCB3b3JrZXItPm9yaWdpbigpLmNs
aWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGll
bnRzRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6TWF0Y2hBbGxDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgY2xpZW50c0RhdGEg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggYmU5NjE1MjhkYjJmLi5jYmM1NTdlZWRiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpIGZpbmFsOwogICAg
IHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7CisgICAgdm9pZCBv
cGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMDc4YjZlYTMwYjkxLi5hMWQ5Yzc4YjhmMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzksNiArMzksOCBAQCBtZXNzYWdlcyAtPiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmlu
ZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkK
KworICAgIE9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG5ld0NsaWVudERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCAwODE3MTBhOGM3MTMuLjVhZDdmNzRjZmEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CkBAIC01Niwx
MCArNTcsMTIgQEAKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDbGllbnQgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmVDbGllbnQoaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4g
ZGVsZWdhdGUpCi0gICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50KFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlLCBpZDxf
V0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGF0YVN0
b3JlKGRhdGFTdG9yZSkKKyAgICAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAs
IG1faGFzUmVxdWVzdFN0b3JhZ2VTcGFjZVNlbGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdFN0b3JhZ2VTcGFjZTogZnJhbWVPcmlnaW46
IHF1b3RhOiBjdXJyZW50U2l6ZTogc3BhY2VSZXF1aXJlZDogZGVjaXNpb25IYW5kbGVyOildKQog
ICAgICAgICAsIG1faGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZWxlY3RvcihbbV9kZWxlZ2F0
ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTogY29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9oYXNPcGVu
V2luZG93U2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5XaW5kb3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46
Y29tcGxldGlvbkhhbmRsZXI6KV0pCiAgICAgewogICAgIH0KIApAQCAtMTA0LDkgKzEwNywzMiBA
QCBwcml2YXRlOgogICAgICAgICBbbV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bnNVUkxDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwogICAgIH0KIAorICAgIHZvaWQgb3BlbldpbmRv
d0Zyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlm
ICghbV9oYXNPcGVuV2luZG93U2VsZWN0b3IgfHwgIW1fZGVsZWdhdGUgfHwgIW1fZGF0YVN0b3Jl
KSB7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKSwgQHNlbGVj
dG9yKHdlYnNpdGVEYXRhU3RvcmU6b3BlbldpbmRvdzpmcm9tU2VydmljZVdvcmtlck9yaWdpbjpj
b21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlcildKFdLV2ViVmlldyAqbmV3V2ViVmlldykgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5ld1dlYlZpZXcuX3BhZ2UuZ2V0KCkp
OworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIG5zVVJMID0gKE5TVVJMICopVVJMIHsgdXJs
IH07CisgICAgICAgIGF1dG8gYXBpT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHNlcnZpY2VXb3JrZXJPcmlnaW4pOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFz
ZWQoKSB3ZWJzaXRlRGF0YVN0b3JlOm1fZGF0YVN0b3JlLmdldEF1dG9yZWxlYXNlZCgpIG9wZW5X
aW5kb3c6bnNVUkwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46d3JhcHBlcihhcGlPcmlnaW4uZ2V0
KCkpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKKyAgICB9CisK
KyAgICBXZWFrT2JqQ1B0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0b3JlOwogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsK
ICAgICBib29sIG1faGFzUmVxdWVzdFN0b3JhZ2VTcGFjZVNlbGVjdG9yIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZWxlY3RvciB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hhc09wZW5XaW5kb3dTZWxlY3RvciB7IGZhbHNlIH07CiB9OwogCiBAaW1wbGVt
ZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCkBAIC02NTIsNyArNjc4LDcgQEAgc3RhdGljIFZl
Y3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0Fy
cmF5ICpkYXRhUmVjb3IKIC0gKHZvaWQpc2V0X2RlbGVnYXRlOihpZCA8X1dLV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0
b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQo
bWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihzZWxmLCBkZWxlZ2F0ZSkpOwog
fQogCiAtIChfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKV9jb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKaW5kZXggMGI4NTczMDQ4Nzk2Li4xZDE1ODE3
NDM1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKQEAgLTI2LDExICsyNiwxNSBA
QAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CiAKK0BjbGFzcyBXS1NlY3VyaXR5T3JpZ2luOworQGNsYXNzIFdLV2Vic2l0
ZURhdGFTdG9yZTsKK0BjbGFzcyBXS1dlYlZpZXc7CisKIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTUpLCBpb3MoMTMuMCkpCiBAcHJvdG9jb2wgX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
IDxOU09iamVjdD4KIAogQG9wdGlvbmFsCiAtICh2b2lkKXJlcXVlc3RTdG9yYWdlU3BhY2U6KE5T
VVJMICopbWFpbkZyYW1lVVJMIGZyYW1lT3JpZ2luOihOU1VSTCAqKWZyYW1lVVJMIHF1b3RhOihO
U1VJbnRlZ2VyKXF1b3RhIGN1cnJlbnRTaXplOihOU1VJbnRlZ2VyKWN1cnJlbnRTaXplIHNwYWNl
UmVxdWlyZWQ6KE5TVUludGVnZXIpc3BhY2VSZXF1aXJlZCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkpZGVjaXNpb25IYW5kbGVyOwogLSAodm9pZClk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpj
cmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcjsKLQorLSAodm9pZCl3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3BlbldpbmRvdzooTlNVUkwgKil1cmwg
ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZXJ2aWNlV29ya2Vy
T3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKm5ld1dlYlZpZXcp
KWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMjRjZjIwZDczMjAz
Li5iMWEyMjBiOGMyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc5OCw2ICsxNzk4LDE2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25XaGVuUG9zc2libGUoUmVtCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKHdvcmtl
clR5cGUsIHNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4sIHByb2Nlc3NJZGVudGlmaWVyKSwg
MCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNl
V29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogc3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNl
c3Npb25JRChzZXNzaW9uSUQpKSB7CisgICAgICAgIHN0b3JlLT5vcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIoaWRlbnRpZmllciwgdXJsU3RyaW5nLCBzZXJ2aWNlV29ya2VyT3JpZ2luLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NB
R0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWU4NmYzNDI2M2UwLi40MzdmYmNlYWE5NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0yOTksNiArMjk5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVS
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBl
LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDFkZDIzMzA3MzI5Ni4uN2NhZjZiNzIzZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC05MSw2ICs5MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpIC0+IChib29sIGFsbG93ZWQpCiAgICAgRGF0YVRhc2tEaWRSZWNlaXZl
RGF0YShXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBEYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6RGF0
YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
CisKKyAgICBPcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
dXJsU3RyaW5nLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlcnZpY2VXb3Jr
ZXJPcmlnaW4pIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQ
YWdlKQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA4ZWYwNTM2NTkxMDguLmJiOTg3ZjJjNTlkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC00ODcwLDcgKzQ4NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcAogICAgICAgICBpZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNl
dENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxsU2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2Fs
bExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQogCiAgICAg
ZnJhbWUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtNDkwNSwxMiArNDkwNSwxNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3RyYXRpb24o
Ym9vbCBzdWNjZXNzKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjYWxsU2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKQordm9pZCBXZWJQYWdl
UHJveHk6OmNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNjZXNz
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobV9pc1NlcnZpY2VXb3Jr
ZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAgIGlm
IChtX2lzU2VydmljZVdvcmtlclBhZ2UgJiYgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlv
bkhhbmRsZXIgJiYgIXN1Y2Nlc3MpCiAgICAgICAgIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgorCisgICAgaWYgKG1fc2VydmljZVdvcmtlck9w
ZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2spCisgICAgICAgIG1fc2VydmljZVdvcmtlck9wZW5X
aW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soc3VjY2Vzcyk7CiB9CiAKICNpZiBFTkFCTEUoSU5URUxM
SUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKQEAgLTUxMzQsNiArNTEzNyw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmCiAgICAgICAgIHJlc2V0UmVjZW50Q3Jhc2hDb3VudFNvb24oKTsKIAog
ICAgICAgICBub3RpZnlQcm9jZXNzUG9vbFRvUHJld2FybSgpOworCisgICAgICAgIGNhbGxMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkodHJ1ZSk7CiAgICAgfQogCiAgICAgbV9pc0xv
YWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IGZhbHNl
OwpAQCAtNTE4Miw3ICs1MTg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogICAgICAgICBp
ZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRp
b25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxsU2VydmljZVdvcmtlckxhdW5jaENv
bXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExvYWRDb21wbGV0aW9u
SGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQogfQogCkBAIC03OTk5LDcgKzgwMDQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0
U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogICAgIGlmIChyZXNldFN0YXRlUmVhc29uICE9IFJlc2V0
U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwKQotICAgICAgICBjYWxsU2VydmljZVdvcmtlckxh
dW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExvYWRDb21w
bGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAKICAgICBpZiAobV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZh
bGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGQyNjUw
ODVkN2E1Ni4uOWQyNTZjNmQ4M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMjA4MCw2ICsyMDgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW50ZXJhY3Rh
YmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKIAorI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJPcGVuV2lu
ZG93Q29tcGxldGlvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkNhbGxiYWNrKSB7IG1fc2VydmljZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayk7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC0yNjA2LDcgKzI2MTAsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wg
c3VjY2Vzcyk7CiAjZW5kaWYKLSAgICB2b2lkIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxl
dGlvbkhhbmRsZXJJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgY2FsbExvYWRDb21wbGV0aW9uSGFu
ZGxlcnNJZk5lY2Vzc2FyeShib29sIHN1Y2Nlc3MpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGF0aWMgYm9vbCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsKQEAgLTMxMTgs
NiArMzEyMiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJv
b2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93
Q29tcGxldGlvbkNhbGxiYWNrOwogI2VuZGlmCiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdl
UHJveHk+IG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDcxYWU5
MjY1NDhiYy4uNmZhMjZiNDJkMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjA4Nyw0ICsyMDg3
LDM0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0CiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERlc3Ryb3lOb3RpZmljYXRp
b24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAg
YXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChXZWJQ
YWdlUHJveHkqIG5ld1BhZ2UpIG11dGFibGUgeworICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW5ld1BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5pc0xvYWRp
bmcoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIlRoZSBXS1dlYlZpZXcg
cHJvdmlkZWQgaW4gcmVzcG9uc2UgdG8gYSBTZXJ2aWNlV29ya2VyIG9wZW5XaW5kb3cgcmVxdWVz
dCB3YXMgbm90IGluIHRoZSBsb2FkaW5nIHN0YXRlIik7CisgICAgICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBpbm5lckNhbGxiYWNrID0gW3BhZ2VJRCA9IG5ld1BhZ2UtPmlkZW50aWZpZXIoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAg
ICAgICAgICBhdXRvKiBuZXdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7
CisgICAgICAgICAgICBpZiAoIW5ld1BhZ2UgfHwgIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2sobmV3UGFnZS0+d2ViUGFnZUlEKCkpOwor
ICAgICAgICB9OworCisgICAgICAgIG5ld1BhZ2UtPnNldFNlcnZpY2VXb3JrZXJPcGVuV2luZG93
Q29tcGxldGlvbkNhbGxiYWNrKFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworICAgIH07CisKKyAg
ICBtX2NsaWVudC0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmluZywgc2Vydmlj
ZVdvcmtlck9yaWdpbiwgV1RGTW92ZShpbm5lckNhbGxiYWNrKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCA2ZWY5NTUwMTcyNjYuLmJmNmI3ZjMzZjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzc5
LDYgKzM3OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBkaWREZXN0cm95U2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKKyAg
ICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYpOworCiBwcml2YXRl
OgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9uIDogYm9vbCB7IE5vLCBZZXMg
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgK
aW5kZXggZjdjNjgzZmY3MTYzLi5mN2FiZTMwN2E2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmgKQEAgLTM2LDYgKzM2LDggQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwogY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC01
MCw2ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9wZW5X
aW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGU5NWI3Y2FlODZiYy4uNDhlNzU1NGQyMDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUwLDYgKzE1MCw4IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNh
dGlvbk1lc3NhZ2UoVSYmIG1lCiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBMT0coTm90
aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgZ29pbmcgdG8gc2hvdyBub3RpZmljYXRpb24gJXMi
LCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKS50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCiAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCku
bm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKQEAgLTIwOCw2ICsyMTAsOCBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBMT0coTm90aWZp
Y2F0aW9ucywgIldlYlByb2Nlc3MgJWkgRElEIFNIT1cgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlk
KCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3Rp
ZmljYXRpb24pCkBAIC0yMjMsMTEgKzIyNywxNSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJX
ZWJQcm9jZXNzICVpIERJRCBDTElDSyBub3RpZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZp
Y2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZp
Y2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVp
IGhhbmRsaW5nIGNsaWNrIGV2ZW50IGZvciBub3RpZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90
aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIC8vIEluZGljYXRl
IHRoYXQgdGhpcyBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkIGluIHJlYWN0aW9uIHRvIGEgdXNl
cidzIGludGVyYWN0aW9uIHdpdGggYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCiAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgbm90
aWZpY2F0aW9uLT5kaXNwYXRjaENsaWNrRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCBhMWM2OGNiZWE0MzIuLjRiM2QyNjNmN2YxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzMyLDYgKzMzMiwxMSBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudHNEYXRhKSk7CiB9
CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHVybCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmNsYWltKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZv
aWQ+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uOjpDbGFpbSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIFtjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCmluZGV4IGI1Njk0MGU0YjAzMy4uNjA0ZTI2YjQwOTdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTg2LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZv
aWQgc2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wp
IGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBD
IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBhMDFjZWE0Mjc3MWEuLjAxNmNk
YjBhNTBmMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTM4MCw2ICszODAsMTcgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBh
Z2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmYKIH0KIAogV0tQYWdlUmVm
IFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRW
aWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFj
dGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1
cmVzKQoreworICAgIGF1dG8qIHBsYXRmb3JtV2ViVmlldyA9IGNyZWF0ZU90aGVyUGxhdGZvcm1X
ZWJWaWV3KHBhcmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIHdpbmRv
d0ZlYXR1cmVzKTsKKyAgICBpZiAoIXBsYXRmb3JtV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhdXRvKiBwYWdlID0gcGxhdGZvcm1XZWJWaWV3LT5wYWdlKCk7CisgICAg
V0tSZXRhaW4ocGFnZSk7CisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK1BsYXRmb3JtV2ViVmlldyog
VGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmll
dyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05h
dmlnYXRpb25BY3Rpb25SZWYsIFdLV2luZG93RmVhdHVyZXNSZWYpCiB7CiAgICAgbV9jdXJyZW50
SW52b2NhdGlvbi0+d2lsbENyZWF0ZU5ld1BhZ2UoKTsKIApAQCAtMzg5LDcgKzQwMCw4IEBAIFdL
UGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyog
cGFyZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBtX2NyZWF0ZWRPdGhlclBhZ2UgPSB0cnVlOwog
Ci0gICAgYXV0byB2aWV3ID0gcGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UocGFyZW50VmlldywgY29u
ZmlndXJhdGlvbiwgcGFyZW50Vmlldy0+b3B0aW9ucygpKTsKKyAgICBhdXRvIG9wdGlvbnMgPSBw
YXJlbnRWaWV3ID8gcGFyZW50Vmlldy0+b3B0aW9ucygpIDogbV9tYWluV2ViVmlldy0+b3B0aW9u
cygpOworICAgIGF1dG8gdmlldyA9IHBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBhcmVudFZpZXcs
IGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMpOwogICAgIFdLUGFnZVJlZiBuZXdQYWdlID0gdmlldy0+
cGFnZSgpOwogCiAgICAgdmlldy0+cmVzaXplVG8oODAwLCA2MDApOwpAQCAtNTA5LDkgKzUyMSw5
IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2Vi
VmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkudXBkYXRlV2luZG93U2NhbGVGb3JUZXN0KHZpZXcucHRyKCksICpUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkubV9jdXJyZW50SW52b2NhdGlvbik7CiAKKyAgICBQbGF0Zm9ybVdlYlZp
ZXcqIHZpZXdUb1JldHVybiA9IHZpZXcucHRyKCk7CiAgICAgbV9hdXhpbGlhcnlXZWJWaWV3cy5h
cHBlbmQoV1RGTW92ZSh2aWV3KSk7Ci0gICAgV0tSZXRhaW4obmV3UGFnZSk7Ci0gICAgcmV0dXJu
IG5ld1BhZ2U7CisgICAgcmV0dXJuIHZpZXdUb1JldHVybjsKIH0KIAogY29uc3QgY2hhciogVGVz
dENvbnRyb2xsZXI6OmxpYnJhcnlQYXRoRm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmgKaW5kZXggNDQ1Mzk1Mzg4MzkyLi40OGZhNWFkNDJlZjggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTM3OCw2ICszNzgsOCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBkZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBv
cmlnaW4pOwogICAgIGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb25PblByb21wdChXS1N0
cmluZ1JlZiBvcmlnaW4pOwogCisgICAgUGxhdGZvcm1XZWJWaWV3KiBjcmVhdGVPdGhlclBsYXRm
b3JtV2ViVmlldyhQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRp
b25SZWYsIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tXaW5kb3dGZWF0dXJlc1JlZik7CisKIHBy
aXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQ
YWdlQ29uZmlndXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29u
c3QgVGVzdE9wdGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA3NzIzYmE0ODdhNTYuLmRlZDUxYmI2
MDYwYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRy
b2xsZXJDb2NvYS5tbQpAQCAtMjE0LDcgKzIxNCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0
CiBVbmlxdWVSZWY8UGxhdGZvcm1XZWJWaWV3PiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVh
dGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0
aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5ld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIGNvcHldKTsK
LSAgICBbbmV3Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tX
ZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpXTsKKyAgICBpZiAocGFyZW50Vmll
dykKKyAgICAgICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19j
YXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtu
ZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0
aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3
XS5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmVdOwogICAgIGF1dG8gdmlldyA9IG1ha2VV
bmlxdWVSZWY8UGxhdGZvcm1XZWJWaWV3PihuZXdDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25z
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQppbmRleCBlMWY2OGU0OGFmNzMuLjAzYTEzOGQ2NmNm
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0V2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsMTIgQEAKICNpbXBvcnQg
ImNvbmZpZy5oIgogI2ltcG9ydCAiVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogCisj
aW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCisj
aW1wb3J0ICJUZXN0UnVubmVyV0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Lmg+CisjaW1wb3J0IDx3dGYvVW5pcXVlUmVmLmg+CisKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlIHsgfQogLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKQEAgLTYx
LDQgKzY3LDE1IEBACiAgICAgX3Nob3VsZEFsbG93QW55U1NMQ2VydGlmaWNhdGUgPSBzaG91bGRB
bGxvd0FueVNTTENlcnRpZmljYXRlOwogfQogCistICh2b2lkKXdlYnNpdGVEYXRhU3RvcmU6KFdL
V2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcGVuV2luZG93OihOU1VSTCAqKXVybCBmcm9t
U2VydmljZVdvcmtlck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlcnZpY2VXb3JrZXJPcmln
aW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqbmV3V2ViVmlldykpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvKiBuZXdWaWV3ID0gV1RSOjpUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuY3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcobnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbmV3Vmlldy0+
cGxhdGZvcm1WaWV3KCk7CisKKyAgICBBU1NFUlQod2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgPT0gZGF0YVN0b3JlKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgY29tcGxldGlvbkhhbmRsZXIo
d2ViVmlldyk7Cit9CisKIEBlbmQK
</data>
<flag name="commit-queue"
          id="483899"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455815</attachid>
            <date>2022-03-25 19:30:28 -0700</date>
            <delta_ts>2022-03-25 21:17:06 -0700</delta_ts>
            <desc>EWS v2</desc>
            <filename>pat</filename>
            <type>text/plain</type>
            <size>47911</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTY4
MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBU
JiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZp
Y2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGlu
c3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAgICAgICBj
aGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDYyMDQwMTBmYWZjZS4uNmUxNDkzMTQ4
NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKQEAgLTUwLDYgKzUwLDggQEAgc3Ry
dWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgdG9wT3JpZ2luOwog
ICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47CisKKyAgICBTdHJpbmcgbG9nZ2lu
Z1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmcodG9wT3JpZ2luLnRvU3RyaW5nKCks
ICItIiwgY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOyB9CiB9OwogCiBpbmxpbmUgdm9pZCBhZGQo
SGFzaGVyJiBoYXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YS5jcHAKaW5kZXggOWE5NzBjNjQ0Y2ZiLi41ZmRkZjYxNjIwZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHN0YXRpYyBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShTY3JpcHRFeGVjdXRpCiAKIFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHko
KSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1
cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2li
bGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5
cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVy
IH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
Ojppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZy
YW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIgfTsKKyAgICByZXR1
cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgcGFn
ZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlz
Rm9jdXNlZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQpAQCAtNzQsMTEgKzc0LDE1IEBAIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAgYXV0byYg
ZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgYXV0byBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGRvY3VtZW50LmxvYWRlcigpICYmIGRvY3VtZW50Lmxv
YWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpID8gTGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObzsK
IAorICAgIGF1dG8gZG9jdW1lbnRQYWdlSWRlbnRpZmllciA9IGRvY3VtZW50LnBhZ2VJRCgpOwor
CiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dC5pZGVudGlmaWVyKCksCiAgICAgICAgIGlz
RG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IDogU2VydmljZVdvcmtl
ckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlKGNvbnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLCBsYXN0TmF2aWdh
dGlvbldhc0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwKKyAg
ICAgICAgZG9jdW1lbnRQYWdlSWRlbnRpZmllciA/ICpkb2N1bWVudFBhZ2VJZGVudGlmaWVyIDog
UGFnZUlkZW50aWZpZXIgeyB9LAorICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAgICAgICBkb2N1bWVudC5oYXNGb2N1
cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDk2YWE3YjkwMzc1Yi4uNDY5YTUz
YzU3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgpAQCAtNDUs
NiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBm
cmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmll
cjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBpc0Zv
Y3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNs
aWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlckNs
aWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIg
PDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVy
OworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwg
PDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNW
aXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBE
ZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlm
ICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwYWdlSWRl
bnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNs
aWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBp
ZiAoIWZvY3VzT3JkZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1
cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJh
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3Zl
KCpmb2N1c09yZGVyKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwg
V1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1v
dmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0
ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpm
b2N1c09yZGVyKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxD
YWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA5NWQ0MDM0MDQ5MzQuLmM3Njg2YzNkNzM4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudHMuY3BwCkBAIC05NiwxMCArOTYsNjYgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
Q2xpZW4KICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRv
dyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyB2b2lkIG1hdGNoV2luZG93V2l0aFBhZ2VJZGVu
dGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBQ
YWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgcHJvbWlz
ZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiY2xpZW50cy5vcGVuV2lu
ZG93KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBhdXRvIG9w
dGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zIHsgdHJ1ZSwgU2VydmljZVdv
cmtlckNsaWVudFR5cGU6OldpbmRvdyB9OworICAgICAgICBjb25uZWN0aW9uLT5tYXRjaEFsbChz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFZlY3RvcjxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnRzRGF0YSkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtl
cihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3BhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBjbGllbnRzRGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNs
aWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBkYXRhIDogY2xpZW50c0RhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRh
dGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKHNjb3BlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpv
cGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgTE9HKFNl
cnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIHNlcnZpY2Ugd29ya2VyIGNhbGxpbmcgb3Blbldp
bmRvdyB0byBVUkwgJXMiLCBnZXRwaWQoKSwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRpZmllcigpOworICAgIGF1dG8gdXJs
ID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOworCisgICAgaWYgKCF1cmwuaXNWYWxp
ZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1h
a2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAiIGNhbm5vdCBzdWNjZXNzZnVsbHkg
YmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXJsLnBy
b3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBU
eXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3coKSBj
YW5ub3QgYmUgY2FsbGVkIHdpdGggVVJMICIsIHVybC5zdHJpbmcoKSkgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCA9IHVybC5pc29sYXRlZENvcHko
KV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi0+b3Blbldp
bmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoc3RkOjpvcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwYWdlSWRl
bnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
cl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBmaW5pc2hlZCBTZXJ2aWNlV29ya2Vy
Q2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcgcGFnZSBpZGVudGlmaWVyIGlzICVz
IiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlkZW50aWZpZXItPmxvZ2dpbmdTdHJp
bmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworCisgICAgICAgICAgICAgICAgaWYgKCFw
YWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0
aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtYXRjaFdpbmRvd1dpdGhQYWdlSWRl
bnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgKnBhZ2VJZGVudGlmaWVyLCBbcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiBzY29wZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBjbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50OjpnZXRPckNyZWF0ZShzY29wZSwgV1RG
TW92ZSgqY2xpZW50RGF0YSkpOworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
PElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4oV1RGTW92ZShjbGllbnQpKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
IH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xhaW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFu
YWdlci5oCmluZGV4IGIyNzgzMjNmOTkyZC4uNWUyN2VlNDM5ZTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNo
QWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVl
cnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7CiAKKyAgICAg
ICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+JiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDYxODYzNDZjZDE3Ni4u
OGUwZGE5NTIzMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAg
LTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0QXNJbnNw
ZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJik7
CiAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKKwogICAgIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggOWVk
ZDQ0NWU2Y2JjLi4xNjAwNjVkMzZlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExNyw3ICsxMTcsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgU2VydmljZVdvcmtlckRhdGEmIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgY29udGV4dERhdGEo
KSBjb25zdDsKIAotICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKICAgICBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVy
biBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25h
bDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVu
dGlmaWVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
aW5kZXggNjdjZWVmNTQ0ODRkLi4yZGQxMDNmODUwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIg
Y2xpZW4KICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRp
Zmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xp
ZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdv
cmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcElu
aXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OworICAgIFNlcnZp
Y2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCBy
ZXF1ZXN0LnVybCgpLCB7IH0sIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
U2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdU
Rk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJB
Z2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAppbmRleCBlOWE1YWY0Mjc1NmIuLmYzZmZlOGZjNTZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1
Nyw2ICsxNTcsMjcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1p
bmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9j
ZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7
IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxi
YWNrKQoreworICAgIGF1dG8qIHNlcnZlciA9IHRoaXMtPnNlcnZlcigpOworICAgIGlmICghc2Vy
dmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXItPndvcmtlckJ5SUQoaWRlbnRpZmll
cik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShwYWdlSWRlbnRpZmllcikpOworICAgIH07CisKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29y
a1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtl
ciB7IGlkZW50aWZpZXIsIHNlcnZlci0+c2Vzc2lvbklEKCksIHVybFN0cmluZywgd29ya2VyLT5v
cmlnaW4oKS5jbGllbnRPcmlnaW4gfSwgV1RGTW92ZShpbm5lckNhbGxiYWNrKSk7Cit9CisKIHZv
aWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNs
aWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oCmluZGV4IGJlOTYxNTI4ZGIyZi4uY2JjNTU3ZWVkYmNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDEsNiArMTAx
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSBm
aW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpIGZpbmFsOwor
ICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBjb25u
ZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA3OGI2ZWEzMGI5MS4uYTFk
OWM3OGI4ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM5LDYgKzM5LDggQEAgbWVzc2FnZXMg
LT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291
cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldEFzSW5zcGVj
dGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNJ
bnNwZWN0ZWQpCisKKyAgICBPcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdDbGllbnREYXRhKQogfQogCiAjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMDgxNzEwYThjNzEzLi41YWQ3Zjc0
Y2ZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiX1dLV2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9i
akNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1VSTC5o
PgpAQCAtNTYsMTAgKzU3LDEyIEBACiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgZmlu
YWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAg
ZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFT
dG9yZSwgaWQ8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAg
OiBtX2RhdGFTdG9yZShkYXRhU3RvcmUpCisgICAgICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkK
ICAgICAgICAgLCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VTZWxlY3RvcihbbV9kZWxlZ2F0ZS5n
ZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlcXVlc3RTdG9yYWdlU3BhY2U6IGZy
YW1lT3JpZ2luOiBxdW90YTogY3VycmVudFNpemU6IHNwYWNlUmVxdWlyZWQ6IGRlY2lzaW9uSGFu
ZGxlcjopXSkKICAgICAgICAgLCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VsZWN0b3Io
W21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAs
IG1faGFzT3BlbldpbmRvd1NlbGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVuV2luZG93OmZyb21TZXJ2aWNlV29y
a2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgIHsKICAgICB9CiAKQEAgLTEwNCw5
ICsxMDcsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2Vk
KCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm5zVVJMQ2hhbGxlbmdlIGNvbXBs
ZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKICAgICB9CiAKKyAgICB2b2lk
IG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVByb3h5Kik+JiYgY2FsbGJhY2spCisgICAgewor
ICAgICAgICBpZiAoIW1faGFzT3BlbldpbmRvd1NlbGVjdG9yIHx8ICFtX2RlbGVnYXRlIHx8ICFt
X2RhdGFTdG9yZSkgeworICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxl
dGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2Vk
KCksIEBzZWxlY3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5XaW5kb3c6ZnJvbVNlcnZpY2VXb3Jr
ZXJPcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1dlYlZpZXcgKm5ld1dlYlZpZXcpIG11dGFibGUgewor
ICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAgICBjYWxsYmFjayhuZXdXZWJWaWV3Ll9w
YWdlLmdldCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBuc1VSTCA9IChOU1VSTCAq
KVVSTCB7IHVybCB9OworICAgICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzZXJ2aWNlV29ya2VyT3JpZ2luKTsKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0
QXV0b3JlbGVhc2VkKCkgd2Vic2l0ZURhdGFTdG9yZTptX2RhdGFTdG9yZS5nZXRBdXRvcmVsZWFz
ZWQoKSBvcGVuV2luZG93Om5zVVJMIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOndyYXBwZXIoYXBp
T3JpZ2luLmdldCgpKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07
CisgICAgfQorCisgICAgV2Vha09iakNQdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9y
ZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IG1f
ZGVsZWdhdGU7CiAgICAgYm9vbCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VTZWxlY3RvciB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VsZWN0b3IgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNPcGVuV2luZG93U2VsZWN0b3IgeyBmYWxzZSB9OwogfTsK
IAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQpAQCAtNjUyLDcgKzY3OCw3IEBA
IHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJl
Y29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAtICh2b2lkKXNldF9kZWxlZ2F0ZTooaWQgPF9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxl
Z2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vi
c2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+
c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oc2VsZiwgZGVs
ZWdhdGUpKTsKIH0KIAogLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKilfY29u
ZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCmluZGV4IDBiODU3MzA0ODc5
Ni4uMWQxNTgxNzQzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCkBAIC0yNiwx
MSArMjYsMTUgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCitAY2xhc3MgV0tTZWN1cml0eU9yaWdpbjsKK0BjbGFz
cyBXS1dlYnNpdGVEYXRhU3RvcmU7CitAY2xhc3MgV0tXZWJWaWV3OworCiBXS19BUElfQVZBSUxB
QkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3Rv
cmVEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25hbAogLSAodm9pZClyZXF1ZXN0U3RvcmFn
ZVNwYWNlOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZU9yaWdpbjooTlNVUkwgKilmcmFtZVVS
TCBxdW90YTooTlNVSW50ZWdlcilxdW90YSBjdXJyZW50U2l6ZTooTlNVSW50ZWdlciljdXJyZW50
U2l6ZSBzcGFjZVJlcXVpcmVkOihOU1VJbnRlZ2VyKXNwYWNlUmVxdWlyZWQgZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpKWRlY2lzaW9uSGFuZGxlcjsK
IC0gKHZvaWQpZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXI7Ci0KKy0gKHZvaWQpd2Vic2l0
ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9wZW5XaW5kb3c6KE5T
VVJMICopdXJsIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2Vy
dmljZVdvcmtlck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICpu
ZXdXZWJWaWV3KSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI0
Y2YyMGQ3MzIwMy4uYjFhMjIwYjhjMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE3OTgsNiArMTc5
OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNv
bnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3Nz
aWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluLCBwcm9jZXNzSWRl
bnRpZmllciksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5XaW5kb3dG
cm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKGF1dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFT
dG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKSkgeworICAgICAgICBzdG9yZS0+b3BlbldpbmRv
d0Zyb21TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIsIHVybFN0cmluZywgc2VydmljZVdvcmtlck9y
aWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1
bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDFlODZmMzQyNjNlMC4uNDM3ZmJjZWFh
OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtMjk5LDYgKzI5OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
dGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3Rl
V29ya2VyVHlwZSwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCisgICAgdm9pZCBvcGVuV2luZG93
RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKTsKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAxZGQyMzMwNzMyOTYuLjdjYWY2YjcyM2VhZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTEsNiArOTEsOCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEYXRhVGFza0RpZFJlY2VpdmVS
ZXNwb25zZShXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKSAtPiAoYm9vbCBhbGxvd2VkKQogICAgIERhdGFUYXNr
RGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihX
ZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGVycm9yKQorCisgICAgT3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBz
ZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gbmV3UGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggOGVmMDUzNjU5MTA4Li5iYjk4N2YyYzU5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHAKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZp
Z2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAg
Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAg
IH0KIAogICAgIGZyYW1lLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKQEAgLTQ5MDUsMTIgKzQ5
MDUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVn
aXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGJv
b2wgc3VjY2VzcykKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1faXNT
ZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxl
cikKKyAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5j
aENvbXBsZXRpb25IYW5kbGVyICYmICFzdWNjZXNzKQogICAgICAgICBtX3NlcnZpY2VXb3JrZXJM
YXVuY2hDb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAjZW5kaWYKKworICAgIGlmIChtX3NlcnZp
Y2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKQorICAgICAgICBtX3NlcnZpY2VX
b3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKHN1Y2Nlc3MpOwogfQogCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC01MTM0LDYgKzUxMzcsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgICAgICByZXNldFJlY2VudENyYXNoQ291bnRT
b29uKCk7CiAKICAgICAgICAgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKKworICAgICAg
ICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KHRydWUpOwogICAgIH0KIAog
ICAgIG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExv
YWQgPSBmYWxzZTsKQEAgLTUxODIsNyArNTE4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYK
ICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGll
bnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3Jr
ZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAgIH0KIH0KIApAQCAtNzk5
OSw3ICs4MDA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJl
YXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICAgICBpZiAocmVzZXRTdGF0ZVJlYXNv
biAhPSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgY2FsbFNlcnZp
Y2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNh
bGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogCiAgICAgaWYgKG1f
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci0+aW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBkMjY1MDg1ZDdhNTYuLjlkMjU2YzZkODNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwODAsNiArMjA4MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRS
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4m
Jik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXRTZXJ2aWNlV29y
a2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykgeyBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29t
cGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spOyB9CisjZW5kaWYK
KwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZSgpOwpAQCAtMjYwNiw3ICsyNjEwLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJlZ2lzdHJh
dGlvbihib29sIHN1Y2Nlc3MpOwogI2VuZGlmCi0gICAgdm9pZCBjYWxsU2VydmljZVdvcmtlckxh
dW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGNhbGxMb2FkQ29t
cGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNjZXNzKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCk7
CkBAIC0zMTE4LDYgKzMxMjIsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICBib29sIG1faXNTZXJ2aWNlV29ya2VyUGFnZSB7IGZhbHNlIH07CiAgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhh
bmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29ya2Vy
T3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjazsKICNlbmRpZgogCiAgICAgUnVuTG9vcDo6VGlt
ZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApp
bmRleCA3MWFlOTI2NTQ4YmMuLjZmYTI2YjQyZDMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIw
ODcsNCArMjA4NywzNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZERlc3Ryb3lTZXJ2aWNl
V29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdAogICAgIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5kaWREZXN0cm95
Tm90aWZpY2F0aW9uKG51bGxwdHIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmIGNhbGxiYWNr
KQoreworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXSAoV2ViUGFnZVByb3h5KiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFuZXdQ
YWdlKSB7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFuZXdQYWdlLT5wYWdlTG9hZFN0YXRl
KCkuaXNMb2FkaW5nKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJUaGUg
V0tXZWJWaWV3IHByb3ZpZGVkIGluIHJlc3BvbnNlIHRvIGEgU2VydmljZVdvcmtlciBvcGVuV2lu
ZG93IHJlcXVlc3Qgd2FzIG5vdCBpbiB0aGUgbG9hZGluZyBzdGF0ZSIpOworICAgICAgICAgICAg
Y2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtwYWdlSUQgPSBuZXdQYWdlLT5pZGVudGlm
aWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHN1Y2Nlc3MpIG11dGFi
bGUgeworICAgICAgICAgICAgYXV0byogbmV3UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOworICAgICAgICAgICAgaWYgKCFuZXdQYWdlIHx8ICFzdWNjZXNzKSB7CisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5ld1BhZ2UtPndlYlBh
Z2VJRCgpKTsKKyAgICAgICAgfTsKKworICAgICAgICBuZXdQYWdlLT5zZXRTZXJ2aWNlV29ya2Vy
T3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKKyAg
ICB9OworCisgICAgbV9jbGllbnQtPm9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcih1cmxTdHJp
bmcsIHNlcnZpY2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggNmVmOTU1MDE3MjY2Li5iZjZiN2YzM2Y5MTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTM3OSw2ICszNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgZGlk
RGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9u
SUQpOwogCisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsK
KwogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXphdGlvbiA6IGJvb2wg
eyBObywgWWVzIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNsaWVudC5oCmluZGV4IGY3YzY4M2ZmNzE2My4uZjdhYmUzMDdhNjViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNsaWVudC5oCkBAIC0zNiw2ICszNiw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlUHJveHk7CisKIGNsYXNzIFdl
YnNpdGVEYXRhU3RvcmVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgpAQCAtNTAsNiArNTIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY2hhbGxlbmdl
LT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdl
UHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKG51bGxwdHIpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBlOTViN2NhZTg2YmMuLjQ4ZTc1NTRk
MjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE1MCw2ICsxNTAs
OCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNl
bmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZQogCiBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7Cisg
ICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIGdvaW5nIHRvIHNob3cgbm90aWZp
Y2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkudG9TdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKwogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQogICAgIGlmIChwYWdlICYmICFwYWdlLT5jb3JlUGFnZSgpLT5z
ZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCkBAIC0yMDgsNiArMjEwLDggQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQm
IG5vdGlmaWNhdGlvbklEKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisgICAg
TE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIERJRCBTSE9XIG5vdGlmaWNhdGlvbiAl
cyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAg
IGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjIzLDExICsyMjcsMTUgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRp
b25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAorICAgIExPRyhOb3RpZmlj
YXRpb25zLCAiV2ViUHJvY2VzcyAlaSBESUQgQ0xJQ0sgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlk
KCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3Rp
ZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2Vi
UHJvY2VzcyAlaSBoYW5kbGluZyBjbGljayBldmVudCBmb3Igbm90aWZpY2F0aW9uICVzIiwgZ2V0
cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAv
LyBJbmRpY2F0ZSB0aGF0IHRoaXMgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBpbiByZWFjdGlv
biB0byBhIHVzZXIncyBpbnRlcmFjdGlvbiB3aXRoIGEgcGxhdGZvcm0gbm90aWZpY2F0aW9uLgog
ICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUp
OwogICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTFjNjhjYmVhNDMyLi40YjNkMjYzZjdmMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMiw2ICszMzIsMTEgQEAg
dm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWF0Y2hBbGxDb21wbGV0ZWQodWlu
dDY0X3QgcmVxdWVzdElkZW50aWZpZXIKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnRz
RGF0YSkpOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpvcGVuV2lu
ZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2Nv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6T3BlbldpbmRvdyB7IHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCB1cmwgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNl
cHRpb25Pcjx2b2lkPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbjo6Q2xhaW0geyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciB9LCBbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBiNTY5NDBlNGIwMzMuLjYwNGUyNmI0MDk3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Niw2ICs4Niw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlk
RmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5h
bDsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKIAog
ICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTAxY2VhNDI3
NzFhLi4wMTZjZGIwYTUwZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC0zODAsNiArMzgwLDE3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25mCiB9CiAK
IFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmll
dyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05h
dmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3
aW5kb3dGZWF0dXJlcykKK3sKKyAgICBhdXRvKiBwbGF0Zm9ybVdlYlZpZXcgPSBjcmVhdGVPdGhl
clBsYXRmb3JtV2ViVmlldyhwYXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBuYXZpZ2F0aW9uQWN0
aW9uLCB3aW5kb3dGZWF0dXJlcyk7CisgICAgaWYgKCFwbGF0Zm9ybVdlYlZpZXcpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcGFnZSA9IHBsYXRmb3JtV2ViVmlldy0+cGFn
ZSgpOworICAgIFdLUmV0YWluKHBhZ2UpOworICAgIHJldHVybiBwYWdlOworfQorCitQbGF0Zm9y
bVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRvd0ZlYXR1cmVzUmVmKQogewogICAg
IG1fY3VycmVudEludm9jYXRpb24tPndpbGxDcmVhdGVOZXdQYWdlKCk7CiAKQEAgLTM4OSw3ICs0
MDAsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9y
bVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgbV9jcmVhdGVkT3RoZXJQYWdl
ID0gdHJ1ZTsKIAotICAgIGF1dG8gdmlldyA9IHBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBhcmVu
dFZpZXcsIGNvbmZpZ3VyYXRpb24sIHBhcmVudFZpZXctPm9wdGlvbnMoKSk7CisgICAgYXV0byBv
cHRpb25zID0gcGFyZW50VmlldyA/IHBhcmVudFZpZXctPm9wdGlvbnMoKSA6IG1fbWFpbldlYlZp
ZXctPm9wdGlvbnMoKTsKKyAgICBhdXRvIHZpZXcgPSBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShw
YXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKICAgICBXS1BhZ2VSZWYgbmV3UGFn
ZSA9IHZpZXctPnBhZ2UoKTsKIAogICAgIHZpZXctPnJlc2l6ZVRvKDgwMCwgNjAwKTsKQEAgLTUw
OSw5ICs1MjEsOSBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQ
bGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLnVwZGF0ZVdpbmRvd1NjYWxlRm9yVGVzdCh2aWV3LnB0cigpLCAqVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1fY3VycmVudEludm9jYXRpb24pOwogCisgICAgUGxh
dGZvcm1XZWJWaWV3KiB2aWV3VG9SZXR1cm4gPSB2aWV3LnB0cigpOwogICAgIG1fYXV4aWxpYXJ5
V2ViVmlld3MuYXBwZW5kKFdURk1vdmUodmlldykpOwotICAgIFdLUmV0YWluKG5ld1BhZ2UpOwot
ICAgIHJldHVybiBuZXdQYWdlOworICAgIHJldHVybiB2aWV3VG9SZXR1cm47CiB9CiAKIGNvbnN0
IGNoYXIqIFRlc3RDb250cm9sbGVyOjpsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDQ0NTM5NTM4ODM5Mi4uNDhmYTVhZDQy
ZWY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNzgsNiAr
Mzc4LDggQEAgcHVibGljOgogICAgIGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tT
dHJpbmdSZWYgb3JpZ2luKTsKICAgICBib29sIGRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uT25Q
cm9tcHQoV0tTdHJpbmdSZWYgb3JpZ2luKTsKIAorICAgIFBsYXRmb3JtV2ViVmlldyogY3JlYXRl
T3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VD
b25maWd1cmF0aW9uUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLV2luZG93RmVhdHVyZXNS
ZWYpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+
IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1
cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNzcyM2JhNDg3YTU2
Li5kZWQ1MWJiNjA2MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTIxNCw3ICsyMTQsOCBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29u
c3QgVGVzdE9wdAogVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmlldz4gVGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdl
Q29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0
byBuZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24o
KSBjb3B5XSk7Ci0gICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRp
Y19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CisgICAgaWYg
KHBhcmVudFZpZXcpCisgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmll
dzpzdGF0aWNfY2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSldOwog
ICAgIGlmIChbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQogICAgICAgICBbbmV3
Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltuZXdDb25maWd1cmF0aW9uIF9yZWxh
dGVkV2ViVmlld10uY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlXTsKICAgICBhdXRvIHZp
ZXcgPSBtYWtlVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmlldz4obmV3Q29uZmlndXJhdGlvbi5nZXQo
KSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KaW5kZXggZTFmNjhlNDhhZjczLi4w
M2ExMzhkNjZjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDEyIEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUuaCIKIAorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0Q29udHJv
bGxlci5oIgorI2ltcG9ydCAiVGVzdFJ1bm5lcldLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgorCiBAaW1wbGVtZW50YXRp
b24gVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB7IH0KIC0gKGluc3RhbmNldHlwZSlpbml0
CiB7CkBAIC02MSw0ICs2NywxNSBAQAogICAgIF9zaG91bGRBbGxvd0FueVNTTENlcnRpZmljYXRl
ID0gc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZTsKIH0KIAorLSAodm9pZCl3ZWJzaXRlRGF0
YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3BlbldpbmRvdzooTlNVUkwg
Kil1cmwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZXJ2aWNl
V29ya2VyT3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKm5ld1dl
YlZpZXcpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byogbmV3VmlldyA9IFdUUjo6VGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIFdLV2ViVmlldyAqd2ViVmlldyA9
IG5ld1ZpZXctPnBsYXRmb3JtVmlldygpOworCisgICAgQVNTRVJUKHdlYlZpZXcuY29uZmlndXJh
dGlvbi53ZWJzaXRlRGF0YVN0b3JlID09IGRhdGFTdG9yZSk7CisKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdlYlZpZXcpOworfQorCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455823</attachid>
            <date>2022-03-25 21:17:06 -0700</date>
            <delta_ts>2022-03-26 09:14:30 -0700</delta_ts>
            <desc>EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>48388</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTY4
MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBU
JiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZp
Y2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGlu
c3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAgICAgICBj
aGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2NmNzc3OGFlNy4uYWQwZjYxNmUzZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MDgsNyArODQwOCw3IEBAIExvZ2dlciYgRG9j
dW1lbnQ6OmxvZ2dlcigpCiAgICAgCiBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKSA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3Vt
ZW50OjpmcmFtZUlEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDYy
MDQwMTBmYWZjZS4uNmUxNDkzMTQ4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgK
QEAgLTUwLDYgKzUwLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBTZWN1cml0eU9y
aWdpbkRhdGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47
CisKKyAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmco
dG9wT3JpZ2luLnRvU3RyaW5nKCksICItIiwgY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOyB9CiB9
OwogCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggOWE5NzBjNjQ0Y2ZiLi41ZmRkZjYxNjIw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHN0YXRpYyBTZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShT
Y3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJl
dHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwg
aXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7
IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgp
LCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZv
Y3VzT3JkZXIgfTsKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVy
bC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQpAQCAtNzQsMTEgKzc0LDE1IEBAIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCk7CiAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGRvY3VtZW50Lmxv
YWRlcigpICYmIGRvY3VtZW50LmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpObzsKIAorICAgIGF1dG8gZG9jdW1lbnRQYWdlSWRlbnRpZmllciA9
IGRvY3VtZW50LnBhZ2VJRCgpOworCiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dC5pZGVu
dGlmaWVyKCksCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6
V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVh
dGlvblVSTCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1l
bnQuY3JlYXRpb25VUkwoKSwKKyAgICAgICAgZG9jdW1lbnRQYWdlSWRlbnRpZmllciA/ICpkb2N1
bWVudFBhZ2VJZGVudGlmaWVyIDogUGFnZUlkZW50aWZpZXIgeyB9LAorICAgICAgICBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAg
ICAgICBkb2N1bWVudC5oYXNGb2N1cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4
IDk2YWE3YjkwMzc1Yi4uNDY5YTUzYzU3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZS5oIgpAQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dERhdGEgewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdv
cmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBQYWdlSWRl
bnRpZmllciBwYWdlSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8
PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlz
Rm9jdXNlZCA8PCBmb2N1c09yZGVyOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBl
IDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRl
Y29kZShEZWNvZGVyJgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBpZiAoIWxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpk
ZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWZvY3VzT3JkZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3Zl
KCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3Zl
KCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSks
IFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCpp
c0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCA5NWQ0
MDM0MDQ5MzQuLmM3Njg2YzNkNzM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC05NiwxMCArOTYsNjYg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyB2b2lkIG1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiY2xpZW50cy5vcGVuV2luZG93KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlm
aWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBhdXRvIG9wdGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zIHsgdHJ1ZSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9OworICAgICAgICBj
b25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywgW3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnRzRGF0
YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3BhZ2VJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjbGllbnRzRGF0YSA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGNsaWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhIDogY2xpZW50c0RhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCit7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIHNlcnZpY2Ug
d29ya2VyIGNhbGxpbmcgb3BlbldpbmRvdyB0byBVUkwgJXMiLCBnZXRwaWQoKSwgdXJsU3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRp
ZmllcigpOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwor
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAi
IGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJD
bGllbnRzLm9wZW5XaW5kb3coKSBjYW5ub3QgYmUgY2FsbGVkIHdpdGggVVJMICIsIHVybC5zdHJp
bmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29ubmVj
dGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAg
ICAgY29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0
cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyXSAoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFz
a1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBwYWdlSWRlbnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBm
aW5pc2hlZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcg
cGFnZSBpZGVudGlmaWVyIGlzICVzIiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlk
ZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworCisg
ICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBt
YXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgKnBh
Z2VJZGVudGlmaWVyLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiBzY29wZSwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RGF0YSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpn
ZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4o
V1RGTW92ZShjbGllbnQpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xh
aW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGIyNzgzMjNmOTkyZC4uNWUyN2VlNDM5
ZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRj
aEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+
JiYpPiYmKSA9IDA7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CmluZGV4IDYxODYzNDZjZDE3Ni4uOGUwZGE5NTIzMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiYmKT4mJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYp
ID0gMDsKKwogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFs
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyV29ya2VyLmgKaW5kZXggOWVkZDQ0NWU2Y2JjLi4xNjAwNjVkMzZlYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2VydmljZVdvcmtlckRh
dGEmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEgY29udGV4dERhdGEoKSBjb25zdDsKIAotICAgIGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xpZW50T3JpZ2luJiBv
cmlnaW4oKSBjb25zdDsKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgV0VCQ09S
RV9FWFBPUlQgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNjdjZWVmNTQ0ODRkLi4yZGQxMDNmODUwMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzUsNyArMTc1LDcg
QEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW4KICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5
cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51
cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlh
dGVkOjpObyB9OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVu
dGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xp
ZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCB7IH0sIHJlcXVlc3QuaXNBcHBJbml0
aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBX
ZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKICAgICByZWdpc3Rl
clNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtl
eSgpLnRvcE9yaWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVy
KCksIHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCBlOWE1YWY0Mjc1NmIuLmYz
ZmZlOGZjNTZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKQEAgLTE1Nyw2ICsxNTcsMjcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9j
b25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2Vy
dmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAK
K3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHNlcnZlciA9IHRoaXMtPnNl
cnZlcigpOworICAgIGlmICghc2VydmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9w
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIt
PndvcmtlckJ5SUQoaWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2Fs
bGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
aW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsK
KyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShwYWdlSWRlbnRpZmllcikpOworICAgIH07CisKKyAg
ICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9wZW5X
aW5kb3dGcm9tU2VydmljZVdvcmtlciB7IGlkZW50aWZpZXIsIHNlcnZlci0+c2Vzc2lvbklEKCks
IHVybFN0cmluZywgd29ya2VyLT5vcmlnaW4oKS5jbGllbnRPcmlnaW4gfSwgV1RGTW92ZShpbm5l
ckNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpt
YXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9y
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxldGVkIHsg
cmVxdWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IGJlOTYxNTI4ZGIyZi4uY2JjNTU3
ZWVkYmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlv
bklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNw
b25zaXZlbmVzcygpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZp
bmFsOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmlu
ZGV4IDA3OGI2ZWEzMGI5MS4uYTFkOWM3OGI4ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM5
LDYgKzM5LDggQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5v
dFJlZkNvdW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNv
cmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3Qg
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZh
aWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlm
aWVyKQogICAgIFNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IGlkZW50aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCisKKyAgICBPcGVuV2luZG93KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+
IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdDbGllbnREYXRhKQog
fQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXgg
MDgxNzEwYThjNzEzLi41YWQ3Zjc0Y2ZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDgsNiArNDgs
NyBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmF0aW9uRGF0YWJh
c2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1VSTC5oPgpAQCAtNTYsMTAgKzU3LDEyIEBACiAKIGNsYXNzIFdlYnNp
dGVEYXRhU3RvcmVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3Jl
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50KGlk
IDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fZGVs
ZWdhdGUoZGVsZWdhdGUpCisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChXS1dl
YnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSwgaWQ8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
PiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RhdGFTdG9yZShkYXRhU3RvcmUpCisgICAgICAgICwg
bV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VT
ZWxlY3RvcihbbV9kZWxlZ2F0ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJl
cXVlc3RTdG9yYWdlU3BhY2U6IGZyYW1lT3JpZ2luOiBxdW90YTogY3VycmVudFNpemU6IHNwYWNl
UmVxdWlyZWQ6IGRlY2lzaW9uSGFuZGxlcjopXSkKICAgICAgICAgLCBtX2hhc0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlU2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGNvbXBsZXRpb25I
YW5kbGVyOildKQorICAgICAgICAsIG1faGFzT3BlbldpbmRvd1NlbGVjdG9yKFttX2RlbGVnYXRl
LmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVu
V2luZG93OmZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAg
IHsKICAgICB9CiAKQEAgLTEwNCw5ICsxMDcsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgW21fZGVs
ZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Om5zVVJMQ2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgp
XTsKICAgICB9CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29y
a2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVByb3h5Kik+
JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIW1faGFzT3BlbldpbmRvd1NlbGVjdG9y
IHx8ICFtX2RlbGVnYXRlIHx8ICFtX2RhdGFTdG9yZSkgeworICAgICAgICAgICAgY2FsbGJhY2so
eyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hl
Y2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCksIEBzZWxlY3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5X
aW5kb3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAg
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1dlYlZpZXcgKm5l
d1dlYlZpZXcpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25I
YW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAgICBj
YWxsYmFjayhuZXdXZWJWaWV3Ll9wYWdlLmdldCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAg
YXV0byBuc1VSTCA9IChOU1VSTCAqKVVSTCB7IHVybCB9OworICAgICAgICBhdXRvIGFwaU9yaWdp
biA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZXJ2aWNlV29ya2VyT3JpZ2luKTsKKyAg
ICAgICAgW21fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgd2Vic2l0ZURhdGFTdG9yZTptX2Rh
dGFTdG9yZS5nZXRBdXRvcmVsZWFzZWQoKSBvcGVuV2luZG93Om5zVVJMIGZyb21TZXJ2aWNlV29y
a2VyT3JpZ2luOndyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSBjb21wbGV0aW9uSGFuZGxlcjpjb21w
bGV0aW9uSGFuZGxlci5nZXQoKV07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8V0tXZWJzaXRl
RGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CiAgICAgYm9vbCBtX2hhc1JlcXVlc3RTdG9y
YWdlU3BhY2VTZWxlY3RvciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VsZWN0b3IgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNPcGVuV2luZG93U2Vs
ZWN0b3IgeyBmYWxzZSB9OwogfTsKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9y
ZQpAQCAtNjUyLDcgKzY3OCw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJl
Y29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAtICh2b2lkKXNl
dF9kZWxlZ2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsK
ICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xp
ZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKKyAg
ICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFT
dG9yZUNsaWVudD4oc2VsZiwgZGVsZWdhdGUpKTsKIH0KIAogLSAoX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZS5oCmluZGV4IDBiODU3MzA0ODc5Ni4uMWQxNTgxNzQzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3Rv
cmVEZWxlZ2F0ZS5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCitAY2xhc3MgV0tT
ZWN1cml0eU9yaWdpbjsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CitAY2xhc3MgV0tXZWJW
aWV3OworCiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogQHByb3Rv
Y29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25hbAog
LSAodm9pZClyZXF1ZXN0U3RvcmFnZVNwYWNlOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZU9y
aWdpbjooTlNVUkwgKilmcmFtZVVSTCBxdW90YTooTlNVSW50ZWdlcilxdW90YSBjdXJyZW50U2l6
ZTooTlNVSW50ZWdlciljdXJyZW50U2l6ZSBzcGFjZVJlcXVpcmVkOihOU1VJbnRlZ2VyKXNwYWNl
UmVxdWlyZWQgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKSh1bnNpZ25lZCBsb25nIGxvbmcgcXVv
dGEpKWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRs
ZXI7Ci0KKy0gKHZvaWQpd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0
YVN0b3JlIG9wZW5XaW5kb3c6KE5TVVJMICopdXJsIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopc2VydmljZVdvcmtlck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoV0tXZWJWaWV3ICpuZXdXZWJWaWV3KSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IDI0Y2YyMGQ3MzIwMy4uYjFhMjIwYjhjMmU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAKQEAgLTE3OTgsNiArMTc5OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRl
cm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAg
IHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250
ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJh
YmxlRG9tYWluLCBwcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKGF1dG8q
IHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKSkgeworICAg
ICAgICBzdG9yZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIsIHVybFN0
cmluZywgc2VydmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDFl
ODZmMzQyNjNlMC4uNDM3ZmJjZWFhOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjk5LDYgKzI5OSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rp
b25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZSwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwog
CisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+JiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZGQyMzMwNzMyOTYuLjdj
YWY2YjcyM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTEsNiArOTEs
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBEYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKSAtPiAoYm9vbCBh
bGxvd2VkKQogICAgIERhdGFUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEYXRhVGFza0lkZW50
aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGF0YVRhc2tE
aWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAgT3BlbldpbmRvd0Zyb21TZXJ2
aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBzZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVmMDUzNjU5MTA4Li5iYjk4N2YyYzU5
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDg3MCw3
ICs0ODcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHAKICAgICAgICAgaWYgKG5hdmlnYXRp
b24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHko
bnVsbHB0cik7CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFu
ZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZO
ZWNlc3NhcnkoZmFsc2UpOwogICAgIH0KIAogICAgIGZyYW1lLmRpZEZhaWxQcm92aXNpb25hbExv
YWQoKTsKQEAgLTQ5MDUsMTIgKzQ5MDUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKIH0KICNlbmRpZgog
Ci12b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFu
ZGxlcklmTmVjZXNzYXJ5KCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25I
YW5kbGVyc0lmTmVjZXNzYXJ5KGJvb2wgc3VjY2VzcykKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgaWYgKG1faXNTZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJM
YXVuY2hDb21wbGV0aW9uSGFuZGxlcikKKyAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYm
IG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyICYmICFzdWNjZXNzKQogICAg
ICAgICBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAjZW5k
aWYKKworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNr
KQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKHN1
Y2Nlc3MpOwogfQogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04p
CkBAIC01MTM0LDYgKzUxMzcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgICAgICBy
ZXNldFJlY2VudENyYXNoQ291bnRTb29uKCk7CiAKICAgICAgICAgbm90aWZ5UHJvY2Vzc1Bvb2xU
b1ByZXdhcm0oKTsKKworICAgICAgICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNz
YXJ5KHRydWUpOwogICAgIH0KIAogICAgIG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0Zv
ckZhaWxpbmdQcm92aXNpb25hbExvYWQgPSBmYWxzZTsKQEAgLTUxODIsNyArNTE4Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAg
ICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAg
ICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5
KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2Up
OwogICAgIH0KIH0KIApAQCAtNzk5OSw3ICs4MDA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
c2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICAg
ICBpZiAocmVzZXRTdGF0ZVJlYXNvbiAhPSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dh
cCkKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVj
ZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3Nhcnko
ZmFsc2UpOwogCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBkMjY1MDg1ZDdhNTYuLjlkMjU2YzZkODNmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwODAsNiArMjA4MCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisg
ICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykgeyBtX3NlcnZp
Y2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9u
Q2FsbGJhY2spOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjYwNiw3ICsyNjEwLDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRGaW5pc2hTZXJ2
aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpOwogI2VuZGlmCi0gICAgdm9p
ZCBjYWxsU2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsK
KyAgICB2b2lkIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNj
ZXNzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbkhh
cmR3YXJlS2V5Ym9hcmRNb2RlKCk7CkBAIC0zMTE4LDYgKzMxMjIsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIG1faXNTZXJ2aWNlV29ya2VyUGFnZSB7
IGZhbHNlIH07CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29y
a2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gbV9zZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjazsKICNlbmRp
ZgogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3MWFlOTI2NTQ4YmMuLjZmYTI2YjQyZDMzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTIwODcsNCArMjA4NywzNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtl
ck1hbmFnZXIoKS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG51bGxwdHIsIG5vdGlmaWNhdGlvbklE
KTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3Jr
ZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmln
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4pPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoV2ViUGFnZVByb3h5KiBuZXdQYWdlKSBtdXRhYmxl
IHsKKyAgICAgICAgaWYgKCFuZXdQYWdlKSB7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFu
ZXdQYWdlLT5wYWdlTG9hZFN0YXRlKCkuaXNMb2FkaW5nKCkpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJUaGUgV0tXZWJWaWV3IHByb3ZpZGVkIGluIHJlc3BvbnNlIHRvIGEg
U2VydmljZVdvcmtlciBvcGVuV2luZG93IHJlcXVlc3Qgd2FzIG5vdCBpbiB0aGUgbG9hZGluZyBz
dGF0ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtwYWdl
SUQgPSBuZXdQYWdlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
IChib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byogbmV3UGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgICAgICAgICAgaWYgKCFuZXdQYWdl
IHx8ICFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNh
bGxiYWNrKG5ld1BhZ2UtPndlYlBhZ2VJRCgpKTsKKyAgICAgICAgfTsKKworICAgICAgICBuZXdQ
YWdlLT5zZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhXVEZNb3Zl
KGlubmVyQ2FsbGJhY2spKTsKKyAgICB9OworCisgICAgbV9jbGllbnQtPm9wZW5XaW5kb3dGcm9t
U2VydmljZVdvcmtlcih1cmxTdHJpbmcsIHNlcnZpY2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoaW5u
ZXJDYWxsYmFjaykpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmVmOTU1MDE3MjY2Li5iZjZi
N2YzM2Y5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM3OSw2ICszNzksOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpOwogICAgIHZvaWQgZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogCisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3Jr
ZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVp
bml0aWFsaXphdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9E
T01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGY3YzY4M2ZmNzE2My4uZjdhYmUz
MDdhNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCkBAIC0zNiw2ICszNiw4IEBAIHN0cnVj
dCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQ
YWdlUHJveHk7CisKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTAsNiArNTIsMTEgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwog
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29u
c3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBl
OTViN2NhZTg2YmMuLjQ4ZTc1NTRkMjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKQEAgLTE1MCw2ICsxNTAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZQogCiBib29s
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24s
IFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVp
IGdvaW5nIHRvIHNob3cgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbi5p
ZGVudGlmaWVyKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIEFTU0VSVChpc01h
aW5SdW5Mb29wKCkpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGlmIChwYWdlICYm
ICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCkBA
IC0yMDgsNiArMjEwLDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90
aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIEFTU0VSVChpc01h
aW5SdW5Mb29wKCkpOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIERJ
RCBTSE9XIG5vdGlmaWNhdGlvbiAlcyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVm
UHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQo
bm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjIzLDExICsyMjcs
MTUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBESUQgQ0xJQ0sgbm90
aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRp
b25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIExP
RyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBoYW5kbGluZyBjbGljayBldmVudCBmb3Ig
bm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKICAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoaXMgZXZlbnQgaXMgYmVpbmcg
ZGlzcGF0Y2hlZCBpbiByZWFjdGlvbiB0byBhIHVzZXIncyBpbnRlcmFjdGlvbiB3aXRoIGEgcGxh
dGZvcm0gbm90aWZpY2F0aW9uLgogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2
ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggYTFjNjhjYmVh
NDMyLi40YjNkMjYzZjdmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAK
QEAgLTMzMiw2ICszMzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
bWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIKICAgICAgICAgY2Fs
bGJhY2soV1RGTW92ZShjbGllbnRzRGF0YSkpOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6T3Blbldp
bmRvdyB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwgV1RGTW92ZShjYWxsYmFjaykp
OworfQorCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Q2xhaW0geyBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3Vs
dCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBiNTY5NDBl
NGIwMzMuLjYwNGUyNmI0MDk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBA
IC04Niw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVkKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5k
b3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+JiYpPiYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZp
Y2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRh
dGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9l
c0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKaW5kZXggYTAxY2VhNDI3NzFhLi4wMTZjZGIwYTUwZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zODAsNiArMzgwLDE3IEBAIFdLUGFnZVJl
ZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25mCiB9CiAKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3Ro
ZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwg
V0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcykKK3sKKyAgICBhdXRvKiBwbGF0Zm9y
bVdlYlZpZXcgPSBjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhwYXJlbnRWaWV3LCBjb25maWd1
cmF0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCB3aW5kb3dGZWF0dXJlcyk7CisgICAgaWYgKCFwbGF0
Zm9ybVdlYlZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcGFnZSA9
IHBsYXRmb3JtV2ViVmlldy0+cGFnZSgpOworICAgIFdLUmV0YWluKHBhZ2UpOworICAgIHJldHVy
biBwYWdlOworfQorCitQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhl
clBsYXRmb3JtV2ViVmlldyhQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRv
d0ZlYXR1cmVzUmVmKQogewogICAgIG1fY3VycmVudEludm9jYXRpb24tPndpbGxDcmVhdGVOZXdQ
YWdlKCk7CiAKQEAgLTM4OSw3ICs0MDAsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNy
ZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAg
ICAgbV9jcmVhdGVkT3RoZXJQYWdlID0gdHJ1ZTsKIAotICAgIGF1dG8gdmlldyA9IHBsYXRmb3Jt
Q3JlYXRlT3RoZXJQYWdlKHBhcmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIHBhcmVudFZpZXctPm9w
dGlvbnMoKSk7CisgICAgYXV0byBvcHRpb25zID0gcGFyZW50VmlldyA/IHBhcmVudFZpZXctPm9w
dGlvbnMoKSA6IG1fbWFpbldlYlZpZXctPm9wdGlvbnMoKTsKKyAgICBhdXRvIHZpZXcgPSBwbGF0
Zm9ybUNyZWF0ZU90aGVyUGFnZShwYXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBvcHRpb25zKTsK
ICAgICBXS1BhZ2VSZWYgbmV3UGFnZSA9IHZpZXctPnBhZ2UoKTsKIAogICAgIHZpZXctPnJlc2l6
ZVRvKDgwMCwgNjAwKTsKQEAgLTUwOSw5ICs1MjEsOSBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bgogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnVwZGF0ZVdpbmRvd1NjYWxlRm9y
VGVzdCh2aWV3LnB0cigpLCAqVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1fY3VycmVudElu
dm9jYXRpb24pOwogCisgICAgUGxhdGZvcm1XZWJWaWV3KiB2aWV3VG9SZXR1cm4gPSB2aWV3LnB0
cigpOwogICAgIG1fYXV4aWxpYXJ5V2ViVmlld3MuYXBwZW5kKFdURk1vdmUodmlldykpOwotICAg
IFdLUmV0YWluKG5ld1BhZ2UpOwotICAgIHJldHVybiBuZXdQYWdlOworICAgIHJldHVybiB2aWV3
VG9SZXR1cm47CiB9CiAKIGNvbnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpsaWJyYXJ5UGF0aEZv
clRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDQ0
NTM5NTM4ODM5Mi4uNDhmYTVhZDQyZWY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCkBAIC0zNzgsNiArMzc4LDggQEAgcHVibGljOgogICAgIGJvb2wgZGVueU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBib29sIGRlbnlOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uT25Qcm9tcHQoV0tTdHJpbmdSZWYgb3JpZ2luKTsKIAorICAgIFBs
YXRmb3JtV2ViVmlldyogY3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3
KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBXS05hdmlnYXRpb25BY3Rpb25S
ZWYsIFdLV2luZG93RmVhdHVyZXNSZWYpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVz
dE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2Eu
bW0KaW5kZXggNzcyM2JhNDg3YTU2Li5kZWQ1MWJiNjA2MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTIxNCw3ICsy
MTQsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdl
Q29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmll
dz4gVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmll
dyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMm
IG9wdGlvbnMpCiB7CiAgICAgYXV0byBuZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7Ci0gICAgW25ld0NvbmZpZ3VyYXRpb24gX3Nl
dFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRm
b3JtVmlldygpKV07CisgICAgaWYgKHBhcmVudFZpZXcpCisgICAgICAgIFtuZXdDb25maWd1cmF0
aW9uIF9zZXRSZWxhdGVkV2ViVmlldzpzdGF0aWNfY2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3
LT5wbGF0Zm9ybVZpZXcoKSldOwogICAgIGlmIChbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdl
YlZpZXddKQogICAgICAgICBbbmV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltu
ZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10uY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0
YVN0b3JlXTsKICAgICBhdXRvIHZpZXcgPSBtYWtlVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmlldz4o
bmV3Q29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0K
aW5kZXggZTFmNjhlNDhhZjczLi4wM2ExMzhkNjZjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUu
bW0KQEAgLTI2LDYgKzI2LDEyIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3Lmgi
CisjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgorI2ltcG9ydCAiVGVzdFJ1bm5lcldLV2ViVmll
dy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJl
Zi5oPgorCiBAaW1wbGVtZW50YXRpb24gVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB7IH0K
IC0gKGluc3RhbmNldHlwZSlpbml0CiB7CkBAIC02MSw0ICs2NywxNSBAQAogICAgIF9zaG91bGRB
bGxvd0FueVNTTENlcnRpZmljYXRlID0gc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZTsKIH0K
IAorLSAodm9pZCl3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3Rv
cmUgb3BlbldpbmRvdzooTlNVUkwgKil1cmwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46KFdLU2Vj
dXJpdHlPcmlnaW4gKilzZXJ2aWNlV29ya2VyT3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lk
ICheKShXS1dlYlZpZXcgKm5ld1dlYlZpZXcpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0
byogbmV3VmlldyA9IFdUUjo6VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU90aGVy
UGxhdGZvcm1XZWJWaWV3KG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAg
IFdLV2ViVmlldyAqd2ViVmlldyA9IG5ld1ZpZXctPnBsYXRmb3JtVmlldygpOworCisgICAgQVNT
RVJUKHdlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID09IGRhdGFTdG9yZSk7
CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OnVybF1dOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYlZpZXcpOworfQorCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455849</attachid>
            <date>2022-03-26 09:14:30 -0700</date>
            <delta_ts>2022-03-26 11:35:09 -0700</delta_ts>
            <desc>EWS (Continuing to fight other patches that are landing)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>48655</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTY4
MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBU
JiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZp
Y2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGlu
c3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAgICAgICBj
aGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2NmNzc3OGFlNy4uYWQwZjYxNmUzZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MDgsNyArODQwOCw3IEBAIExvZ2dlciYgRG9j
dW1lbnQ6OmxvZ2dlcigpCiAgICAgCiBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKSA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3Vt
ZW50OjpmcmFtZUlEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDYy
MDQwMTBmYWZjZS4uNmUxNDkzMTQ4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgK
QEAgLTUwLDYgKzUwLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBTZWN1cml0eU9y
aWdpbkRhdGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47
CisKKyAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmco
dG9wT3JpZ2luLnRvU3RyaW5nKCksICItIiwgY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOyB9CiB9
OwogCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggOWE5NzBjNjQ0Y2ZiLi41ZmRkZjYxNjIw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHN0YXRpYyBTZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShT
Y3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJl
dHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwg
aXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7
IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgp
LCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZv
Y3VzT3JkZXIgfTsKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVy
bC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQpAQCAtNzQsMTEgKzc0LDE1IEBAIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCk7CiAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGRvY3VtZW50Lmxv
YWRlcigpICYmIGRvY3VtZW50LmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpObzsKIAorICAgIGF1dG8gZG9jdW1lbnRQYWdlSWRlbnRpZmllciA9
IGRvY3VtZW50LnBhZ2VJRCgpOworCiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dC5pZGVu
dGlmaWVyKCksCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6
V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVh
dGlvblVSTCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1l
bnQuY3JlYXRpb25VUkwoKSwKKyAgICAgICAgZG9jdW1lbnRQYWdlSWRlbnRpZmllciA/ICpkb2N1
bWVudFBhZ2VJZGVudGlmaWVyIDogUGFnZUlkZW50aWZpZXIgeyB9LAorICAgICAgICBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAg
ICAgICBkb2N1bWVudC5oYXNGb2N1cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4
IDg1ZTEwODNkN2Q0MS4uMjM3MjczNWJjZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZS5oIgpAQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dERhdGEgewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdv
cmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBQYWdlSWRl
bnRpZmllciBwYWdlSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8
PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlz
Rm9jdXNlZCA8PCBmb2N1c09yZGVyOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBl
IDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRl
Y29kZShEZWNvZGVyJgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBpZiAoIWxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpk
ZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWZvY3VzT3JkZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3Zl
KCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3Zl
KCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSks
IFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCpp
c0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCBlMjk5
MTg5NzFhNTAuLmZlOTkwMGNjZGJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC05MCwxMCArOTAsNjYg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyB2b2lkIG1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiY2xpZW50cy5vcGVuV2luZG93KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlm
aWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBhdXRvIG9wdGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zIHsgdHJ1ZSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9OworICAgICAgICBj
b25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywgW3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnRzRGF0
YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3BhZ2VJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjbGllbnRzRGF0YSA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGNsaWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhIDogY2xpZW50c0RhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCit7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIHNlcnZpY2Ug
d29ya2VyIGNhbGxpbmcgb3BlbldpbmRvdyB0byBVUkwgJXMiLCBnZXRwaWQoKSwgdXJsU3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRp
ZmllcigpOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwor
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAi
IGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJD
bGllbnRzLm9wZW5XaW5kb3coKSBjYW5ub3QgYmUgY2FsbGVkIHdpdGggVVJMICIsIHVybC5zdHJp
bmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29ubmVj
dGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAg
ICAgY29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0
cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyXSAoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFz
a1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBwYWdlSWRlbnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBm
aW5pc2hlZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcg
cGFnZSBpZGVudGlmaWVyIGlzICVzIiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlk
ZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworCisg
ICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBt
YXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgKnBh
Z2VJZGVudGlmaWVyLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiBzY29wZSwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RGF0YSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpn
ZXRPckNyZWF0ZShzY29wZSwgV1RGTW92ZSgqY2xpZW50RGF0YSkpOworICAgICAgICAgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlPElETEludGVyZmFjZTxTZXJ2aWNlV29ya2VyQ2xpZW50Pj4o
V1RGTW92ZShjbGllbnQpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6Y2xh
aW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGZjZjVlZTA5YzhhNS4uZmVlN2MxNWQy
Yjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02Nyw4ICs2Nyw4IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBGaW5kQ2xpZW50QnlJZGVudGlmaWVyQ2FsbGJh
Y2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNl
V29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKLQogICAgICAgICB2aXJ0dWFsIHZvaWQgZm9j
dXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDYx
ODYzNDZjZDE3Ni4uOGUwZGE5NTIzMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLmgKQEAgLTgyLDYgKzgyLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0QXNJbnNwZWN0ZWQoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY2xpZW50SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmKT4mJik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKKwog
ICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KICAgICBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcjsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmgKaW5kZXggOWVkZDQ0NWU2Y2JjLi4xNjAwNjVkMzZlYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTEx
Nyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU2VydmljZVdvcmtlckRhdGEmIGRhdGEo
KSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KICAgICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEg
Y29udGV4dERhdGEoKSBjb25zdDsKIAotICAgIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBj
b25zdDsKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQg
c3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdv
cmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29u
bmVjdGlvbi5jcHAKaW5kZXggNDUyYzY3MTEzODBmLi5lOWViMjM5OWE5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBX
ZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIgY2xpZW4KICAgICAgICAgdW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
Y2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRv
dywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVx
dWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9
OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVU
eXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCB7IH0sIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/
IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpM
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKICAgICByZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9y
aWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVl
c3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAwMzY3NWE4NDQ0MmUuLjUyMjg1MzEzY2Uy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKQEAgLTE1Nyw2ICsxNTcsMjcgQEAgdm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpCiAgICAgbV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtl
clByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwgMCk7CiB9CiAKK3ZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHNlcnZlciA9IHRoaXMtPnNlcnZlcigpOwor
ICAgIGlmICghc2VydmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXItPndvcmtlckJ5
SUQoaWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAgICAgICAgY2FsbGJhY2soc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gaW5uZXJDYWxs
YmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAg
Y2FsbGJhY2soV1RGTW92ZShwYWdlSWRlbnRpZmllcikpOworICAgIH07CisKKyAgICBtX2Nvbm5l
Y3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok9wZW5XaW5kb3dGcm9t
U2VydmljZVdvcmtlciB7IGlkZW50aWZpZXIsIHNlcnZlci0+c2Vzc2lvbklEKCksIHVybFN0cmlu
Zywgd29ya2VyLT5vcmlnaW4oKS5jbGllbnRPcmlnaW4gfSwgV1RGTW92ZShpbm5lckNhbGxiYWNr
KSk7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENv
bXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxldGVkIHsgcmVxdWVzdElk
ZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDAzZDkzNmNjZDMyYS4uODBiMzAzZTQ0ZGJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBA
IC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25n
ZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVz
cygpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOwogCiAg
ICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDNlNzc1
ODUyMzc5NS4uMjFkMjM2NTU3YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTQwLDYgKzQwLDgg
QEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50
ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJl
YXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAg
IFNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCisKKyAgICBPcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+IChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdDbGllbnREYXRhKQogfQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMDgxNzEwYThj
NzEzLi41YWQ3Zjc0Y2ZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2lt
cG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Ny
ZWRlbnRpYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1VSTC5oPgpAQCAtNTYsMTAgKzU3LDEyIEBACiAKIGNsYXNzIFdlYnNpdGVEYXRhU3Rv
cmVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsK
IHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50KGlkIDxfV0tXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fZGVsZWdhdGUoZGVs
ZWdhdGUpCisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChXS1dlYnNpdGVEYXRh
U3RvcmUgKmRhdGFTdG9yZSwgaWQ8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBkZWxlZ2F0
ZSkKKyAgICAgICAgOiBtX2RhdGFTdG9yZShkYXRhU3RvcmUpCisgICAgICAgICwgbV9kZWxlZ2F0
ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VTZWxlY3Rvcihb
bV9kZWxlZ2F0ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlcXVlc3RTdG9y
YWdlU3BhY2U6IGZyYW1lT3JpZ2luOiBxdW90YTogY3VycmVudFNpemU6IHNwYWNlUmVxdWlyZWQ6
IGRlY2lzaW9uSGFuZGxlcjopXSkKICAgICAgICAgLCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlU2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGNvbXBsZXRpb25IYW5kbGVyOild
KQorICAgICAgICAsIG1faGFzT3BlbldpbmRvd1NlbGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVuV2luZG93OmZy
b21TZXJ2aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgIHsKICAgICB9
CiAKQEAgLTEwNCw5ICsxMDcsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0
QXV0b3JlbGVhc2VkKCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm5zVVJMQ2hh
bGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKICAgICB9
CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2lu
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVByb3h5Kik+JiYgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBpZiAoIW1faGFzT3BlbldpbmRvd1NlbGVjdG9yIHx8ICFtX2Rl
bGVnYXRlIHx8ICFtX2RhdGFTdG9yZSkgeworICAgICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdl
YktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0
QXV0b3JlbGVhc2VkKCksIEBzZWxlY3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5XaW5kb3c6ZnJv
bVNlcnZpY2VXb3JrZXJPcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1dlYlZpZXcgKm5ld1dlYlZpZXcp
IG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFz
QmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAgICBjYWxsYmFjayhu
ZXdXZWJWaWV3Ll9wYWdlLmdldCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0byBuc1VS
TCA9IChOU1VSTCAqKVVSTCB7IHVybCB9OworICAgICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZXJ2aWNlV29ya2VyT3JpZ2luKTsKKyAgICAgICAgW21f
ZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgd2Vic2l0ZURhdGFTdG9yZTptX2RhdGFTdG9yZS5n
ZXRBdXRvcmVsZWFzZWQoKSBvcGVuV2luZG93Om5zVVJMIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2lu
OndyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlci5nZXQoKV07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8V0tXZWJzaXRlRGF0YVN0b3Jl
PiBtX2RhdGFTdG9yZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlPiA+IG1fZGVsZWdhdGU7CiAgICAgYm9vbCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VT
ZWxlY3RvciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
U2VsZWN0b3IgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNPcGVuV2luZG93U2VsZWN0b3IgeyBm
YWxzZSB9OwogfTsKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQpAQCAtNjUy
LDcgKzY3OCw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9X
ZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAtICh2b2lkKXNldF9kZWxlZ2F0
ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VV
bmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKKyAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVu
dD4oc2VsZiwgZGVsZWdhdGUpKTsKIH0KIAogLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gKilfY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCmluZGV4
IDBiODU3MzA0ODc5Ni4uMWQxNTgxNzQzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZS5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCitAY2xhc3MgV0tTZWN1cml0eU9y
aWdpbjsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CitAY2xhc3MgV0tXZWJWaWV3OworCiBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogQHByb3RvY29sIF9XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25hbAogLSAodm9pZCly
ZXF1ZXN0U3RvcmFnZVNwYWNlOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZU9yaWdpbjooTlNV
UkwgKilmcmFtZVVSTCBxdW90YTooTlNVSW50ZWdlcilxdW90YSBjdXJyZW50U2l6ZTooTlNVSW50
ZWdlciljdXJyZW50U2l6ZSBzcGFjZVJlcXVpcmVkOihOU1VJbnRlZ2VyKXNwYWNlUmVxdWlyZWQg
ZGVjaXNpb25IYW5kbGVyOih2b2lkICheKSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpKWRlY2lz
aW9uSGFuZGxlcjsKIC0gKHZvaWQpZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihO
U1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRp
b24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXI7Ci0KKy0g
KHZvaWQpd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9w
ZW5XaW5kb3c6KE5TVVJMICopdXJsIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihXS1NlY3VyaXR5
T3JpZ2luICopc2VydmljZVdvcmtlck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
V0tXZWJWaWV3ICpuZXdXZWJWaWV3KSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDI0Y2YyMGQ3MzIwMy4uYjFhMjIwYjhjMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAg
LTE3OTgsNiArMTc5OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJl
bW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAgIHNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVj
dGlvbldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWlu
LCBwcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3Jr
ZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7CisgICAgaWYgKGF1dG8qIHN0b3JlID0g
d2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklEKSkgeworICAgICAgICBzdG9y
ZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKGlkZW50aWZpZXIsIHVybFN0cmluZywgc2Vy
dmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDFlODZmMzQyNjNl
MC4uNDM3ZmJjZWFhOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjk5LDYgKzI5OSw4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgdGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9z
c2libGUoUmVtb3RlV29ya2VyVHlwZSwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCisgICAgdm9p
ZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYm
KTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAxZGQyMzMwNzMyOTYuLjdjYWY2YjcyM2Vh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtOTEsNiArOTEsOCBAQCBtZXNz
YWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEYXRhVGFz
a0RpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKSAtPiAoYm9vbCBhbGxvd2VkKQog
ICAgIERhdGFUYXNrRGlkUmVjZWl2ZURhdGEoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCiAgICAgRGF0YVRhc2tEaWRDb21wbGV0
ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAgT3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBzZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzdhNDUyNGY5YzdiLi43NTJlM2U1NTYxZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDg3MCw3ICs0ODcwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHAKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAg
ICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7
CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVj
ZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3Nhcnko
ZmFsc2UpOwogICAgIH0KIAogICAgIGZyYW1lLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKQEAg
LTQ5MDUsMTIgKzQ5MDUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VX
b3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKIH0KICNlbmRpZgogCi12b2lkIFdl
YlBhZ2VQcm94eTo6Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVj
ZXNzYXJ5KCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lm
TmVjZXNzYXJ5KGJvb2wgc3VjY2VzcykKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0g
ICAgaWYgKG1faXNTZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21w
bGV0aW9uSGFuZGxlcikKKyAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyICYmICFzdWNjZXNzKQogICAgICAgICBtX3Nl
cnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAjZW5kaWYKKworICAg
IGlmIChtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKQorICAgICAg
ICBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKHN1Y2Nlc3MpOwog
fQogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC01MTM0
LDYgKzUxMzcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgICAgICByZXNldFJlY2Vu
dENyYXNoQ291bnRTb29uKCk7CiAKICAgICAgICAgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0o
KTsKKworICAgICAgICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KHRydWUp
OwogICAgIH0KIAogICAgIG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQ
cm92aXNpb25hbExvYWQgPSBmYWxzZTsKQEAgLTUxODIsNyArNTE4Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFt
ZUluZm9EYXRhJiYKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0
aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAgY2Fs
bFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAg
ICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAgIH0K
IH0KIApAQCAtODAxOCw3ICs4MDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUo
UmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICAgICBpZiAocmVz
ZXRTdGF0ZVJlYXNvbiAhPSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAg
ICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7
CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwog
CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBjYTI0MmYyM2ZiMGQuLmYzMWIxZjRhMDljMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTIwODEsNiArMjA4MSwxMCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2Vi
Q29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpG
bG9hdFJlY3Q+KT4mJik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBz
ZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykgeyBtX3NlcnZpY2VXb3JrZXJP
cGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrID0gV1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2sp
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdl
YlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lk
IHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjYwNyw3ICsyNjExLDcgQEAgcHJpdmF0ZToKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2Vy
UGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpOwogI2VuZGlmCi0gICAgdm9pZCBjYWxsU2Vy
dmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICB2b2lk
IGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNjZXNzKTsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbkhhcmR3YXJlS2V5
Ym9hcmRNb2RlKCk7CkBAIC0zMTE5LDYgKzMxMjMsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICAgICBib29sIG1faXNTZXJ2aWNlV29ya2VyUGFnZSB7IGZhbHNlIH07
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29ya2VyTGF1bmNo
Q29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9z
ZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjazsKICNlbmRpZgogCiAgICAg
UnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRpbWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCA3MWFlOTI2NTQ4YmMuLjZmYTI2YjQyZDMzYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTIwODcsNCArMjA4NywzNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZERl
c3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdAogICAg
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIo
KS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG51bGxwdHIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAor
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4p
PiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXSAoV2ViUGFnZVByb3h5KiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCFuZXdQYWdlKSB7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFuZXdQYWdlLT5w
YWdlTG9hZFN0YXRlKCkuaXNMb2FkaW5nKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKExv
YWRpbmcsICJUaGUgV0tXZWJWaWV3IHByb3ZpZGVkIGluIHJlc3BvbnNlIHRvIGEgU2VydmljZVdv
cmtlciBvcGVuV2luZG93IHJlcXVlc3Qgd2FzIG5vdCBpbiB0aGUgbG9hZGluZyBzdGF0ZSIpOwor
ICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtwYWdlSUQgPSBuZXdQ
YWdlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHN1
Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byogbmV3UGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgICAgICAgICAgaWYgKCFuZXdQYWdlIHx8ICFzdWNj
ZXNzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5l
d1BhZ2UtPndlYlBhZ2VJRCgpKTsKKyAgICAgICAgfTsKKworICAgICAgICBuZXdQYWdlLT5zZXRT
ZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhXVEZNb3ZlKGlubmVyQ2Fs
bGJhY2spKTsKKyAgICB9OworCisgICAgbV9jbGllbnQtPm9wZW5XaW5kb3dGcm9tU2VydmljZVdv
cmtlcih1cmxTdHJpbmcsIHNlcnZpY2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoaW5uZXJDYWxsYmFj
aykpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNmVmOTU1MDE3MjY2Li5iZjZiN2YzM2Y5MTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTM3OSw2ICszNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVh
clNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwog
ICAgIHZvaWQgZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpOwogCisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXph
dGlvbiA6IGJvb2wgeyBObywgWWVzIH07CiAjaWYgRU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGY3YzY4M2ZmNzE2My4uZjdhYmUzMDdhNjViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCkBAIC0zNiw2ICszNiw4IEBAIHN0cnVjdCBTZWN1cml0
eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBXZWJQYWdlUHJveHk7
CisKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtNTAsNiArNTIsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOwogICAgIH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29uc3QgU3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJQYWdlUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCBlOTViN2NhZTg2
YmMuLjQ4ZTc1NTRkMjA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAg
LTE1MCw2ICsxNTAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNzYWdlKFUmJiBtZQogCiBib29sIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2Uq
IHBhZ2UpCiB7CisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIGdvaW5nIHRv
IHNob3cgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbi5pZGVudGlmaWVy
KCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIGlmIChwYWdlICYmICFwYWdlLT5j
b3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNhdGlvbnNFbmFibGVkKCkpCkBAIC0yMDgsNiAr
MjEwLDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29w
KCkpOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIERJRCBTSE9XIG5v
dGlmaWNhdGlvbiAlcyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworCiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlm
aWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0
aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9uKQpAQCAtMjIzLDExICsyMjcsMTUgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlE
JiBub3RpZmljYXRpb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKIAorICAg
IExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBESUQgQ0xJQ0sgbm90aWZpY2F0aW9u
ICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBu
b3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAg
ICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhOb3RpZmlj
YXRpb25zLCAiV2ViUHJvY2VzcyAlaSBoYW5kbGluZyBjbGljayBldmVudCBmb3Igbm90aWZpY2F0
aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisKICAgICAvLyBJbmRpY2F0ZSB0aGF0IHRoaXMgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hl
ZCBpbiByZWFjdGlvbiB0byBhIHVzZXIncyBpbnRlcmFjdGlvbiB3aXRoIGEgcGxhdGZvcm0gbm90
aWZpY2F0aW9uLgogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5n
VXNlckdlc3R1cmUpOwogICAgIG5vdGlmaWNhdGlvbi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZTIzYzI1NzE3YmNhLi4xZTFh
MzliZTdjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMiw2
ICszMzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6bWF0Y2hBbGxD
b21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIKICAgICAgICAgY2FsbGJhY2soV1RG
TW92ZShjbGllbnRzRGF0YSkpOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykK
K3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6T3BlbldpbmRvdyB7IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2
b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbjo6Q2xhaW0geyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciB9LCBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCBlY2Q4MWZiM2YyYWIuLmY4OTZiMWIwZWI0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC04Nyw2ICs4Nyw3IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBm
aW5hbDsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsK
IAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5h
bDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYTAxY2Vh
NDI3NzFhLi4wMTZjZGIwYTUwZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC0zODAsNiArMzgwLDE3IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25mCiB9
CiAKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2Vi
VmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBX
S05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFjdGlvbiwgV0tXaW5kb3dGZWF0dXJlc1Jl
ZiB3aW5kb3dGZWF0dXJlcykKK3sKKyAgICBhdXRvKiBwbGF0Zm9ybVdlYlZpZXcgPSBjcmVhdGVP
dGhlclBsYXRmb3JtV2ViVmlldyhwYXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBuYXZpZ2F0aW9u
QWN0aW9uLCB3aW5kb3dGZWF0dXJlcyk7CisgICAgaWYgKCFwbGF0Zm9ybVdlYlZpZXcpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byogcGFnZSA9IHBsYXRmb3JtV2ViVmlldy0+
cGFnZSgpOworICAgIFdLUmV0YWluKHBhZ2UpOworICAgIHJldHVybiBwYWdlOworfQorCitQbGF0
Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhQ
bGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRvd0ZlYXR1cmVzUmVmKQogewog
ICAgIG1fY3VycmVudEludm9jYXRpb24tPndpbGxDcmVhdGVOZXdQYWdlKCk7CiAKQEAgLTM4OSw3
ICs0MDAsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0
Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgbV9jcmVhdGVkT3RoZXJQ
YWdlID0gdHJ1ZTsKIAotICAgIGF1dG8gdmlldyA9IHBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBh
cmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIHBhcmVudFZpZXctPm9wdGlvbnMoKSk7CisgICAgYXV0
byBvcHRpb25zID0gcGFyZW50VmlldyA/IHBhcmVudFZpZXctPm9wdGlvbnMoKSA6IG1fbWFpbldl
YlZpZXctPm9wdGlvbnMoKTsKKyAgICBhdXRvIHZpZXcgPSBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFn
ZShwYXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBvcHRpb25zKTsKICAgICBXS1BhZ2VSZWYgbmV3
UGFnZSA9IHZpZXctPnBhZ2UoKTsKIAogICAgIHZpZXctPnJlc2l6ZVRvKDgwMCwgNjAwKTsKQEAg
LTUwOSw5ICs1MjEsOSBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFn
ZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbgogCiAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnVwZGF0ZVdpbmRvd1NjYWxlRm9yVGVzdCh2aWV3LnB0cigpLCAq
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1fY3VycmVudEludm9jYXRpb24pOwogCisgICAg
UGxhdGZvcm1XZWJWaWV3KiB2aWV3VG9SZXR1cm4gPSB2aWV3LnB0cigpOwogICAgIG1fYXV4aWxp
YXJ5V2ViVmlld3MuYXBwZW5kKFdURk1vdmUodmlldykpOwotICAgIFdLUmV0YWluKG5ld1BhZ2Up
OwotICAgIHJldHVybiBuZXdQYWdlOworICAgIHJldHVybiB2aWV3VG9SZXR1cm47CiB9CiAKIGNv
bnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpsaWJyYXJ5UGF0aEZvclRlc3RpbmcoKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDQ0NTM5NTM4ODM5Mi4uNDhmYTVh
ZDQyZWY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0zNzgs
NiArMzc4LDggQEAgcHVibGljOgogICAgIGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb24o
V0tTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBib29sIGRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9u
T25Qcm9tcHQoV0tTdHJpbmdSZWYgb3JpZ2luKTsKIAorICAgIFBsYXRmb3JtV2ViVmlldyogY3Jl
YXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLV2luZG93RmVhdHVy
ZXNSZWYpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25S
ZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKTsKICAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmPiBnZW5lcmF0ZUNvbnRleHRDb25m
aWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggNzcyM2JhNDg3
YTU2Li5kZWQ1MWJiNjA2MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTIxNCw3ICsyMTQsOCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwg
Y29uc3QgVGVzdE9wdAogVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmlldz4gVGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQ
YWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7CiAgICAg
YXV0byBuZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24oKSBjb3B5XSk7Ci0gICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0
YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CisgICAg
aWYgKHBhcmVudFZpZXcpCisgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2Vi
VmlldzpzdGF0aWNfY2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSld
OwogICAgIGlmIChbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQogICAgICAgICBb
bmV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOltuZXdDb25maWd1cmF0aW9uIF9y
ZWxhdGVkV2ViVmlld10uY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlXTsKICAgICBhdXRv
IHZpZXcgPSBtYWtlVW5pcXVlUmVmPFBsYXRmb3JtV2ViVmlldz4obmV3Q29uZmlndXJhdGlvbi5n
ZXQoKSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KaW5kZXggZTFmNjhlNDhhZjcz
Li4wM2ExMzhkNjZjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KQEAgLTI2LDYgKzI2LDEy
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIlRlc3RXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGUuaCIKIAorI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW1wb3J0ICJUZXN0Q29u
dHJvbGxlci5oIgorI2ltcG9ydCAiVGVzdFJ1bm5lcldLV2ViVmlldy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1VuaXF1ZVJlZi5oPgorCiBAaW1wbGVtZW50
YXRpb24gVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB7IH0KIC0gKGluc3RhbmNldHlwZSlp
bml0CiB7CkBAIC02MSw0ICs2NywxNSBAQAogICAgIF9zaG91bGRBbGxvd0FueVNTTENlcnRpZmlj
YXRlID0gc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZTsKIH0KIAorLSAodm9pZCl3ZWJzaXRl
RGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3BlbldpbmRvdzooTlNV
UkwgKil1cmwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZXJ2
aWNlV29ya2VyT3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKm5l
d1dlYlZpZXcpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byogbmV3VmlldyA9IFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIFdLV2ViVmlldyAqd2ViVmll
dyA9IG5ld1ZpZXctPnBsYXRmb3JtVmlldygpOworCisgICAgQVNTRVJUKHdlYlZpZXcuY29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID09IGRhdGFTdG9yZSk7CisKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOworICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHdlYlZpZXcpOworfQorCiBAZW5kCg==
</data>
<flag name="commit-queue"
          id="483952"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455851</attachid>
            <date>2022-03-26 11:35:09 -0700</date>
            <delta_ts>2022-03-26 15:29:50 -0700</delta_ts>
            <desc>EWS yet again</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>48650</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTY4
MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBU
JiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZp
Y2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGlu
c3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAgICAgICBj
aGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2NmNzc3OGFlNy4uYWQwZjYxNmUzZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MDgsNyArODQwOCw3IEBAIExvZ2dlciYgRG9j
dW1lbnQ6OmxvZ2dlcigpCiAgICAgCiBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKSA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3Vt
ZW50OjpmcmFtZUlEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDYy
MDQwMTBmYWZjZS4uNmUxNDkzMTQ4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgK
QEAgLTUwLDYgKzUwLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBTZWN1cml0eU9y
aWdpbkRhdGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47
CisKKyAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmco
dG9wT3JpZ2luLnRvU3RyaW5nKCksICItIiwgY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOyB9CiB9
OwogCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggOWE5NzBjNjQ0Y2ZiLi41ZmRkZjYxNjIw
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHN0YXRpYyBTZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShT
Y3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJl
dHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwg
aXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7
IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgp
LCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZv
Y3VzT3JkZXIgfTsKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVy
bC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQpAQCAtNzQsMTEgKzc0LDE1IEBAIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCk7CiAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGRvY3VtZW50Lmxv
YWRlcigpICYmIGRvY3VtZW50LmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpObzsKIAorICAgIGF1dG8gZG9jdW1lbnRQYWdlSWRlbnRpZmllciA9
IGRvY3VtZW50LnBhZ2VJRCgpOworCiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dC5pZGVu
dGlmaWVyKCksCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6
V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVh
dGlvblVSTCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1l
bnQuY3JlYXRpb25VUkwoKSwKKyAgICAgICAgZG9jdW1lbnRQYWdlSWRlbnRpZmllciA/ICpkb2N1
bWVudFBhZ2VJZGVudGlmaWVyIDogUGFnZUlkZW50aWZpZXIgeyB9LAorICAgICAgICBsYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAg
ICAgICBkb2N1bWVudC5oYXNGb2N1cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4
IDg1ZTEwODNkN2Q0MS4uMjM3MjczNWJjZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q2xpZW50VHlwZS5oIgpAQCAtNDUsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVu
dERhdGEgewogICAgIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdv
cmtlckNsaWVudEZyYW1lVHlwZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBQYWdlSWRl
bnRpZmllciBwYWdlSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZh
bHNlIH07CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBz
dHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
IHZvaWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8
PCB1cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlz
Rm9jdXNlZCA8PCBmb2N1c09yZGVyOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBl
IDw8IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25X
YXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwog
fQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRp
b25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRl
Y29kZShEZWNvZGVyJgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCisgICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJZGVudGlmaWVyKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAg
ICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBpZiAoIWxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3IEBAIHN0ZDo6b3B0
aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpk
ZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWZvY3VzT3JkZXIpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3Zl
KCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3Zl
KCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CisgICAgcmV0dXJuIHsgeyBX
VEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZyYW1lVHlwZSks
IFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92ZSgqbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBXVEZNb3ZlKCpp
c0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CiB9CiAKIHVzaW5nIFNlcnZpY2VX
b3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAppbmRleCBlMjk5
MTg5NzFhNTAuLjk3ZjAyNTUzYjZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC05MCwxMCArOTAsNjYg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29y
a2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3Ry
aW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyB2b2lkIG1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPik+JiYgY2FsbGJhY2spCiB7Ci0gICAgVU5VU0VEX1BB
UkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVy
cm9yLCAiY2xpZW50cy5vcGVuV2luZG93KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQiX3MgfSk7Cisg
ICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlm
aWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
YXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bigpOworICAgICAgICBhdXRvIG9wdGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zIHsgdHJ1ZSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9OworICAgICAgICBj
b25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0aW9ucywgW3Nl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBjbGllbnRzRGF0
YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5w
b3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3BhZ2VJZGVu
dGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjbGllbnRzRGF0YSA9IGNyb3Nz
VGhyZWFkQ29weShXVEZNb3ZlKGNsaWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkgbXV0YWJsZSB7
CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhIDogY2xpZW50c0RhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBzdGQ6Om51bGxv
cHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCit7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIHNlcnZpY2Ug
d29ya2VyIGNhbGxpbmcgb3BlbldpbmRvdyB0byBVUkwgJXMiLCBnZXRwaWQoKSwgdXJsU3RyaW5n
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFkKCkuaWRlbnRp
ZmllcigpOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwor
CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlVSTCBzdHJpbmcgIiwgdXJsU3RyaW5nLCAi
IGNhbm5vdCBzdWNjZXNzZnVsbHkgYmUgcGFyc2VkIikgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIlNlcnZpY2VXb3JrZXJD
bGllbnRzLm9wZW5XaW5kb3coKSBjYW5ub3QgYmUgY2FsbGVkIHdpdGggVVJMICIsIHVybC5zdHJp
bmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVy
bCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29ubmVj
dGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAg
ICAgY29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsLnN0
cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyXSAoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5wb3N0VGFz
a1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgW3Byb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBwYWdlSWRlbnRpZmllciA9IFdURk1vdmUocGFnZUlkZW50aWZpZXIpLCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBm
aW5pc2hlZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyBjYWxsLiBSZXN1bHRpbmcg
cGFnZSBpZGVudGlmaWVyIGlzICVzIiwgZ2V0cGlkKCksIHBhZ2VJZGVudGlmaWVyID8gcGFnZUlk
ZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxOT05FPiIpOworCisg
ICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpqc051bGwoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBt
YXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgKnBh
Z2VJZGVudGlmaWVyLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChhdXRvJiBzY29wZSwg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gY2xpZW50RGF0YSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50Ojpj
cmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAg
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNsaWVudD4+KFdURk1v
dmUoY2xpZW50KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6OmNsYWltKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250
ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmY2Y1ZWUwOWM4YTUuLmZlZTdjMTVkMmI4NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250
ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0
L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVudEJ5SWRlbnRpZmllckNhbGxiYWNrJiYp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwgU2VydmljZVdvcmtl
ckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGNs
YWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2Vw
dGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0KICAgICAgICAgdmlydHVhbCB2b2lkIGZvY3VzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKSA9IDA7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiYmKT4mJikgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29s
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCA2MTg2MzQ2
Y2QxNzYuLjhlMGRhOTUyMzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4m
Jik+JiYpOwogCisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9IDA7CisKICAgICBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVy
biBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmlu
ZGV4IDllZGQ0NDVlNmNiYy4uMTYwMDY1ZDM2ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMTcsNyAr
MTE3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRhJiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIGNvbnRl
eHREYXRhKCkgY29uc3Q7CiAKLSAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0
OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2luKCkgY29uc3Q7
CiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6
b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQ
YWdlSWRlbnRpZmllcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rp
b24uY3BwCmluZGV4IDQ1MmM2NzExMzgwZi4uZTllYjIzOTlhOThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVu
dGlmaWVyIGNsaWVuCiAgICAgICAgIHVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVu
dElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAgU2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0
YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNl
cnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJsKCksIHJlcXVlc3Qu
aXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKKyAg
ICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vydmlj
ZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6
Tm9uZSwgcmVxdWVzdC51cmwoKSwgeyB9LCByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkgPyBXZWJD
b3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vIH07CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2Vy
Q2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSB7IHJlZ2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4o
KSB9LCBXVEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRpb24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0
dHBVc2VyQWdlbnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMDM2NzVhODQ0NDJlLi41MjI4NTMxM2NlMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xNTcsNiArMTU3LDI3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Ojp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKQogICAgIG1fY29ubmVjdGlvbi5uZXR3
b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9j
ZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigpIH0sIDApOwogfQogCit2b2lkIFdlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4m
JiBjYWxsYmFjaykKK3sKKyAgICBhdXRvKiBzZXJ2ZXIgPSB0aGlzLT5zZXJ2ZXIoKTsKKyAgICBp
ZiAoIXNlcnZlcikgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byogd29ya2VyID0gc2VydmVyLT53b3JrZXJCeUlEKGlk
ZW50aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGlubmVyQ2FsbGJhY2sg
PSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxi
YWNrKFdURk1vdmUocGFnZUlkZW50aWZpZXIpKTsKKyAgICB9OworCisgICAgbV9jb25uZWN0aW9u
Lm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpPcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIgeyBpZGVudGlmaWVyLCBzZXJ2ZXItPnNlc3Npb25JRCgpLCB1cmxTdHJpbmcsIHdv
cmtlci0+b3JpZ2luKCkuY2xpZW50T3JpZ2luIH0sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOwor
fQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6bWF0Y2hBbGxDb21wbGV0
ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mIGNsaWVudHNEYXRhKQogewogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uOjpNYXRjaEFsbENvbXBsZXRlZCB7IHJlcXVlc3RJZGVudGlm
aWVyLCBjbGllbnRzRGF0YSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCAwM2Q5MzZjY2QzMmEuLjgwYjMwM2U0NGRiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtMTAy
LDYgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVl
ZGVkKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5lc3MoKSBm
aW5hbDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKIAogICAgIHZv
aWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAzZTc3NTg1MjM3
OTUuLjIxZDIzNjU1N2M0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC00MCw2ICs0MCw4IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsK
ICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hl
Y2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICBTZXRB
c0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBi
b29sIGlzSW5zcGVjdGVkKQorCisgICAgT3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgdXJsU3RyaW5nKSAtPiAoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3Q2xpZW50RGF0YSkKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4IDA4MTcxMGE4YzcxMy4u
NWFkN2Y3NGNmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbXBvcnQg
Il9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50
aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhdGlvbkRhdGFiYXNlLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9VUkwuaD4KQEAgLTU2LDEwICs1NywxMiBAQAogCiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50IGZpbmFsIDogcHVibGljIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChpZCA8X1dLV2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlPiBkZWxlZ2F0ZSkKLSAgICAgICAgOiBtX2RlbGVnYXRlKGRlbGVnYXRl
KQorICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmVDbGllbnQoV0tXZWJzaXRlRGF0YVN0b3Jl
ICpkYXRhU3RvcmUsIGlkPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4gZGVsZWdhdGUpCisg
ICAgICAgIDogbV9kYXRhU3RvcmUoZGF0YVN0b3JlKQorICAgICAgICAsIG1fZGVsZWdhdGUoZGVs
ZWdhdGUpCiAgICAgICAgICwgbV9oYXNSZXF1ZXN0U3RvcmFnZVNwYWNlU2VsZWN0b3IoW21fZGVs
ZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihyZXF1ZXN0U3RvcmFnZVNw
YWNlOiBmcmFtZU9yaWdpbjogcXVvdGE6IGN1cnJlbnRTaXplOiBzcGFjZVJlcXVpcmVkOiBkZWNp
c2lvbkhhbmRsZXI6KV0pCiAgICAgICAgICwgbV9oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNl
bGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiBjb21wbGV0aW9uSGFuZGxlcjopXSkKKyAg
ICAgICAgLCBtX2hhc09wZW5XaW5kb3dTZWxlY3RvcihbbV9kZWxlZ2F0ZS5nZXQoKSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYnNpdGVEYXRhU3RvcmU6b3BlbldpbmRvdzpmcm9tU2Vy
dmljZVdvcmtlck9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjopXSkKICAgICB7CiAgICAgfQogCkBA
IC0xMDQsOSArMTA3LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIFttX2RlbGVnYXRlLmdldEF1dG9y
ZWxlYXNlZCgpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpuc1VSTENoYWxsZW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CiAgICAgfQogCisg
ICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYlBhZ2VQcm94eSopPiYmIGNhbGxiYWNrKQor
ICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc09wZW5XaW5kb3dTZWxlY3RvciB8fCAhbV9kZWxlZ2F0
ZSB8fCAhbV9kYXRhU3RvcmUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKHsgfSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNoZWNrZXIgPSBXZWJLaXQ6
OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2RlbGVnYXRlLmdldEF1dG9y
ZWxlYXNlZCgpLCBAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVuV2luZG93OmZyb21TZXJ2
aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOikpOworICAgICAgICBhdXRvIGNvbXBs
ZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oV0tXZWJWaWV3ICpuZXdXZWJWaWV3KSBtdXRh
YmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5D
YWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjaGVja2VyLT5k
aWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAgY2FsbGJhY2sobmV3V2Vi
Vmlldy5fcGFnZS5nZXQoKSk7CisgICAgICAgIH0pOworCisgICAgICAgIGF1dG8gbnNVUkwgPSAo
TlNVUkwgKilVUkwgeyB1cmwgfTsKKyAgICAgICAgYXV0byBhcGlPcmlnaW4gPSBBUEk6OlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGUoc2VydmljZVdvcmtlck9yaWdpbik7CisgICAgICAgIFttX2RlbGVn
YXRlLmdldEF1dG9yZWxlYXNlZCgpIHdlYnNpdGVEYXRhU3RvcmU6bV9kYXRhU3RvcmUuZ2V0QXV0
b3JlbGVhc2VkKCkgb3BlbldpbmRvdzpuc1VSTCBmcm9tU2VydmljZVdvcmtlck9yaWdpbjp3cmFw
cGVyKGFwaU9yaWdpbi5nZXQoKSkgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIu
Z2V0KCldOworICAgIH0KKworICAgIFdlYWtPYmpDUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gbV9k
YXRhU3RvcmU7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZT4gPiBtX2RlbGVnYXRlOwogICAgIGJvb2wgbV9oYXNSZXF1ZXN0U3RvcmFnZVNwYWNlU2VsZWN0
b3IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNlbGVj
dG9yIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzT3BlbldpbmRvd1NlbGVjdG9yIHsgZmFsc2Ug
fTsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3RvcmUKQEAgLTY1Miw3ICs2
NzgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClzZXRfZGVsZWdhdGU6KGlk
IDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7CiAgICAgX2RlbGVnYXRl
ID0gZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudChtYWtlVW5pcXVl
UmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7CisgICAgX3dlYnNpdGVEYXRh
U3RvcmUtPnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KHNl
bGYsIGRlbGVnYXRlKSk7CiB9CiAKIC0gKF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
ICopX2NvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaAppbmRleCAwYjg1
NzMwNDg3OTYuLjFkMTU4MTc0MzVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaApA
QCAtMjYsMTEgKzI2LDE1IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdLU2VjdXJpdHlPcmlnaW47
CitAY2xhc3MgV0tXZWJzaXRlRGF0YVN0b3JlOworQGNsYXNzIFdLV2ViVmlldzsKKwogV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSkKIEBwcm90b2NvbCBfV0tXZWJzaXRl
RGF0YVN0b3JlRGVsZWdhdGUgPE5TT2JqZWN0PgogCiBAb3B0aW9uYWwKIC0gKHZvaWQpcmVxdWVz
dFN0b3JhZ2VTcGFjZTooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVPcmlnaW46KE5TVVJMICop
ZnJhbWVVUkwgcXVvdGE6KE5TVUludGVnZXIpcXVvdGEgY3VycmVudFNpemU6KE5TVUludGVnZXIp
Y3VycmVudFNpemUgc3BhY2VSZXF1aXJlZDooTlNVSW50ZWdlcilzcGFjZVJlcXVpcmVkIGRlY2lz
aW9uSGFuZGxlcjoodm9pZCAoXikodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSlkZWNpc2lvbkhh
bmRsZXI7CiAtICh2b2lkKWRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyOwotCistICh2b2lk
KXdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFTdG9yZSBvcGVuV2lu
ZG93OihOU1VSTCAqKXVybCBmcm9tU2VydmljZVdvcmtlck9yaWdpbjooV0tTZWN1cml0eU9yaWdp
biAqKXNlcnZpY2VXb3JrZXJPcmlnaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2Vi
VmlldyAqbmV3V2ViVmlldykpY29tcGxldGlvbkhhbmRsZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAyNGNmMjBkNzMyMDMuLmIxYTIyMGI4YzJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNzk4
LDYgKzE3OTgsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGVSZW1vdGVX
b3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW0KICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6VGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25X
aGVuUG9zc2libGUod29ya2VyVHlwZSwgc2Vzc2lvbklELCByZWdpc3RyYWJsZURvbWFpbiwgcHJv
Y2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVu
V2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNp
dGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc3RvcmUtPm9w
ZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihpZGVudGlmaWVyLCB1cmxTdHJpbmcsIHNlcnZpY2VX
b3JrZXJPcmlnaW4sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAxZTg2ZjM0MjYzZTAuLjQz
N2ZiY2VhYTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5OSw2ICsyOTksOCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxl
KFJlbW90ZVdvcmtlclR5cGUsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAorICAgIHZvaWQgb3Bl
bldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJik7CisK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMWRkMjMzMDczMjk2Li43Y2FmNmI3MjNlYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTkxLDYgKzkxLDggQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGF0YVRhc2tEaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkgLT4gKGJvb2wgYWxsb3dlZCkKICAgICBE
YXRhVGFza0RpZFJlY2VpdmVEYXRhKFdlYktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIERhdGFUYXNrRGlkQ29tcGxldGVXaXRo
RXJyb3IoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBlcnJvcikKKworICAgIE9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFN0cmluZyB1cmxTdHJpbmcsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgc2VydmljZVdvcmtlck9yaWdpbikgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG5ld1BhZ2UpCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IDM3YTQ1MjRmOWM3Yi4uNzUyZTNlNTU2MWQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQ4NzAsNyArNDg3MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAgICAgICAg
ICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOwogCi0g
ICAgICAgIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5lY2Vzc2Fy
eSgpOworICAgICAgICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGZhbHNl
KTsKICAgICB9CiAKICAgICBmcmFtZS5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CkBAIC00OTA1
LDEyICs0OTA1LDE1IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hTZXJ2aWNlV29ya2Vy
UGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQYWdl
UHJveHk6OmNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5lY2Vzc2Fy
eSgpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vz
c2FyeShib29sIHN1Y2Nlc3MpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIGlm
IChtX2lzU2VydmljZVdvcmtlclBhZ2UgJiYgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlv
bkhhbmRsZXIpCisgICAgaWYgKG1faXNTZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3Jr
ZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlciAmJiAhc3VjY2VzcykKICAgICAgICAgbV9zZXJ2aWNl
V29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogI2VuZGlmCisKKyAgICBpZiAo
bV9zZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjaykKKyAgICAgICAgbV9z
ZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhzdWNjZXNzKTsKIH0KIAog
I2lmIEVOQUJMRShJTlRFTExJR0VOVF9UUkFDS0lOR19QUkVWRU5USU9OKQpAQCAtNTEzNCw2ICs1
MTM3LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYKICAgICAgICAgcmVzZXRSZWNlbnRDcmFz
aENvdW50U29vbigpOwogCiAgICAgICAgIG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CisK
KyAgICAgICAgY2FsbExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeSh0cnVlKTsKICAg
ICB9CiAKICAgICBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlz
aW9uYWxMb2FkID0gZmFsc2U7CkBAIC01MTgyLDcgKzUxODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbExvYWRGb3JGcmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZv
RGF0YSYmCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKQogICAgICAgICAgICAgbmF2aWdhdGlvbi0+
c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KG51bGxwdHIpOwogCi0gICAgICAgIGNhbGxTZXJ2
aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5lY2Vzc2FyeSgpOworICAgICAgICBj
YWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGZhbHNlKTsKICAgICB9CiB9CiAK
QEAgLTgwMTgsNyArODAyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKFJlc2V0
U3RhdGVSZWFzb24gcmVzZXRTdGF0ZVJlYXNvbikKICNlbmRpZgogCiAgICAgaWYgKHJlc2V0U3Rh
dGVSZWFzb24gIT0gUmVzZXRTdGF0ZVJlYXNvbjo6TmF2aWdhdGlvblN3YXApCi0gICAgICAgIGNh
bGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5lY2Vzc2FyeSgpOworICAg
ICAgICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGZhbHNlKTsKIAogICAg
IGlmIChtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyKSB7CiAgICAgICAgIG1fb3BlblBhbmVsUmVz
dWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggY2EyNDJmMjNmYjBkLi5mMzFiMWY0YTA5YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0yMDgxLDYgKzIwODEsMTAgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBpbnRlcmFjdGFibGVSZWdpb25zSW5Sb290Vmlld0Nvb3JkaW5hdGVzKFdlYkNvcmU6
OkZsb2F0UmVjdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6RmxvYXRS
ZWN0Pik+JiYpOwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIHZvaWQgc2V0U2Vy
dmljZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIHsgbV9zZXJ2aWNlV29ya2VyT3Blbldp
bmRvd0NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKTsgfQor
I2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9j
ZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI2MDcsNyArMjYxMSw3IEBAIHByaXZhdGU6CiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VS
ZWdpc3RyYXRpb24oYm9vbCBzdWNjZXNzKTsKICNlbmRpZgotICAgIHZvaWQgY2FsbFNlcnZpY2VX
b3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgdm9pZCBjYWxs
TG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGJvb2wgc3VjY2Vzcyk7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIGlzSW5IYXJkd2FyZUtleWJvYXJk
TW9kZSgpOwpAQCAtMzExOSw2ICszMTIzLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgYm9vbCBtX2lzU2VydmljZVdvcmtlclBhZ2UgeyBmYWxzZSB9OwogICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBs
ZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fc2Vydmlj
ZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2s7CiAjZW5kaWYKIAogICAgIFJ1bkxv
b3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4gbV90cnlDbG9zZVRpbWVvdXRUaW1lcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggNzFhZTkyNjU0OGJjLi42ZmEyNmI0MmQzM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CkBAIC0yMDg3LDQgKzIwODcsMzQgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpkaWREZXN0cm95
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXQKICAgICBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VXb3JrZXJNYW5hZ2VyKCkuZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihudWxscHRyLCBub3RpZmljYXRpb25JRCk7CiB9CiAKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+KT4mJiBj
YWxsYmFjaykKK3sKKyAgICBhdXRvIGlubmVyQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKFdlYlBhZ2VQcm94eSogbmV3UGFnZSkgbXV0YWJsZSB7CisgICAgICAgIGlm
ICghbmV3UGFnZSkgeworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghbmV3UGFnZS0+cGFnZUxv
YWRTdGF0ZSgpLmlzTG9hZGluZygpKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5n
LCAiVGhlIFdLV2ViVmlldyBwcm92aWRlZCBpbiByZXNwb25zZSB0byBhIFNlcnZpY2VXb3JrZXIg
b3BlbldpbmRvdyByZXF1ZXN0IHdhcyBub3QgaW4gdGhlIGxvYWRpbmcgc3RhdGUiKTsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBhdXRvIGlubmVyQ2FsbGJhY2sgPSBbcGFnZUlEID0gbmV3UGFnZS0+
aWRlbnRpZmllcigpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoYm9vbCBzdWNjZXNz
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8qIG5ld1BhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKKyAgICAgICAgICAgIGlmICghbmV3UGFnZSB8fCAhc3VjY2Vzcykg
eworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhuZXdQYWdl
LT53ZWJQYWdlSUQoKSk7CisgICAgICAgIH07CisKKyAgICAgICAgbmV3UGFnZS0+c2V0U2Vydmlj
ZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soV1RGTW92ZShpbm5lckNhbGxiYWNr
KSk7CisgICAgfTsKKworICAgIG1fY2xpZW50LT5vcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIo
dXJsU3RyaW5nLCBzZXJ2aWNlV29ya2VyT3JpZ2luLCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDZlZjk1NTAxNzI2Ni4uYmY2YjdmMzNmOTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5oCkBAIC0zNzksNiArMzc5LDggQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKTsKICAgICB2
b2lkIGRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdGlvbklEKTsKIAorICAgIHZvaWQgb3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
KT4mJik7CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJlaW5pdGlhbGl6YXRpb24g
OiBib29sIHsgTm8sIFllcyB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDbGllbnQuaAppbmRleCBmN2M2ODNmZjcxNjMuLmY3YWJlMzA3YTY1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDbGllbnQuaApAQCAtMzYsNiArMzYsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZVByb3h5OworCiBj
bGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGNo
YWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKICAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgb3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViUGFnZVByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZTk1YjdjYWU4NmJjLi40
OGU3NTU0ZDIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTAs
NiArMTUwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWUKIAogYm9vbCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdl
KQogeworICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBnb2luZyB0byBzaG93
IG5vdGlmaWNhdGlvbiAlcyIsIGdldHBpZCgpLCBub3RpZmljYXRpb24uaWRlbnRpZmllcigpLnRv
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
ICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y29yZVBh
Z2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQpAQCAtMjA4LDYgKzIxMCw4
IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihjb25z
dCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsK
IAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBESUQgU0hPVyBub3RpZmlj
YXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklE
KTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKQEAgLTIyMywxMSArMjI3LDE1IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90
aWZpY2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBMT0co
Tm90aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgRElEIENMSUNLIG5vdGlmaWNhdGlvbiAlcyIs
IGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZp
Y2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlm
ICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBMT0coTm90aWZpY2F0aW9u
cywgIldlYlByb2Nlc3MgJWkgaGFuZGxpbmcgY2xpY2sgZXZlbnQgZm9yIG5vdGlmaWNhdGlvbiAl
cyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CiAgICAgLy8gSW5kaWNhdGUgdGhhdCB0aGlzIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQgaW4g
cmVhY3Rpb24gdG8gYSB1c2VyJ3MgaW50ZXJhY3Rpb24gd2l0aCBhIHBsYXRmb3JtIG5vdGlmaWNh
dGlvbi4KICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKTsKICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGUyM2MyNTcxN2JjYS4uMWUxYTM5YmU3
YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zMzIsNiArMzMy
LDExIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxl
dGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUo
Y2xpZW50c0RhdGEpKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7Cisg
ICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Ok9wZW5XaW5kb3cgeyBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgdXJsIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhjZXB0
aW9uT3I8dm9pZD4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OkNsYWltIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIgfSwgW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggZWNkODFmYjNmMmFiLi5mODk2YjFiMGViNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODcsNiArODcsNyBAQCBwcml2YXRl
OgogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRpZEZh
aWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7
CiAgICAgdm9pZCBzZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgZmluYWw7CiAKICAg
ICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGEwMWNlYTQyNzcx
YS4uMDE2Y2RiMGE1MGYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcApAQCAtMzgwLDYgKzM4MCwxNyBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0
ZU90aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZgogfQogCiBX
S1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcq
IHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tOYXZp
Z2F0aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2luZG93RmVhdHVyZXNSZWYgd2lu
ZG93RmVhdHVyZXMpCit7CisgICAgYXV0byogcGxhdGZvcm1XZWJWaWV3ID0gY3JlYXRlT3RoZXJQ
bGF0Zm9ybVdlYlZpZXcocGFyZW50VmlldywgY29uZmlndXJhdGlvbiwgbmF2aWdhdGlvbkFjdGlv
biwgd2luZG93RmVhdHVyZXMpOworICAgIGlmICghcGxhdGZvcm1XZWJWaWV3KQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBhZ2UgPSBwbGF0Zm9ybVdlYlZpZXctPnBhZ2Uo
KTsKKyAgICBXS1JldGFpbihwYWdlKTsKKyAgICByZXR1cm4gcGFnZTsKK30KKworUGxhdGZvcm1X
ZWJWaWV3KiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZv
cm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tXaW5kb3dGZWF0dXJlc1JlZikKIHsKICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT53aWxsQ3JlYXRlTmV3UGFnZSgpOwogCkBAIC0zODksNyArNDAw
LDggQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1X
ZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAogICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9
IHRydWU7CiAKLSAgICBhdXRvIHZpZXcgPSBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShwYXJlbnRW
aWV3LCBjb25maWd1cmF0aW9uLCBwYXJlbnRWaWV3LT5vcHRpb25zKCkpOworICAgIGF1dG8gb3B0
aW9ucyA9IHBhcmVudFZpZXcgPyBwYXJlbnRWaWV3LT5vcHRpb25zKCkgOiBtX21haW5XZWJWaWV3
LT5vcHRpb25zKCk7CisgICAgYXV0byB2aWV3ID0gcGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UocGFy
ZW50VmlldywgY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiAgICAgV0tQYWdlUmVmIG5ld1BhZ2Ug
PSB2aWV3LT5wYWdlKCk7CiAKICAgICB2aWV3LT5yZXNpemVUbyg4MDAsIDYwMCk7CkBAIC01MDks
OSArNTIxLDkgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxh
dGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAogICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS51cGRhdGVXaW5kb3dTY2FsZUZvclRlc3Qodmlldy5wdHIoKSwgKlRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tX2N1cnJlbnRJbnZvY2F0aW9uKTsKIAorICAgIFBsYXRm
b3JtV2ViVmlldyogdmlld1RvUmV0dXJuID0gdmlldy5wdHIoKTsKICAgICBtX2F1eGlsaWFyeVdl
YlZpZXdzLmFwcGVuZChXVEZNb3ZlKHZpZXcpKTsKLSAgICBXS1JldGFpbihuZXdQYWdlKTsKLSAg
ICByZXR1cm4gbmV3UGFnZTsKKyAgICByZXR1cm4gdmlld1RvUmV0dXJuOwogfQogCiBjb25zdCBj
aGFyKiBUZXN0Q29udHJvbGxlcjo6bGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA0NDUzOTUzODgzOTIuLjQ4ZmE1YWQ0MmVm
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzc4LDYgKzM3
OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLU3Ry
aW5nUmVmIG9yaWdpbik7CiAgICAgYm9vbCBkZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbk9uUHJv
bXB0KFdLU3RyaW5nUmVmIG9yaWdpbik7CiAKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIGNyZWF0ZU90
aGVyUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRvd0ZlYXR1cmVzUmVm
KTsKKwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBn
ZW5lcmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJh
dGlvbihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDc3MjNiYTQ4N2E1Ni4u
ZGVkNTFiYjYwNjBjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rl
c3RDb250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCkBAIC0yMTQsNyArMjE0LDggQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0
IFRlc3RPcHQKIFVuaXF1ZVJlZjxQbGF0Zm9ybVdlYlZpZXc+IFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8g
bmV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkg
Y29weV0pOwotICAgIFtuZXdDb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzpzdGF0aWNf
Y2FzdDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSldOworICAgIGlmIChw
YXJlbnRWaWV3KQorICAgICAgICBbbmV3Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6
c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpXTsKICAg
ICBpZiAoW25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XSkKICAgICAgICAgW25ld0Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRl
ZFdlYlZpZXddLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZV07CiAgICAgYXV0byB2aWV3
ID0gbWFrZVVuaXF1ZVJlZjxQbGF0Zm9ybVdlYlZpZXc+KG5ld0NvbmZpZ3VyYXRpb24uZ2V0KCks
IG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tCmluZGV4IGUxZjY4ZTQ4YWY3My4uMDNh
MTM4ZDY2Y2ZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiwxMiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
LmgiCiAKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiVGVzdENvbnRyb2xs
ZXIuaCIKKyNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S1dlYlZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYuaD4KKwogQGltcGxlbWVudGF0aW9u
IFRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgeyB9CiAtIChpbnN0YW5jZXR5cGUpaW5pdAog
ewpAQCAtNjEsNCArNjcsMTUgQEAKICAgICBfc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSA9
IHNob3VsZEFsbG93QW55U1NMQ2VydGlmaWNhdGU7CiB9CiAKKy0gKHZvaWQpd2Vic2l0ZURhdGFT
dG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9wZW5XaW5kb3c6KE5TVVJMICop
dXJsIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VydmljZVdv
cmtlck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICpuZXdXZWJW
aWV3KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8qIG5ld1ZpZXcgPSBXVFI6OlRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5jcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBu
ZXdWaWV3LT5wbGF0Zm9ybVZpZXcoKTsKKworICAgIEFTU0VSVCh3ZWJWaWV3LmNvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSA9PSBkYXRhU3RvcmUpOworCisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcih3ZWJWaWV3KTsKK30KKwogQGVuZAo=
</data>
<flag name="commit-queue"
          id="483959"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455856</attachid>
            <date>2022-03-26 15:29:50 -0700</date>
            <delta_ts>2022-03-27 18:41:17 -0700</delta_ts>
            <desc>EWS vX</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>48633</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1j
bGljay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4wMzFjZDA2YjU3OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25j
bGljayBoYW5kbGVyIGNhbiBvcGVuIGEgd2luZG93CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIGlzICJncmFudGVkIgorUEFTUyBn
b3RDbGlja2VkIGlzIGZhbHNlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxzZQorUEFTUyBnb3RDbGlj
a2VkIGlzIHRydWUKK1BBU1MgZ290Q2xvc2VkIGlzIGZhbHNlCitQQVNTIE5ldyBjbGllbnQgaGFz
IGJlZW4gb2JzZXJ2ZWQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlm
aWNhdGlvbi1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uODMzYjc0ODg4MmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1s
CkBAIC0wLDAgKzEsNzkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7CisgICAgc2V0VGltZW91dCgiZmFp
bFRoZVRlc3QoJ3RpbWVkIG91dCcpIiwgMTUwMDApOworfQorCitkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdyIp
OworCitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uIiwgImdy
YW50ZWQiKTsKKworYXN5bmMgZnVuY3Rpb24gcmVnaXN0ZXJTZXJ2aWNlV29ya2VyKCkgeworICAg
IHZhciByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rl
cigncmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMnKTsKKyAg
ICAKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikKKyAgICAgICAgcmV0dXJuIHRlc3RGYWlsZWQoIk5v
IHJlZ2lzdHJhdGlvbiIpOworICAgIAorICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7Cisg
ICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoIlN0YXJ0Iik7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICB2YXIgaW5zdGFsbGluZ1dvcmtlciA9IHJlZ2lzdHJhdGlv
bi5pbnN0YWxsaW5nOworICAgIGlmICghaW5zdGFsbGluZ1dvcmtlcikKKyAgICAgICAgZmFpbFRo
ZVRlc3QoIk5vIGFjdGl2ZSAqb3IqIGluc3RhbGxpbmcgd29ya2VyIik7CisKKyAgICBpbnN0YWxs
aW5nV29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoInN0YXRlY2hhbmdlIiwgKCkgPT4geworICAgICAg
ICBpZiAoaW5zdGFsbGluZ1dvcmtlci5zdGF0ZSA9PT0gImFjdGl2YXRlZCIpIHsKKyAgICAgICAg
ICAgIGluc3RhbGxpbmdXb3JrZXIucG9zdE1lc3NhZ2UoInRyeXNob3ciKTsKKyAgICAgICAgfQor
ICAgIH0pOworfQorCit2YXIgZ290Q2xpY2tlZCA9IGZhbHNlOwordmFyIGdvdENsb3NlZCA9IGZh
bHNlOwordmFyIGdvdE5ld0NsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIHsK
KyAgICAgICAgdGVzdEZhaWxlZCgiTWVzc2FnZSByZWNlaXZlZDogIiArIGV2ZW50LmRhdGEpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoZ290TmV3Q2xpZW50KSB7CisgICAgICAgIHRlc3RQYXNzZWQo
Ik5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfSk7
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjQ5MTkzMjlhNWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAorPGhl
YWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0YSAhPSAiZWNobyIp
CisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLmdldFJlZ2lz
dHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAgICAgIHJlZ2lzdHJh
dGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0pOworfSk7CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1v
cGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2
aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODEwMTMzMTEyMjU1Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3Vy
Y2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAgLTAsMCArMSw4MiBA
QAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cpIHsgCisgICAgY29u
c3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAgICAgICBpbmNsdWRl
VW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0IGNsaWVudCBvZiBh
bGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsKK30KKworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsaWNrZWQiKTsKKyAgICBldmVudC5ub3Rp
ZmljYXRpb24uY2xvc2UoKTsKKyAgICAKKyAgICBjbGllbnRzLm9wZW5XaW5kb3coJ2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50
Lmh0bWwnKS50aGVuKGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBjbGllbnQucG9zdE1lc3Nh
Z2UoImVjaG8iKTsKKyAgICB9KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlm
aWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiY2xvc2VkIik7Cit9KTsKKworYXN5bmMgZnVuY3Rpb24gdHJ5U2hvdyhtZXNzYWdl
KQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25lbnRzID0gbWVz
c2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDEpIHsKKyAg
ICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAKKyAgICB9IGVs
c2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJvZHkgPSBjb21w
b25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0KKyAgICAKKyAg
ICB0cnkgeworICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRs
ZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAgICAgICAgICAgIHRhZzogdGFnCisgICAg
ICAgIH0pOworICAgIH0gY2F0Y2goZXJyb3IpIHsKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMoInNob3dGYWlsZWQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwordmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQo
KTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVzc2FnZSkKK3sKKyAgICB2YXIgdGFnID0g
dW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworICAg
IGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAgICAgICB0YWcgPSBjb21wb25lbnRzWzFd
OworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2FpdCByZWdpc3RyYXRpb24uZ2V0Tm90aWZp
Y2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciByZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBh
cmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBub3RpZmljYXRpb25zfCI7CisKKyAgICBm
b3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGlmIChzZWVuTm90
ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAgICBtZXNzYWdlQ2xpZW50cygiU2F3IHRo
ZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2ggZ2V0Tm90aWZpY2F0aW9ucygpLCB0aGlz
IHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNlZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9u
KQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRpdGxlOiAiICsgbm90aWZpY2F0aW9uLnRp
dGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9keTogIiArIG5vdGlmaWNhdGlvbi5ib2R5
ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAiICsgbm90aWZpY2F0aW9uLnRhZyArICJ8
IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMocmVwbHkpOworfQorCitzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAgIHZh
ciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKVswXTsKKyAgICBpZiAobWVzc2Fn
ZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2FpdCB0cnlTaG93KGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMiKQorICAgICAgICBhd2FpdCBnZXROb3Rl
cyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImVjaG8gYmFjayIpCisgICAg
ICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3ROZXdDbGllbnQiKTsKK30pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKQEAgLTY4
MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihIYXNo
VGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBU
PgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9y
LCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChjb25zdCBU
JiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZp
Y2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGlu
c3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1MCwgIllv
dXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUgd2hlbiBy
ZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAgICAgICBj
aGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBrID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGZkY2NmNzc3OGFlNy4uYWQwZjYxNmUzZTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTg0MDgsNyArODQwOCw3IEBAIExvZ2dlciYgRG9j
dW1lbnQ6OmxvZ2dlcigpCiAgICAgCiBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fZnJhbWUgPyBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKSA6
IHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxGcmFtZUlkZW50aWZpZXI+IERvY3Vt
ZW50OjpmcmFtZUlEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCmluZGV4IDYy
MDQwMTBmYWZjZS4uNmUxNDkzMTQ4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NsaWVudE9yaWdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgK
QEAgLTUwLDYgKzUwLDggQEAgc3RydWN0IENsaWVudE9yaWdpbiB7CiAKICAgICBTZWN1cml0eU9y
aWdpbkRhdGEgdG9wT3JpZ2luOwogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSBjbGllbnRPcmlnaW47
CisKKyAgICBTdHJpbmcgbG9nZ2luZ1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1ha2VTdHJpbmco
dG9wT3JpZ2luLnRvU3RyaW5nKCksICItIiwgY2xpZW50T3JpZ2luLnRvU3RyaW5nKCkpOyB9CiB9
OwogCiBpbmxpbmUgdm9pZCBhZGQoSGFzaGVyJiBoYXNoZXIsIGNvbnN0IENsaWVudE9yaWdpbiYg
b3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5jcHAKaW5kZXggOWE5NzBjNjQ0Y2ZiLi5hNGM3MGNmZDdj
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcApAQCAtNTgsMTIgKzU4LDEyIEBAIHN0YXRpYyBTZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZShT
Y3JpcHRFeGVjdXRpCiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmll
ciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJl
dHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBw
YWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwg
aXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkoKSAmJgogewotICAgIHJldHVybiB7
IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92ZSh1cmwpLmlzb2xhdGVkQ29weSgp
LCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZv
Y3VzT3JkZXIgfTsKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVy
bC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KQpAQCAtNzQsMTEgKzc0LDE1IEBAIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvCiAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCk7CiAgICAgYXV0byBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA9IGRvY3VtZW50Lmxv
YWRlcigpICYmIGRvY3VtZW50LmxvYWRlcigpLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCgpID8gTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IExhc3ROYXZpZ2F0aW9u
V2FzQXBwSW5pdGlhdGVkOjpObzsKIAorICAgIGF1dG8gZG9jdW1lbnRQYWdlSWRlbnRpZmllciA9
IGRvY3VtZW50LnBhZ2VJRCgpOworCiAgICAgcmV0dXJuIHsKICAgICAgICAgY29udGV4dC5pZGVu
dGlmaWVyKCksCiAgICAgICAgIGlzRG9jdW1lbnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6
V2luZG93IDogU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNvbnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVh
dGlvblVSTCgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1l
bnQuY3JlYXRpb25VUkwoKSwKKyAgICAgICAgZG9jdW1lbnRQYWdlSWRlbnRpZmllciwKKyAgICAg
ICAgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsCiAgICAgICAgICFkb2N1bWVudC5oaWRk
ZW4oKSwKICAgICAgICAgZG9jdW1lbnQuaGFzRm9jdXMoKSwKICAgICAgICAgMApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERh
dGEuaAppbmRleCA4NWUxMDgzZDdkNDEuLjE0OWE1MWEyMWRmNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgK
QEAgLTI3LDYgKzI3LDcgQEAKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1F1YWxpZmllZC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2Vy
dmljZVdvcmtlckNsaWVudFR5cGUuaCIKQEAgLTQ1LDYgKzQ2LDcgQEAgc3RydWN0IFNlcnZpY2VX
b3JrZXJDbGllbnREYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlOwogICAg
IFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgZnJhbWVUeXBlOwogICAgIFVSTCB1cmw7Cisg
ICAgc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlkZW50aWZpZXI7CiAgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7
CiAgICAgYm9vbCBpc1Zpc2libGUgeyBmYWxzZSB9OwogICAgIGJvb2wgaXNGb2N1c2VkIHsgZmFs
c2UgfTsKQEAgLTYyLDcgKzY0LDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIHsK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGlkZW50aWZp
ZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkIDw8IGlzVmlzaWJsZSA8PCBpc0ZvY3VzZWQgPDwgZm9jdXNPcmRlcjsKKyAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXIgPDwgdHlwZSA8PCBmcmFtZVR5cGUgPDwgdXJsIDw8IHBhZ2VJZGVu
dGlmaWVyIDw8IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIDw8IGlzVmlzaWJsZSA8PCBp
c0ZvY3VzZWQgPDwgZm9jdXNPcmRlcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAg
LTg4LDYgKzkwLDExIEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIXVybCkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpvcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcGFn
ZUlkZW50aWZpZXI7CisgICAgaWYgKCFwYWdlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKwogICAgIHN0ZDo6b3B0aW9uYWw8TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGRlY29kZXIgPj4gbGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ7CiAgICAgaWYgKCFsYXN0TmF2aWdhdGlvbldhc0Fw
cEluaXRpYXRlZCkKQEAgLTEwOCw3ICsxMTUsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERlY29kZXImCiAg
ICAgaWYgKCFmb2N1c09yZGVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUo
KmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RG
TW92ZSgqZm9jdXNPcmRlcikgfSB9OworICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmll
ciksIFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBX
VEZNb3ZlKCpwYWdlSWRlbnRpZmllciksIFdURk1vdmUoKmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkKSwgV1RGTW92ZSgqaXNWaXNpYmxlKSwgV1RGTW92ZSgqaXNGb2N1c2VkKSwgV1RGTW92
ZSgqZm9jdXNPcmRlcikgfSB9OwogfQogCiB1c2luZyBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNo
QWxsQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKaW5kZXggZTI5OTE4OTcxYTUwLi45N2YwMjU1
M2I2ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDbGllbnRzLmNwcApAQCAtOTAsMTAgKzkwLDY2IEBAIHZvaWQgU2VydmljZVdv
cmtlckNsaWVudHM6Om1hdGNoQWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNv
bnN0IENsaWVuCiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5X
aW5kb3coU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCitzdGF0aWMgdm9pZCBtYXRjaFdpbmRvd1dpdGhQYWdl
SWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgUGFnZUlkZW50aWZpZXIgcGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xp
ZW50RGF0YT4pPiYmIGNhbGxiYWNrKQogewotICAgIFVOVVNFRF9QQVJBTSh1cmwpOwotICAgIHBy
b21pc2UtPnJlamVjdChFeGNlcHRpb24geyBOb3RTdXBwb3J0ZWRFcnJvciwgImNsaWVudHMub3Bl
bldpbmRvdygpIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIl9zIH0pOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICAgICAgYXV0
byBvcHRpb25zID0gU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyB7IHRydWUsIFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3cgfTsKKyAgICAgICAgY29ubmVjdGlvbi0+bWF0Y2hB
bGwoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIG9wdGlvbnMsIFtzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgcGFnZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChWZWN0
b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYgY2xpZW50c0RhdGEpIG11dGFibGUgeworICAg
ICAgICAgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VX
b3JrZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2xpZW50c0RhdGEgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92
ZShjbGllbnRzRGF0YSkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAg
IGZvciAoYXV0byYgZGF0YSA6IGNsaWVudHNEYXRhKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkYXRhLnBhZ2VJZGVudGlmaWVyID09IHBhZ2VJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhzY29wZSwgZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBjYWxsYmFjayhzY29wZSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50
czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIExP
RyhTZXJ2aWNlV29ya2VyLCAiV2ViUHJvY2VzcyAlaSBzZXJ2aWNlIHdvcmtlciBjYWxsaW5nIG9w
ZW5XaW5kb3cgdG8gVVJMICVzIiwgZ2V0cGlkKCksIHVybFN0cmluZy51dGY4KCkuZGF0YSgpKTsK
KworICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBkb3duY2FzdDxTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnRocmVhZCgpLmlkZW50aWZpZXIoKTsKKyAgICBhdXRv
IHVybCA9IGNvbnRleHQuY29tcGxldGVVUkwodXJsU3RyaW5nKTsKKworICAgIGlmICghdXJsLmlz
VmFsaWQoKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9y
LCBtYWtlU3RyaW5nKCJVUkwgc3RyaW5nICIsIHVybFN0cmluZywgIiBjYW5ub3Qgc3VjY2Vzc2Z1
bGx5IGJlIHBhcnNlZCIpIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHVy
bC5wcm90b2NvbElzQWJvdXQoKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93
KCkgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFVSTCAiLCB1cmwuc3RyaW5nKCkpIH0pOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgPSB1cmwuaXNvbGF0ZWRD
b3B5KCldICgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5lY3Rpb24tPm9w
ZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybC5zdHJpbmcoKSwgW3Byb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcGFn
ZUlkZW50aWZpZXIgPSBXVEZNb3ZlKHBhZ2VJZGVudGlmaWVyKSwgc2VydmljZVdvcmtlcklkZW50
aWZpZXJdIChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmKSBtdXRhYmxlIHsKKyAgICAgICAgICAg
ICAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2VydmljZVdv
cmtlckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbC4gUmVzdWx0aW5nIHBhZ2UgaWRlbnRpZmllciBp
cyAlcyIsIGdldHBpZCgpLCBwYWdlSWRlbnRpZmllciA/IHBhZ2VJZGVudGlmaWVyLT5sb2dnaW5n
U3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8Tk9ORT4iKTsKKworICAgICAgICAgICAgICAgIGlm
ICghcGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFn
ZUlkZW50aWZpZXIoc2VydmljZVdvcmtlcklkZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3By
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byYgc2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2Vy
dmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVudERhdGEpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWNsaWVudERhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlc29sdmVXaXRoSlNWYWx1ZShKU0M6OmpzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGF1dG8gY2xpZW50ID0gU2VydmljZVdvcmtlckNsaWVudDo6Y3JlYXRlKHNjb3BlLCBXVEZN
b3ZlKCpjbGllbnREYXRhKSk7CisgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJDbGllbnQ+PihXVEZNb3ZlKGNsaWVudCkpOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpjbGFpbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5h
Z2VyLmgKaW5kZXggZmNmNWVlMDljOGE1Li5mZWU3YzE1ZDJiODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2Vy
LmgKQEAgLTY3LDggKzY3LDggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENs
aWVudEJ5VmlzaWJsZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYsIEZpbmRDbGllbnRCeUlkZW50aWZpZXJDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2Vydmlj
ZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxD
YWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4m
JikgPSAwOwotCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1
cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4m
Jik+JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNr
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRB
c0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggNjE4NjM0NmNkMTc2Li44ZTBkYTk1MjMx
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApAQCAtODIsNiArODIs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5k
Q2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBvcGVuV2luZG93KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgPSAwOworCiAgICAgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURv
bWFpbjsgfQogICAgIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCA5ZWRkNDQ1ZTZjYmMu
LjE2MDA2NWQzNmViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlcldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBTZXJ2aWNlV29ya2VyRGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0Owog
Ci0gICAgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VY
UE9SVCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbigpIGNvbnN0OwogICAgIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmFibGVEb21haW47IH0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyPiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA0NTJj
NjcxMTM4MGYuLmU5ZWIyMzk5YTk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udHJvbENsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBjbGllbgogICAg
ICAgICB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChjbGllbnRJZGVudGlmaWVyKTsKICAg
ICB9KTsKIAotICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBjbGllbnRJZGVudGlm
aWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNlV29ya2VyQ2xpZW50
RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCByZXF1ZXN0LmlzQXBwSW5pdGlhdGVkKCkg
PyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6WWVzIDogV2ViQ29yZTo6
TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vIH07CisgICAgU2VydmljZVdvcmtlckNs
aWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRUeXBl
OjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5vbmUsIHJlcXVlc3QudXJs
KCksIHsgfSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5p
dGlhdGVkOjpObyB9OwogICAgIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChTZWN1cml0eU9y
aWdpbkRhdGEgeyByZWdpc3RyYXRpb24ua2V5KCkudG9wT3JpZ2luKCkgfSwgV1RGTW92ZShkYXRh
KSwgcmVnaXN0cmF0aW9uLmlkZW50aWZpZXIoKSwgcmVxdWVzdC5odHRwVXNlckFnZW50KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
Y3BwCmluZGV4IDAzNjc1YTg0NDQyZS4uNTIyODUzMTNjZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTU3LDYgKzE1Nywy
NyBAQCB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlRHVlVG9V
bnJlc3BvbnNpdmVuZXNzKCkKICAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzIHsgd2ViUHJvY2Vz
c0lkZW50aWZpZXIoKSB9LCAwKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7Cisg
ICAgYXV0byogc2VydmVyID0gdGhpcy0+c2VydmVyKCk7CisgICAgaWYgKCFzZXJ2ZXIpIHsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlci0+d29ya2VyQnlJRChpZGVudGlmaWVyKTsKKyAgICBp
ZiAoIXdvcmtlcikgeworICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgYXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYg
cGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHBhZ2VJ
ZGVudGlmaWVyKSk7CisgICAgfTsKKworICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2Vzcygp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6T3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyIHsgaWRlbnRp
Zmllciwgc2VydmVyLT5zZXNzaW9uSUQoKSwgdXJsU3RyaW5nLCB3b3JrZXItPm9yaWdpbigpLmNs
aWVudE9yaWdpbiB9LCBXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246Om1hdGNoQWxsQ29tcGxldGVkKHVpbnQ2NF90IHJlcXVl
c3RJZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiBjbGll
bnRzRGF0YSkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6TWF0Y2hBbGxDb21wbGV0ZWQgeyByZXF1ZXN0SWRlbnRpZmllciwgY2xpZW50c0RhdGEg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
aW5kZXggMDNkOTM2Y2NkMzJhLi44MGIzMDNlNDRkYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBjb25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpIGZpbmFsOwogICAg
IHZvaWQgdGVybWluYXRlRHVlVG9VbnJlc3BvbnNpdmVuZXNzKCkgZmluYWw7CisgICAgdm9pZCBv
cGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGNvbm5lY3Rpb25DbG9z
ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggM2U3NzU4NTIzNzk1Li4yMWQyMzY1NTdjNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtNDAsNiArNDAsOCBAQCBtZXNzYWdlcyAtPiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAgICAgUG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmlu
ZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgU2V0QXNJbnNwZWN0ZWQoV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkK
KworICAgIE9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllciwgU3RyaW5nIHVybFN0cmluZykgLT4gKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG5ld0NsaWVudERhdGEpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCAwODE3MTBhOGM3MTMuLjVhZDdmNzRjZmEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9SZWdpc3RyYXRpb25EYXRhYmFzZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CkBAIC01Niwx
MCArNTcsMTIgQEAKIAogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDbGllbnQgewogcHVibGljOgotICAgIGV4cGxpY2l0
IFdlYnNpdGVEYXRhU3RvcmVDbGllbnQoaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4g
ZGVsZWdhdGUpCi0gICAgICAgIDogbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKKyAgICBleHBsaWNpdCBX
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50KFdLV2Vic2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlLCBpZDxf
V0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRlKQorICAgICAgICA6IG1fZGF0YVN0
b3JlKGRhdGFTdG9yZSkKKyAgICAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICAgICAs
IG1faGFzUmVxdWVzdFN0b3JhZ2VTcGFjZVNlbGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IocmVxdWVzdFN0b3JhZ2VTcGFjZTogZnJhbWVPcmlnaW46
IHF1b3RhOiBjdXJyZW50U2l6ZTogc3BhY2VSZXF1aXJlZDogZGVjaXNpb25IYW5kbGVyOildKQog
ICAgICAgICAsIG1faGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZWxlY3RvcihbbV9kZWxlZ2F0
ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTogY29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICwgbV9oYXNPcGVu
V2luZG93U2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5XaW5kb3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46
Y29tcGxldGlvbkhhbmRsZXI6KV0pCiAgICAgewogICAgIH0KIApAQCAtMTA0LDkgKzEwNywzMiBA
QCBwcml2YXRlOgogICAgICAgICBbbV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKSBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6bnNVUkxDaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRs
ZXI6Y29tcGxldGlvbkhhbmRsZXIuZ2V0KCldOwogICAgIH0KIAorICAgIHZvaWQgb3BlbldpbmRv
d0Zyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViS2l0OjpXZWJQYWdlUHJveHkqKT4mJiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlm
ICghbV9oYXNPcGVuV2luZG93U2VsZWN0b3IgfHwgIW1fZGVsZWdhdGUgfHwgIW1fZGF0YVN0b3Jl
KSB7CisgICAgICAgICAgICBjYWxsYmFjayh7IH0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgYXV0byBjaGVja2VyID0gV2ViS2l0OjpDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyOjpjcmVhdGUobV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFzZWQoKSwgQHNlbGVj
dG9yKHdlYnNpdGVEYXRhU3RvcmU6b3BlbldpbmRvdzpmcm9tU2VydmljZVdvcmtlck9yaWdpbjpj
b21wbGV0aW9uSGFuZGxlcjopKTsKKyAgICAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IG1h
a2VCbG9ja1B0cihbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgY2hlY2tlciA9IFdURk1v
dmUoY2hlY2tlcildKFdLV2ViVmlldyAqbmV3V2ViVmlldykgbXV0YWJsZSB7CisgICAgICAgICAg
ICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25I
YW5kbGVyKCk7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5ld1dlYlZpZXcuX3BhZ2UuZ2V0KCkp
OworICAgICAgICB9KTsKKworICAgICAgICBhdXRvIG5zVVJMID0gKE5TVVJMICopVVJMIHsgdXJs
IH07CisgICAgICAgIGF1dG8gYXBpT3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHNlcnZpY2VXb3JrZXJPcmlnaW4pOworICAgICAgICBbbV9kZWxlZ2F0ZS5nZXRBdXRvcmVsZWFz
ZWQoKSB3ZWJzaXRlRGF0YVN0b3JlOm1fZGF0YVN0b3JlLmdldEF1dG9yZWxlYXNlZCgpIG9wZW5X
aW5kb3c6bnNVUkwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46d3JhcHBlcihhcGlPcmlnaW4uZ2V0
KCkpIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsKKyAgICB9CisK
KyAgICBXZWFrT2JqQ1B0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IG1fZGF0YVN0b3JlOwogICAgIFdl
YWtPYmpDUHRyPGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsK
ICAgICBib29sIG1faGFzUmVxdWVzdFN0b3JhZ2VTcGFjZVNlbGVjdG9yIHsgZmFsc2UgfTsKICAg
ICBib29sIG1faGFzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VTZWxlY3RvciB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2hhc09wZW5XaW5kb3dTZWxlY3RvciB7IGZhbHNlIH07CiB9OwogCiBAaW1wbGVt
ZW50YXRpb24gV0tXZWJzaXRlRGF0YVN0b3JlCkBAIC02NTIsNyArNjc4LDcgQEAgc3RhdGljIFZl
Y3RvcjxXZWJLaXQ6OldlYnNpdGVEYXRhUmVjb3JkPiB0b1dlYnNpdGVEYXRhUmVjb3JkcyhOU0Fy
cmF5ICpkYXRhUmVjb3IKIC0gKHZvaWQpc2V0X2RlbGVnYXRlOihpZCA8X1dLV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlPilkZWxlZ2F0ZQogewogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwotICAg
IF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQobWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0
b3JlQ2xpZW50PihkZWxlZ2F0ZSkpOworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5zZXRDbGllbnQo
bWFrZVVuaXF1ZVJlZjxXZWJzaXRlRGF0YVN0b3JlQ2xpZW50PihzZWxmLCBkZWxlZ2F0ZSkpOwog
fQogCiAtIChfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqKV9jb25maWd1cmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKaW5kZXggMGI4NTczMDQ4Nzk2Li4xZDE1ODE3
NDM1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKQEAgLTI2LDExICsyNiwxNSBA
QAogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CiAKK0BjbGFzcyBXS1NlY3VyaXR5T3JpZ2luOworQGNsYXNzIFdLV2Vic2l0
ZURhdGFTdG9yZTsKK0BjbGFzcyBXS1dlYlZpZXc7CisKIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
MTAuMTUpLCBpb3MoMTMuMCkpCiBAcHJvdG9jb2wgX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
IDxOU09iamVjdD4KIAogQG9wdGlvbmFsCiAtICh2b2lkKXJlcXVlc3RTdG9yYWdlU3BhY2U6KE5T
VVJMICopbWFpbkZyYW1lVVJMIGZyYW1lT3JpZ2luOihOU1VSTCAqKWZyYW1lVVJMIHF1b3RhOihO
U1VJbnRlZ2VyKXF1b3RhIGN1cnJlbnRTaXplOihOU1VJbnRlZ2VyKWN1cnJlbnRTaXplIHNwYWNl
UmVxdWlyZWQ6KE5TVUludGVnZXIpc3BhY2VSZXF1aXJlZCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkpZGVjaXNpb25IYW5kbGVyOwogLSAodm9pZClk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpj
cmVkZW50aWFsKSljb21wbGV0aW9uSGFuZGxlcjsKLQorLSAodm9pZCl3ZWJzaXRlRGF0YVN0b3Jl
OihXS1dlYnNpdGVEYXRhU3RvcmUgKilkYXRhU3RvcmUgb3BlbldpbmRvdzooTlNVUkwgKil1cmwg
ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZXJ2aWNlV29ya2Vy
T3JpZ2luIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKm5ld1dlYlZpZXcp
KWNvbXBsZXRpb25IYW5kbGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMjRjZjIwZDczMjAz
Li5iMWEyMjBiOGMyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTc5OCw2ICsxNzk4LDE2IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25XaGVuUG9zc2libGUoUmVtCiAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKHdvcmtl
clR5cGUsIHNlc3Npb25JRCwgcmVnaXN0cmFibGVEb21haW4sIHByb2Nlc3NJZGVudGlmaWVyKSwg
MCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNl
V29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBj
YWxsYmFjaykKK3sKKyAgICBpZiAoYXV0byogc3RvcmUgPSB3ZWJzaXRlRGF0YVN0b3JlRnJvbVNl
c3Npb25JRChzZXNzaW9uSUQpKSB7CisgICAgICAgIHN0b3JlLT5vcGVuV2luZG93RnJvbVNlcnZp
Y2VXb3JrZXIoaWRlbnRpZmllciwgdXJsU3RyaW5nLCBzZXJ2aWNlV29ya2VyT3JpZ2luLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NB
R0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMWU4NmYzNDI2M2UwLi40MzdmYmNlYWE5NDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCkBAIC0yOTksNiArMjk5LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB0ZXJtaW5hdGVS
ZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW1vdGVXb3JrZXJUeXBl
LCBQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2Vydmlj
ZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpOworCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IDFkZDIzMzA3MzI5Ni4uN2NhZjZiNzIzZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC05MSw2ICs5MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdl
YktpdDo6RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UpIC0+IChib29sIGFsbG93ZWQpCiAgICAgRGF0YVRhc2tEaWRSZWNlaXZl
RGF0YShXZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkKICAgICBEYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6RGF0
YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Ip
CisKKyAgICBPcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIgaWRlbnRpZmllciwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
dXJsU3RyaW5nLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlcnZpY2VXb3Jr
ZXJPcmlnaW4pIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQ
YWdlKQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAzN2E0NTI0ZjljN2IuLjc1MmUzZTU1NjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC00ODcwLDcgKzQ4NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcAogICAgICAgICBpZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNl
dENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxsU2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2Fs
bExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQogCiAgICAg
ZnJhbWUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtNDkwNSwxMiArNDkwNSwxNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3RyYXRpb24o
Ym9vbCBzdWNjZXNzKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjYWxsU2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKQordm9pZCBXZWJQYWdl
UHJveHk6OmNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNjZXNz
KQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobV9pc1NlcnZpY2VXb3Jr
ZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQorICAgIGlm
IChtX2lzU2VydmljZVdvcmtlclBhZ2UgJiYgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlv
bkhhbmRsZXIgJiYgIXN1Y2Nlc3MpCiAgICAgICAgIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgorCisgICAgaWYgKG1fc2VydmljZVdvcmtlck9w
ZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2spCisgICAgICAgIG1fc2VydmljZVdvcmtlck9wZW5X
aW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soc3VjY2Vzcyk7CiB9CiAKICNpZiBFTkFCTEUoSU5URUxM
SUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKQEAgLTUxMzQsNiArNTEzNyw4IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IEZyYW1lSW5mb0RhdGEmCiAgICAgICAgIHJlc2V0UmVjZW50Q3Jhc2hDb3VudFNvb24oKTsKIAog
ICAgICAgICBub3RpZnlQcm9jZXNzUG9vbFRvUHJld2FybSgpOworCisgICAgICAgIGNhbGxMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkodHJ1ZSk7CiAgICAgfQogCiAgICAgbV9pc0xv
YWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9IGZhbHNl
OwpAQCAtNTE4Miw3ICs1MTg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9y
RnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogICAgICAgICBp
ZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRp
b25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxsU2VydmljZVdvcmtlckxhdW5jaENv
bXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExvYWRDb21wbGV0aW9u
SGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQogfQogCkBAIC04MDE4LDcgKzgwMjMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29uIHJlc2V0
U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogICAgIGlmIChyZXNldFN0YXRlUmVhc29uICE9IFJlc2V0
U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwKQotICAgICAgICBjYWxsU2VydmljZVdvcmtlckxh
dW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExvYWRDb21w
bGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAKICAgICBpZiAobV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZh
bGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGNhMjQy
ZjIzZmIwZC4uZjMxYjFmNGEwOWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtMjA4MSw2ICsyMDgxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW50ZXJhY3Rh
YmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsKIAorI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJPcGVuV2lu
ZG93Q29tcGxldGlvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkNhbGxiYWNrKSB7IG1fc2VydmljZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayk7IH0KKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7
CkBAIC0yNjA3LDcgKzI2MTEsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICAgICB2b2lkIGRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wg
c3VjY2Vzcyk7CiAjZW5kaWYKLSAgICB2b2lkIGNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxl
dGlvbkhhbmRsZXJJZk5lY2Vzc2FyeSgpOworICAgIHZvaWQgY2FsbExvYWRDb21wbGV0aW9uSGFu
ZGxlcnNJZk5lY2Vzc2FyeShib29sIHN1Y2Nlc3MpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBzdGF0aWMgYm9vbCBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsKQEAgLTMxMTks
NiArMzEyMyw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGJv
b2wgbV9pc1NlcnZpY2VXb3JrZXJQYWdlIHsgZmFsc2UgfTsKICAgICBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93
Q29tcGxldGlvbkNhbGxiYWNrOwogI2VuZGlmCiAKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQYWdl
UHJveHk+IG1fdHJ5Q2xvc2VUaW1lb3V0VGltZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDcxYWU5
MjY1NDhiYy4uNmZhMjZiNDJkMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjA4Nyw0ICsyMDg3
LDM0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZGlkRGVzdHJveVNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0CiAgICAgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpzaGFyZWRTZXJ2aWNlV29ya2VyTWFuYWdlcigpLmRpZERlc3Ryb3lOb3RpZmljYXRp
b24obnVsbHB0ciwgbm90aWZpY2F0aW9uSUQpOwogfQogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6
Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAg
YXV0byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChXZWJQ
YWdlUHJveHkqIG5ld1BhZ2UpIG11dGFibGUgeworICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKKyAg
ICAgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIW5ld1BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5pc0xvYWRp
bmcoKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIlRoZSBXS1dlYlZpZXcg
cHJvdmlkZWQgaW4gcmVzcG9uc2UgdG8gYSBTZXJ2aWNlV29ya2VyIG9wZW5XaW5kb3cgcmVxdWVz
dCB3YXMgbm90IGluIHRoZSBsb2FkaW5nIHN0YXRlIik7CisgICAgICAgICAgICBjYWxsYmFjayhz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
YXV0byBpbm5lckNhbGxiYWNrID0gW3BhZ2VJRCA9IG5ld1BhZ2UtPmlkZW50aWZpZXIoKSwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAg
ICAgICAgICBhdXRvKiBuZXdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7
CisgICAgICAgICAgICBpZiAoIW5ld1BhZ2UgfHwgIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2sobmV3UGFnZS0+d2ViUGFnZUlEKCkpOwor
ICAgICAgICB9OworCisgICAgICAgIG5ld1BhZ2UtPnNldFNlcnZpY2VXb3JrZXJPcGVuV2luZG93
Q29tcGxldGlvbkNhbGxiYWNrKFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworICAgIH07CisKKyAg
ICBtX2NsaWVudC0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmluZywgc2Vydmlj
ZVdvcmtlck9yaWdpbiwgV1RGTW92ZShpbm5lckNhbGxiYWNrKSk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAppbmRleCA2ZWY5NTUwMTcyNjYuLmJmNmI3ZjMzZjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzc5
LDYgKzM3OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBkaWREZXN0cm95U2Vy
dmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKKyAg
ICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYpOworCiBwcml2YXRl
OgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxpemF0aW9uIDogYm9vbCB7IE5vLCBZZXMg
fTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgK
aW5kZXggZjdjNjgzZmY3MTYzLi5mN2FiZTMwN2E2NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50
LmgKQEAgLTM2LDYgKzM2LDggQEAgc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2VQcm94eTsKKwogY2xhc3MgV2Vic2l0ZURhdGFT
dG9yZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC01
MCw2ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVy
KCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG9wZW5X
aW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobnVs
bHB0cik7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGU5NWI3Y2FlODZiYy4uNDhlNzU1NGQyMDdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUwLDYgKzE1MCw4IEBAIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNh
dGlvbk1lc3NhZ2UoVSYmIG1lCiAKIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhO
b3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKIHsKKyAgICBMT0coTm90
aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgZ29pbmcgdG8gc2hvdyBub3RpZmljYXRpb24gJXMi
LCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uLmlkZW50aWZpZXIoKS50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCiAgICAgaWYgKHBhZ2UgJiYgIXBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCku
bm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKQEAgLTIwOCw2ICsyMTAsOCBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0
aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBMT0coTm90aWZp
Y2F0aW9ucywgIldlYlByb2Nlc3MgJWkgRElEIFNIT1cgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlk
KCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24g
PSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3Rp
ZmljYXRpb24pCkBAIC0yMjMsMTEgKzIyNywxNSBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQogewog
ICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJX
ZWJQcm9jZXNzICVpIERJRCBDTElDSyBub3RpZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZp
Y2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZp
Y2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikK
ICAgICAgICAgcmV0dXJuOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVp
IGhhbmRsaW5nIGNsaWNrIGV2ZW50IGZvciBub3RpZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90
aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIC8vIEluZGljYXRl
IHRoYXQgdGhpcyBldmVudCBpcyBiZWluZyBkaXNwYXRjaGVkIGluIHJlYWN0aW9uIHRvIGEgdXNl
cidzIGludGVyYWN0aW9uIHdpdGggYSBwbGF0Zm9ybSBub3RpZmljYXRpb24uCiAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgbm90
aWZpY2F0aW9uLT5kaXNwYXRjaENsaWNrRXZlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCBlMjNjMjU3MTdiY2EuLjFlMWEzOWJlN2MxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzMyLDYgKzMzMiwxMSBAQCB2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1
ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGNsaWVudHNEYXRhKSk7CiB9
CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om9wZW5XaW5kb3coV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHVybCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYm
IGNhbGxiYWNrKQogewogICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpDbGFp
bSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IGVjZDgxZmIzZjJhYi4uZjg5NmIxYjBlYjQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKQEAgLTg3LDYgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzVGhy
b3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgc2V0QXNJ
bnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGJvb2wpIGZpbmFsOwor
ICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2Vz
LgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCBhMDFjZWE0Mjc3MWEuLjAxNmNkYjBhNTBmMyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM4MCw2ICsz
ODAsMTcgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdl
UmVmLCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmYKIH0KIAogV0tQYWdlUmVmIFRlc3RDb250
cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBu
YXZpZ2F0aW9uQWN0aW9uLCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzKQorewor
ICAgIGF1dG8qIHBsYXRmb3JtV2ViVmlldyA9IGNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KHBh
cmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIHdpbmRvd0ZlYXR1cmVz
KTsKKyAgICBpZiAoIXBsYXRmb3JtV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBhdXRvKiBwYWdlID0gcGxhdGZvcm1XZWJWaWV3LT5wYWdlKCk7CisgICAgV0tSZXRhaW4o
cGFnZSk7CisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK1BsYXRmb3JtV2ViVmlldyogVGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogcGFyZW50
VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25B
Y3Rpb25SZWYsIFdLV2luZG93RmVhdHVyZXNSZWYpCiB7CiAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+d2lsbENyZWF0ZU5ld1BhZ2UoKTsKIApAQCAtMzg5LDcgKzQwMCw4IEBAIFdLUGFnZVJlZiBU
ZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50Vmll
dywgV0tQYWdlQ29uCiAKICAgICBtX2NyZWF0ZWRPdGhlclBhZ2UgPSB0cnVlOwogCi0gICAgYXV0
byB2aWV3ID0gcGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UocGFyZW50VmlldywgY29uZmlndXJhdGlv
biwgcGFyZW50Vmlldy0+b3B0aW9ucygpKTsKKyAgICBhdXRvIG9wdGlvbnMgPSBwYXJlbnRWaWV3
ID8gcGFyZW50Vmlldy0+b3B0aW9ucygpIDogbV9tYWluV2ViVmlldy0+b3B0aW9ucygpOworICAg
IGF1dG8gdmlldyA9IHBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBhcmVudFZpZXcsIGNvbmZpZ3Vy
YXRpb24sIG9wdGlvbnMpOwogICAgIFdLUGFnZVJlZiBuZXdQYWdlID0gdmlldy0+cGFnZSgpOwog
CiAgICAgdmlldy0+cmVzaXplVG8oODAwLCA2MDApOwpAQCAtNTA5LDkgKzUyMSw5IEBAIFdLUGFn
ZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFy
ZW50VmlldywgV0tQYWdlQ29uCiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkudXBk
YXRlV2luZG93U2NhbGVGb3JUZXN0KHZpZXcucHRyKCksICpUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubV9jdXJyZW50SW52b2NhdGlvbik7CiAKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXdU
b1JldHVybiA9IHZpZXcucHRyKCk7CiAgICAgbV9hdXhpbGlhcnlXZWJWaWV3cy5hcHBlbmQoV1RG
TW92ZSh2aWV3KSk7Ci0gICAgV0tSZXRhaW4obmV3UGFnZSk7Ci0gICAgcmV0dXJuIG5ld1BhZ2U7
CisgICAgcmV0dXJuIHZpZXdUb1JldHVybjsKIH0KIAogY29uc3QgY2hhciogVGVzdENvbnRyb2xs
ZXI6OmxpYnJhcnlQYXRoRm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggNDQ1Mzk1Mzg4MzkyLi40OGZhNWFkNDJlZjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTM3OCw2ICszNzgsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBkZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOwog
ICAgIGJvb2wgZGVueU5vdGlmaWNhdGlvblBlcm1pc3Npb25PblByb21wdChXS1N0cmluZ1JlZiBv
cmlnaW4pOwogCisgICAgUGxhdGZvcm1XZWJWaWV3KiBjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmll
dyhQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIFdL
TmF2aWdhdGlvbkFjdGlvblJlZiwgV0tXaW5kb3dGZWF0dXJlc1JlZik7CisKIHByaXZhdGU6CiAg
ICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmln
dXJhdGlvbihjb25zdCBUZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9w
dGlvbnMmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCA3NzIzYmE0ODdhNTYuLmRlZDUxYmI2MDYwYyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQpAQCAtMjE0LDcgKzIxNCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3Jl
YXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiBVbmlxdWVS
ZWY8UGxhdGZvcm1XZWJWaWV3PiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBh
Z2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBj
b25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIGNvcHldKTsKLSAgICBbbmV3
Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4o
cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpXTsKKyAgICBpZiAocGFyZW50VmlldykKKyAgICAg
ICAgW25ld0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2Vi
Vmlldyo+KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1
cmF0aW9uIF9yZWxhdGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdl
YnNpdGVEYXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmVdOwogICAgIGF1dG8gdmlldyA9IG1ha2VVbmlxdWVSZWY8
UGxhdGZvcm1XZWJWaWV3PihuZXdDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZS5tbQppbmRleCBlMWY2OGU0OGFmNzMuLjAzYTEzOGQ2NmNmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0V2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZS5tbQpAQCAtMjYsNiArMjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5o
IgogI2ltcG9ydCAiVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJQ
bGF0Zm9ybVdlYlZpZXcuaCIKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCisjaW1wb3J0ICJU
ZXN0UnVubmVyV0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1w
b3J0IDx3dGYvVW5pcXVlUmVmLmg+CisKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlIHsgfQogLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKQEAgLTYxLDQgKzY3LDE1
IEBACiAgICAgX3Nob3VsZEFsbG93QW55U1NMQ2VydGlmaWNhdGUgPSBzaG91bGRBbGxvd0FueVNT
TENlcnRpZmljYXRlOwogfQogCistICh2b2lkKXdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURh
dGFTdG9yZSAqKWRhdGFTdG9yZSBvcGVuV2luZG93OihOU1VSTCAqKXVybCBmcm9tU2VydmljZVdv
cmtlck9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlcnZpY2VXb3JrZXJPcmlnaW4gY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLV2ViVmlldyAqbmV3V2ViVmlldykpY29tcGxldGlvbkhh
bmRsZXIKK3sKKyAgICBhdXRvKiBuZXdWaWV3ID0gV1RSOjpUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuY3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgbnVsbHB0cik7CisgICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbmV3Vmlldy0+cGxhdGZvcm1W
aWV3KCk7CisKKyAgICBBU1NFUlQod2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgPT0gZGF0YVN0b3JlKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6dXJsXV07CisgICAgY29tcGxldGlvbkhhbmRsZXIod2ViVmlldyk7
Cit9CisKIEBlbmQK
</data>
<flag name="commit-queue"
          id="483969"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455873</attachid>
            <date>2022-03-27 18:41:01 -0700</date>
            <delta_ts>2022-03-27 21:22:45 -0700</delta_ts>
            <desc>One more EWS maybe?</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>59762</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTNkZDUxYzRmYzkuLjk0MWEwYWNmZDQxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAgIDxyZGFy
Oi8vOTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0tUUiBrbm93cyBob3cgdG8gb3BlbldpbmRvdygpIG5vdy4KKyAgICAgICAgCisgICAgICAgIFNv
IHRlc3Q6CisgICAgICAgIC0gVGhlIHN1Y2Nlc3MgY2FzZQorICAgICAgICAtIEZhaWx1cmUgZHVl
IHRvIGEgZGlzYWxsb3dlZCBVUkwKKyAgICAgICAgLSBGYWlsdXJlIGR1ZSB0byBhIGxhY2sgb2Yg
YSByZWxhdGVkIHVzZXIgZ2VzdHVyZS4KKyAgICAgICAgCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
aG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
eW5jIGNvbnN0KToKKyAgICAgICAgKGxldC5tZXNzYWdlQ2xpZW50cyk6CisgICAgICAgIChjbGll
bnRzLm9wZW5XaW5kb3cuc3RyaW5nX2FwcGVhcmVkX2hlcmUudGhlbi5hc3luYyBjbGllbnQpOgor
ICAgICAgICAoY2F0Y2guYXN5bmMgZXJyb3IpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorICAg
ICAgICAoYXN5bmMgdHJ5U2hvdyk6CisgICAgICAgIChhc3luYyBnZXROb3Rlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5k
b3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDMxY2QwNmI1NzllCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5v
dGlmaWNhdGlvbi1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0
cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBOb3RpZmljYXRpb24ucGVybWlzc2lv
biBpcyAiZ3JhbnRlZCIKK1BBU1MgZ290Q2xpY2tlZCBpcyBmYWxzZQorUEFTUyBnb3RDbG9zZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xpY2tlZCBpcyB0cnVlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxz
ZQorUEFTUyBOZXcgY2xpZW50IGhhcyBiZWVuIG9ic2VydmVkCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5kb3ctZnJvbS1ub3RpZmlj
YXRpb24tY2xpY2suaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNl
L29wZW53aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM3NWJhYjkyZmU4YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5kb3ctZnJvbS1u
b3RpZmljYXRpb24tY2xpY2suaHRtbApAQCAtMCwwICsxLDg3IEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL25vdGlmaWNhdGlvbnMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4K
KworZnVuY3Rpb24gZmFpbFRoZVRlc3QobXNnKQoreworICAgIHRlc3RGYWlsZWQobXNnKTsKKyAg
ICBpZiAodGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisK
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIHRlc3RSdW5uZXIuZ3JhbnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKHRlc3RVUkwp
OworICAgIHNldFRpbWVvdXQoImZhaWxUaGVUZXN0KCd0aW1lZCBvdXQnKSIsIDE1MDAwKTsKK30K
KworZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBhIG5vdGlmaWNhdGlvbmNsaWNrIGhhbmRs
ZXIgY2FuIG9wZW4gYSB3aW5kb3ciKTsKKworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJOb3RpZmlj
YXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CisKK2FzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVy
U2VydmljZVdvcmtlcigpIHsKKyAgICB2YXIgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53
aW5kb3ctd29ya2VyLmpzJyk7CisgICAgCisgICAgaWYgKCFyZWdpc3RyYXRpb24pCisgICAgICAg
IHJldHVybiB0ZXN0RmFpbGVkKCJObyByZWdpc3RyYXRpb24iKTsKKyAgICAKKyAgICBpZiAocmVn
aXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICByZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNz
YWdlKCJTdGFydCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmFyIGluc3RhbGxp
bmdXb3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBpZiAoIWluc3RhbGxpbmdX
b3JrZXIpCisgICAgICAgIGZhaWxUaGVUZXN0KCJObyBhY3RpdmUgKm9yKiBpbnN0YWxsaW5nIHdv
cmtlciIpOworCisgICAgaW5zdGFsbGluZ1dvcmtlci5hZGRFdmVudExpc3RlbmVyKCJzdGF0ZWNo
YW5nZSIsICgpID0+IHsKKyAgICAgICAgaWYgKGluc3RhbGxpbmdXb3JrZXIuc3RhdGUgPT09ICJh
Y3RpdmF0ZWQiKSB7CisgICAgICAgICAgICBpbnN0YWxsaW5nV29ya2VyLnBvc3RNZXNzYWdlKCJ0
cnlzaG93Iik7CisgICAgICAgIH0KKyAgICB9KTsKK30KKwordmFyIGdvdENsaWNrZWQgPSBmYWxz
ZTsKK3ZhciBnb3RDbG9zZWQgPSBmYWxzZTsKK3ZhciBnb3ROZXdDbGllbnQgPSBmYWxzZTsKK3Zh
ciBnb3RBYm91dEJsYW5rRmFpbCA9IGZhbHNlOwordmFyIGdvdFVzZXJHZXN0dXJlRmFpbCA9IGZh
bHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdl
JywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5kYXRhID09ICJzaG93RmFpbGVkIikgeworICAg
ICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hv
dyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJzaG93biIpIHsKKyAg
ICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2Vi
Tm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9ucygpOworICAgIH0g
ZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tlZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxz
ZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAg
ICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJj
bG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNo
b3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAgICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3ROZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5l
d0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RBYm91dEJs
YW5rRmFpbCIpIHsKKyAgICAgICAgZ290QWJvdXRCbGFua0ZhaWwgPSB0cnVlOworICAgIH0gZWxz
ZSBpZiAoZXZlbnQuZGF0YSA9PSAiZ290VXNlckdlc3R1cmVGYWlsIikgeworICAgICAgICBnb3RV
c2VyR2VzdHVyZUZhaWwgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHRlc3RGYWlsZWQo
Ik1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9CisgICAgCisgICAgaWYg
KGdvdE5ld0NsaWVudCkgeworICAgICAgICBzaG91bGRCZVRydWUoImdvdEFib3V0QmxhbmtGYWls
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290VXNlckdlc3R1cmVGYWlsIik7CisgICAgICAg
IHRlc3RQYXNzZWQoIk5ldyBjbGllbnQgaGFzIGJlZW4gb2JzZXJ2ZWQiKTsKKyAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3Rl
clNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2lu
ZG93LWNsaWVudC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
ZjQ5MTkzMjlhNWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWwKQEAgLTAsMCAr
MSwxNiBAQAorPGhlYWQ+Cis8c2NyaXB0PgorICAgIAorbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
YWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2ZW50ID0+IHsKKyAgICBpZiAoZXZlbnQuZGF0
YSAhPSAiZWNobyIpCisgICAgICAgIHJldHVybjsKKworICAgIG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLmdldFJlZ2lzdHJhdGlvbigpLnRoZW4oZnVuY3Rpb24ocmVnaXN0cmF0aW9uKSB7CisgICAg
ICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2UoImVjaG8gYmFjayIpOworICAgIH0p
OworfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25v
dGlmaWNhdGlvbi1vcGVud2luZG93LXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
d29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29y
a2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWM3YjljOGFi
NGE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvcmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRvdy13b3JrZXIuanMKQEAg
LTAsMCArMSw5NyBAQAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlvbihtc2cp
IHsgCisgICAgY29uc3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwoeworICAg
ICAgICBpbmNsdWRlVW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3IgKGNvbnN0
IGNsaWVudCBvZiBhbGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2UobXNnKTsK
K30KKworLy8gVHJ5IHRvIG9wZW4gYSBuZXcgd2luZG93IG5vdy4KKy8vIEl0IHNob3VsZCBmYWls
IGR1ZSB0byBsYWNrIG9mIHVzZXIgZ2VzdHVyZQorY2xpZW50cy5vcGVuV2luZG93KCdodHRwOi8v
MTI3LjAuMC4xOjgwMDAvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVu
dC5odG1sJykudGhlbihhc3luYyBmdW5jdGlvbihjbGllbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdl
Q2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGllbnQgd2l0aG91dCBhIHVzZXIgZ2VzdHVyZSBT
VUNDRUVERUQuIEl0IHNob3VsZCd2ZSBmYWlsZWQuIik7Cit9KS5jYXRjaChhc3luYyBmdW5jdGlv
bihlcnJvcikgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3RVc2VyR2VzdHVyZUZhaWwi
KTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgYXN5
bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xpY2tlZCIp
OworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5jbG9zZSgpOworCisgICAgLy8gU2hvdWxkIGZhaWwg
YmVjYXVzZSBhYm91dDpibGFuayBpcyBub3QgYW4gYWxsb3dhYmxlIFVSTAorICAgIGNsaWVudHMu
b3BlbldpbmRvdygnYWJvdXQ6YmxhbmsnKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGNsaWVudCkgewor
ICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGllbnQgdG8g
YWJvdXQ6YmxhbmsgU1VDQ0VFREVELiBJdCBzaG91bGQndmUgZmFpbGVkLiIpOworICAgIH0pLmNh
dGNoKGFzeW5jIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRz
KCJnb3RBYm91dEJsYW5rRmFpbCIpOworICAgIH0pOworICAgIAorICAgIGNsaWVudHMub3Blbldp
bmRvdygnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvb3Bl
bndpbmRvdy1jbGllbnQuaHRtbCcpLnRoZW4oZnVuY3Rpb24oY2xpZW50KSB7CisgICAgICAgIGNs
aWVudC5wb3N0TWVzc2FnZSgiZWNobyIpOworICAgIH0pOworfSk7CisKK3NlbGYuYWRkRXZlbnRM
aXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2UnLCBhc3luYyBmdW5jdGlvbihldmVudCkgeworICAg
IGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9zZWQiKTsKK30pOworCithc3luYyBmdW5jdGlvbiB0
cnlTaG93KG1lc3NhZ2UpCit7CisgICAgdmFyIHRpdGxlLCBib2R5LCB0YWc7CisgICAgdmFyIGNv
bXBvbmVudHMgPSBtZXNzYWdlLnNwbGl0KCd8Jyk7CisKKyAgICBpZiAoY29tcG9uZW50cy5sZW5n
dGggPT0gMSkgeworICAgICAgICB0aXRsZSA9ICJUaGlzIGlzIGEgbm90aWZpY2F0aW9uIjsgICAg
ICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHRpdGxlID0gY29tcG9uZW50c1sxXTsKKyAgICAg
ICAgYm9keSA9IGNvbXBvbmVudHNbMl07CisgICAgICAgIHRhZyA9IGNvbXBvbmVudHNbM107Cisg
ICAgfQorICAgIAorICAgIHRyeSB7CisgICAgICAgIGF3YWl0IHJlZ2lzdHJhdGlvbi5zaG93Tm90
aWZpY2F0aW9uKHRpdGxlLCB7CisgICAgICAgICAgICBib2R5OiBib2R5LAorICAgICAgICAgICAg
dGFnOiB0YWcKKyAgICAgICAgfSk7CisgICAgfSBjYXRjaChlcnJvcikgeworICAgICAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygic2hvd0ZhaWxlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93biIpOworfQorCit2YXIgc2Vlbk5v
dGVzID0gbmV3IFNldCgpOworCithc3luYyBmdW5jdGlvbiBnZXROb3RlcyhtZXNzYWdlKQorewor
ICAgIHZhciB0YWcgPSB1bmRlZmluZWQ7CisgICAgdmFyIGNvbXBvbmVudHMgPSBtZXNzYWdlLnNw
bGl0KCd8Jyk7CisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09IDIpCisgICAgICAgIHRhZyA9
IGNvbXBvbmVudHNbMV07CisKKyAgICB2YXIgbm90aWZpY2F0aW9ucyA9IGF3YWl0IHJlZ2lzdHJh
dGlvbi5nZXROb3RpZmljYXRpb25zKHsgdGFnOiB0YWcgfSk7CisgICAgdmFyIHJlcGx5ID0gImdv
dG5vdGVzfFRoZXJlIGFyZSAiICsgbm90aWZpY2F0aW9ucy5sZW5ndGggKyAiIG5vdGlmaWNhdGlv
bnN8IjsKKworICAgIGZvciAobm90aWZpY2F0aW9uIG9mIG5vdGlmaWNhdGlvbnMpIHsKKyAgICAg
ICAgaWYgKHNlZW5Ob3Rlcy5oYXMobm90aWZpY2F0aW9uKSkKKyAgICAgICAgICAgIG1lc3NhZ2VD
bGllbnRzKCJTYXcgdGhlIHNhbWUgbm90aWZjYXRpb24gdHdpY2UgdGhyb3VnaCBnZXROb3RpZmlj
YXRpb25zKCksIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4iKTsKKyAgICAgICAgc2Vlbk5vdGVzLmFk
ZChub3RpZmljYXRpb24pCisgICAgICAgIAorICAgICAgICByZXBseSArPSAiVGl0bGU6ICIgKyBu
b3RpZmljYXRpb24udGl0bGUgKyAifCI7CisgICAgICAgIHJlcGx5ICs9ICJCb2R5OiAiICsgbm90
aWZpY2F0aW9uLmJvZHkgKyAifCI7CisgICAgICAgIHJlcGx5ICs9ICJUYWc6ICIgKyBub3RpZmlj
YXRpb24udGFnICsgInwiOworICAgIH0KKyAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cyhyZXBseSk7
Cit9CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uKGV2
ZW50KSB7CisgICAgdmFyIG1lc3NhZ2VOYW1lID0gZXZlbnQuZGF0YS5zcGxpdCgnfCcpWzBdOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAidHJ5c2hvdyIpCisgICAgICAgIGF3YWl0IHRyeVNob3co
ZXZlbnQuZGF0YSk7CisgICAgaWYgKG1lc3NhZ2VOYW1lID09ICJnZXRub3RlcyIpCisgICAgICAg
IGF3YWl0IGdldE5vdGVzKGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZWNo
byBiYWNrIikKKyAgICAgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImdvdE5ld0NsaWVudCIpOwor
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDY0ZDQ5
MWMxNjViZC4uYWJmYzAyZDZkZjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4
cGVjdGF0aW9ucwpAQCAtNzEwLDYgKzcxMCw3IEBAIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnCiB3
ZWJraXQub3JnL2IvMTc1NDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvc2VydmljZXdvcmtlci9jYWNoZS1zdG9yYWdlLW1hdGNo
Lmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS9zZXJ2aWNld29y
a2VyL2NyZWRlbnRpYWxzLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkg
WyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXIt
dGVybWluYXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZhaWx1cmUgVGltZW91dCBdCit3ZWJraXQub3Jn
L2IvMTc1NDE5IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5kb3ctZnJvbS1ub3Rp
ZmljYXRpb24tY2xpY2suaHRtbCBbIFNraXAgXQogCiAjIEZJWE1FOiBUaGlzIGNhbid0IGJlIHRo
ZSByaWdodCBidWcgbnVtYmVyLgogd2Via2l0Lm9yZy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9ydC9zZXJ2aWNld29ya2VyLWludGVyY2VwdGVk
Lmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggMDRiNGI5ODRkNWJiLi4yNzJkZDU2ZjcwYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgU2VydmljZVdvcmtlckNsaWVudHMub3Blbldp
bmRvdy4KKyAgICAgICAgPHJkYXI6Ly85MDYxNjY1MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAgICAgICAgKFdURjo6S2V5
VHJhaXRzPjo6aW5saW5lTG9va3VwKTogUmVsYXggdGhpcyB2YWx1ZSBzaXplIHJlcXVpcmVtZW50
IGZvciBub3cuCisgICAgICAgIFRoZSByZXF1aXJlZCByZWZhY3RvcmluZyBpcyBiZXN0IGxlZnQg
YXMgYSBzZXBlcmF0ZSB0YXNrIHdpdGggYSBzZXBlcmF0ZSBwYXRjaC4KKwogMjAyMi0wMy0yNiAg
WW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuZm9jdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKaW5kZXggMmU2NDQxNGY3
YWMwLi4zZWE5YjViNGZiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC02ODEsNyArNjgxLDcgQEAgREVD
TEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoSGFzaFRhYmxlKTsKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4KICAgICBBTFdBWVNfSU5M
SU5FIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywg
VHJhaXRzLCBLZXlUcmFpdHM+OjppbmxpbmVMb29rdXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5
cGUqCiAgICAgewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWYWx1ZSkgPD0gMTI4LCAi
WW91ciBIYXNoVGFibGUgdHlwZXMgYXJlIHRvbyBiaWcgdG8gZWZmaWNpZW50bHkgbW92ZSB3aGVu
IHJlaGFzaGluZy4gIENvbnNpZGVyIHVzaW5nIFVuaXF1ZVJlZiBpbnN0ZWFkIik7CisgICAgICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZhbHVlKSA8PSAxNTAsICJZb3VyIEhhc2hUYWJsZSB0eXBl
cyBhcmUgdG9vIGJpZyB0byBlZmZpY2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lk
ZXIgdXNpbmcgVW5pcXVlUmVmIGluc3RlYWQiKTsKICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5z
bGF0b3I+KGtleSk7CiAKICAgICAgICAgdW5zaWduZWQgayA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI1
MzcyZjE0ZmFhLi42M2E2YzMwZTllYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAy
Mi0wMy0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3Vw
cG9ydCBTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93LgorICAgICAgICA8cmRhcjovLzkw
NjE2NjUxPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQw
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6
IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5kb3ctZnJvbS1ub3RpZmljYXRpb24t
Y2xpY2suaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpwYWdlSUQgY29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiBwYWdlL0Ns
aWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6Q2xpZW50T3JpZ2luOjpsb2dnaW5nU3Ry
aW5nIGNvbnN0KToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YTo6ZnJvbSk6CisgICAgICAgIAorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudERhdGE6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1h
dGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDbGllbnRzOjpvcGVuV2luZG93KToKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oOgorCiAyMDIyLTAzLTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5mb2N1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmRj
Y2Y3Nzc4YWU3Li5hZDBmNjE2ZTNlNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQw
OCw3ICs4NDA4LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICAKIHN0ZDo6b3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1f
ZnJhbWUtPmxvYWRlcigpLnBhZ2VJRCgpIDogc3RkOjpudWxsb3B0OwogfQogCiBzdGQ6Om9wdGlv
bmFsPEZyYW1lSWRlbnRpZmllcj4gRG9jdW1lbnQ6OmZyYW1lSUQoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggNjIwNDAxMGZhZmNlLi42ZTE0OTMxNDg1OTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAtNTAsNiArNTAsOCBAQCBzdHJ1Y3QgQ2xpZW50
T3JpZ2luIHsKIAogICAgIFNlY3VyaXR5T3JpZ2luRGF0YSB0b3BPcmlnaW47CiAgICAgU2VjdXJp
dHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKKworICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyh0b3BPcmlnaW4udG9TdHJpbmcoKSwgIi0iLCBjbGll
bnRPcmlnaW4udG9TdHJpbmcoKSk7IH0KIH07CiAKIGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhh
c2hlciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRl
eCA5YTk3MGM2NDRjZmIuLmE0YzcwY2ZkN2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01
OCwxMiArNTgsMTIgQEAgc3RhdGljIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2
aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNjcmlwdEV4ZWN1dGkKIAogU2VydmljZVdvcmtlckNs
aWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYK
IHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRl
ZENvcHkoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1
c2VkLCBmb2N1c09yZGVyIH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVU
eXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIgfTsKIH0KIAog
U2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVk
Q29weSgpICYmCiB7Ci0gICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBX
VEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
LCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNPcmRlciB9OworICAgIHJldHVybiB7IGlkZW50
aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmll
ciwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBm
b2N1c09yZGVyIH07CiB9CiAKIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC03NCwx
MSArNzQsMTUgQEAgU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERh
dGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KICAgICBhdXRvJiBkb2N1bWVudCA9
IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKICAgICBhdXRvIGxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkID0gZG9jdW1lbnQubG9hZGVyKCkgJiYgZG9jdW1lbnQubG9hZGVyKCktPmxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkgPyBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6WWVzIDogTGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vOwogCisgICAgYXV0
byBkb2N1bWVudFBhZ2VJZGVudGlmaWVyID0gZG9jdW1lbnQucGFnZUlEKCk7CisKICAgICByZXR1
cm4gewogICAgICAgICBjb250ZXh0LmlkZW50aWZpZXIoKSwKICAgICAgICAgaXNEb2N1bWVudCA/
IFNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjpXaW5kb3cgOiBTZXJ2aWNlV29ya2VyQ2xpZW50VHlw
ZTo6V29ya2VyLAogICAgICAgICB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoY29udGV4
dCksCi0gICAgICAgIGRvY3VtZW50LmNyZWF0aW9uVVJMKCksIGxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkLAorICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLAorICAgICAgICBkb2N1
bWVudFBhZ2VJZGVudGlmaWVyLAorICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRl
ZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAgICAgICBkb2N1bWVudC5oYXNGb2N1
cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDg1ZTEwODNkN2Q0MS4uMTQ5YTUx
YTIxZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRl
ICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgpAQCAtNDUs
NiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZSBm
cmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBsYXN0
TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZhbHNlIH07
CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBzdHJ1Y3Qg
U2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1cmwg
PDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNl
ZCA8PCBmb2N1c09yZGVyOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZy
YW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwogfQogCiB0
ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29kZShE
ZWNvZGVyJgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisg
ICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlkZW50
aWZpZXI7CisgICAgZGVjb2RlciA+PiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25h
bDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0
aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAg
ICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3IEBA
IHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJDbGll
bnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWZvY3VzT3JkZXIpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RG
TW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUp
LCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CisgICAgcmV0
dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUoKmZy
YW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RGTW92
ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUpLCBX
VEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CiB9CiAKIHVzaW5n
IFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcApp
bmRleCBlMjk5MTg5NzFhNTAuLjM2M2I3ZDlmMjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC05MCwx
MCArOTAsNzEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRp
YyB2b2lkIG1hdGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBzdGQ6
Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPik+JiYgY2FsbGJhY2spCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1
cHBvcnRlZEVycm9yLCAiY2xpZW50cy5vcGVuV2luZG93KCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
X3MgfSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBh
Z2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
Y29ubmVjdGlvbigpOworICAgICAgICBhdXRvIG9wdGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xpZW50
UXVlcnlPcHRpb25zIHsgdHJ1ZSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9Owor
ICAgICAgICBjb25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgb3B0
aW9ucywgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mJiBj
bGllbnRzRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5n
bGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
W3BhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjbGllbnRzRGF0
YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNsaWVudHNEYXRhKSldIChhdXRvJiBzY29wZSkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhIDogY2xpZW50c0RhdGEp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFnZUlk
ZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBkYXRh
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCit7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVp
IHNlcnZpY2Ugd29ya2VyIGNhbGxpbmcgb3BlbldpbmRvdyB0byBVUkwgJXMiLCBnZXRwaWQoKSwg
dXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhyZWFk
KCkuaWRlbnRpZmllcigpOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1cmxT
dHJpbmcpOworCisgICAgaWYgKGNvbnRleHQuc2V0dGluZ3NWYWx1ZXMoKS5zZXJ2aWNlV29ya2Vy
c1VzZXJHZXN0dXJlRW5hYmxlZCAmJiAhZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
Pihjb250ZXh0KS5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJTZXJ2aWNlV29ya2VyQ2xp
ZW50cy5vcGVuV2luZG93KCkgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUiX3MgfSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiVVJMIHN0cmlu
ZyAiLCB1cmxTdHJpbmcsICIgY2Fubm90IHN1Y2Nlc3NmdWxseSBiZSBwYXJzZWQiX3MpIH0pOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQoKSkg
eworICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3Ry
aW5nKCJTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93KCkgY2Fubm90IGJlIGNhbGxlZCB3
aXRoIFVSTCAiX3MsIHVybC5zdHJpbmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHVybCA9IHVybC5pc29sYXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8gY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LmNvbm5lY3Rpb24oKTsKKyAgICAgICAgY29ubmVjdGlvbi0+b3BlbldpbmRvdyhzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgdXJsLnN0cmluZygpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSAoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4m
JiBwYWdlSWRlbnRpZmllcikgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBwYWdlSWRlbnRpZmllciA9IFdURk1v
dmUocGFnZUlkZW50aWZpZXIpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKFNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSYpIG11dGFibGUgeworICAgICAgICAgICAgICAgIExPRyhTZXJ2aWNlV29y
a2VyLCAiV2ViUHJvY2VzcyAlaSBmaW5pc2hlZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3Blbldp
bmRvdyBjYWxsLiBSZXN1bHRpbmcgcGFnZSBpZGVudGlmaWVyIGlzICVzIiwgZ2V0cGlkKCksIHBh
Z2VJZGVudGlmaWVyID8gcGFnZUlkZW50aWZpZXItPmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpIDogIjxOT05FPiIpOworCisgICAgICAgICAgICAgICAgaWYgKCFwYWdlSWRlbnRpZmllcikg
eworICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0aEpTVmFsdWUoSlNDOjpq
c051bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBtYXRjaFdpbmRvd1dpdGhQYWdlSWRlbnRpZmllcihzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgKnBhZ2VJZGVudGlmaWVyLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldIChhdXRvJiBzY29wZSwgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YT4gY2xpZW50RGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50
RGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1Zh
bHVlKEpTQzo6anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQgPSBT
ZXJ2aWNlV29ya2VyQ2xpZW50OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEpKTsK
KyAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2Vydmlj
ZVdvcmtlckNsaWVudD4+KFdURk1vdmUoY2xpZW50KSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckNsaWVudHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmY2Y1ZWUw
OWM4YTUuLmZlZTdjMTVkMmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjcsOCArNjcsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRp
ZmllcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVudEJ5
SWRlbnRpZmllckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxs
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlP
cHRpb25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0KICAgICAgICAg
dmlydHVhbCB2b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNs
aWVudERhdGE+JiYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmKT4mJikgPSAwOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAppbmRleCA2MTg2MzQ2Y2QxNzYuLjhlMGRhOTUyMzFjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBib29sKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVu
dGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YT4mJik+JiYpOwogCisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5k
b3coU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
JiYpPiYmKSA9IDA7CisKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgc3RkOjpv
cHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBh
Z2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZp
ZXI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDllZGQ0NDVlNmNiYy4uMTYwMDY1ZDM2ZWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oCkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VX
b3JrZXJEYXRhJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgU2VydmljZVdv
cmtlckNvbnRleHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7CiAKLSAgICBjb25zdCBDbGllbnRP
cmlnaW4mIG9yaWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENsaWVudE9y
aWdpbiYgb3JpZ2luKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lz
dHJhYmxlRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAg
IFdFQkNPUkVfRVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50
aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDczNDhhNTRkMDBmZS4uZmIyNTBmMzhkYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisy
MDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBT
dXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAgIDxyZGFyOi8v
OTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAg
ICAgICBUaGlzIEFQSSBhc2tzIHRoZSBicm93c2VyIHRvIGFzeW5jaHJvbm91c2x5IG9wZW4gYSBu
ZXcgdGFiIHRvIGEgVVJMIHRoZW4gcmVzb2x2ZQorICAgICAgICBhIHByb21pc2Ugd2l0aCB0aGUg
bmV3IFdpbmRvd0NsaWVudCByZXByZXNlbnRpbmcgdGhhdCB0YWIuCisgICAgICAgICAgICAKKyAg
ICAgICAgRnJvbSBhIFdlYkNvcmUvV2ViS2l0IHN0YW5kcG9pbnQsIGltcGxlbWVudGluZyB0aGlz
IHdhcyBtb3N0bHkgc3RyYWlnaHRmb3J3YXJkLgorICAgICAgICAxIC0gQSBwbHVtYmluZyBleGVy
Y2lzZSAodGhyZWFkIGhvcHBpbmcgYW5kIElQQydpbmcgdGhlIG1lc3NhZ2UgYW5kIGl0cyByZXBs
eSBhcm91bmQpCisgICAgICAgIDIgLSBJbXBsbWVudGluZyBhIG5ldyBkZWxlZ2F0ZSBtZXRob2Qg
Zm9yIHRoZSBob3N0aW5nIGFwcCB0byBjcmVhdGUgdGhlIHJlcXVlc3RlZCBXS1dlYlZpZXcKKyAg
ICAgICAgCisgICAgICAgIFRoZSBkZWxlZ2F0ZSBtZXRob2Qgd2FzIGludGVyZXN0aW5nLiBOb3Jt
YWxseSB0aGlzIGlzIHRoZSB0eXBlIG9mIHRoaW5nIHRoYXQnZCBnbyB0byB0aGUKKyAgICAgICAg
V0tVSURlbGVnYXRlIGJ1dCB0aGF0IHJlcXVpcmVzIHRoZXJlIHRvIGJlIGEgV0tXZWJWaWV3LCBh
bmQgc2VydmljZSB3b3JrZXJzIGNhbiBiZSBydW5uaW5nCisgICAgICAgIHdpdGhvdXQgYW55IHdl
YiB2aWV3cy4KKyAgICAgICAgCisgICAgICAgIEZvcnR1bmF0ZWx5IHdlIGFscmVhZHkgaGFkIGEg
V0tXZWJzaXRlRGF0YVN0b3JlIGRlbGVnYXRlIFNQSSwgYW5kIHNlcnZpY2Ugd29ya2VycyAqZG8q
IGFsd2F5cworICAgICAgICBoYXZlIGFuIGFzc29jaWF0ZWQgd2Vic2l0ZSBkYXRhIHN0b3JlIHRo
ZXkncmUgcnVubmluZyB1bmRlci4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlIGFwcCBnaXZl
cyB0aGUgbmV3IHdlYiB2aWV3IGJhY2sgdG8gV2ViS2l0LCB3ZSByZWNvcmQgaXRzIFBhZ2VJZGVu
dGlmaWVyIGluIHRoZSByZXBseS4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlIHJlcGx5IG1h
a2VzIGl0cyB3YXkgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNz
IGFuZCBvbiB0aGUgCisgICAgICAgIFNlcnZpY2VXb3JrZXIgdGhyZWFkLCB3ZSBkbyBhIGNsaWVu
dCBtYXRjaCBhbmQgY3Jvc3MgY2hlY2sgd2l0aCB0aGF0IFBhZ2VJZGVudGlmaWVyIHRvIG1ha2UK
KyAgICAgICAgc3VyZSB3ZSdyZSByZXNvbHZpbmcgdGhlIHByb21pc2Ugd2l0aCB0aGUgY29ycmVj
dCBXaW5kb3dDbGllbnQuCisgICAgICAgIAorICAgICAgICBJZiB0aGVyZSdzIG5vIG1hdGNoZWQg
Y2xpZW50cywgdGhlbiB0aGUgdmlldyBpcyBlaXRoZXIgYWxyZWFkeSBnb25lIG9yIGl0IGhhcyBu
YXZpZ2F0ZWQgYXdheQorICAgICAgICB0byBhIG5vbi1hcHBsaWNhYmxlIFVSTC4KKyAgICAgICAg
CisgICAgICAgIFNhbWUgaWYgdGhlcmUgYXJlIG1hdGNoZWQgY2xpZW50cywgYnV0IHRoZXkgZG9u
J3QgbWF0Y2ggdGhlIHNwZWNpZmllZCBQYWdlSWRlbnRpZmllci4KKworICAgICAgICBBIHN0cmFp
Z2h0IGZvcndhcmQgbGF5b3V0dGVzdCBjb21wbGV0ZXMgdGhlIHRhc2suCisgICAgICAgIAorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xp
ZW50KToKKyAgICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Om9wZW5XaW5kb3cpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVE
YXRhU3RvcmUgc2V0X2RlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNz
YXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhh
bmRsZXJJZk5lY2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2luZG93RnJv
bVNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ2xpZW50
OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpvcGVuV2lu
ZG93KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKwogMjAyMi0wMy0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuZm9jdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDUyYzY3MTEzODBm
Li5lOWViMjM5OWE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3Bw
CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xD
bGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW4KICAgICAgICAgdW5y
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAK
LSAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2Vy
dmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29y
ZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZp
Z2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpObyB9OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRh
IGRhdGEgeyBjbGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93
LCBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCB7IH0s
IHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBw
SW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6
Tm8gfTsKICAgICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRh
IHsgcmVnaXN0cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lz
dHJhdGlvbi5pZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRl
eCAwMzY3NWE4NDQ0MmUuLjUyMjg1MzEzY2UyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1Nyw2ICsxNTcsMjcgQEAgdm9p
ZCBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25z
aXZlbmVzcygpCiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWlu
YXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlm
aWVyKCkgfSwgMCk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpv
cGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8q
IHNlcnZlciA9IHRoaXMtPnNlcnZlcigpOworICAgIGlmICghc2VydmVyKSB7CisgICAgICAgIGNh
bGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
KiB3b3JrZXIgPSBzZXJ2ZXItPndvcmtlckJ5SUQoaWRlbnRpZmllcik7CisgICAgaWYgKCF3b3Jr
ZXIpIHsKKyAgICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVu
dGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShwYWdlSWRlbnRpZmll
cikpOworICAgIH07CisKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6Ok9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IGlkZW50aWZpZXIsIHNl
cnZlci0+c2Vzc2lvbklEKCksIHVybFN0cmluZywgd29ya2VyLT5vcmlnaW4oKS5jbGllbnRPcmln
aW4gfSwgV1RGTW92ZShpbm5lckNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjptYXRjaEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRp
ZmllciwgY29uc3QgVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEp
CiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1h
dGNoQWxsQ29tcGxldGVkIHsgcmVxdWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDAz
ZDkzNmNjZDMyYS4uODBiMzAzZTQ0ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgY29ubmVjdGlvbklzTm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRl
cm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRv
dyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4mJik+JiYpIGZpbmFsOwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCmluZGV4IDNlNzc1ODUyMzc5NS4uMjFkMjM2NTU3YzQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KQEAgLTQwLDYgKzQwLDggQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRl
c3RpbmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2Fn
ZSwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNl
T3JpZ2luKQogICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIFNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCisKKyAgICBP
cGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0
cmluZyB1cmxTdHJpbmcpIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBuZXdDbGllbnREYXRhKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KaW5kZXggMDgxNzEwYThjNzEzLi41YWQ3Zjc0Y2ZhMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZS5tbQpAQCAtNDgsNiArNDgsNyBAQAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVn
YXRlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0NyZWRlbnRpYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVnaXN0cmF0aW9uRGF0YWJhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VydmljZVdvcmtlckNs
aWVudERhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgpAQCAtNTYsMTAgKzU3LDEy
IEBACiAKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJzaXRl
RGF0YVN0b3JlQ2xpZW50KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRl
KQotICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCisgICAgZXhwbGljaXQgV2Vic2l0ZURh
dGFTdG9yZUNsaWVudChXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSwgaWQ8X1dLV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlPiBkZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RhdGFTdG9yZShkYXRh
U3RvcmUpCisgICAgICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX2hhc1Jl
cXVlc3RTdG9yYWdlU3BhY2VTZWxlY3RvcihbbV9kZWxlZ2F0ZS5nZXQoKSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKHJlcXVlc3RTdG9yYWdlU3BhY2U6IGZyYW1lT3JpZ2luOiBxdW90YTog
Y3VycmVudFNpemU6IHNwYWNlUmVxdWlyZWQ6IGRlY2lzaW9uSGFuZGxlcjopXSkKICAgICAgICAg
LCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U6IGNvbXBsZXRpb25IYW5kbGVyOildKQorICAgICAgICAsIG1faGFzT3BlbldpbmRvd1Nl
bGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vi
c2l0ZURhdGFTdG9yZTpvcGVuV2luZG93OmZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRp
b25IYW5kbGVyOildKQogICAgIHsKICAgICB9CiAKQEAgLTEwNCw5ICsxMDcsMzIgQEAgcHJpdmF0
ZToKICAgICAgICAgW21fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOm5zVVJMQ2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyLmdldCgpXTsKICAgICB9CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2Vy
dmljZVdvcmtlcihjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViUGFnZVByb3h5Kik+JiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIW1faGFz
T3BlbldpbmRvd1NlbGVjdG9yIHx8ICFtX2RlbGVnYXRlIHx8ICFtX2RhdGFTdG9yZSkgeworICAg
ICAgICAgICAgY2FsbGJhY2soeyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGF1dG8gY2hlY2tlciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKG1fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCksIEBzZWxlY3Rvcih3ZWJz
aXRlRGF0YVN0b3JlOm9wZW5XaW5kb3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46Y29tcGxldGlv
bkhhbmRsZXI6KSk7CisgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNr
ZXIpXShXS1dlYlZpZXcgKm5ld1dlYlZpZXcpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNo
ZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigp
OworCisgICAgICAgICAgICBjYWxsYmFjayhuZXdXZWJWaWV3Ll9wYWdlLmdldCgpKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgYXV0byBuc1VSTCA9IChOU1VSTCAqKVVSTCB7IHVybCB9OworICAg
ICAgICBhdXRvIGFwaU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZXJ2aWNl
V29ya2VyT3JpZ2luKTsKKyAgICAgICAgW21fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgd2Vi
c2l0ZURhdGFTdG9yZTptX2RhdGFTdG9yZS5nZXRBdXRvcmVsZWFzZWQoKSBvcGVuV2luZG93Om5z
VVJMIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOndyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQoKV07CisgICAgfQorCisgICAgV2Vh
a09iakNQdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBXZWFrT2JqQ1B0
cjxpZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CiAgICAgYm9v
bCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VTZWxlY3RvciB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2hhc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlU2VsZWN0b3IgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNPcGVuV2luZG93U2VsZWN0b3IgeyBmYWxzZSB9OwogfTsKIAogQGltcGxlbWVudGF0aW9u
IFdLV2Vic2l0ZURhdGFTdG9yZQpAQCAtNjUyLDcgKzY3OCw3IEBAIHN0YXRpYyBWZWN0b3I8V2Vi
S2l0OjpXZWJzaXRlRGF0YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0
YVJlY29yCiAtICh2b2lkKXNldF9kZWxlZ2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZT4pZGVsZWdhdGUKIHsKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0
ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVu
dD4oZGVsZWdhdGUpKTsKKyAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlx
dWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oc2VsZiwgZGVsZWdhdGUpKTsKIH0KIAogLSAo
X1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3Rv
cmVEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCmluZGV4IDBiODU3MzA0ODc5Ni4uMWQxNTgxNzQzNWE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgogCitAY2xhc3MgV0tTZWN1cml0eU9yaWdpbjsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3Rv
cmU7CitAY2xhc3MgV0tXZWJWaWV3OworCiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwg
aW9zKDEzLjApKQogQHByb3RvY29sIF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSA8TlNPYmpl
Y3Q+CiAKIEBvcHRpb25hbAogLSAodm9pZClyZXF1ZXN0U3RvcmFnZVNwYWNlOihOU1VSTCAqKW1h
aW5GcmFtZVVSTCBmcmFtZU9yaWdpbjooTlNVUkwgKilmcmFtZVVSTCBxdW90YTooTlNVSW50ZWdl
cilxdW90YSBjdXJyZW50U2l6ZTooTlNVSW50ZWdlciljdXJyZW50U2l6ZSBzcGFjZVJlcXVpcmVk
OihOU1VJbnRlZ2VyKXNwYWNlUmVxdWlyZWQgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKSh1bnNp
Z25lZCBsb25nIGxvbmcgcXVvdGEpKWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICop
Y2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlh
bCkpY29tcGxldGlvbkhhbmRsZXI7Ci0KKy0gKHZvaWQpd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJz
aXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9wZW5XaW5kb3c6KE5TVVJMICopdXJsIGZyb21TZXJ2
aWNlV29ya2VyT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VydmljZVdvcmtlck9yaWdpbiBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICpuZXdXZWJWaWV3KSljb21wbGV0
aW9uSGFuZGxlcjsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDI0Y2YyMGQ3MzIwMy4uYjFhMjIw
YjhjMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE3OTgsNiArMTc5OCwxNiBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hl
blBvc3NpYmxlKFJlbQogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5h
dGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBz
ZXNzaW9uSUQsIHJlZ2lzdHJhYmxlRG9tYWluLCBwcm9jZXNzSWRlbnRpZmllciksIDApOwogfQog
Cit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2sp
Cit7CisgICAgaWYgKGF1dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQo
c2Vzc2lvbklEKSkgeworICAgICAgICBzdG9yZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2Vy
KGlkZW50aWZpZXIsIHVybFN0cmluZywgc2VydmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oCmluZGV4IDFlODZmMzQyNjNlMC4uNDM3ZmJjZWFhOTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApA
QCAtMjk5LDYgKzI5OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlUmVtb3RlV29y
a2VyQ29udGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZSwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOwogCisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIo
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2
aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCAxZGQyMzMwNzMyOTYuLjdjYWY2YjcyM2VhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgpAQCAtOTEsNiArOTEsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBEYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJLaXQ6OkRh
dGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlKSAtPiAoYm9vbCBhbGxvd2VkKQogICAgIERhdGFUYXNrRGlkUmVjZWl2ZURhdGEoV2Vi
S2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpCiAgICAgRGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFUYXNrSWRl
bnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQorCisgICAg
T3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHVybFN0cmlu
Zywgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBzZXJ2aWNlV29ya2VyT3JpZ2lu
KSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZSkKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMzdhNDUy
NGY5YzdiLi43NTJlM2U1NTYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHAKICAg
ICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnRO
YXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJM
YXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29t
cGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAgIH0KIAogICAgIGZyYW1lLmRp
ZEZhaWxQcm92aXNpb25hbExvYWQoKTsKQEAgLTQ5MDUsMTIgKzQ5MDUsMTUgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVnaXN0cmF0aW9uKGJvb2wgc3Vj
Y2VzcykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y2FsbFNlcnZpY2VXb3JrZXJM
YXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpj
YWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGJvb2wgc3VjY2VzcykKIHsKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1faXNTZXJ2aWNlV29ya2VyUGFnZSAm
JiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcikKKyAgICBpZiAobV9pc1Nl
cnZpY2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVy
ICYmICFzdWNjZXNzKQogICAgICAgICBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAjZW5kaWYKKworICAgIGlmIChtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93
Q29tcGxldGlvbkNhbGxiYWNrKQorICAgICAgICBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29t
cGxldGlvbkNhbGxiYWNrKHN1Y2Nlc3MpOwogfQogCiAjaWYgRU5BQkxFKElOVEVMTElHRU5UX1RS
QUNLSU5HX1BSRVZFTlRJT04pCkBAIC01MTM0LDYgKzUxMzcsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUlu
Zm9EYXRhJgogICAgICAgICByZXNldFJlY2VudENyYXNoQ291bnRTb29uKCk7CiAKICAgICAgICAg
bm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKKworICAgICAgICBjYWxsTG9hZENvbXBsZXRp
b25IYW5kbGVyc0lmTmVjZXNzYXJ5KHRydWUpOwogICAgIH0KIAogICAgIG1faXNMb2FkaW5nQWx0
ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQgPSBmYWxzZTsKQEAgLTUx
ODIsNyArNTE4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYKICAgICAgICAgaWYgKG5hdmln
YXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZp
dHkobnVsbHB0cik7CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9u
SGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJz
SWZOZWNlc3NhcnkoZmFsc2UpOwogICAgIH0KIH0KIApAQCAtODAxOCw3ICs4MDIzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVh
c29uKQogI2VuZGlmCiAKICAgICBpZiAocmVzZXRTdGF0ZVJlYXNvbiAhPSBSZXNldFN0YXRlUmVh
c29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21w
bGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhh
bmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBjYTI0MmYyM2ZiMGQu
LmYzMWIxZjRhMDljMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTIwODEsNiArMjA4MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGludGVyYWN0YWJsZVJlZ2lv
bnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRSZWN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4mJik7CiAKKyNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBs
ZXRpb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25D
YWxsYmFjaykgeyBtX3NlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrID0g
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjYw
Nyw3ICsyNjExLDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
dm9pZCBkaWRGaW5pc2hTZXJ2aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3Mp
OwogI2VuZGlmCi0gICAgdm9pZCBjYWxsU2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5k
bGVySWZOZWNlc3NhcnkoKTsKKyAgICB2b2lkIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZO
ZWNlc3NhcnkoYm9vbCBzdWNjZXNzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
c3RhdGljIGJvb2wgaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCk7CkBAIC0zMTE5LDYgKzMxMjMs
NyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIG1faXNT
ZXJ2aWNlV29ya2VyUGFnZSB7IGZhbHNlIH07CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRp
b25DYWxsYmFjazsKICNlbmRpZgogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBt
X3RyeUNsb3NlVGltZW91dFRpbWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3MWFlOTI2NTQ4YmMu
LjZmYTI2YjQyZDMzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIwODcsNCArMjA4NywzNCBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9u
KGNvbnN0IFVVSUQmIG5vdGlmaWNhdAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2hhcmVkU2VydmljZVdvcmtlck1hbmFnZXIoKS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG51bGxw
dHIsIG5vdGlmaWNhdGlvbklEKTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2lu
ZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8gaW5u
ZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoV2ViUGFnZVByb3h5
KiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFuZXdQYWdlKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFuZXdQYWdlLT5wYWdlTG9hZFN0YXRlKCkuaXNMb2FkaW5nKCkpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJUaGUgV0tXZWJWaWV3IHByb3ZpZGVk
IGluIHJlc3BvbnNlIHRvIGEgU2VydmljZVdvcmtlciBvcGVuV2luZG93IHJlcXVlc3Qgd2FzIG5v
dCBpbiB0aGUgbG9hZGluZyBzdGF0ZSIpOworICAgICAgICAgICAgY2FsbGJhY2soc3RkOjpudWxs
b3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gaW5u
ZXJDYWxsYmFjayA9IFtwYWdlSUQgPSBuZXdQYWdlLT5pZGVudGlmaWVyKCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldIChib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAgICAgICAgICAg
YXV0byogbmV3UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOworICAgICAg
ICAgICAgaWYgKCFuZXdQYWdlIHx8ICFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5ld1BhZ2UtPndlYlBhZ2VJRCgpKTsKKyAgICAgICAg
fTsKKworICAgICAgICBuZXdQYWdlLT5zZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRp
b25DYWxsYmFjayhXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKKyAgICB9OworCisgICAgbV9jbGll
bnQtPm9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcih1cmxTdHJpbmcsIHNlcnZpY2VXb3JrZXJP
cmlnaW4sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
NmVmOTU1MDE3MjY2Li5iZjZiN2YzM2Y5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM3OSw2ICszNzks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29u
c3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgZGlkRGVzdHJveVNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogCisgICAgdm9pZCBv
cGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmKTsKKwogcHJpdmF0ZToKICAgICBl
bnVtIGNsYXNzIEZvcmNlUmVpbml0aWFsaXphdGlvbiA6IGJvb2wgeyBObywgWWVzIH07CiAjaWYg
RU5BQkxFKEFQUF9CT1VORF9ET01BSU5TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCmluZGV4IGY3
YzY4M2ZmNzE2My4uZjdhYmUzMDdhNjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNsaWVudC5oCkBAIC0z
Niw2ICszNiw4IEBAIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBXZWJQYWdlUHJveHk7CisKIGNsYXNzIFdlYnNpdGVEYXRhU3RvcmVDbGll
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTAsNiArNTIs
MTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgY2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBs
ZXRlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1E
ZWZhdWx0SGFuZGxpbmcpOwogICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93RnJv
bVNlcnZpY2VXb3JrZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIpOwor
ICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCBlOTViN2NhZTg2YmMuLjQ4ZTc1NTRkMjA3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE1MCw2ICsxNTAsOCBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmROb3RpZmljYXRpb25NZXNz
YWdlKFUmJiBtZQogCiBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3coTm90aWZpY2F0
aW9uJiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiB7CisgICAgTE9HKE5vdGlmaWNhdGlv
bnMsICJXZWJQcm9jZXNzICVpIGdvaW5nIHRvIHNob3cgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlk
KCksIG5vdGlmaWNhdGlvbi5pZGVudGlmaWVyKCkudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KwogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQogICAgIGlmIChwYWdlICYmICFwYWdlLT5jb3JlUGFnZSgpLT5zZXR0aW5ncygpLm5vdGlmaWNh
dGlvbnNFbmFibGVkKCkpCkBAIC0yMDgsNiArMjEwLDggQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpkaWRTaG93Tm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlmaWNhdGlvbklEKQog
ewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisgICAgTE9HKE5vdGlmaWNhdGlvbnMs
ICJXZWJQcm9jZXNzICVpIERJRCBTSE9XIG5vdGlmaWNhdGlvbiAlcyIsIGdldHBpZCgpLCBub3Rp
ZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAjaWYgRU5BQkxFKE5PVElG
SUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAgIGlmICghbm90aWZpY2F0aW9u
KQpAQCAtMjIzLDExICsyMjcsMTUgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRD
bGlja05vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBBU1NF
UlQoaXNNYWluUnVuTG9vcCgpKTsKIAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2Vz
cyAlaSBESUQgQ0xJQ0sgbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklE
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
ICAgICBSZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklE
TWFwLmdldChub3RpZmljYXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCiAgICAgICAg
IHJldHVybjsKIAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBoYW5kbGlu
ZyBjbGljayBldmVudCBmb3Igbm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlv
bklELnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICAvLyBJbmRpY2F0ZSB0aGF0IHRo
aXMgZXZlbnQgaXMgYmVpbmcgZGlzcGF0Y2hlZCBpbiByZWFjdGlvbiB0byBhIHVzZXIncyBpbnRl
cmFjdGlvbiB3aXRoIGEgcGxhdGZvcm0gbm90aWZpY2F0aW9uLgogICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGluZGljYXRvcihQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIG5vdGlmaWNhdGlv
bi0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKaW5kZXggZTIzYzI1NzE3YmNhLi4xZTFhMzliZTdjMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKQEAgLTMzMiw2ICszMzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6bWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50
aWZpZXIKICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShjbGllbnRzRGF0YSkpOwogfQogCit2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbjo6T3BlbldpbmRvdyB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgfSwg
V1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6Q2xhaW0geyBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciB9LCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0
byYmIHJlc3VsdCkgbXV0YWJsZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRl
eCBlY2Q4MWZiM2YyYWIuLmY4OTZiMWIwZWI0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCkBAIC04Nyw2ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1Rocm90dGxlYWJs
ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIHNldEFzSW5zcGVjdGVk
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKSBmaW5hbDsKKyAgICB2b2lk
IG9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+JiYpPiYmKSBmaW5hbDsKIAogICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2
b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZWMwMzAxYTc1YTcuLjJhYmFjYWUwODA0OCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAg
IDxyZGFyOi8vOTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM4NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50IHRoZSBuZXcgZGVsZWdhdGUgdG8gY3JlYXRlIHRoZSBuZXcgdmlldy4K
KyAgICAgICAgCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UpOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgCisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAg
ICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3ZWJzaXRlRGF0
YVN0b3JlOm9wZW5XaW5kb3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46Y29tcGxldGlvbkhhbmRs
ZXI6XSk6CisKIDIwMjItMDMtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGEwMWNlYTQyNzcxYS4u
MDE2Y2RiMGE1MGYzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMzgwLDYgKzM4MCwxNyBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90
aGVyUGFnZShXS1BhZ2VSZWYsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZgogfQogCiBXS1Bh
Z2VSZWYgVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBh
cmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tOYXZpZ2F0
aW9uQWN0aW9uUmVmIG5hdmlnYXRpb25BY3Rpb24sIFdLV2luZG93RmVhdHVyZXNSZWYgd2luZG93
RmVhdHVyZXMpCit7CisgICAgYXV0byogcGxhdGZvcm1XZWJWaWV3ID0gY3JlYXRlT3RoZXJQbGF0
Zm9ybVdlYlZpZXcocGFyZW50VmlldywgY29uZmlndXJhdGlvbiwgbmF2aWdhdGlvbkFjdGlvbiwg
d2luZG93RmVhdHVyZXMpOworICAgIGlmICghcGxhdGZvcm1XZWJWaWV3KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8qIHBhZ2UgPSBwbGF0Zm9ybVdlYlZpZXctPnBhZ2UoKTsK
KyAgICBXS1JldGFpbihwYWdlKTsKKyAgICByZXR1cm4gcGFnZTsKK30KKworUGxhdGZvcm1XZWJW
aWV3KiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZvcm1X
ZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24s
IFdLTmF2aWdhdGlvbkFjdGlvblJlZiwgV0tXaW5kb3dGZWF0dXJlc1JlZikKIHsKICAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT53aWxsQ3JlYXRlTmV3UGFnZSgpOwogCkBAIC0zODksNyArNDAwLDgg
QEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJW
aWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAogICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IHRy
dWU7CiAKLSAgICBhdXRvIHZpZXcgPSBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShwYXJlbnRWaWV3
LCBjb25maWd1cmF0aW9uLCBwYXJlbnRWaWV3LT5vcHRpb25zKCkpOworICAgIGF1dG8gb3B0aW9u
cyA9IHBhcmVudFZpZXcgPyBwYXJlbnRWaWV3LT5vcHRpb25zKCkgOiBtX21haW5XZWJWaWV3LT5v
cHRpb25zKCk7CisgICAgYXV0byB2aWV3ID0gcGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UocGFyZW50
VmlldywgY29uZmlndXJhdGlvbiwgb3B0aW9ucyk7CiAgICAgV0tQYWdlUmVmIG5ld1BhZ2UgPSB2
aWV3LT5wYWdlKCk7CiAKICAgICB2aWV3LT5yZXNpemVUbyg4MDAsIDYwMCk7CkBAIC01MDksOSAr
NTIxLDkgQEAgV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoUGxhdGZv
cm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb24KIAogICAgIFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS51cGRhdGVXaW5kb3dTY2FsZUZvclRlc3Qodmlldy5wdHIoKSwgKlRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5tX2N1cnJlbnRJbnZvY2F0aW9uKTsKIAorICAgIFBsYXRmb3Jt
V2ViVmlldyogdmlld1RvUmV0dXJuID0gdmlldy5wdHIoKTsKICAgICBtX2F1eGlsaWFyeVdlYlZp
ZXdzLmFwcGVuZChXVEZNb3ZlKHZpZXcpKTsKLSAgICBXS1JldGFpbihuZXdQYWdlKTsKLSAgICBy
ZXR1cm4gbmV3UGFnZTsKKyAgICByZXR1cm4gdmlld1RvUmV0dXJuOwogfQogCiBjb25zdCBjaGFy
KiBUZXN0Q29udHJvbGxlcjo6bGlicmFyeVBhdGhGb3JUZXN0aW5nKCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA0NDUzOTUzODgzOTIuLjQ4ZmE1YWQ0MmVmOCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMzc4LDYgKzM3OCw4
IEBAIHB1YmxpYzoKICAgICBib29sIGRlbnlOb3RpZmljYXRpb25QZXJtaXNzaW9uKFdLU3RyaW5n
UmVmIG9yaWdpbik7CiAgICAgYm9vbCBkZW55Tm90aWZpY2F0aW9uUGVybWlzc2lvbk9uUHJvbXB0
KFdLU3RyaW5nUmVmIG9yaWdpbik7CiAKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIGNyZWF0ZU90aGVy
UGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmln
dXJhdGlvblJlZiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBXS1dpbmRvd0ZlYXR1cmVzUmVmKTsK
KwogcHJpdmF0ZToKICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0aW9uUmVmPiBnZW5l
cmF0ZVBhZ2VDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJik7CiAgICAgV0tSZXRhaW5Q
dHI8V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVDb250ZXh0Q29uZmlndXJhdGlv
bihjb25zdCBUZXN0T3B0aW9ucyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IDc3MjNiYTQ4N2E1Ni4uZGVk
NTFiYjYwNjBjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RD
b250cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
Q29udHJvbGxlckNvY29hLm1tCkBAIC0yMTQsNyArMjE0LDggQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRl
c3RPcHQKIFVuaXF1ZVJlZjxQbGF0Zm9ybVdlYlZpZXc+IFRlc3RDb250cm9sbGVyOjpwbGF0Zm9y
bUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewogICAgIGF1dG8gbmV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29w
eV0pOwotICAgIFtuZXdDb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzpzdGF0aWNfY2Fz
dDxXS1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSldOworICAgIGlmIChwYXJl
bnRWaWV3KQorICAgICAgICBbbmV3Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRlZFdlYlZpZXc6c3Rh
dGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkpXTsKICAgICBp
ZiAoW25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XSkKICAgICAgICAgW25ld0NvbmZp
Z3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbbmV3Q29uZmlndXJhdGlvbiBfcmVsYXRlZFdl
YlZpZXddLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZV07CiAgICAgYXV0byB2aWV3ID0g
bWFrZVVuaXF1ZVJlZjxQbGF0Zm9ybVdlYlZpZXc+KG5ld0NvbmZpZ3VyYXRpb24uZ2V0KCksIG9w
dGlvbnMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0V2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tCmluZGV4IGUxZjY4ZTQ4YWY3My4uMDNhMTM4
ZDY2Y2ZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2Nv
YS9UZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tCkBAIC0yNiw2ICsyNiwxMiBAQAogI2lt
cG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgi
CiAKKyNpbXBvcnQgIlBsYXRmb3JtV2ViVmlldy5oIgorI2ltcG9ydCAiVGVzdENvbnRyb2xsZXIu
aCIKKyNpbXBvcnQgIlRlc3RSdW5uZXJXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9VbmlxdWVSZWYuaD4KKwogQGltcGxlbWVudGF0aW9uIFRl
c3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgeyB9CiAtIChpbnN0YW5jZXR5cGUpaW5pdAogewpA
QCAtNjEsNCArNjcsMTUgQEAKICAgICBfc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZSA9IHNo
b3VsZEFsbG93QW55U1NMQ2VydGlmaWNhdGU7CiB9CiAKKy0gKHZvaWQpd2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0b3JlIG9wZW5XaW5kb3c6KE5TVVJMICopdXJs
IGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VydmljZVdvcmtl
ck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tXZWJWaWV3ICpuZXdXZWJWaWV3
KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGF1dG8qIG5ld1ZpZXcgPSBXVFI6OlRlc3RDb250
cm9sbGVyOjpzaW5nbGV0b24oKS5jcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyKTsKKyAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBuZXdW
aWV3LT5wbGF0Zm9ybVZpZXcoKTsKKworICAgIEFTU0VSVCh3ZWJWaWV3LmNvbmZpZ3VyYXRpb24u
d2Vic2l0ZURhdGFTdG9yZSA9PSBkYXRhU3RvcmUpOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDp1cmxdXTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcih3ZWJWaWV3KTsKK30KKwogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455883</attachid>
            <date>2022-03-27 21:22:45 -0700</date>
            <delta_ts>2022-03-27 23:26:57 -0700</delta_ts>
            <desc>PFR v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60535</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTNkZDUxYzRmYzkuLjk0MWEwYWNmZDQxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAgIDxyZGFy
Oi8vOTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0tUUiBrbm93cyBob3cgdG8gb3BlbldpbmRvdygpIG5vdy4KKyAgICAgICAgCisgICAgICAgIFNv
IHRlc3Q6CisgICAgICAgIC0gVGhlIHN1Y2Nlc3MgY2FzZQorICAgICAgICAtIEZhaWx1cmUgZHVl
IHRvIGEgZGlzYWxsb3dlZCBVUkwKKyAgICAgICAgLSBGYWlsdXJlIGR1ZSB0byBhIGxhY2sgb2Yg
YSByZWxhdGVkIHVzZXIgZ2VzdHVyZS4KKyAgICAgICAgCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
aG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
eW5jIGNvbnN0KToKKyAgICAgICAgKGxldC5tZXNzYWdlQ2xpZW50cyk6CisgICAgICAgIChjbGll
bnRzLm9wZW5XaW5kb3cuc3RyaW5nX2FwcGVhcmVkX2hlcmUudGhlbi5hc3luYyBjbGllbnQpOgor
ICAgICAgICAoY2F0Y2guYXN5bmMgZXJyb3IpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorICAg
ICAgICAoYXN5bmMgdHJ5U2hvdyk6CisgICAgICAgIChhc3luYyBnZXROb3Rlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5k
b3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjUyMWUyN2JjY2YzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5v
dGlmaWNhdGlvbi1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0
cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBOb3RpZmljYXRpb24ucGVybWlzc2lv
biBpcyAiZ3JhbnRlZCIKK1BBU1MgZ290Q2xpY2tlZCBpcyBmYWxzZQorUEFTUyBnb3RDbG9zZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xpY2tlZCBpcyB0cnVlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxz
ZQorUEFTUyBnb3RBYm91dEJsYW5rRmFpbCBpcyB0cnVlCitQQVNTIGdvdFVzZXJHZXN0dXJlRmFp
bCBpcyB0cnVlCitQQVNTIGdvdFN1Y2Nlc3NmdWxOdWxsQ2xpZW50IGlzIHRydWUKK1BBU1MgTmV3
IGNsaWVudCBoYXMgYmVlbiBvYnNlcnZlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93
LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4zYzJjYzc5MjljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9u
LWNsaWNrLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9u
b3RpZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGZhaWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbih0ZXN0VVJMKTsKKyAgICBzZXRU
aW1lb3V0KCJmYWlsVGhlVGVzdCgndGltZWQgb3V0JykiLCAxNTAwMCk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25jbGljayBoYW5kbGVyIGNhbiBvcGVu
IGEgd2luZG93Iik7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiTm90aWZpY2F0aW9uLnBlcm1p
c3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1vcGVud2luZG93LXdvcmtl
ci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICByZXR1cm4gdGVz
dEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAgCisgICAgaWYgKHJlZ2lzdHJhdGlvbi5h
Y3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFjdGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBpbnN0YWxsaW5nV29ya2VyID0g
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCFpbnN0YWxsaW5nV29ya2VyKQorICAg
ICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciogaW5zdGFsbGluZyB3b3JrZXIiKTsKKwor
ICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9
PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2VyLnN0YXRlID09PSAiYWN0aXZhdGVkIikg
eworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5wb3N0TWVzc2FnZSgidHJ5c2hvdyIpOwor
ICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBnb3RDbGlja2VkID0gZmFsc2U7Cit2YXIgZ290
Q2xvc2VkID0gZmFsc2U7Cit2YXIgZ290TmV3Q2xpZW50ID0gZmFsc2U7Cit2YXIgZ290QWJvdXRC
bGFua0ZhaWwgPSBmYWxzZTsKK3ZhciBnb3RVc2VyR2VzdHVyZUZhaWwgPSBmYWxzZTsKK3ZhciBn
b3RTdWNjZXNzZnVsTnVsbENsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlm
IChldmVudC5kYXRhID09ICJnb3RBYm91dEJsYW5rRmFpbCIpIHsKKyAgICAgICAgZ290QWJvdXRC
bGFua0ZhaWwgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiZ290VXNlckdl
c3R1cmVGYWlsIikgeworICAgICAgICBnb3RVc2VyR2VzdHVyZUZhaWwgPSB0cnVlOworICAgIH0g
ZWxzZSBpZiAoZXZlbnQuZGF0YSA9ICJnb3RTdWNjZXNzZnVsTnVsbENsaWVudCIpIHsKKyAgICAg
ICAgZ290U3VjY2Vzc2Z1bE51bGxDbGllbnQgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIk1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGdvdE5ld0NsaWVudCkgeworICAgICAgICBzaG91bGRCZVRydWUoImdvdEFi
b3V0QmxhbmtGYWlsIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290VXNlckdlc3R1cmVGYWls
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290U3VjY2Vzc2Z1bE51bGxDbGllbnQiKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiTmV3IGNsaWVudCBoYXMgYmVlbiBvYnNlcnZlZCIpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICB9Cit9KTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJl
Z2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29w
ZW53aW5kb3ctY2xpZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mNDkxOTMyOWE1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbApAQCAt
MCwwICsxLDE2IEBACis8aGVhZD4KKzxzY3JpcHQ+CisgICAgCituYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVu
dC5kYXRhICE9ICJlY2hvIikKKyAgICAgICAgcmV0dXJuOworCisgICAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsK
KyAgICAgICAgcmVnaXN0cmF0aW9uLmFjdGl2ZS5wb3N0TWVzc2FnZSgiZWNobyBiYWNrIik7Cisg
ICAgfSk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
aG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRv
dy13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NWJj
MzQyYmMzMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1vcGVud2luZG93LXdvcmtlci5q
cwpAQCAtMCwwICsxLDEwOCBAQAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlv
bihtc2cpIHsgCisgICAgY29uc3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwo
eworICAgICAgICBpbmNsdWRlVW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3Ig
KGNvbnN0IGNsaWVudCBvZiBhbGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2Uo
bXNnKTsKK30KKworLy8gVHJ5IHRvIG9wZW4gYSBuZXcgd2luZG93IG5vdy4KKy8vIEl0IHNob3Vs
ZCBmYWlsIGR1ZSB0byBsYWNrIG9mIHVzZXIgZ2VzdHVyZQorY2xpZW50cy5vcGVuV2luZG93KCdo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93
LWNsaWVudC5odG1sJykudGhlbihhc3luYyBmdW5jdGlvbihjbGllbnQpIHsKKyAgICBhd2FpdCBt
ZXNzYWdlQ2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGllbnQgd2l0aG91dCBhIHVzZXIgZ2Vz
dHVyZSBTVUNDRUVERUQuIEl0IHNob3VsZCd2ZSBmYWlsZWQuIik7Cit9KS5jYXRjaChhc3luYyBm
dW5jdGlvbihlcnJvcikgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3RVc2VyR2VzdHVy
ZUZhaWwiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNr
JywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xp
Y2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5jbG9zZSgpOworCisgICAgLy8gU2hvdWxk
IGZhaWwgYmVjYXVzZSBhYm91dDpibGFuayBpcyBub3QgYW4gYWxsb3dhYmxlIFVSTAorICAgIGNs
aWVudHMub3BlbldpbmRvdygnYWJvdXQ6YmxhbmsnKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGNsaWVu
dCkgeworICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGll
bnQgdG8gYWJvdXQ6YmxhbmsgU1VDQ0VFREVELiBJdCBzaG91bGQndmUgZmFpbGVkLiIpOworICAg
IH0pLmNhdGNoKGFzeW5jIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGF3YWl0IG1lc3NhZ2VD
bGllbnRzKCJnb3RBYm91dEJsYW5rRmFpbCIpOworICAgIH0pOworICAgIAorICAgIGNsaWVudHMu
b3BlbldpbmRvdygnaHR0cDovLzEyNy4wLjAuMTo4MDAwL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbCcpLnRoZW4oZnVuY3Rpb24oY2xpZW50KSB7CisgICAg
ICAgIGNsaWVudC5wb3N0TWVzc2FnZSgiZWNobyIpOworICAgIH0pOworCisgICAgLy8gVGhpcyBz
dWNjZXNzZnVsbHkgbG9hZHMgdGhlIG9wZW53aW5kb3ctY2xpZW50Lmh0bWwgcmVzb3VyY2UsIGJ1
dCB0aGUgb3JpZ2luIGlzIGRpZmZlcmVudCwgdGhlcmVmb3JlIHRoZSBzZXJ2aWNld29ya2VyCisg
ICAgLy8gc2hvdWxkIE5PVCBnZXQgYSBXaW5kb3dDbGllbnQKKyAgICBjbGllbnRzLm9wZW5XaW5k
b3coJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53
aW5kb3ctY2xpZW50Lmh0bWwnKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAg
ICBpZiAoY2xpZW50ID09IG51bGwpCisgICAgICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygi
Z290U3VjY2Vzc2Z1bE51bGxDbGllbnQiKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBhd2Fp
dCBtZXNzYWdlQ2xpZW50cygiR290IGEgV2luZG93Q2xpZW50IHdoZW4gd2Ugd2VyZSAqbm90KiBl
eHBlY3RpbmcgdG8iKTsKKyAgICB9KS5jYXRjaChhc3luYyBmdW5jdGlvbihlcnJvcikgeworICAg
ICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiRXhwZWN0ZWQgYSByZXNvbHZlZCBwcm9taXNlIHdp
dGggYSBudWxsIHdpbmRvdyBjbGllbnQuIFByb21pc2UgcmVqZWN0ZWQgaW5zdGVhZCIpOworICAg
IH0pOworfSk7CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xvc2UnLCBh
c3luYyBmdW5jdGlvbihldmVudCkgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJjbG9zZWQi
KTsKK30pOworCithc3luYyBmdW5jdGlvbiB0cnlTaG93KG1lc3NhZ2UpCit7CisgICAgdmFyIHRp
dGxlLCBib2R5LCB0YWc7CisgICAgdmFyIGNvbXBvbmVudHMgPSBtZXNzYWdlLnNwbGl0KCd8Jyk7
CisKKyAgICBpZiAoY29tcG9uZW50cy5sZW5ndGggPT0gMSkgeworICAgICAgICB0aXRsZSA9ICJU
aGlzIGlzIGEgbm90aWZpY2F0aW9uIjsgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHRp
dGxlID0gY29tcG9uZW50c1sxXTsKKyAgICAgICAgYm9keSA9IGNvbXBvbmVudHNbMl07CisgICAg
ICAgIHRhZyA9IGNvbXBvbmVudHNbM107CisgICAgfQorICAgIAorICAgIHRyeSB7CisgICAgICAg
IGF3YWl0IHJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHRpdGxlLCB7CisgICAgICAgICAg
ICBib2R5OiBib2R5LAorICAgICAgICAgICAgdGFnOiB0YWcKKyAgICAgICAgfSk7CisgICAgfSBj
YXRjaChlcnJvcikgeworICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd0ZhaWxlZCIp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRz
KCJzaG93biIpOworfQorCit2YXIgc2Vlbk5vdGVzID0gbmV3IFNldCgpOworCithc3luYyBmdW5j
dGlvbiBnZXROb3RlcyhtZXNzYWdlKQoreworICAgIHZhciB0YWcgPSB1bmRlZmluZWQ7CisgICAg
dmFyIGNvbXBvbmVudHMgPSBtZXNzYWdlLnNwbGl0KCd8Jyk7CisgICAgaWYgKGNvbXBvbmVudHMu
bGVuZ3RoID09IDIpCisgICAgICAgIHRhZyA9IGNvbXBvbmVudHNbMV07CisKKyAgICB2YXIgbm90
aWZpY2F0aW9ucyA9IGF3YWl0IHJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zKHsgdGFnOiB0
YWcgfSk7CisgICAgdmFyIHJlcGx5ID0gImdvdG5vdGVzfFRoZXJlIGFyZSAiICsgbm90aWZpY2F0
aW9ucy5sZW5ndGggKyAiIG5vdGlmaWNhdGlvbnN8IjsKKworICAgIGZvciAobm90aWZpY2F0aW9u
IG9mIG5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgaWYgKHNlZW5Ob3Rlcy5oYXMobm90aWZpY2F0
aW9uKSkKKyAgICAgICAgICAgIG1lc3NhZ2VDbGllbnRzKCJTYXcgdGhlIHNhbWUgbm90aWZjYXRp
b24gdHdpY2UgdGhyb3VnaCBnZXROb3RpZmljYXRpb25zKCksIHRoaXMgc2hvdWxkIG5vdCBoYXBw
ZW4iKTsKKyAgICAgICAgc2Vlbk5vdGVzLmFkZChub3RpZmljYXRpb24pCisgICAgICAgIAorICAg
ICAgICByZXBseSArPSAiVGl0bGU6ICIgKyBub3RpZmljYXRpb24udGl0bGUgKyAifCI7CisgICAg
ICAgIHJlcGx5ICs9ICJCb2R5OiAiICsgbm90aWZpY2F0aW9uLmJvZHkgKyAifCI7CisgICAgICAg
IHJlcGx5ICs9ICJUYWc6ICIgKyBub3RpZmljYXRpb24udGFnICsgInwiOworICAgIH0KKyAgICBh
d2FpdCBtZXNzYWdlQ2xpZW50cyhyZXBseSk7Cit9CisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcign
bWVzc2FnZScsIGFzeW5jIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIG1lc3NhZ2VOYW1lID0g
ZXZlbnQuZGF0YS5zcGxpdCgnfCcpWzBdOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAidHJ5c2hv
dyIpCisgICAgICAgIGF3YWl0IHRyeVNob3coZXZlbnQuZGF0YSk7CisgICAgaWYgKG1lc3NhZ2VO
YW1lID09ICJnZXRub3RlcyIpCisgICAgICAgIGF3YWl0IGdldE5vdGVzKGV2ZW50LmRhdGEpOwor
ICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZWNobyBiYWNrIikKKyAgICAgICAgYXdhaXQgbWVzc2Fn
ZUNsaWVudHMoImdvdE5ld0NsaWVudCIpOworfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDY0ZDQ5MWMxNjViZC4uYWJmYzAyZDZkZjBlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzEwLDYgKzcxMCw3IEBA
IHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnCiB3ZWJraXQub3JnL2IvMTc1NDE5IGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvc2Vydmlj
ZXdvcmtlci9jYWNoZS1zdG9yYWdlLW1hdGNoLmh0dHBzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5v
cmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvY2FjaGUtc3RvcmFnZS9zZXJ2aWNld29ya2VyL2NyZWRlbnRpYWxzLmh0dHBzLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xNzU0MTkgWyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvcG9zdG1lc3NhZ2UtYWZ0ZXItdGVybWluYXRlLmh0dHBzLmh0bWwgWyBQYXNzIEZh
aWx1cmUgVGltZW91dCBdCit3ZWJraXQub3JnL2IvMTc1NDE5IGh0dHAvdGVzdHMvd29ya2Vycy9z
ZXJ2aWNlL29wZW53aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbCBbIFNraXAgXQog
CiAjIEZJWE1FOiBUaGlzIGNhbid0IGJlIHRoZSByaWdodCBidWcgbnVtYmVyLgogd2Via2l0Lm9y
Zy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL2FwaS9hYm9y
dC9zZXJ2aWNld29ya2VyLWludGVyY2VwdGVkLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXgg
MDRiNGI5ODRkNWJiLi4yNzJkZDU2ZjcwYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjItMDMt
MjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQg
U2VydmljZVdvcmtlckNsaWVudHMub3BlbldpbmRvdy4KKyAgICAgICAgPHJkYXI6Ly85MDYxNjY1
MT4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0MDAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9IYXNo
VGFibGUuaDoKKyAgICAgICAgKFdURjo6S2V5VHJhaXRzPjo6aW5saW5lTG9va3VwKTogUmVsYXgg
dGhpcyB2YWx1ZSBzaXplIHJlcXVpcmVtZW50IGZvciBub3cuCisgICAgICAgIFRoZSByZXF1aXJl
ZCByZWZhY3RvcmluZyBpcyBiZXN0IGxlZnQgYXMgYSBzZXBlcmF0ZSB0YXNrIHdpdGggYSBzZXBl
cmF0ZSBwYXRjaC4KKwogMjAyMi0wMy0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CiAKICAgICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuZm9jdXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oIGIvU291cmNlL1dURi93dGYv
SGFzaFRhYmxlLmgKaW5kZXggMmU2NDQxNGY3YWMwLi4zZWE5YjViNGZiYjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJs
ZS5oCkBAIC02ODEsNyArNjgxLDcgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5U
SUZJRVIoSGFzaFRhYmxlKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwg
dHlwZW5hbWUgVD4KICAgICBBTFdBWVNfSU5MSU5FIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUs
IEV4dHJhY3RvciwgSGFzaEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjppbmxpbmVMb29r
dXAoY29uc3QgVCYga2V5KSAtPiBWYWx1ZVR5cGUqCiAgICAgewotICAgICAgICBzdGF0aWNfYXNz
ZXJ0KHNpemVvZihWYWx1ZSkgPD0gMTI4LCAiWW91ciBIYXNoVGFibGUgdHlwZXMgYXJlIHRvbyBi
aWcgdG8gZWZmaWNpZW50bHkgbW92ZSB3aGVuIHJlaGFzaGluZy4gIENvbnNpZGVyIHVzaW5nIFVu
aXF1ZVJlZiBpbnN0ZWFkIik7CisgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFZhbHVlKSA8
PSAxNTAsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0byBlZmZpY2llbnRseSBt
b3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVlUmVmIGluc3RlYWQiKTsK
ICAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7CiAKICAgICAgICAgdW5zaWdu
ZWQgayA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI1MzcyZjE0ZmFhLi42M2E2YzMwZTllYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAyMi0wMy0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVu
V2luZG93LgorICAgICAgICA8cmRhcjovLzkwNjE2NjUxPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29w
ZW53aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbAorCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpwYWdlSUQgY29uc3QpOgor
ICAgICAgICAKKyAgICAgICAgKiBwYWdlL0NsaWVudE9yaWdpbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpZW50T3JpZ2luOjpsb2dnaW5nU3RyaW5nIGNvbnN0KToKKyAgICAgICAgCisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjppc29sYXRlZENvcHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZnJvbSk6CisgICAg
ICAgIAorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKToK
KyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KToKKyAg
ICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdl
ci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldv
cmtlci5oOgorCiAyMDIyLTAzLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5mb2N1cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZmRjY2Y3Nzc4YWU3Li5hZDBmNjE2ZTNlNmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODQwOCw3ICs4NDA4LDcgQEAgTG9nZ2VyJiBEb2N1bWVu
dDo6bG9nZ2VyKCkKICAgICAKIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50
OjpwYWdlSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5wYWdlSUQo
KTsKKyAgICByZXR1cm4gbV9mcmFtZSA/IG1fZnJhbWUtPmxvYWRlcigpLnBhZ2VJRCgpIDogc3Rk
OjpudWxsb3B0OwogfQogCiBzdGQ6Om9wdGlvbmFsPEZyYW1lSWRlbnRpZmllcj4gRG9jdW1lbnQ6
OmZyYW1lSUQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRP
cmlnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xpZW50T3JpZ2luLmgKaW5kZXggNjIwNDAx
MGZhZmNlLi42ZTE0OTMxNDg1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2xp
ZW50T3JpZ2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaApAQCAt
NTAsNiArNTAsOCBAQCBzdHJ1Y3QgQ2xpZW50T3JpZ2luIHsKIAogICAgIFNlY3VyaXR5T3JpZ2lu
RGF0YSB0b3BPcmlnaW47CiAgICAgU2VjdXJpdHlPcmlnaW5EYXRhIGNsaWVudE9yaWdpbjsKKwor
ICAgIFN0cmluZyBsb2dnaW5nU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbWFrZVN0cmluZyh0b3BP
cmlnaW4udG9TdHJpbmcoKSwgIi0iLCBjbGllbnRPcmlnaW4udG9TdHJpbmcoKSk7IH0KIH07CiAK
IGlubGluZSB2b2lkIGFkZChIYXNoZXImIGhhc2hlciwgY29uc3QgQ2xpZW50T3JpZ2luJiBvcmln
aW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJDbGllbnREYXRhLmNwcAppbmRleCA5YTk3MGM2NDRjZmIuLjkzNWI3OTNhYmEwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
bGllbnREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEuY3BwCkBAIC01OCwxMiArNTgsMTIgQEAgc3RhdGljIFNlcnZpY2VX
b3JrZXJDbGllbnRGcmFtZVR5cGUgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKFNjcmlw
dEV4ZWN1dGkKIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERh
dGE6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKIHsKLSAgICByZXR1cm4geyBpZGVudGlmaWVyLCB0
eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CisgICAgcmV0dXJu
IHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCB1cmwuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJ
ZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCwgaXNWaXNpYmxlLCBpc0Zv
Y3VzZWQsIGZvY3VzT3JkZXIgfTsKIH0KIAogU2VydmljZVdvcmtlckNsaWVudERhdGEgU2Vydmlj
ZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSgpICYmCiB7Ci0gICAgcmV0dXJuIHsgaWRl
bnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBXVEZNb3ZlKHVybCkuaXNvbGF0ZWRDb3B5KCksIGxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNlZCwgZm9jdXNP
cmRlciB9OworICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUsIGZyYW1lVHlwZSwgV1RGTW92
ZSh1cmwpLmlzb2xhdGVkQ29weSgpLCBwYWdlSWRlbnRpZmllciwgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVyIH07CiB9CiAKIFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCkBAIC03OCw3ICs3OCw5IEBAIFNlcnZpY2VXb3Jr
ZXJDbGllbnREYXRhIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvCiAgICAgICAgIGNvbnRleHQuaWRlbnRpZmllcigpLAogICAgICAgICBpc0Rv
Y3VtZW50ID8gU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyA6IFNlcnZpY2VXb3JrZXJD
bGllbnRUeXBlOjpXb3JrZXIsCiAgICAgICAgIHRvU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZShjb250ZXh0KSwKLSAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwgbGFzdE5hdmlnYXRp
b25XYXNBcHBJbml0aWF0ZWQsCisgICAgICAgIGRvY3VtZW50LmNyZWF0aW9uVVJMKCksCisgICAg
ICAgIGRvY3VtZW50LnBhZ2VJRCgpLAorICAgICAgICBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCwKICAgICAgICAgIWRvY3VtZW50LmhpZGRlbigpLAogICAgICAgICBkb2N1bWVudC5oYXNG
b2N1cygpLAogICAgICAgICAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCmluZGV4IDg1ZTEwODNkN2Q0MS4uMTQ5
YTUxYTIxZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckNsaWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJQcm9jZXNzUXVhbGlmaWVkLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZS5oIgpAQCAt
NDUsNiArNDYsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogICAgIFNlcnZp
Y2VXb3JrZXJDbGllbnRUeXBlIHR5cGU7CiAgICAgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlw
ZSBmcmFtZVR5cGU7CiAgICAgVVJMIHVybDsKKyAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSWRlbnRpZmllcjsKICAgICBMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCBs
YXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsKICAgICBib29sIGlzVmlzaWJsZSB7IGZhbHNl
IH07CiAgICAgYm9vbCBpc0ZvY3VzZWQgeyBmYWxzZSB9OwpAQCAtNjIsNyArNjQsNyBAQCBzdHJ1
Y3QgU2VydmljZVdvcmtlckNsaWVudERhdGEgewogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewotICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8IGZyYW1lVHlwZSA8PCB1
cmwgPDwgbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9j
dXNlZCA8PCBmb2N1c09yZGVyOworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8PCB0eXBlIDw8
IGZyYW1lVHlwZSA8PCB1cmwgPDwgcGFnZUlkZW50aWZpZXIgPDwgbGFzdE5hdmlnYXRpb25XYXNB
cHBJbml0aWF0ZWQgPDwgaXNWaXNpYmxlIDw8IGlzRm9jdXNlZCA8PCBmb2N1c09yZGVyOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtODgsNiArOTAsMTEgQEAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVudERhdGE6OmRlY29k
ZShEZWNvZGVyJgogICAgIGlmICghdXJsKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CisgICAgc3RkOjpvcHRpb25hbDxzdGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlk
ZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwYWdlSWRlbnRpZmllcjsKKyAgICBpZiAoIXBhZ2VJ
ZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRp
b25hbDxMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZD4gbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ7CiAgICAgZGVjb2RlciA+PiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDsK
ICAgICBpZiAoIWxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKQpAQCAtMTA4LDcgKzExNSw3
IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IFNlcnZpY2VXb3JrZXJD
bGllbnREYXRhOjpkZWNvZGUoRGVjb2RlciYKICAgICBpZiAoIWZvY3VzT3JkZXIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmlkZW50aWZp
ZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJhbWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwg
V1RGTW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2li
bGUpLCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CisgICAg
cmV0dXJuIHsgeyBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqdHlwZSksIFdURk1vdmUo
KmZyYW1lVHlwZSksIFdURk1vdmUoKnVybCksIFdURk1vdmUoKnBhZ2VJZGVudGlmaWVyKSwgV1RG
TW92ZSgqbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpLCBXVEZNb3ZlKCppc1Zpc2libGUp
LCBXVEZNb3ZlKCppc0ZvY3VzZWQpLCBXVEZNb3ZlKCpmb2N1c09yZGVyKSB9IH07CiB9CiAKIHVz
aW5nIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayA9IENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmKT47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNw
cAppbmRleCBlMjk5MTg5NzFhNTAuLjg0YWU2N2UzOTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCkBAIC05
MCwxMCArOTAsNzYgQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6bWF0Y2hBbGwoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgQ2xpZW4KICAgICB9KTsKIH0KIAotdm9p
ZCBTZXJ2aWNlV29ya2VyQ2xpZW50czo6b3BlbldpbmRvdyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0
YXRpYyB2b2lkIG1hdGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmLCBz
dGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgVU5VU0VEX1BBUkFNKHVybCk7Ci0gICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IE5v
dFN1cHBvcnRlZEVycm9yLCAiY2xpZW50cy5vcGVuV2luZG93KCkgaXMgbm90IHlldCBzdXBwb3J0
ZWQiX3MgfSk7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IHBhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoKSBtdXRhYmxl
IHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbigpOworICAgICAgICBhdXRvIG9wdGlvbnMgPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50UXVlcnlPcHRpb25zIHsgdHJ1ZSwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdyB9
OworICAgICAgICBjb25uZWN0aW9uLT5tYXRjaEFsbChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwg
b3B0aW9ucywgW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBwYWdlSWRlbnRpZmllciwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKFZlY3RvcjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4m
JiBjbGllbnRzRGF0YSkgbXV0YWJsZSB7CisgICAgICAgICAgICBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS5wb3N0VGFza1RvU2VydmljZVdvcmtlcihzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgW3BhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBjbGllbnRz
RGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGNsaWVudHNEYXRhKSldIChhdXRvJiBzY29w
ZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBkYXRhIDogY2xpZW50c0Rh
dGEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucGFnZUlkZW50aWZpZXIgPT0gcGFn
ZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3BlLCBk
YXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbGxiYWNrKHNjb3Bl
LCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmIHByb21pc2UpCit7CisgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNz
ICVpIHNlcnZpY2Ugd29ya2VyIGNhbGxpbmcgb3BlbldpbmRvdyB0byBVUkwgJXMiLCBnZXRwaWQo
KSwgdXJsU3RyaW5nLnV0ZjgoKS5kYXRhKCkpOworCisgICAgYXV0byBzZXJ2aWNlV29ya2VySWRl
bnRpZmllciA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkudGhy
ZWFkKCkuaWRlbnRpZmllcigpOworICAgIGF1dG8gdXJsID0gY29udGV4dC5jb21wbGV0ZVVSTCh1
cmxTdHJpbmcpOworCisgICAgaWYgKGNvbnRleHQuc2V0dGluZ3NWYWx1ZXMoKS5zZXJ2aWNlV29y
a2Vyc1VzZXJHZXN0dXJlRW5hYmxlZCAmJiAhZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKSB7CisgICAgICAgIHByb21p
c2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IsICJTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5vcGVuV2luZG93KCkgcmVxdWlyZXMgYSB1c2VyIGdlc3R1cmUiX3MgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgbWFrZVN0cmluZygiVVJMIHN0
cmluZyAiLCB1cmxTdHJpbmcsICIgY2Fubm90IHN1Y2Nlc3NmdWxseSBiZSBwYXJzZWQiX3MpIH0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHVybC5wcm90b2NvbElzQWJvdXQo
KSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtl
U3RyaW5nKCJTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93KCkgY2Fubm90IGJlIGNhbGxl
ZCB3aXRoIFVSTCAiX3MsIHVybC5zdHJpbmcoKSkgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm9taXNlSWRlbnRpZmllciA9IGFkZFBlbmRpbmdQ
cm9taXNlKFdURk1vdmUocHJvbWlzZSkpLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgdXJsID0g
dXJsLmlzb2xhdGVkQ29weSgpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb25uZWN0aW9u
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgICAgICBj
b25uZWN0aW9uLT5vcGVuV2luZG93KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwuc3RyaW5n
KCksIFtwcm9taXNlSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChzdGQ6Om9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29y
a2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBbcHJvbWlzZUlkZW50aWZpZXIsIHBhZ2VJZGVu
dGlmaWVyID0gV1RGTW92ZShwYWdlSWRlbnRpZmllciksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
XSAoU2VydmljZVdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJXZWJQcm9jZXNzICVpIGZpbmlzaGVkIFNlcnZpY2VX
b3JrZXJDbGllbnRzOjpvcGVuV2luZG93IGNhbGwuIFJlc3VsdGluZyBwYWdlIGlkZW50aWZpZXIg
aXMgJXMiLCBnZXRwaWQoKSwgcGFnZUlkZW50aWZpZXIgPyBwYWdlSWRlbnRpZmllci0+bG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiPE5PTkU+Iik7CisKKyAgICAgICAgICAgICAgICBp
ZiAoIXBhZ2VJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIHByb21p
c2UgPSBzY29wZS5jbGllbnRzKCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVy
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoSlNWYWx1ZShK
U0M6OmpzTnVsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIG1hdGNoV2luZG93V2l0aFBhZ2VJZGVudGlmaWVyKHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCAqcGFnZUlkZW50aWZpZXIsIFtwcm9taXNlSWRlbnRpZmll
cl0gKGF1dG8mIHNjb3BlLCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiBj
bGllbnREYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBwcm9taXNlID0g
c2NvcGUuY2xpZW50cygpLnRha2VQZW5kaW5nUHJvbWlzZShwcm9taXNlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghcHJvbWlzZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWVudERhdGEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmVXaXRoSlNWYWx1ZShKU0M6OmpzTnVs
bCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgIGF1dG8gY2xpZW50ID0gU2VydmljZVdvcmtlckNs
aWVudDo6Y3JlYXRlKHNjb3BlLCBXVEZNb3ZlKCpjbGllbnREYXRhKSk7CisgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnRlbXBsYXRlIHJlc29sdmU8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3Jr
ZXJDbGllbnQ+PihXVEZNb3ZlKGNsaWVudCkpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJD
bGllbnRzOjpjbGFpbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZmNmNWVlMDljOGE1
Li5mZWU3YzE1ZDJiODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY3LDggKzY3LDggQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluZENsaWVudEJ5VmlzaWJsZUlkZW50aWZpZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIEZpbmRDbGllbnRCeUlkZW50
aWZpZXJDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9u
cyYsIFNlcnZpY2VXb3JrZXJDbGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgPSAwOwotCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBmb2N1cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhPiYmKT4mJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvdyhTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mJik+JiYpID0gMDsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKaW5kZXggNjE4NjM0NmNkMTc2Li44ZTBkYTk1MjMxY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb24uaApAQCAtODIsNiArODIsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9v
bCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmll
cihTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdv
cmtlckNsaWVudERhdGE+JiYpPiYmKTsKIAorICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4m
JikgPSAwOworCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIHN0ZDo6b3B0aW9u
YWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNlcnZpY2VXb3JrZXJQYWdlSWRl
bnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaAppbmRleCA5ZWRkNDQ1ZTZjYmMuLjE2MDA2NWQzNmViZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTZXJ2aWNlV29ya2Vy
RGF0YSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBjb250ZXh0RGF0YSgpIGNvbnN0OwogCi0gICAgY29uc3QgQ2xpZW50T3JpZ2lu
JiBvcmlnaW4oKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBDbGllbnRPcmlnaW4m
IG9yaWdpbigpIGNvbnN0OwogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJs
ZURvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KICAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
PiBzZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXIoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA3MzQ4
YTU0ZDAwZmUuLmZiMjUwZjM4ZGFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMi0w
My0yNyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9y
dCBTZXJ2aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93LgorICAgICAgICA8cmRhcjovLzkwNjE2
NjUxPiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBBUEkgYXNrcyB0aGUgYnJvd3NlciB0byBhc3luY2hyb25vdXNseSBvcGVuIGEgbmV3IHRh
YiB0byBhIFVSTCB0aGVuIHJlc29sdmUKKyAgICAgICAgYSBwcm9taXNlIHdpdGggdGhlIG5ldyBX
aW5kb3dDbGllbnQgcmVwcmVzZW50aW5nIHRoYXQgdGFiLgorICAgICAgICAgICAgCisgICAgICAg
IEZyb20gYSBXZWJDb3JlL1dlYktpdCBzdGFuZHBvaW50LCBpbXBsZW1lbnRpbmcgdGhpcyB3YXMg
bW9zdGx5IHN0cmFpZ2h0Zm9yd2FyZC4KKyAgICAgICAgMSAtIEEgcGx1bWJpbmcgZXhlcmNpc2Ug
KHRocmVhZCBob3BwaW5nIGFuZCBJUEMnaW5nIHRoZSBtZXNzYWdlIGFuZCBpdHMgcmVwbHkgYXJv
dW5kKQorICAgICAgICAyIC0gSW1wbG1lbnRpbmcgYSBuZXcgZGVsZWdhdGUgbWV0aG9kIGZvciB0
aGUgaG9zdGluZyBhcHAgdG8gY3JlYXRlIHRoZSByZXF1ZXN0ZWQgV0tXZWJWaWV3CisgICAgICAg
IAorICAgICAgICBUaGUgZGVsZWdhdGUgbWV0aG9kIHdhcyBpbnRlcmVzdGluZy4gTm9ybWFsbHkg
dGhpcyBpcyB0aGUgdHlwZSBvZiB0aGluZyB0aGF0J2QgZ28gdG8gdGhlCisgICAgICAgIFdLVUlE
ZWxlZ2F0ZSBidXQgdGhhdCByZXF1aXJlcyB0aGVyZSB0byBiZSBhIFdLV2ViVmlldywgYW5kIHNl
cnZpY2Ugd29ya2VycyBjYW4gYmUgcnVubmluZworICAgICAgICB3aXRob3V0IGFueSB3ZWIgdmll
d3MuCisgICAgICAgIAorICAgICAgICBGb3J0dW5hdGVseSB3ZSBhbHJlYWR5IGhhZCBhIFdLV2Vi
c2l0ZURhdGFTdG9yZSBkZWxlZ2F0ZSBTUEksIGFuZCBzZXJ2aWNlIHdvcmtlcnMgKmRvKiBhbHdh
eXMKKyAgICAgICAgaGF2ZSBhbiBhc3NvY2lhdGVkIHdlYnNpdGUgZGF0YSBzdG9yZSB0aGV5J3Jl
IHJ1bm5pbmcgdW5kZXIuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSBhcHAgZ2l2ZXMgdGhl
IG5ldyB3ZWIgdmlldyBiYWNrIHRvIFdlYktpdCwgd2UgcmVjb3JkIGl0cyBQYWdlSWRlbnRpZmll
ciBpbiB0aGUgcmVwbHkuCisgICAgICAgIAorICAgICAgICBPbmNlIHRoZSByZXBseSBtYWtlcyBp
dHMgd2F5IGFsbCB0aGUgd2F5IGJhY2sgdG8gdGhlIFNlcnZpY2VXb3JrZXIgcHJvY2VzcyBhbmQg
b24gdGhlIAorICAgICAgICBTZXJ2aWNlV29ya2VyIHRocmVhZCwgd2UgZG8gYSBjbGllbnQgbWF0
Y2ggYW5kIGNyb3NzIGNoZWNrIHdpdGggdGhhdCBQYWdlSWRlbnRpZmllciB0byBtYWtlCisgICAg
ICAgIHN1cmUgd2UncmUgcmVzb2x2aW5nIHRoZSBwcm9taXNlIHdpdGggdGhlIGNvcnJlY3QgV2lu
ZG93Q2xpZW50LgorICAgICAgICAKKyAgICAgICAgSWYgdGhlcmUncyBubyBtYXRjaGVkIGNsaWVu
dHMsIHRoZW4gdGhlIHZpZXcgaXMgZWl0aGVyIGFscmVhZHkgZ29uZSBvciBpdCBoYXMgbmF2aWdh
dGVkIGF3YXkKKyAgICAgICAgdG8gYSBub24tYXBwbGljYWJsZSBVUkwuCisgICAgICAgIAorICAg
ICAgICBTYW1lIGlmIHRoZXJlIGFyZSBtYXRjaGVkIGNsaWVudHMsIGJ1dCB0aGV5IGRvbid0IG1h
dGNoIHRoZSBzcGVjaWZpZWQgUGFnZUlkZW50aWZpZXIuCisKKyAgICAgICAgQSBzdHJhaWdodCBm
b3J3YXJkIGxheW91dHRlc3QgY29tcGxldGVzIHRoZSB0YXNrLgorICAgICAgICAKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udHJvbENsaWVudCk6
CisgICAgICAgIAorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpvcGVuV2luZG93KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRD
b25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0
b3JlIHNldF9kZWxlZ2F0ZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3NQcm94eTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6Y2FsbExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNldFN0YXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpjYWxsU2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVy
SWZOZWNlc3NhcnkpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6b3BlbldpbmRvd0Zyb21TZXJ2
aWNlV29ya2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNsaWVudDo6b3Bl
bldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpkaWRDbGlja05vdGlmaWNhdGlvbik6CisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6b3BlbldpbmRvdyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmg6CisKIDIwMjItMDMtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgog
CiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDQ1MmM2NzExMzgwZi4uZTll
YjIzOTlhOThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAt
MTc1LDcgKzE3NSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGNsaWVuCiAgICAgICAgIHVucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNsaWVudElkZW50aWZpZXIpOwogICAgIH0pOwogCi0gICAg
U2VydmljZVdvcmtlckNsaWVudERhdGEgZGF0YSB7IGNsaWVudElkZW50aWZpZXIsIFNlcnZpY2VX
b3JrZXJDbGllbnRUeXBlOjpXaW5kb3csIFNlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGU6Ok5v
bmUsIHJlcXVlc3QudXJsKCksIHJlcXVlc3QuaXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxh
c3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlv
bldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKKyAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRh
IHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtlckNsaWVudFR5cGU6OldpbmRvdywgU2Vy
dmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwgcmVxdWVzdC51cmwoKSwgeyB9LCByZXF1
ZXN0LmlzQXBwSW5pdGlhdGVkKCkgPyBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDo6WWVzIDogV2ViQ29yZTo6TGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6Ok5vIH07
CiAgICAgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KFNlY3VyaXR5T3JpZ2luRGF0YSB7IHJl
Z2lzdHJhdGlvbi5rZXkoKS50b3BPcmlnaW4oKSB9LCBXVEZNb3ZlKGRhdGEpLCByZWdpc3RyYXRp
b24uaWRlbnRpZmllcigpLCByZXF1ZXN0Lmh0dHBVc2VyQWdlbnQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggMDM2
NzVhODQ0NDJlLi4wMDkzMjM2ZjJmNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xNTcsNiArMTU3LDI3IEBAIHZvaWQgV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjp0ZXJtaW5hdGVEdWVUb1VucmVzcG9uc2l2ZW5l
c3MoKQogICAgIG1fY29ubmVjdGlvbi5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlcm1pbmF0ZVVu
cmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMgeyB3ZWJQcm9jZXNzSWRlbnRpZmllcigp
IH0sIDApOwogfQogCit2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6b3Blbldp
bmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRvKiBzZXJ2
ZXIgPSB0aGlzLT5zZXJ2ZXIoKTsKKyAgICBpZiAoIXNlcnZlcikgeworICAgICAgICBjYWxsYmFj
ayhzdGQ6Om51bGxvcHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byogd29y
a2VyID0gc2VydmVyLT53b3JrZXJCeUlEKGlkZW50aWZpZXIpOworICAgIGlmICghd29ya2VyKSB7
CisgICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBhdXRvIGlubmVyQ2FsbGJhY2sgPSBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KV0oc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJiBwYWdlSWRlbnRpZmll
cikgbXV0YWJsZSB7CisgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocGFnZUlkZW50aWZpZXIpKTsK
KyAgICB9OworCisgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpPcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIgeyBzZXJ2ZXItPnNlc3Npb25JRCgp
LCB1cmxTdHJpbmcsIHdvcmtlci0+b3JpZ2luKCkuY2xpZW50T3JpZ2luIH0sIFdURk1vdmUoaW5u
ZXJDYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6
bWF0Y2hBbGxDb21wbGV0ZWQodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNvbnN0IFZlY3Rv
cjxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4mIGNsaWVudHNEYXRhKQogewogICAgIHNlbmQoTWVz
c2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpNYXRjaEFsbENvbXBsZXRlZCB7
IHJlcXVlc3RJZGVudGlmaWVyLCBjbGllbnRzRGF0YSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAppbmRleCAwM2Q5MzZjY2QzMmEuLjgwYjMw
M2U0NGRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaApAQCAtMTAyLDYgKzEwMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbm5lY3Rp
b25Jc05vTG9uZ2VyTmVlZGVkKCkgZmluYWw7CiAgICAgdm9pZCB0ZXJtaW5hdGVEdWVUb1VucmVz
cG9uc2l2ZW5lc3MoKSBmaW5hbDsKKyAgICB2b2lkIG9wZW5XaW5kb3coV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSBm
aW5hbDsKIAogICAgIHZvaWQgY29ubmVjdGlvbkNsb3NlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCAzZTc3NTg1MjM3OTUuLjIxZDIzNjU1N2M0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC00
MCw2ICs0MCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiBO
b3RSZWZDb3VudGVkIHsKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0
IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRG
YWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRp
ZmllcikKICAgICBTZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVjdGVkKQorCisgICAgT3BlbldpbmRvdyhXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBTdHJpbmcgdXJsU3RyaW5nKSAt
PiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3Q2xpZW50RGF0YSkK
IH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCmluZGV4
IDA4MTcxMGE4YzcxMy4uNWFkN2Y3NGNmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQ4LDYgKzQ4
LDcgQEAKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogI2ltcG9ydCA8
V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1JlZ2lzdHJhdGlvbkRhdGFi
YXNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KQEAgLTU2LDEwICs1NywxMiBAQAogCiBjbGFzcyBXZWJz
aXRlRGF0YVN0b3JlQ2xpZW50IGZpbmFsIDogcHVibGljIFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZUNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChp
ZCA8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBkZWxlZ2F0ZSkKLSAgICAgICAgOiBtX2Rl
bGVnYXRlKGRlbGVnYXRlKQorICAgIGV4cGxpY2l0IFdlYnNpdGVEYXRhU3RvcmVDbGllbnQoV0tX
ZWJzaXRlRGF0YVN0b3JlICpkYXRhU3RvcmUsIGlkPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZT4gZGVsZWdhdGUpCisgICAgICAgIDogbV9kYXRhU3RvcmUoZGF0YVN0b3JlKQorICAgICAgICAs
IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9oYXNSZXF1ZXN0U3RvcmFnZVNwYWNl
U2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihy
ZXF1ZXN0U3RvcmFnZVNwYWNlOiBmcmFtZU9yaWdpbjogcXVvdGE6IGN1cnJlbnRTaXplOiBzcGFj
ZVJlcXVpcmVkOiBkZWNpc2lvbkhhbmRsZXI6KV0pCiAgICAgICAgICwgbV9oYXNBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVNlbGVjdG9yKFttX2RlbGVnYXRlLmdldCgpIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiBjb21wbGV0aW9u
SGFuZGxlcjopXSkKKyAgICAgICAgLCBtX2hhc09wZW5XaW5kb3dTZWxlY3RvcihbbV9kZWxlZ2F0
ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYnNpdGVEYXRhU3RvcmU6b3Bl
bldpbmRvdzpmcm9tU2VydmljZVdvcmtlck9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjopXSkKICAg
ICB7CiAgICAgfQogCkBAIC0xMDQsOSArMTA3LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIFttX2Rl
bGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTpuc1VSTENoYWxsZW5nZSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlci5nZXQo
KV07CiAgICAgfQogCisgICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdv
cmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYlBhZ2VQcm94eSop
PiYmIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2hhc09wZW5XaW5kb3dTZWxlY3Rv
ciB8fCAhbV9kZWxlZ2F0ZSB8fCAhbV9kYXRhU3RvcmUpIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KHsgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvIGNo
ZWNrZXIgPSBXZWJLaXQ6OkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShtX2Rl
bGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpLCBAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVu
V2luZG93OmZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOikpOworICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oV0tXZWJWaWV3ICpu
ZXdXZWJWaWV3KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9u
SGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKKworICAgICAgICAgICAg
Y2FsbGJhY2sobmV3V2ViVmlldy5fcGFnZS5nZXQoKSk7CisgICAgICAgIH0pOworCisgICAgICAg
IGF1dG8gbnNVUkwgPSAoTlNVUkwgKilVUkwgeyB1cmwgfTsKKyAgICAgICAgYXV0byBhcGlPcmln
aW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc2VydmljZVdvcmtlck9yaWdpbik7Cisg
ICAgICAgIFttX2RlbGVnYXRlLmdldEF1dG9yZWxlYXNlZCgpIHdlYnNpdGVEYXRhU3RvcmU6bV9k
YXRhU3RvcmUuZ2V0QXV0b3JlbGVhc2VkKCkgb3BlbldpbmRvdzpuc1VSTCBmcm9tU2VydmljZVdv
cmtlck9yaWdpbjp3cmFwcGVyKGFwaU9yaWdpbi5nZXQoKSkgY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXIuZ2V0KCldOworICAgIH0KKworICAgIFdlYWtPYmpDUHRyPFdLV2Vic2l0
ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS1dlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZT4gPiBtX2RlbGVnYXRlOwogICAgIGJvb2wgbV9oYXNSZXF1ZXN0U3Rv
cmFnZVNwYWNlU2VsZWN0b3IgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9oYXNBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNlbGVjdG9yIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzT3BlbldpbmRvd1Nl
bGVjdG9yIHsgZmFsc2UgfTsKIH07CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhU3Rv
cmUKQEAgLTY1Miw3ICs2NzgsNyBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFS
ZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogLSAodm9pZClz
ZXRfZGVsZWdhdGU6KGlkIDxfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+KWRlbGVnYXRlCiB7
CiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENs
aWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRhU3RvcmVDbGllbnQ+KGRlbGVnYXRlKSk7Cisg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPnNldENsaWVudChtYWtlVW5pcXVlUmVmPFdlYnNpdGVEYXRh
U3RvcmVDbGllbnQ+KHNlbGYsIGRlbGVnYXRlKSk7CiB9CiAKIC0gKF9XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uICopX2NvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUuaAppbmRleCAwYjg1NzMwNDg3OTYuLjFkMTU4MTc0MzVhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUuaApAQCAtMjYsMTEgKzI2LDE1IEBACiAjaW1wb3J0IDxGb3VuZGF0aW9uL0Zv
dW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KIAorQGNsYXNzIFdL
U2VjdXJpdHlPcmlnaW47CitAY2xhc3MgV0tXZWJzaXRlRGF0YVN0b3JlOworQGNsYXNzIFdLV2Vi
VmlldzsKKwogV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSkKIEBwcm90
b2NvbCBfV0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgPE5TT2JqZWN0PgogCiBAb3B0aW9uYWwK
IC0gKHZvaWQpcmVxdWVzdFN0b3JhZ2VTcGFjZTooTlNVUkwgKiltYWluRnJhbWVVUkwgZnJhbWVP
cmlnaW46KE5TVVJMICopZnJhbWVVUkwgcXVvdGE6KE5TVUludGVnZXIpcXVvdGEgY3VycmVudFNp
emU6KE5TVUludGVnZXIpY3VycmVudFNpemUgc3BhY2VSZXF1aXJlZDooTlNVSW50ZWdlcilzcGFj
ZVJlcXVpcmVkIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikodW5zaWduZWQgbG9uZyBsb25nIHF1
b3RhKSlkZWNpc2lvbkhhbmRsZXI7CiAtICh2b2lkKWRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwpKWNvbXBsZXRpb25IYW5k
bGVyOwotCistICh2b2lkKXdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRh
dGFTdG9yZSBvcGVuV2luZG93OihOU1VSTCAqKXVybCBmcm9tU2VydmljZVdvcmtlck9yaWdpbjoo
V0tTZWN1cml0eU9yaWdpbiAqKXNlcnZpY2VXb3JrZXJPcmlnaW4gY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKFdLV2ViVmlldyAqbmV3V2ViVmlldykpY29tcGxldGlvbkhhbmRsZXI7CiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAyNGNmMjBkNzMyMDMuLmYyZTI1ZWM4NDU2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNzk4LDYgKzE3OTgsMTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp0
ZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0Q29ubmVjdGlvbldoZW5Qb3NzaWJsZShSZW0KICAg
ICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VGVybWluYXRlUmVtb3RlV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25XaGVuUG9zc2libGUod29ya2VyVHlwZSwgc2Vzc2lvbklELCByZWdpc3Ry
YWJsZURvbWFpbiwgcHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQorewor
ICAgIGlmIChhdXRvKiBzdG9yZSA9IHdlYnNpdGVEYXRhU3RvcmVGcm9tU2Vzc2lvbklEKHNlc3Np
b25JRCkpIHsKKyAgICAgICAgc3RvcmUtPm9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcih1cmxT
dHJpbmcsIHNlcnZpY2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAx
ZTg2ZjM0MjYzZTAuLjE1ZTdmNzYzYTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTI5OSw2ICsyOTksOCBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHRlcm1pbmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0
aW9uV2hlblBvc3NpYmxlKFJlbW90ZVdvcmtlclR5cGUsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
IAorICAgIHZvaWQgb3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKTsKKwogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5p
bgppbmRleCAxZGQyMzMwNzMyOTYuLjBmN2YxMzU5NDMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgpAQCAtOTEsNiArOTEsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1By
b3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEYXRhVGFza0RpZFJlY2VpdmVSZXNwb25zZShXZWJL
aXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKSAtPiAoYm9vbCBhbGxvd2VkKQogICAgIERhdGFUYXNrRGlkUmVjZWl2ZURh
dGEoV2ViS2l0OjpEYXRhVGFza0lkZW50aWZpZXIgaWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpCiAgICAgRGF0YVRhc2tEaWRDb21wbGV0ZVdpdGhFcnJvcihXZWJLaXQ6OkRhdGFU
YXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yKQor
CisgICAgT3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgU3RyaW5nIHVybFN0cmluZywgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBz
ZXJ2aWNlV29ya2VyT3JpZ2luKSAtPiAoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gbmV3UGFnZSkKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggMzdhNDUyNGY5YzdiLi43NTJlM2U1NTYxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHAKICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZp
Z2F0aW9uLT5zZXRDbGllbnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAg
Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7Cisg
ICAgICAgIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAg
IH0KIAogICAgIGZyYW1lLmRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKQEAgLTQ5MDUsMTIgKzQ5
MDUsMTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFNlcnZpY2VXb3JrZXJQYWdlUmVn
aXN0cmF0aW9uKGJvb2wgc3VjY2VzcykKIH0KICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6
Y2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGJv
b2wgc3VjY2VzcykKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgaWYgKG1faXNT
ZXJ2aWNlV29ya2VyUGFnZSAmJiBtX3NlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxl
cikKKyAgICBpZiAobV9pc1NlcnZpY2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5j
aENvbXBsZXRpb25IYW5kbGVyICYmICFzdWNjZXNzKQogICAgICAgICBtX3NlcnZpY2VXb3JrZXJM
YXVuY2hDb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CiAjZW5kaWYKKworICAgIGlmIChtX3NlcnZp
Y2VXb3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKQorICAgICAgICBtX3NlcnZpY2VX
b3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKHN1Y2Nlc3MpOwogfQogCiAjaWYgRU5B
QkxFKElOVEVMTElHRU5UX1RSQUNLSU5HX1BSRVZFTlRJT04pCkBAIC01MTM0LDYgKzUxMzcsOCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJgogICAgICAgICByZXNldFJlY2VudENyYXNoQ291bnRT
b29uKCk7CiAKICAgICAgICAgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKKworICAgICAg
ICBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KHRydWUpOwogICAgIH0KIAog
ICAgIG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExv
YWQgPSBmYWxzZTsKQEAgLTUxODIsNyArNTE4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsTG9hZEZvckZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYK
ICAgICAgICAgaWYgKG5hdmlnYXRpb24pCiAgICAgICAgICAgICBuYXZpZ2F0aW9uLT5zZXRDbGll
bnROYXZpZ2F0aW9uQWN0aXZpdHkobnVsbHB0cik7CiAKLSAgICAgICAgY2FsbFNlcnZpY2VXb3Jr
ZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNhbGxMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogICAgIH0KIH0KIApAQCAtODAx
OCw3ICs4MDIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJl
YXNvbiByZXNldFN0YXRlUmVhc29uKQogI2VuZGlmCiAKICAgICBpZiAocmVzZXRTdGF0ZVJlYXNv
biAhPSBSZXNldFN0YXRlUmVhc29uOjpOYXZpZ2F0aW9uU3dhcCkKLSAgICAgICAgY2FsbFNlcnZp
Y2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGNh
bGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoZmFsc2UpOwogCiAgICAgaWYgKG1f
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci0+aW52YWxpZGF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCBjYTI0MmYyM2ZiMGQuLjhjZmI1MjdhYmI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTIwODEsNiArMjA4MSwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGludGVyYWN0YWJsZVJlZ2lvbnNJblJvb3RWaWV3Q29vcmRpbmF0ZXMoV2ViQ29yZTo6RmxvYXRS
ZWN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpGbG9hdFJlY3Q+KT4m
Jik7CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisgICAgdm9pZCBzZXRTZXJ2aWNlV29y
a2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9zZXJ2
aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayk7CisgICAgICAgIG1fc2Vydmlj
ZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25D
YWxsYmFjayk7CisgICAgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKQEAgLTI2MDcsNyArMjYxNSw3IEBA
IHByaXZhdGU6CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZGlkRmluaXNo
U2VydmljZVdvcmtlclBhZ2VSZWdpc3RyYXRpb24oYm9vbCBzdWNjZXNzKTsKICNlbmRpZgotICAg
IHZvaWQgY2FsbFNlcnZpY2VXb3JrZXJMYXVuY2hDb21wbGV0aW9uSGFuZGxlcklmTmVjZXNzYXJ5
KCk7CisgICAgdm9pZCBjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KGJvb2wg
c3VjY2Vzcyk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHN0YXRpYyBib29sIGlz
SW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpOwpAQCAtMzExOSw2ICszMTI3LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgYm9vbCBtX2lzU2VydmljZVdvcmtlclBh
Z2UgeyBmYWxzZSB9OwogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IG1fc2Vydmlj
ZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyOworICAgIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+IG1fc2VydmljZVdvcmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2s7CiAj
ZW5kaWYKIAogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlBhZ2VQcm94eT4gbV90cnlDbG9zZVRpbWVv
dXRUaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggNzFhZTkyNjU0OGJjLi5lMTczNjU4NjcxOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMDg3LDQgKzIwODcsMzQgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpkaWREZXN0cm95U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBu
b3RpZmljYXQKICAgICBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNoYXJlZFNlcnZpY2VX
b3JrZXJNYW5hZ2VyKCkuZGlkRGVzdHJveU5vdGlmaWNhdGlvbihudWxscHRyLCBub3RpZmljYXRp
b25JRCk7CiB9CiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6b3BlbldpbmRvd0Zyb21TZXJ2aWNl
V29ya2VyKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3Rk
OjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4pPiYmIGNhbGxiYWNrKQoreworICAg
IGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSAoV2Vi
UGFnZVByb3h5KiBuZXdQYWdlKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFuZXdQYWdlKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKCFuZXdQYWdlLT5wYWdlTG9hZFN0YXRlKCkuaXNMb2Fk
aW5nKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJUaGUgV0tXZWJWaWV3
IHByb3ZpZGVkIGluIHJlc3BvbnNlIHRvIGEgU2VydmljZVdvcmtlciBvcGVuV2luZG93IHJlcXVl
c3Qgd2FzIG5vdCBpbiB0aGUgbG9hZGluZyBzdGF0ZSIpOworICAgICAgICAgICAgY2FsbGJhY2so
c3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGF1dG8gaW5uZXJDYWxsYmFjayA9IFtwYWdlSUQgPSBuZXdQYWdlLT5pZGVudGlmaWVyKCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChib29sIHN1Y2Nlc3MpIG11dGFibGUgeworICAg
ICAgICAgICAgYXV0byogbmV3UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQp
OworICAgICAgICAgICAgaWYgKCFuZXdQYWdlIHx8ICFzdWNjZXNzKSB7CisgICAgICAgICAgICAg
ICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxiYWNrKG5ld1BhZ2UtPndlYlBhZ2VJRCgpKTsK
KyAgICAgICAgfTsKKworICAgICAgICBuZXdQYWdlLT5zZXRTZXJ2aWNlV29ya2VyT3BlbldpbmRv
d0NvbXBsZXRpb25DYWxsYmFjayhXVEZNb3ZlKGlubmVyQ2FsbGJhY2spKTsKKyAgICB9OworCisg
ICAgbV9jbGllbnQtPm9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcih1cmxTdHJpbmcsIHNlcnZp
Y2VXb3JrZXJPcmlnaW4sIFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggNmVmOTU1MDE3MjY2Li4yYTVkMmZkNjMzMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTM3
OSw2ICszNzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogICAgIHZvaWQgZGlkRGVzdHJveVNl
cnZpY2VXb3JrZXJOb3RpZmljYXRpb24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpOwogCisg
ICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VydmljZVdvcmtlck9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPik+JiYpOworCiBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRm9yY2VSZWluaXRpYWxp
emF0aW9uIDogYm9vbCB7IE5vLCBZZXMgfTsKICNpZiBFTkFCTEUoQVBQX0JPVU5EX0RPTUFJTlMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKaW5kZXggZjdjNjgzZmY3MTYzLi5mN2FiZTMwN2E2NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ2xpZW50LmgKQEAgLTM2LDYgKzM2LDggQEAgc3RydWN0IFNlY3Vy
aXR5T3JpZ2luRGF0YTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC01MCw2ICs1MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBjaGFsbGVuZ2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRp
b25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZyk7CiAgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJp
bmcmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIobnVsbHB0cik7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGU5NWI3Y2Fl
ODZiYy4uNDhlNzU1NGQyMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApA
QCAtMTUwLDYgKzE1MCw4IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgV2ViTm90aWZpY2F0
aW9uTWFuYWdlcjo6c2VuZE5vdGlmaWNhdGlvbk1lc3NhZ2UoVSYmIG1lCiAKIGJvb2wgV2ViTm90
aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbiwgV2ViUGFn
ZSogcGFnZSkKIHsKKyAgICBMT0coTm90aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgZ29pbmcg
dG8gc2hvdyBub3RpZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uLmlkZW50aWZp
ZXIoKS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgQVNTRVJUKGlzTWFpblJ1bkxv
b3AoKSk7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgaWYgKHBhZ2UgJiYgIXBhZ2Ut
PmNvcmVQYWdlKCktPnNldHRpbmdzKCkubm90aWZpY2F0aW9uc0VuYWJsZWQoKSkKQEAgLTIwOCw2
ICsyMTAsOCBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZFNob3dOb3RpZmljYXRp
b24oY29uc3QgVVVJRCYgbm90aWZpY2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxv
b3AoKSk7CiAKKyAgICBMT0coTm90aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgRElEIFNIT1cg
bm90aWZpY2F0aW9uICVzIiwgZ2V0cGlkKCksIG5vdGlmaWNhdGlvbklELnRvU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBSZWZQdHI8Tm90
aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLmdldChub3RpZmlj
YXRpb25JRCk7CiAgICAgaWYgKCFub3RpZmljYXRpb24pCkBAIC0yMjMsMTEgKzIyNywxNSBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKGNvbnN0IFVV
SUQmIG5vdGlmaWNhdGlvbklEKQogewogICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwogCisg
ICAgTE9HKE5vdGlmaWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIERJRCBDTElDSyBub3RpZmljYXRp
b24gJXMiLCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlvbklEKTsK
ICAgICBpZiAoIW5vdGlmaWNhdGlvbikKICAgICAgICAgcmV0dXJuOwogCisgICAgTE9HKE5vdGlm
aWNhdGlvbnMsICJXZWJQcm9jZXNzICVpIGhhbmRsaW5nIGNsaWNrIGV2ZW50IGZvciBub3RpZmlj
YXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKKwogICAgIC8vIEluZGljYXRlIHRoYXQgdGhpcyBldmVudCBpcyBiZWluZyBkaXNwYXRj
aGVkIGluIHJlYWN0aW9uIHRvIGEgdXNlcidzIGludGVyYWN0aW9uIHdpdGggYSBwbGF0Zm9ybSBu
b3RpZmljYXRpb24uCiAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgaW5kaWNhdG9yKFByb2Nlc3Np
bmdVc2VyR2VzdHVyZSk7CiAgICAgbm90aWZpY2F0aW9uLT5kaXNwYXRjaENsaWNrRXZlbnQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBlMjNjMjU3MTdiY2EuLjFl
MWEzOWJlN2MxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtMzMy
LDYgKzMzMiwxMSBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjptYXRjaEFs
bENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllcgogICAgICAgICBjYWxsYmFjayhX
VEZNb3ZlKGNsaWVudHNEYXRhKSk7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246Om9wZW5XaW5kb3coV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNr
KQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpPcGVuV2luZG93IHsg
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybCB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9CisK
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmNsYWltKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uOjpDbGFpbSB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIFtj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgcmVzdWx0KSBtdXRhYmxlIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IGVjZDgxZmIzZjJhYi4uZjg5NmIxYjBl
YjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTg3LDYgKzg3LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIp
IGZpbmFsOwogICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGJvb2wpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFs
OwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDBlYzAzMDFhNzVhNy4uMmFiYWNhZTA4MDQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMjItMDMtMjcgIEJyYWR5
IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgU2VydmljZVdv
cmtlckNsaWVudHMub3BlbldpbmRvdy4KKyAgICAgICAgPHJkYXI6Ly85MDYxNjY1MT4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg0MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgdGhlIG5ldyBk
ZWxlZ2F0ZSB0byBjcmVhdGUgdGhlIG5ldyB2aWV3LgorICAgICAgICAKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRy
b2xsZXI6OmNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
cmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVy
OjpwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0V2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlIHdlYnNpdGVEYXRhU3RvcmU6b3BlbldpbmRvdzpmcm9tU2Vy
dmljZVdvcmtlck9yaWdpbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKwogMjAyMi0wMy0yNiAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFNlcnZp
Y2VXb3JrZXJXaW5kb3dDbGllbnQuZm9jdXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5jcHAKaW5kZXggYTAxY2VhNDI3NzFhLi4wMTZjZGIwYTUwZjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zODAsNiArMzgwLDE3IEBAIFdL
UGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFdLUGFnZVJlZiwgV0tQYWdl
Q29uZmlndXJhdGlvblJlZiBjb25mCiB9CiAKIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6Y3Jl
YXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYgbmF2aWdhdGlvbkFj
dGlvbiwgV0tXaW5kb3dGZWF0dXJlc1JlZiB3aW5kb3dGZWF0dXJlcykKK3sKKyAgICBhdXRvKiBw
bGF0Zm9ybVdlYlZpZXcgPSBjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhwYXJlbnRWaWV3LCBj
b25maWd1cmF0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uLCB3aW5kb3dGZWF0dXJlcyk7CisgICAgaWYg
KCFwbGF0Zm9ybVdlYlZpZXcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byog
cGFnZSA9IHBsYXRmb3JtV2ViVmlldy0+cGFnZSgpOworICAgIFdLUmV0YWluKHBhZ2UpOworICAg
IHJldHVybiBwYWdlOworfQorCitQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpjcmVh
dGVPdGhlclBsYXRmb3JtV2ViVmlldyhQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFn
ZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbiwgV0tOYXZpZ2F0aW9uQWN0aW9uUmVmLCBX
S1dpbmRvd0ZlYXR1cmVzUmVmKQogewogICAgIG1fY3VycmVudEludm9jYXRpb24tPndpbGxDcmVh
dGVOZXdQYWdlKCk7CiAKQEAgLTM4OSw3ICs0MDAsOCBAQCBXS1BhZ2VSZWYgVGVzdENvbnRyb2xs
ZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bgogCiAgICAgbV9jcmVhdGVkT3RoZXJQYWdlID0gdHJ1ZTsKIAotICAgIGF1dG8gdmlldyA9IHBs
YXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBhcmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIHBhcmVudFZp
ZXctPm9wdGlvbnMoKSk7CisgICAgYXV0byBvcHRpb25zID0gcGFyZW50VmlldyA/IHBhcmVudFZp
ZXctPm9wdGlvbnMoKSA6IG1fbWFpbldlYlZpZXctPm9wdGlvbnMoKTsKKyAgICBhdXRvIHZpZXcg
PSBwbGF0Zm9ybUNyZWF0ZU90aGVyUGFnZShwYXJlbnRWaWV3LCBjb25maWd1cmF0aW9uLCBvcHRp
b25zKTsKICAgICBXS1BhZ2VSZWYgbmV3UGFnZSA9IHZpZXctPnBhZ2UoKTsKIAogICAgIHZpZXct
PnJlc2l6ZVRvKDgwMCwgNjAwKTsKQEAgLTUwOSw5ICs1MjEsOSBAQCBXS1BhZ2VSZWYgVGVzdENv
bnRyb2xsZXI6OmNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdL
UGFnZUNvbgogCiAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnVwZGF0ZVdpbmRvd1Nj
YWxlRm9yVGVzdCh2aWV3LnB0cigpLCAqVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1fY3Vy
cmVudEludm9jYXRpb24pOwogCisgICAgUGxhdGZvcm1XZWJWaWV3KiB2aWV3VG9SZXR1cm4gPSB2
aWV3LnB0cigpOwogICAgIG1fYXV4aWxpYXJ5V2ViVmlld3MuYXBwZW5kKFdURk1vdmUodmlldykp
OwotICAgIFdLUmV0YWluKG5ld1BhZ2UpOwotICAgIHJldHVybiBuZXdQYWdlOworICAgIHJldHVy
biB2aWV3VG9SZXR1cm47CiB9CiAKIGNvbnN0IGNoYXIqIFRlc3RDb250cm9sbGVyOjpsaWJyYXJ5
UGF0aEZvclRlc3RpbmcoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmlu
ZGV4IDQ0NTM5NTM4ODM5Mi4uNDhmYTVhZDQyZWY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC0zNzgsNiArMzc4LDggQEAgcHVibGljOgogICAgIGJvb2wgZGVu
eU5vdGlmaWNhdGlvblBlcm1pc3Npb24oV0tTdHJpbmdSZWYgb3JpZ2luKTsKICAgICBib29sIGRl
bnlOb3RpZmljYXRpb25QZXJtaXNzaW9uT25Qcm9tcHQoV0tTdHJpbmdSZWYgb3JpZ2luKTsKIAor
ICAgIFBsYXRmb3JtV2ViVmlldyogY3JlYXRlT3RoZXJQbGF0Zm9ybVdlYlZpZXcoUGxhdGZvcm1X
ZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBXS05hdmlnYXRpb25B
Y3Rpb25SZWYsIFdLV2luZG93RmVhdHVyZXNSZWYpOworCiBwcml2YXRlOgogICAgIFdLUmV0YWlu
UHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGdlbmVyYXRlUGFnZUNvbmZpZ3VyYXRpb24oY29u
c3QgVGVzdE9wdGlvbnMmKTsKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmPiBnZW5lcmF0ZUNvbnRleHRDb25maWd1cmF0aW9uKGNvbnN0IFRlc3RPcHRpb25zJikgY29u
c3Q7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9s
bGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KaW5kZXggNzcyM2JhNDg3YTU2Li5kZWQ1MWJiNjA2MGMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTIx
NCw3ICsyMTQsOCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXco
V0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdAogVW5pcXVlUmVmPFBsYXRmb3Jt
V2ViVmlldz4gVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBsYXRmb3Jt
V2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMpCiB7CiAgICAgYXV0byBuZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7Ci0gICAgW25ld0NvbmZpZ3VyYXRp
b24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZpZXct
PnBsYXRmb3JtVmlldygpKV07CisgICAgaWYgKHBhcmVudFZpZXcpCisgICAgICAgIFtuZXdDb25m
aWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzpzdGF0aWNfY2FzdDxXS1dlYlZpZXcqPihwYXJl
bnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSldOwogICAgIGlmIChbbmV3Q29uZmlndXJhdGlvbiBfcmVs
YXRlZFdlYlZpZXddKQogICAgICAgICBbbmV3Q29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0
b3JlOltuZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10uY29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlXTsKICAgICBhdXRvIHZpZXcgPSBtYWtlVW5pcXVlUmVmPFBsYXRmb3JtV2Vi
Vmlldz4obmV3Q29uZmlndXJhdGlvbi5nZXQoKSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGUubW0KaW5kZXggZTFmNjhlNDhhZjczLi4wM2ExMzhkNjZjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGUubW0KQEAgLTI2LDYgKzI2LDEyIEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQg
IlRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUuaCIKIAorI2ltcG9ydCAiUGxhdGZvcm1XZWJW
aWV3LmgiCisjaW1wb3J0ICJUZXN0Q29udHJvbGxlci5oIgorI2ltcG9ydCAiVGVzdFJ1bm5lcldL
V2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1Vu
aXF1ZVJlZi5oPgorCiBAaW1wbGVtZW50YXRpb24gVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZSB7IH0KIC0gKGluc3RhbmNldHlwZSlpbml0CiB7CkBAIC02MSw0ICs2NywxNSBAQAogICAgIF9z
aG91bGRBbGxvd0FueVNTTENlcnRpZmljYXRlID0gc2hvdWxkQWxsb3dBbnlTU0xDZXJ0aWZpY2F0
ZTsKIH0KIAorLSAodm9pZCl3ZWJzaXRlRGF0YVN0b3JlOihXS1dlYnNpdGVEYXRhU3RvcmUgKilk
YXRhU3RvcmUgb3BlbldpbmRvdzooTlNVUkwgKil1cmwgZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46
KFdLU2VjdXJpdHlPcmlnaW4gKilzZXJ2aWNlV29ya2VyT3JpZ2luIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShXS1dlYlZpZXcgKm5ld1dlYlZpZXcpKWNvbXBsZXRpb25IYW5kbGVyCit7Cisg
ICAgYXV0byogbmV3VmlldyA9IFdUUjo6VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmNyZWF0
ZU90aGVyUGxhdGZvcm1XZWJWaWV3KG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIp
OworICAgIFdLV2ViVmlldyAqd2ViVmlldyA9IG5ld1ZpZXctPnBsYXRmb3JtVmlldygpOworCisg
ICAgQVNTRVJUKHdlYlZpZXcuY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID09IGRhdGFT
dG9yZSk7CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOnVybF1dOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYlZpZXcpOworfQorCiBAZW5k
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455888</attachid>
            <date>2022-03-27 23:26:57 -0700</date>
            <delta_ts>2022-03-28 11:15:35 -0700</delta_ts>
            <desc>PFR v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>60531</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OTNkZDUxYzRmYzkuLjk0MWEwYWNmZDQxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBA
CisyMDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBTdXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAgIDxyZGFy
Oi8vOTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjM4NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0tUUiBrbm93cyBob3cgdG8gb3BlbldpbmRvdygpIG5vdy4KKyAgICAgICAgCisgICAgICAgIFNv
IHRlc3Q6CisgICAgICAgIC0gVGhlIHN1Y2Nlc3MgY2FzZQorICAgICAgICAtIEZhaWx1cmUgZHVl
IHRvIGEgZGlzYWxsb3dlZCBVUkwKKyAgICAgICAgLSBGYWlsdXJlIGR1ZSB0byBhIGxhY2sgb2Yg
YSByZWxhdGVkIHVzZXIgZ2VzdHVyZS4KKyAgICAgICAgCisgICAgICAgICogaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53
aW5kb3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5kb3ctY2xpZW50Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
aG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKGFz
eW5jIGNvbnN0KToKKyAgICAgICAgKGxldC5tZXNzYWdlQ2xpZW50cyk6CisgICAgICAgIChjbGll
bnRzLm9wZW5XaW5kb3cuc3RyaW5nX2FwcGVhcmVkX2hlcmUudGhlbi5hc3luYyBjbGllbnQpOgor
ICAgICAgICAoY2F0Y2guYXN5bmMgZXJyb3IpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorICAg
ICAgICAoYXN5bmMgdHJ5U2hvdyk6CisgICAgICAgIChhc3luYyBnZXROb3Rlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjItMDMtMjYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29y
a2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL29wZW53aW5k
b3ctZnJvbS1ub3RpZmljYXRpb24tY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjUyMWUyN2JjY2YzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3BlbndpbmRvdy1mcm9tLW5v
dGlmaWNhdGlvbi1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0
cyB0aGF0IGEgbm90aWZpY2F0aW9uY2xpY2sgaGFuZGxlciBjYW4gb3BlbiBhIHdpbmRvdworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBOb3RpZmljYXRpb24ucGVybWlzc2lv
biBpcyAiZ3JhbnRlZCIKK1BBU1MgZ290Q2xpY2tlZCBpcyBmYWxzZQorUEFTUyBnb3RDbG9zZWQg
aXMgZmFsc2UKK1BBU1MgZ290Q2xpY2tlZCBpcyB0cnVlCitQQVNTIGdvdENsb3NlZCBpcyBmYWxz
ZQorUEFTUyBnb3RBYm91dEJsYW5rRmFpbCBpcyB0cnVlCitQQVNTIGdvdFVzZXJHZXN0dXJlRmFp
bCBpcyB0cnVlCitQQVNTIGdvdFN1Y2Nlc3NmdWxOdWxsQ2xpZW50IGlzIHRydWUKK1BBU1MgTmV3
IGNsaWVudCBoYXMgYmVlbiBvYnNlcnZlZAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9uLWNsaWNr
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93
LWZyb20tbm90aWZpY2F0aW9uLWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi4zYzJjYzc5MjljMzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9vcGVud2luZG93LWZyb20tbm90aWZpY2F0aW9u
LWNsaWNrLmh0bWwKQEAgLTAsMCArMSw5MSBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy9u
b3RpZmljYXRpb25zLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IGZhaWxUaGVUZXN0KG1zZykKK3sKKyAgICB0ZXN0RmFpbGVkKG1zZyk7CisgICAgaWYgKHRlc3RS
dW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0
UnVubmVyLmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbih0ZXN0VVJMKTsKKyAgICBzZXRU
aW1lb3V0KCJmYWlsVGhlVGVzdCgndGltZWQgb3V0JykiLCAxNTAwMCk7Cit9CisKK2Rlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoYXQgYSBub3RpZmljYXRpb25jbGljayBoYW5kbGVyIGNhbiBvcGVu
IGEgd2luZG93Iik7CisKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiTm90aWZpY2F0aW9uLnBlcm1p
c3Npb24iLCAiZ3JhbnRlZCIpOworCithc3luYyBmdW5jdGlvbiByZWdpc3RlclNlcnZpY2VXb3Jr
ZXIoKSB7CisgICAgdmFyIHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29y
a2VyLnJlZ2lzdGVyKCdyZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1vcGVud2luZG93LXdvcmtl
ci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICByZXR1cm4gdGVz
dEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAgCisgICAgaWYgKHJlZ2lzdHJhdGlvbi5h
Y3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFjdGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQi
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHZhciBpbnN0YWxsaW5nV29ya2VyID0g
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYgKCFpbnN0YWxsaW5nV29ya2VyKQorICAg
ICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciogaW5zdGFsbGluZyB3b3JrZXIiKTsKKwor
ICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9
PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2VyLnN0YXRlID09PSAiYWN0aXZhdGVkIikg
eworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5wb3N0TWVzc2FnZSgidHJ5c2hvdyIpOwor
ICAgICAgICB9CisgICAgfSk7Cit9CisKK3ZhciBnb3RDbGlja2VkID0gZmFsc2U7Cit2YXIgZ290
Q2xvc2VkID0gZmFsc2U7Cit2YXIgZ290TmV3Q2xpZW50ID0gZmFsc2U7Cit2YXIgZ290QWJvdXRC
bGFua0ZhaWwgPSBmYWxzZTsKK3ZhciBnb3RVc2VyR2VzdHVyZUZhaWwgPSBmYWxzZTsKK3ZhciBn
b3RTdWNjZXNzZnVsTnVsbENsaWVudCA9IGZhbHNlOworCituYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVudC5k
YXRhID09ICJzaG93RmFpbGVkIikgeworICAgICAgICBmYWlsVGhlVGVzdCgiVW5leHBlY3RlZGx5
IHJlY2VpdmVkIHRoZSBmYWlsZWQtdG8tc2hvdyBtZXNzYWdlIik7CisgICAgfSBlbHNlIGlmIChl
dmVudC5kYXRhID09ICJzaG93biIpIHsKKyAgICAgICAgaWYgKHRlc3RSdW5uZXIpCisgICAgICAg
ICAgICB0ZXN0UnVubmVyLnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2tGb3JTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9ucygpOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiY2xpY2tl
ZCIpIHsKKyAgICAgICAgc2hvdWxkQmVGYWxzZSgiZ290Q2xpY2tlZCIpOworICAgICAgICBzaG91
bGRCZUZhbHNlKCJnb3RDbG9zZWQiKTsKKyAgICAgICAgZ290Q2xpY2tlZCA9IHRydWU7CisgICAg
fSBlbHNlIGlmIChldmVudC5kYXRhID09ICJjbG9zZWQiKSB7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiZ290Q2xpY2tlZCIpCisgICAgICAgIHNob3VsZEJlRmFsc2UoImdvdENsb3NlZCIpCisgICAg
ICAgIGdvdENsb3NlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChldmVudC5kYXRhID09ICJnb3RO
ZXdDbGllbnQiKSB7CisgICAgICAgIGdvdE5ld0NsaWVudCA9IHRydWU7CisgICAgfSBlbHNlIGlm
IChldmVudC5kYXRhID09ICJnb3RBYm91dEJsYW5rRmFpbCIpIHsKKyAgICAgICAgZ290QWJvdXRC
bGFua0ZhaWwgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoZXZlbnQuZGF0YSA9PSAiZ290VXNlckdl
c3R1cmVGYWlsIikgeworICAgICAgICBnb3RVc2VyR2VzdHVyZUZhaWwgPSB0cnVlOworICAgIH0g
ZWxzZSBpZiAoZXZlbnQuZGF0YSA9ICJnb3RTdWNjZXNzZnVsTnVsbENsaWVudCIpIHsKKyAgICAg
ICAgZ290U3VjY2Vzc2Z1bE51bGxDbGllbnQgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAg
IHRlc3RGYWlsZWQoIk1lc3NhZ2UgcmVjZWl2ZWQ6ICIgKyBldmVudC5kYXRhKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKGdvdE5ld0NsaWVudCkgeworICAgICAgICBzaG91bGRCZVRydWUoImdvdEFi
b3V0QmxhbmtGYWlsIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290VXNlckdlc3R1cmVGYWls
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiZ290U3VjY2Vzc2Z1bE51bGxDbGllbnQiKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCgiTmV3IGNsaWVudCBoYXMgYmVlbiBvYnNlcnZlZCIpOworICAgICAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKKyAgICB9Cit9KTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJl
Z2lzdGVyU2VydmljZVdvcmtlcigpIj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29w
ZW53aW5kb3ctY2xpZW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5mNDkxOTMyOWE1YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMvb3BlbndpbmRvdy1jbGllbnQuaHRtbApAQCAt
MCwwICsxLDE2IEBACis8aGVhZD4KKzxzY3JpcHQ+CisgICAgCituYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZXZlbnQgPT4geworICAgIGlmIChldmVu
dC5kYXRhICE9ICJlY2hvIikKKyAgICAgICAgcmV0dXJuOworCisgICAgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIuZ2V0UmVnaXN0cmF0aW9uKCkudGhlbihmdW5jdGlvbihyZWdpc3RyYXRpb24pIHsK
KyAgICAgICAgcmVnaXN0cmF0aW9uLmFjdGl2ZS5wb3N0TWVzc2FnZSgiZWNobyBiYWNrIik7Cisg
ICAgfSk7Cit9KTsKKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9z
aG93bm90aWZpY2F0aW9uLW9wZW53aW5kb3ctd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL3Nob3dub3RpZmljYXRpb24tb3BlbndpbmRv
dy13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZWI1
ZDEzNGRkNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtl
cnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi1vcGVud2luZG93LXdvcmtlci5q
cwpAQCAtMCwwICsxLDEwOCBAQAorCitsZXQgbWVzc2FnZUNsaWVudHMgPSBhc3luYyBmdW5jdGlv
bihtc2cpIHsgCisgICAgY29uc3QgYWxsQ2xpZW50cyA9IGF3YWl0IGNsaWVudHMubWF0Y2hBbGwo
eworICAgICAgICBpbmNsdWRlVW5jb250cm9sbGVkOiB0cnVlCisgICAgfSk7CisKKyAgICBmb3Ig
KGNvbnN0IGNsaWVudCBvZiBhbGxDbGllbnRzKQorICAgICAgICBjbGllbnQucG9zdE1lc3NhZ2Uo
bXNnKTsKK30KKworLy8gVHJ5IHRvIG9wZW4gYSBuZXcgd2luZG93IG5vdy4KKy8vIEl0IHNob3Vs
ZCBmYWlsIGR1ZSB0byBsYWNrIG9mIHVzZXIgZ2VzdHVyZQorY2xpZW50cy5vcGVuV2luZG93KCdo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93
LWNsaWVudC5odG1sJykudGhlbihhc3luYyBmdW5jdGlvbihjbGllbnQpIHsKKyAgICBhd2FpdCBt
ZXNzYWdlQ2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGllbnQgd2l0aG91dCBhIHVzZXIgZ2Vz
dHVyZSBTVUNDRUVERUQuIEl0IHNob3VsZCd2ZSBmYWlsZWQuIik7Cit9KS5jYXRjaChhc3luYyBm
dW5jdGlvbihlcnJvcikgeworICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJnb3RVc2VyR2VzdHVy
ZUZhaWwiKTsKK30pOworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNr
JywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xp
Y2tlZCIpOworICAgIGV2ZW50Lm5vdGlmaWNhdGlvbi5jbG9zZSgpOworCisgICAgLy8gU2hvdWxk
IGZhaWwgYmVjYXVzZSBhYm91dDpibGFuayBpcyBub3QgYW4gYWxsb3dhYmxlIFVSTAorICAgIGNs
aWVudHMub3BlbldpbmRvdygnYWJvdXQ6YmxhbmsnKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGNsaWVu
dCkgeworICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiT3BlbmluZyBhIHdpbmRvdyBjbGll
bnQgdG8gYWJvdXQ6YmxhbmsgU1VDQ0VFREVELiBJdCBzaG91bGQndmUgZmFpbGVkLiIpOworICAg
IH0pLmNhdGNoKGFzeW5jIGZ1bmN0aW9uKGVycm9yKSB7CisgICAgICAgIGF3YWl0IG1lc3NhZ2VD
bGllbnRzKCJnb3RBYm91dEJsYW5rRmFpbCIpOworICAgIH0pOworCisgICAgLy8gVGhpcyBzdWNj
ZXNzZnVsbHkgbG9hZHMgdGhlIG9wZW53aW5kb3ctY2xpZW50Lmh0bWwgcmVzb3VyY2UsIGJ1dCB0
aGUgb3JpZ2luIGlzIGRpZmZlcmVudCwgdGhlcmVmb3JlIHRoZSBzZXJ2aWNld29ya2VyCisgICAg
Ly8gc2hvdWxkIE5PVCBnZXQgYSBXaW5kb3dDbGllbnQKKyAgICBjbGllbnRzLm9wZW5XaW5kb3co
J2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMC93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL29wZW53aW5k
b3ctY2xpZW50Lmh0bWwnKS50aGVuKGFzeW5jIGZ1bmN0aW9uKGNsaWVudCkgeworICAgICAgICBp
ZiAoY2xpZW50ID09IG51bGwpCisgICAgICAgICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiZ290
U3VjY2Vzc2Z1bE51bGxDbGllbnQiKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBhd2FpdCBt
ZXNzYWdlQ2xpZW50cygiR290IGEgV2luZG93Q2xpZW50IHdoZW4gd2Ugd2VyZSAqbm90KiBleHBl
Y3RpbmcgdG8iKTsKKyAgICB9KS5jYXRjaChhc3luYyBmdW5jdGlvbihlcnJvcikgeworICAgICAg
ICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiRXhwZWN0ZWQgYSByZXNvbHZlZCBwcm9taXNlIHdpdGgg
YSBudWxsIHdpbmRvdyBjbGllbnQuIFByb21pc2UgcmVqZWN0ZWQgaW5zdGVhZCIpOworICAgIH0p
OworCisgICAgY2xpZW50cy5vcGVuV2luZG93KCdodHRwOi8vMTI3LjAuMC4xOjgwMDAvd29ya2Vy
cy9zZXJ2aWNlL3Jlc291cmNlcy9vcGVud2luZG93LWNsaWVudC5odG1sJykudGhlbihmdW5jdGlv
bihjbGllbnQpIHsKKyAgICAgICAgY2xpZW50LnBvc3RNZXNzYWdlKCJlY2hvIik7CisgICAgfSk7
Cit9KTsKKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbG9zZScsIGFzeW5j
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoImNsb3NlZCIpOwor
fSk7CisKK2FzeW5jIGZ1bmN0aW9uIHRyeVNob3cobWVzc2FnZSkKK3sKKyAgICB2YXIgdGl0bGUs
IGJvZHksIHRhZzsKKyAgICB2YXIgY29tcG9uZW50cyA9IG1lc3NhZ2Uuc3BsaXQoJ3wnKTsKKwor
ICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAxKSB7CisgICAgICAgIHRpdGxlID0gIlRoaXMg
aXMgYSBub3RpZmljYXRpb24iOyAgICAgICAgCisgICAgfSBlbHNlIHsKKyAgICAgICAgdGl0bGUg
PSBjb21wb25lbnRzWzFdOworICAgICAgICBib2R5ID0gY29tcG9uZW50c1syXTsKKyAgICAgICAg
dGFnID0gY29tcG9uZW50c1szXTsKKyAgICB9CisgICAgCisgICAgdHJ5IHsKKyAgICAgICAgYXdh
aXQgcmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24odGl0bGUsIHsKKyAgICAgICAgICAgIGJv
ZHk6IGJvZHksCisgICAgICAgICAgICB0YWc6IHRhZworICAgICAgICB9KTsKKyAgICB9IGNhdGNo
KGVycm9yKSB7CisgICAgICAgIGF3YWl0IG1lc3NhZ2VDbGllbnRzKCJzaG93RmFpbGVkIik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNo
b3duIik7Cit9CisKK3ZhciBzZWVuTm90ZXMgPSBuZXcgU2V0KCk7CisKK2FzeW5jIGZ1bmN0aW9u
IGdldE5vdGVzKG1lc3NhZ2UpCit7CisgICAgdmFyIHRhZyA9IHVuZGVmaW5lZDsKKyAgICB2YXIg
Y29tcG9uZW50cyA9IG1lc3NhZ2Uuc3BsaXQoJ3wnKTsKKyAgICBpZiAoY29tcG9uZW50cy5sZW5n
dGggPT0gMikKKyAgICAgICAgdGFnID0gY29tcG9uZW50c1sxXTsKKworICAgIHZhciBub3RpZmlj
YXRpb25zID0gYXdhaXQgcmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMoeyB0YWc6IHRhZyB9
KTsKKyAgICB2YXIgcmVwbHkgPSAiZ290bm90ZXN8VGhlcmUgYXJlICIgKyBub3RpZmljYXRpb25z
Lmxlbmd0aCArICIgbm90aWZpY2F0aW9uc3wiOworCisgICAgZm9yIChub3RpZmljYXRpb24gb2Yg
bm90aWZpY2F0aW9ucykgeworICAgICAgICBpZiAoc2Vlbk5vdGVzLmhhcyhub3RpZmljYXRpb24p
KQorICAgICAgICAgICAgbWVzc2FnZUNsaWVudHMoIlNhdyB0aGUgc2FtZSBub3RpZmNhdGlvbiB0
d2ljZSB0aHJvdWdoIGdldE5vdGlmaWNhdGlvbnMoKSwgdGhpcyBzaG91bGQgbm90IGhhcHBlbiIp
OworICAgICAgICBzZWVuTm90ZXMuYWRkKG5vdGlmaWNhdGlvbikKKyAgICAgICAgCisgICAgICAg
IHJlcGx5ICs9ICJUaXRsZTogIiArIG5vdGlmaWNhdGlvbi50aXRsZSArICJ8IjsKKyAgICAgICAg
cmVwbHkgKz0gIkJvZHk6ICIgKyBub3RpZmljYXRpb24uYm9keSArICJ8IjsKKyAgICAgICAgcmVw
bHkgKz0gIlRhZzogIiArIG5vdGlmaWNhdGlvbi50YWcgKyAifCI7CisgICAgfQorICAgIGF3YWl0
IG1lc3NhZ2VDbGllbnRzKHJlcGx5KTsKK30KKworc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNz
YWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgbWVzc2FnZU5hbWUgPSBldmVu
dC5kYXRhLnNwbGl0KCd8JylbMF07CisgICAgaWYgKG1lc3NhZ2VOYW1lID09ICJ0cnlzaG93IikK
KyAgICAgICAgYXdhaXQgdHJ5U2hvdyhldmVudC5kYXRhKTsKKyAgICBpZiAobWVzc2FnZU5hbWUg
PT0gImdldG5vdGVzIikKKyAgICAgICAgYXdhaXQgZ2V0Tm90ZXMoZXZlbnQuZGF0YSk7CisgICAg
aWYgKG1lc3NhZ2VOYW1lID09ICJlY2hvIGJhY2siKQorICAgICAgICBhd2FpdCBtZXNzYWdlQ2xp
ZW50cygiZ290TmV3Q2xpZW50Iik7Cit9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggNjRkNDkxYzE2NWJkLi5hYmZjMDJkNmRmMGUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zCkBAIC03MTAsNiArNzEwLDcgQEAgd2Vi
a2l0Lm9yZy9iLzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9jYWNoZS1zdG9yYWcKIHdlYmtpdC5vcmcvYi8xNzU0MTkgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS9zZXJ2aWNld29y
a2VyL2NhY2hlLXN0b3JhZ2UtbWF0Y2guaHR0cHMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9i
LzE3NTQxOSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9j
YWNoZS1zdG9yYWdlL3NlcnZpY2V3b3JrZXIvY3JlZGVudGlhbHMuaHR0cHMuaHRtbCBbIFNraXAg
XQogd2Via2l0Lm9yZy9iLzE3NTQxOSBbIFJlbGVhc2UgXSBodHRwL3Rlc3RzL3dvcmtlcnMvc2Vy
dmljZS9wb3N0bWVzc2FnZS1hZnRlci10ZXJtaW5hdGUuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBUaW1lb3V0IF0KK3dlYmtpdC5vcmcvYi8xNzU0MTkgaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZp
Y2Uvb3BlbndpbmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sIFsgU2tpcCBdCiAKICMg
RklYTUU6IFRoaXMgY2FuJ3QgYmUgdGhlIHJpZ2h0IGJ1ZyBudW1iZXIuCiB3ZWJraXQub3JnL2Iv
MTc1NDE5IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Fib3J0L3Nl
cnZpY2V3b3JrZXItaW50ZXJjZXB0ZWQuaHR0cHMuaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwNGI0
Yjk4NGQ1YmIuLjI3MmRkNTZmNzBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wMy0yNyAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBTZXJ2
aWNlV29ya2VyQ2xpZW50cy5vcGVuV2luZG93LgorICAgICAgICA8cmRhcjovLzkwNjE2NjUxPiBh
bmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwMAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0hhc2hUYWJs
ZS5oOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjppbmxpbmVMb29rdXApOiBSZWxheCB0aGlz
IHZhbHVlIHNpemUgcmVxdWlyZW1lbnQgZm9yIG5vdy4KKyAgICAgICAgVGhlIHJlcXVpcmVkIHJl
ZmFjdG9yaW5nIGlzIGJlc3QgbGVmdCBhcyBhIHNlcGVyYXRlIHRhc2sgd2l0aCBhIHNlcGVyYXRl
IHBhdGNoLgorCiAyMDIyLTAzLTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5mb2N1cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNo
VGFibGUuaAppbmRleCAyZTY0NDE0ZjdhYzAuLjNlYTliNWI0ZmJiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvSGFzaFRhYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvSGFzaFRhYmxlLmgK
QEAgLTY4MSw3ICs2ODEsNyBAQCBERUNMQVJFX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURFTlRJRklF
UihIYXNoVGFibGUpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUPgogICAgIEFMV0FZU19JTkxJTkUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0
cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmlubGluZUxvb2t1cChj
b25zdCBUJiBrZXkpIC0+IFZhbHVlVHlwZSoKICAgICB7Ci0gICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFZhbHVlKSA8PSAxMjgsICJZb3VyIEhhc2hUYWJsZSB0eXBlcyBhcmUgdG9vIGJpZyB0
byBlZmZpY2llbnRseSBtb3ZlIHdoZW4gcmVoYXNoaW5nLiAgQ29uc2lkZXIgdXNpbmcgVW5pcXVl
UmVmIGluc3RlYWQiKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVmFsdWUpIDw9IDE1
MCwgIllvdXIgSGFzaFRhYmxlIHR5cGVzIGFyZSB0b28gYmlnIHRvIGVmZmljaWVudGx5IG1vdmUg
d2hlbiByZWhhc2hpbmcuICBDb25zaWRlciB1c2luZyBVbmlxdWVSZWYgaW5zdGVhZCIpOwogICAg
ICAgICBjaGVja0tleTxIYXNoVHJhbnNsYXRvcj4oa2V5KTsKIAogICAgICAgICB1bnNpZ25lZCBr
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2YjUzNzJmMTRmYWEuLjYzYTZjMzBlOWViOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTI3ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IFNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5k
b3cuCisgICAgICAgIDxyZGFyOi8vOTA2MTY2NTE+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uvb3Blbndp
bmRvdy1mcm9tLW5vdGlmaWNhdGlvbi1jbGljay5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhZ2VJRCBjb25zdCk6CisgICAg
ICAgIAorICAgICAgICAqIHBhZ2UvQ2xpZW50T3JpZ2luLmg6CisgICAgICAgIChXZWJDb3JlOjpD
bGllbnRPcmlnaW46OmxvZ2dpbmdTdHJpbmcgY29uc3QpOgorICAgICAgICAKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudERhdGEuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpmcm9tKToKKyAgICAgICAg
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhOjpkZWNvZGUpOgorICAg
ICAgICAKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3cpOgorICAgICAg
ICAKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
Lmg6CisKIDIwMjItMDMtMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCBTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmZvY3VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCBmZGNjZjc3NzhhZTcuLmFkMGY2MTZlM2U2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCkBAIC04NDA4LDcgKzg0MDgsNyBAQCBMb2dnZXImIERvY3VtZW50Ojps
b2dnZXIoKQogICAgIAogc3RkOjpvcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBh
Z2VJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLnBhZ2VJRCgpOwor
ICAgIHJldHVybiBtX2ZyYW1lID8gbV9mcmFtZS0+bG9hZGVyKCkucGFnZUlEKCkgOiBzdGQ6Om51
bGxvcHQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8RnJhbWVJZGVudGlmaWVyPiBEb2N1bWVudDo6ZnJh
bWVJRCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdp
bi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRPcmlnaW4uaAppbmRleCA2MjA0MDEwZmFm
Y2UuLjZlMTQ5MzE0ODU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DbGllbnRP
cmlnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NsaWVudE9yaWdpbi5oCkBAIC01MCw2
ICs1MCw4IEBAIHN0cnVjdCBDbGllbnRPcmlnaW4gewogCiAgICAgU2VjdXJpdHlPcmlnaW5EYXRh
IHRvcE9yaWdpbjsKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgY2xpZW50T3JpZ2luOworCisgICAg
U3RyaW5nIGxvZ2dpbmdTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtYWtlU3RyaW5nKHRvcE9yaWdp
bi50b1N0cmluZygpLCAiLSIsIGNsaWVudE9yaWdpbi50b1N0cmluZygpKTsgfQogfTsKIAogaW5s
aW5lIHZvaWQgYWRkKEhhc2hlciYgaGFzaGVyLCBjb25zdCBDbGllbnRPcmlnaW4mIG9yaWdpbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNsaWVudERhdGEuY3BwCmluZGV4IDlhOTcwYzY0NGNmYi4uOTM1Yjc5M2FiYTA2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVu
dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YS5jcHAKQEAgLTU4LDEyICs1OCwxMiBAQCBzdGF0aWMgU2VydmljZVdvcmtl
ckNsaWVudEZyYW1lVHlwZSB0b1NlcnZpY2VXb3JrZXJDbGllbnRGcmFtZVR5cGUoU2NyaXB0RXhl
Y3V0aQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogewotICAgIHJldHVybiB7IGlkZW50aWZpZXIsIHR5cGUs
IGZyYW1lVHlwZSwgdXJsLmlzb2xhdGVkQ29weSgpLCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIgfTsKKyAgICByZXR1cm4geyBp
ZGVudGlmaWVyLCB0eXBlLCBmcmFtZVR5cGUsIHVybC5pc29sYXRlZENvcHkoKSwgcGFnZUlkZW50
aWZpZXIsIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkLCBpc1Zpc2libGUsIGlzRm9jdXNl
ZCwgZm9jdXNPcmRlciB9OwogfQogCiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSBTZXJ2aWNlV29y
a2VyQ2xpZW50RGF0YTo6aXNvbGF0ZWRDb3B5KCkgJiYKIHsKLSAgICByZXR1cm4geyBpZGVudGlm
aWVyLCB0eXBlLCBmcmFtZVR5cGUsIFdURk1vdmUodXJsKS5pc29sYXRlZENvcHkoKSwgbGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQsIGlzVmlzaWJsZSwgaXNGb2N1c2VkLCBmb2N1c09yZGVy
IH07CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgdHlwZSwgZnJhbWVUeXBlLCBXVEZNb3ZlKHVy
bCkuaXNvbGF0ZWRDb3B5KCksIHBhZ2VJZGVudGlmaWVyLCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCwgaXNWaXNpYmxlLCBpc0ZvY3VzZWQsIGZvY3VzT3JkZXIgfTsKIH0KIAogU2Vydmlj
ZVdvcmtlckNsaWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKQEAgLTc4LDcgKzc4LDkgQEAgU2VydmljZVdvcmtlckNs
aWVudERhdGEgU2VydmljZVdvcmtlckNsaWVudERhdGE6OmZyb20oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY28KICAgICAgICAgY29udGV4dC5pZGVudGlmaWVyKCksCiAgICAgICAgIGlzRG9jdW1l
bnQgPyBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IDogU2VydmljZVdvcmtlckNsaWVu
dFR5cGU6OldvcmtlciwKICAgICAgICAgdG9TZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlKGNv
bnRleHQpLAotICAgICAgICBkb2N1bWVudC5jcmVhdGlvblVSTCgpLCBsYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCwKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRpb25VUkwoKSwKKyAgICAgICAg
ZG9jdW1lbnQucGFnZUlEKCksCisgICAgICAgIGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
LAogICAgICAgICAhZG9jdW1lbnQuaGlkZGVuKCksCiAgICAgICAgIGRvY3VtZW50Lmhhc0ZvY3Vz
KCksCiAgICAgICAgIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnREYXRhLmgKaW5kZXggODVlMTA4M2Q3ZDQxLi4xNDlhNTFh
MjFkZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ2xpZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NRdWFsaWZpZWQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlLmgiCkBAIC00NSw2
ICs0Niw3IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiAgICAgU2VydmljZVdv
cmtlckNsaWVudFR5cGUgdHlwZTsKICAgICBTZXJ2aWNlV29ya2VyQ2xpZW50RnJhbWVUeXBlIGZy
YW1lVHlwZTsKICAgICBVUkwgdXJsOworICAgIHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJZGVudGlmaWVyOwogICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGxhc3RO
YXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAgIGJvb2wgaXNWaXNpYmxlIHsgZmFsc2UgfTsK
ICAgICBib29sIGlzRm9jdXNlZCB7IGZhbHNlIH07CkBAIC02Miw3ICs2NCw3IEBAIHN0cnVjdCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBT
ZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwgZnJhbWVUeXBlIDw8IHVybCA8
PCBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2Vk
IDw8IGZvY3VzT3JkZXI7CisgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyIDw8IHR5cGUgPDwgZnJh
bWVUeXBlIDw8IHVybCA8PCBwYWdlSWRlbnRpZmllciA8PCBsYXN0TmF2aWdhdGlvbldhc0FwcElu
aXRpYXRlZCA8PCBpc1Zpc2libGUgPDwgaXNGb2N1c2VkIDw8IGZvY3VzT3JkZXI7CiB9CiAKIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC04OCw2ICs5MCwxMSBAQCBzdGQ6Om9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YTo6ZGVjb2RlKERl
Y29kZXImCiAgICAgaWYgKCF1cmwpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKKyAg
ICBzdGQ6Om9wdGlvbmFsPHN0ZDo6b3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSWRlbnRp
ZmllcjsKKyAgICBkZWNvZGVyID4+IHBhZ2VJZGVudGlmaWVyOworICAgIGlmICghcGFnZUlkZW50
aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6Om9wdGlvbmFs
PExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkPiBsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRp
YXRlZDsKICAgICBkZWNvZGVyID4+IGxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwogICAg
IGlmICghbGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQpCkBAIC0xMDgsNyArMTE1LDcgQEAg
c3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4gU2VydmljZVdvcmtlckNsaWVu
dERhdGE6OmRlY29kZShEZWNvZGVyJgogICAgIGlmICghZm9jdXNPcmRlcikKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoKnR5cGUpLCBXVEZNb3ZlKCpmcmFtZVR5cGUpLCBXVEZNb3ZlKCp1cmwpLCBXVEZN
b3ZlKCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdURk1vdmUoKmlzVmlzaWJsZSks
IFdURk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3JkZXIpIH0gfTsKKyAgICByZXR1
cm4geyB7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCp0eXBlKSwgV1RGTW92ZSgqZnJh
bWVUeXBlKSwgV1RGTW92ZSgqdXJsKSwgV1RGTW92ZSgqcGFnZUlkZW50aWZpZXIpLCBXVEZNb3Zl
KCpsYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCksIFdURk1vdmUoKmlzVmlzaWJsZSksIFdU
Rk1vdmUoKmlzRm9jdXNlZCksIFdURk1vdmUoKmZvY3VzT3JkZXIpIH0gfTsKIH0KIAogdXNpbmcg
U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCmlu
ZGV4IGUyOTkxODk3MWE1MC4uODRhZTY3ZTM5N2VkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAKQEAgLTkwLDEw
ICs5MCw3NiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDbGllbnRzOjptYXRjaEFsbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBDbGllbgogICAgIH0pOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJDbGllbnRzOjpvcGVuV2luZG93KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBTdHJpbmcmIHVybCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorc3RhdGlj
IHZvaWQgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSYsIHN0ZDo6
b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+KT4mJiBjYWxsYmFjaykKIHsKLSAgICBV
TlVTRURfUEFSQU0odXJsKTsKLSAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3Vw
cG9ydGVkRXJyb3IsICJjbGllbnRzLm9wZW5XaW5kb3coKSBpcyBub3QgeWV0IHN1cHBvcnRlZCJf
cyB9KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcGFn
ZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewor
ICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5j
b25uZWN0aW9uKCk7CisgICAgICAgIGF1dG8gb3B0aW9ucyA9IFNlcnZpY2VXb3JrZXJDbGllbnRR
dWVyeU9wdGlvbnMgeyB0cnVlLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93IH07Cisg
ICAgICAgIGNvbm5lY3Rpb24tPm1hdGNoQWxsKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBvcHRp
b25zLCBbc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHBhZ2VJZGVudGlmaWVyLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXSAoVmVjdG9yPFNlcnZpY2VXb3JrZXJDbGllbnREYXRhPiYmIGNs
aWVudHNEYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFNXQ29udGV4dE1hbmFnZXI6OnNpbmds
ZXRvbigpLnBvc3RUYXNrVG9TZXJ2aWNlV29ya2VyKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBb
cGFnZUlkZW50aWZpZXIsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGNsaWVudHNEYXRh
ID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUoY2xpZW50c0RhdGEpKV0gKGF1dG8mIHNjb3BlKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGRhdGEgOiBjbGllbnRzRGF0YSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5wYWdlSWRlbnRpZmllciA9PSBwYWdlSWRl
bnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIGRhdGEp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FsbGJhY2soc2NvcGUsIHN0
ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgU2VydmljZVdvcmtlckNsaWVudHM6Om9wZW5XaW5kb3coU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKK3sKKyAgICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkg
c2VydmljZSB3b3JrZXIgY2FsbGluZyBvcGVuV2luZG93IHRvIFVSTCAlcyIsIGdldHBpZCgpLCB1
cmxTdHJpbmcudXRmOCgpLmRhdGEoKSk7CisKKyAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQo
KS5pZGVudGlmaWVyKCk7CisgICAgYXV0byB1cmwgPSBjb250ZXh0LmNvbXBsZXRlVVJMKHVybFN0
cmluZyk7CisKKyAgICBpZiAoY29udGV4dC5zZXR0aW5nc1ZhbHVlcygpLnNlcnZpY2VXb3JrZXJz
VXNlckdlc3R1cmVFbmFibGVkICYmICFkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpLmlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpIHsKKyAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwgIlNlcnZpY2VXb3JrZXJDbGll
bnRzLm9wZW5XaW5kb3coKSByZXF1aXJlcyBhIHVzZXIgZ2VzdHVyZSJfcyB9KTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghdXJsLmlzVmFsaWQoKSkgeworICAgICAgICBwcm9t
aXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJVUkwgc3RyaW5n
ICIsIHVybFN0cmluZywgIiBjYW5ub3Qgc3VjY2Vzc2Z1bGx5IGJlIHBhcnNlZCJfcykgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAodXJsLnByb3RvY29sSXNBYm91dCgpKSB7
CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIG1ha2VTdHJp
bmcoIlNlcnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3coKSBjYW5ub3QgYmUgY2FsbGVkIHdp
dGggVVJMICJfcywgdXJsLnN0cmluZygpKSB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb21pc2VJZGVudGlmaWVyID0gYWRkUGVuZGluZ1Byb21p
c2UoV1RGTW92ZShwcm9taXNlKSksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB1cmwgPSB1cmwu
aXNvbGF0ZWRDb3B5KCldICgpIG11dGFibGUgeworICAgICAgICBhdXRvIGNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCk7CisgICAgICAgIGNvbm5l
Y3Rpb24tPm9wZW5XaW5kb3coc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHVybC5zdHJpbmcoKSwg
W3Byb21pc2VJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKHN0ZDo6b3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+JiYgcGFnZUlkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICAg
ICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkucG9zdFRhc2tUb1NlcnZpY2VXb3JrZXIo
c2VydmljZVdvcmtlcklkZW50aWZpZXIsIFtwcm9taXNlSWRlbnRpZmllciwgcGFnZUlkZW50aWZp
ZXIgPSBXVEZNb3ZlKHBhZ2VJZGVudGlmaWVyKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXJdIChT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBMT0coU2VydmljZVdvcmtlciwgIldlYlByb2Nlc3MgJWkgZmluaXNoZWQgU2VydmljZVdvcmtl
ckNsaWVudHM6Om9wZW5XaW5kb3cgY2FsbC4gUmVzdWx0aW5nIHBhZ2UgaWRlbnRpZmllciBpcyAl
cyIsIGdldHBpZCgpLCBwYWdlSWRlbnRpZmllciA/IHBhZ2VJZGVudGlmaWVyLT5sb2dnaW5nU3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8Tk9ORT4iKTsKKworICAgICAgICAgICAgICAgIGlmICgh
cGFnZUlkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gcHJvbWlzZSA9
IHNjb3BlLmNsaWVudHMoKS50YWtlUGVuZGluZ1Byb21pc2UocHJvbWlzZUlkZW50aWZpZXIpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6
anNOdWxsKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgbWF0Y2hXaW5kb3dXaXRoUGFnZUlkZW50aWZpZXIoc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsICpwYWdlSWRlbnRpZmllciwgW3Byb21pc2VJZGVudGlmaWVyXSAo
YXV0byYgc2NvcGUsIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudERhdGE+IGNsaWVu
dERhdGEpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHByb21pc2UgPSBzY29w
ZS5jbGllbnRzKCkudGFrZVBlbmRpbmdQcm9taXNlKHByb21pc2VJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwcm9taXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RGF0YSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhKU1ZhbHVlKEpTQzo6anNOdWxsKCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgYXV0byBjbGllbnQgPSBTZXJ2aWNlV29ya2VyQ2xpZW50
OjpjcmVhdGUoc2NvcGUsIFdURk1vdmUoKmNsaWVudERhdGEpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+dGVtcGxhdGUgcmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlckNs
aWVudD4+KFdURk1vdmUoY2xpZW50KSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckNsaWVu
dHM6OmNsYWltKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCBmY2Y1ZWUwOWM4YTUuLmZl
ZTdjMTVkMmI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjcsOCArNjcsOCBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiwgRmluZENsaWVudEJ5SWRlbnRpZmll
ckNhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRpb25zJiwg
U2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEV4Y2VwdGlvbk9yPHZvaWQ+JiYpPiYmKSA9IDA7Ci0KICAgICAgICAgdmlydHVhbCB2
b2lkIGZvY3VzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+
JiYpPiYmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuV2luZG93KFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYmKT4mJikgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaApp
bmRleCA2MTg2MzQ2Y2QxNzYuLjhlMGRhOTUyMzFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCkBAIC04Miw2ICs4Miw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
Q2xpZW50RGF0YT4mJik+JiYpOwogCisgICAgdmlydHVhbCB2b2lkIG9wZW5XaW5kb3coU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmKSA9
IDA7CisKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAgICAgc3RkOjpvcHRpb25hbDxT
Y3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4gc2VydmljZVdvcmtlclBhZ2VJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlkZW50aWZpZXI7IH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oCmluZGV4IDllZGQ0NDVlNmNiYy4uMTYwMDY1ZDM2ZWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CkBAIC0xMTcsNyArMTE3LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFNlcnZpY2VXb3JrZXJEYXRh
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgU2VydmljZVdvcmtlckNvbnRl
eHREYXRhIGNvbnRleHREYXRhKCkgY29uc3Q7CiAKLSAgICBjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbigpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IENsaWVudE9yaWdpbiYgb3Jp
Z2luKCkgY29uc3Q7CiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogICAgIFdFQkNPUkVf
RVhQT1JUIHN0ZDo6b3B0aW9uYWw8U2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI+IHNl
cnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDczNDhhNTRk
MDBmZS4uZmIyNTBmMzhkYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5IEBACisyMDIyLTAzLTI3
ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IFNl
cnZpY2VXb3JrZXJDbGllbnRzLm9wZW5XaW5kb3cuCisgICAgICAgIDxyZGFyOi8vOTA2MTY2NTE+
IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NDAwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlz
IEFQSSBhc2tzIHRoZSBicm93c2VyIHRvIGFzeW5jaHJvbm91c2x5IG9wZW4gYSBuZXcgdGFiIHRv
IGEgVVJMIHRoZW4gcmVzb2x2ZQorICAgICAgICBhIHByb21pc2Ugd2l0aCB0aGUgbmV3IFdpbmRv
d0NsaWVudCByZXByZXNlbnRpbmcgdGhhdCB0YWIuCisgICAgICAgICAgICAKKyAgICAgICAgRnJv
bSBhIFdlYkNvcmUvV2ViS2l0IHN0YW5kcG9pbnQsIGltcGxlbWVudGluZyB0aGlzIHdhcyBtb3N0
bHkgc3RyYWlnaHRmb3J3YXJkLgorICAgICAgICAxIC0gQSBwbHVtYmluZyBleGVyY2lzZSAodGhy
ZWFkIGhvcHBpbmcgYW5kIElQQydpbmcgdGhlIG1lc3NhZ2UgYW5kIGl0cyByZXBseSBhcm91bmQp
CisgICAgICAgIDIgLSBJbXBsbWVudGluZyBhIG5ldyBkZWxlZ2F0ZSBtZXRob2QgZm9yIHRoZSBo
b3N0aW5nIGFwcCB0byBjcmVhdGUgdGhlIHJlcXVlc3RlZCBXS1dlYlZpZXcKKyAgICAgICAgCisg
ICAgICAgIFRoZSBkZWxlZ2F0ZSBtZXRob2Qgd2FzIGludGVyZXN0aW5nLiBOb3JtYWxseSB0aGlz
IGlzIHRoZSB0eXBlIG9mIHRoaW5nIHRoYXQnZCBnbyB0byB0aGUKKyAgICAgICAgV0tVSURlbGVn
YXRlIGJ1dCB0aGF0IHJlcXVpcmVzIHRoZXJlIHRvIGJlIGEgV0tXZWJWaWV3LCBhbmQgc2Vydmlj
ZSB3b3JrZXJzIGNhbiBiZSBydW5uaW5nCisgICAgICAgIHdpdGhvdXQgYW55IHdlYiB2aWV3cy4K
KyAgICAgICAgCisgICAgICAgIEZvcnR1bmF0ZWx5IHdlIGFscmVhZHkgaGFkIGEgV0tXZWJzaXRl
RGF0YVN0b3JlIGRlbGVnYXRlIFNQSSwgYW5kIHNlcnZpY2Ugd29ya2VycyAqZG8qIGFsd2F5cwor
ICAgICAgICBoYXZlIGFuIGFzc29jaWF0ZWQgd2Vic2l0ZSBkYXRhIHN0b3JlIHRoZXkncmUgcnVu
bmluZyB1bmRlci4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlIGFwcCBnaXZlcyB0aGUgbmV3
IHdlYiB2aWV3IGJhY2sgdG8gV2ViS2l0LCB3ZSByZWNvcmQgaXRzIFBhZ2VJZGVudGlmaWVyIGlu
IHRoZSByZXBseS4KKyAgICAgICAgCisgICAgICAgIE9uY2UgdGhlIHJlcGx5IG1ha2VzIGl0cyB3
YXkgYWxsIHRoZSB3YXkgYmFjayB0byB0aGUgU2VydmljZVdvcmtlciBwcm9jZXNzIGFuZCBvbiB0
aGUgCisgICAgICAgIFNlcnZpY2VXb3JrZXIgdGhyZWFkLCB3ZSBkbyBhIGNsaWVudCBtYXRjaCBh
bmQgY3Jvc3MgY2hlY2sgd2l0aCB0aGF0IFBhZ2VJZGVudGlmaWVyIHRvIG1ha2UKKyAgICAgICAg
c3VyZSB3ZSdyZSByZXNvbHZpbmcgdGhlIHByb21pc2Ugd2l0aCB0aGUgY29ycmVjdCBXaW5kb3dD
bGllbnQuCisgICAgICAgIAorICAgICAgICBJZiB0aGVyZSdzIG5vIG1hdGNoZWQgY2xpZW50cywg
dGhlbiB0aGUgdmlldyBpcyBlaXRoZXIgYWxyZWFkeSBnb25lIG9yIGl0IGhhcyBuYXZpZ2F0ZWQg
YXdheQorICAgICAgICB0byBhIG5vbi1hcHBsaWNhYmxlIFVSTC4KKyAgICAgICAgCisgICAgICAg
IFNhbWUgaWYgdGhlcmUgYXJlIG1hdGNoZWQgY2xpZW50cywgYnV0IHRoZXkgZG9uJ3QgbWF0Y2gg
dGhlIHNwZWNpZmllZCBQYWdlSWRlbnRpZmllci4KKworICAgICAgICBBIHN0cmFpZ2h0IGZvcndh
cmQgbGF5b3V0dGVzdCBjb21wbGV0ZXMgdGhlIHRhc2suCisgICAgICAgIAorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250cm9sQ2xpZW50KToKKyAg
ICAgICAgCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlclRv
Q29udGV4dENvbm5lY3Rpb246Om9wZW5XaW5kb3cpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUg
c2V0X2RlbGVnYXRlOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlLmg6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjYWxsTG9hZENvbXBsZXRpb25IYW5kbGVyc0lmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc2V0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNhbGxTZXJ2aWNlV29ya2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXJJZk5l
Y2Vzc2FyeSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2luZG93RnJvbVNlcnZpY2VX
b3JrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ2xpZW50OjpvcGVuV2lu
ZG93RnJvbVNlcnZpY2VXb3JrZXIpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpzaG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZENsaWNrTm90aWZpY2F0aW9uKToKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpvcGVuV2luZG93KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aDoKKwogMjAyMi0wMy0yNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuZm9jdXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNDUyYzY3MTEzODBmLi5lOWViMjM5
OWE5OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNzUs
NyArMTc1LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmNvbnRyb2xDbGllbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIgY2xpZW4KICAgICAgICAgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY2xpZW50SWRlbnRpZmllcik7CiAgICAgfSk7CiAKLSAgICBTZXJ2
aWNlV29ya2VyQ2xpZW50RGF0YSBkYXRhIHsgY2xpZW50SWRlbnRpZmllciwgU2VydmljZVdvcmtl
ckNsaWVudFR5cGU6OldpbmRvdywgU2VydmljZVdvcmtlckNsaWVudEZyYW1lVHlwZTo6Tm9uZSwg
cmVxdWVzdC51cmwoKSwgcmVxdWVzdC5pc0FwcEluaXRpYXRlZCgpID8gV2ViQ29yZTo6TGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQ6OlllcyA6IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2Fz
QXBwSW5pdGlhdGVkOjpObyB9OworICAgIFNlcnZpY2VXb3JrZXJDbGllbnREYXRhIGRhdGEgeyBj
bGllbnRJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6V2luZG93LCBTZXJ2aWNl
V29ya2VyQ2xpZW50RnJhbWVUeXBlOjpOb25lLCByZXF1ZXN0LnVybCgpLCB7IH0sIHJlcXVlc3Qu
aXNBcHBJbml0aWF0ZWQoKSA/IFdlYkNvcmU6Okxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVk
OjpZZXMgOiBXZWJDb3JlOjpMYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZDo6Tm8gfTsKICAg
ICByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoU2VjdXJpdHlPcmlnaW5EYXRhIHsgcmVnaXN0
cmF0aW9uLmtleSgpLnRvcE9yaWdpbigpIH0sIFdURk1vdmUoZGF0YSksIHJlZ2lzdHJhdGlvbi5p
ZGVudGlmaWVyKCksIHJlcXVlc3QuaHR0cFVzZXJBZ2VudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCAwMzY3NWE4
NDQ0MmUuLjAwOTMyMzZmMmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKQEAgLTE1Nyw2ICsxNTcsMjcgQEAgdm9pZCBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb246OnRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25zaXZlbmVzcygp
CiAgICAgbV9jb25uZWN0aW9uLm5ldHdvcmtQcm9jZXNzKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVybWluYXRlVW5yZXNw
b25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyB7IHdlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CiB9CiAKK3ZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpvcGVuV2luZG93
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgdXJsU3RyaW5nLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIGF1dG8qIHNlcnZlciA9
IHRoaXMtPnNlcnZlcigpOworICAgIGlmICghc2VydmVyKSB7CisgICAgICAgIGNhbGxiYWNrKHN0
ZDo6bnVsbG9wdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiB3b3JrZXIg
PSBzZXJ2ZXItPndvcmtlckJ5SUQoaWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JrZXIpIHsKKyAg
ICAgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gaW5uZXJDYWxsYmFjayA9IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmIHBhZ2VJZGVudGlmaWVyKSBt
dXRhYmxlIHsKKyAgICAgICAgY2FsbGJhY2soV1RGTW92ZShwYWdlSWRlbnRpZmllcikpOworICAg
IH07CisKKyAgICBtX2Nvbm5lY3Rpb24ubmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6Ok9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlciB7IHNlcnZlci0+c2Vzc2lvbklEKCksIHVy
bFN0cmluZywgd29ya2VyLT5vcmlnaW4oKS5jbGllbnRPcmlnaW4gfSwgV1RGTW92ZShpbm5lckNh
bGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjptYXRj
aEFsbENvbXBsZXRlZCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFNl
cnZpY2VXb3JrZXJDbGllbnREYXRhPiYgY2xpZW50c0RhdGEpCiB7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Ok1hdGNoQWxsQ29tcGxldGVkIHsgcmVx
dWVzdElkZW50aWZpZXIsIGNsaWVudHNEYXRhIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4IDAzZDkzNmNjZDMyYS4uODBiMzAzZTQ0
ZGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC0xMDIsNiArMTAyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29ubmVjdGlvbklz
Tm9Mb25nZXJOZWVkZWQoKSBmaW5hbDsKICAgICB2b2lkIHRlcm1pbmF0ZUR1ZVRvVW5yZXNwb25z
aXZlbmVzcygpIGZpbmFsOworICAgIHZvaWQgb3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBjb25uZWN0aW9uQ2xvc2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4
IDNlNzc1ODUyMzc5NS4uMjFkMjM2NTU3YzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTQwLDYg
KzQwLDggQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5vdFJl
ZkNvdW50ZWQgewogICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBzdHJ1Y3QgV2Vi
Q29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2luKQogICAgIERpZEZhaWxI
ZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIFNldEFzSW5zcGVjdGVkKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCisKKyAgICBPcGVuV2luZG93KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFN0cmluZyB1cmxTdHJpbmcpIC0+IChz
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdDbGllbnREYXRhKQogfQog
CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggMDgx
NzEwYThjNzEzLi41YWQ3Zjc0Y2ZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDgsNiArNDgsNyBA
QAogI2ltcG9ydCAiX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJD
b3JlL0NyZWRlbnRpYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVnaXN0cmF0aW9uRGF0YWJhc2Uu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudERhdGEuaD4KICNpbXBvcnQg
PFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgog
I2ltcG9ydCA8d3RmL1VSTC5oPgpAQCAtNTYsMTAgKzU3LDEyIEBACiAKIGNsYXNzIFdlYnNpdGVE
YXRhU3RvcmVDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlQ2xp
ZW50IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50KGlkIDxf
V0tXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+IGRlbGVnYXRlKQotICAgICAgICA6IG1fZGVsZWdh
dGUoZGVsZWdhdGUpCisgICAgZXhwbGljaXQgV2Vic2l0ZURhdGFTdG9yZUNsaWVudChXS1dlYnNp
dGVEYXRhU3RvcmUgKmRhdGFTdG9yZSwgaWQ8X1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiBk
ZWxlZ2F0ZSkKKyAgICAgICAgOiBtX2RhdGFTdG9yZShkYXRhU3RvcmUpCisgICAgICAgICwgbV9k
ZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAgICAgLCBtX2hhc1JlcXVlc3RTdG9yYWdlU3BhY2VTZWxl
Y3RvcihbbV9kZWxlZ2F0ZS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHJlcXVl
c3RTdG9yYWdlU3BhY2U6IGZyYW1lT3JpZ2luOiBxdW90YTogY3VycmVudFNpemU6IHNwYWNlUmVx
dWlyZWQ6IGRlY2lzaW9uSGFuZGxlcjopXSkKICAgICAgICAgLCBtX2hhc0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlU2VsZWN0b3IoW21fZGVsZWdhdGUuZ2V0KCkgcmVzcG9uZHNUb1NlbGVjdG9yOkBz
ZWxlY3RvcihkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IGNvbXBsZXRpb25IYW5k
bGVyOildKQorICAgICAgICAsIG1faGFzT3BlbldpbmRvd1NlbGVjdG9yKFttX2RlbGVnYXRlLmdl
dCgpIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2Vic2l0ZURhdGFTdG9yZTpvcGVuV2lu
ZG93OmZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOildKQogICAgIHsK
ICAgICB9CiAKQEAgLTEwNCw5ICsxMDcsMzIgQEAgcHJpdmF0ZToKICAgICAgICAgW21fZGVsZWdh
dGUuZ2V0QXV0b3JlbGVhc2VkKCkgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOm5z
VVJMQ2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyLmdldCgpXTsK
ICAgICB9CiAKKyAgICB2b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2Vy
T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViUGFnZVByb3h5Kik+JiYg
Y2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIW1faGFzT3BlbldpbmRvd1NlbGVjdG9yIHx8
ICFtX2RlbGVnYXRlIHx8ICFtX2RhdGFTdG9yZSkgeworICAgICAgICAgICAgY2FsbGJhY2soeyB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gY2hlY2tl
ciA9IFdlYktpdDo6Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG1fZGVsZWdh
dGUuZ2V0QXV0b3JlbGVhc2VkKCksIEBzZWxlY3Rvcih3ZWJzaXRlRGF0YVN0b3JlOm9wZW5XaW5k
b3c6ZnJvbVNlcnZpY2VXb3JrZXJPcmlnaW46Y29tcGxldGlvbkhhbmRsZXI6KSk7CisgICAgICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShXS1dlYlZpZXcgKm5ld1dl
YlZpZXcpIG11dGFibGUgeworICAgICAgICAgICAgaWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5k
bGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworCisgICAgICAgICAgICBjYWxs
YmFjayhuZXdXZWJWaWV3Ll9wYWdlLmdldCgpKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgYXV0
byBuc1VSTCA9IChOU1VSTCAqKVVSTCB7IHVybCB9OworICAgICAgICBhdXRvIGFwaU9yaWdpbiA9
IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzZXJ2aWNlV29ya2VyT3JpZ2luKTsKKyAgICAg
ICAgW21fZGVsZWdhdGUuZ2V0QXV0b3JlbGVhc2VkKCkgd2Vic2l0ZURhdGFTdG9yZTptX2RhdGFT
dG9yZS5nZXRBdXRvcmVsZWFzZWQoKSBvcGVuV2luZG93Om5zVVJMIGZyb21TZXJ2aWNlV29ya2Vy
T3JpZ2luOndyYXBwZXIoYXBpT3JpZ2luLmdldCgpKSBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0
aW9uSGFuZGxlci5nZXQoKV07CisgICAgfQorCisgICAgV2Vha09iakNQdHI8V0tXZWJzaXRlRGF0
YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlPiA+IG1fZGVsZWdhdGU7CiAgICAgYm9vbCBtX2hhc1JlcXVlc3RTdG9yYWdl
U3BhY2VTZWxlY3RvciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2hhc0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlU2VsZWN0b3IgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNPcGVuV2luZG93U2VsZWN0
b3IgeyBmYWxzZSB9OwogfTsKIAogQGltcGxlbWVudGF0aW9uIFdLV2Vic2l0ZURhdGFTdG9yZQpA
QCAtNjUyLDcgKzY3OCw3IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJlY29y
ZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAtICh2b2lkKXNldF9k
ZWxlZ2F0ZTooaWQgPF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4pZGVsZWdhdGUKIHsKICAg
ICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICBfd2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50
KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9yZUNsaWVudD4oZGVsZWdhdGUpKTsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+c2V0Q2xpZW50KG1ha2VVbmlxdWVSZWY8V2Vic2l0ZURhdGFTdG9y
ZUNsaWVudD4oc2VsZiwgZGVsZWdhdGUpKTsKIH0KIAogLSAoX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24gKilfY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5o
CmluZGV4IDBiODU3MzA0ODc5Ni4uMWQxNTgxNzQzNWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZS5oCkBAIC0yNiwxMSArMjYsMTUgQEAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRh
dGlvbi5oPgogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCitAY2xhc3MgV0tTZWN1
cml0eU9yaWdpbjsKK0BjbGFzcyBXS1dlYnNpdGVEYXRhU3RvcmU7CitAY2xhc3MgV0tXZWJWaWV3
OworCiBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1KSwgaW9zKDEzLjApKQogQHByb3RvY29s
IF9XS1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSA8TlNPYmplY3Q+CiAKIEBvcHRpb25hbAogLSAo
dm9pZClyZXF1ZXN0U3RvcmFnZVNwYWNlOihOU1VSTCAqKW1haW5GcmFtZVVSTCBmcmFtZU9yaWdp
bjooTlNVUkwgKilmcmFtZVVSTCBxdW90YTooTlNVSW50ZWdlcilxdW90YSBjdXJyZW50U2l6ZToo
TlNVSW50ZWdlciljdXJyZW50U2l6ZSBzcGFjZVJlcXVpcmVkOihOU1VJbnRlZ2VyKXNwYWNlUmVx
dWlyZWQgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
KWRlY2lzaW9uSGFuZGxlcjsKIC0gKHZvaWQpZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCkpY29tcGxldGlvbkhhbmRsZXI7
Ci0KKy0gKHZvaWQpd2Vic2l0ZURhdGFTdG9yZTooV0tXZWJzaXRlRGF0YVN0b3JlICopZGF0YVN0
b3JlIG9wZW5XaW5kb3c6KE5TVVJMICopdXJsIGZyb21TZXJ2aWNlV29ya2VyT3JpZ2luOihXS1Nl
Y3VyaXR5T3JpZ2luICopc2VydmljZVdvcmtlck9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tXZWJWaWV3ICpuZXdXZWJWaWV3KSljb21wbGV0aW9uSGFuZGxlcjsKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCmluZGV4IDI0Y2YyMGQ3MzIwMy4uZjJlMjVlYzg0NTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE3OTgsNiArMTc5OCwxNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnRlcm1p
bmF0ZVJlbW90ZVdvcmtlckNvbnRleHRDb25uZWN0aW9uV2hlblBvc3NpYmxlKFJlbQogICAgIHNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpUZXJtaW5hdGVSZW1vdGVXb3JrZXJDb250ZXh0
Q29ubmVjdGlvbldoZW5Qb3NzaWJsZSh3b3JrZXJUeXBlLCBzZXNzaW9uSUQsIHJlZ2lzdHJhYmxl
RG9tYWluLCBwcm9jZXNzSWRlbnRpZmllciksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6Om9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIHNlcnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7CisgICAg
aWYgKGF1dG8qIHN0b3JlID0gd2Vic2l0ZURhdGFTdG9yZUZyb21TZXNzaW9uSUQoc2Vzc2lvbklE
KSkgeworICAgICAgICBzdG9yZS0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmlu
Zywgc2VydmljZVdvcmtlck9yaWdpbiwgV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY2FsbGJhY2soc3RkOjpudWxsb3B0KTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDFlODZm
MzQyNjNlMC4uMTVlN2Y3NjNhMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMjk5LDYgKzI5OSw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdGVybWluYXRlUmVtb3RlV29ya2VyQ29udGV4dENvbm5lY3Rpb25X
aGVuUG9zc2libGUoUmVtb3RlV29ya2VyVHlwZSwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwogCisg
ICAgdm9pZCBvcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNl
cnZpY2VXb3JrZXJPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE5ldHdvcmtQcm9jZXNzUHJveHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDFkZDIzMzA3MzI5Ni4uMGY3ZjEzNTk0MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCkBAIC05MSw2ICs5MSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIERhdGFUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKFdlYktpdDo6
RGF0YVRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UpIC0+IChib29sIGFsbG93ZWQpCiAgICAgRGF0YVRhc2tEaWRSZWNlaXZlRGF0YShX
ZWJLaXQ6OkRhdGFUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YSkKICAgICBEYXRhVGFza0RpZENvbXBsZXRlV2l0aEVycm9yKFdlYktpdDo6RGF0YVRhc2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCisKKyAg
ICBPcGVuV2luZG93RnJvbVNlcnZpY2VXb3JrZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgdXJsU3RyaW5nLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIHNlcnZp
Y2VXb3JrZXJPcmlnaW4pIC0+IChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBuZXdQYWdlKQogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCAzN2E0NTI0ZjljN2IuLjc1MmUzZTU1NjFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00ODcwLDcgKzQ4NzAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcAogICAgICAgICBpZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRp
b24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxs
U2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAg
ICAgY2FsbExvYWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQog
CiAgICAgZnJhbWUuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZCgpOwpAQCAtNDkwNSwxMiArNDkwNSwx
NSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoU2VydmljZVdvcmtlclBhZ2VSZWdpc3Ry
YXRpb24oYm9vbCBzdWNjZXNzKQogfQogI2VuZGlmCiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjYWxs
U2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKQordm9pZCBX
ZWJQYWdlUHJveHk6OmNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBz
dWNjZXNzKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBpZiAobV9pc1NlcnZp
Y2VXb3JrZXJQYWdlICYmIG1fc2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVyKQor
ICAgIGlmIChtX2lzU2VydmljZVdvcmtlclBhZ2UgJiYgbV9zZXJ2aWNlV29ya2VyTGF1bmNoQ29t
cGxldGlvbkhhbmRsZXIgJiYgIXN1Y2Nlc3MpCiAgICAgICAgIG1fc2VydmljZVdvcmtlckxhdW5j
aENvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICNlbmRpZgorCisgICAgaWYgKG1fc2VydmljZVdv
cmtlck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2spCisgICAgICAgIG1fc2VydmljZVdvcmtl
ck9wZW5XaW5kb3dDb21wbGV0aW9uQ2FsbGJhY2soc3VjY2Vzcyk7CiB9CiAKICNpZiBFTkFCTEUo
SU5URUxMSUdFTlRfVFJBQ0tJTkdfUFJFVkVOVElPTikKQEAgLTUxMzQsNiArNTEzNyw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIEZyYW1lSW5mb0RhdGEmCiAgICAgICAgIHJlc2V0UmVjZW50Q3Jhc2hDb3VudFNvb24o
KTsKIAogICAgICAgICBub3RpZnlQcm9jZXNzUG9vbFRvUHJld2FybSgpOworCisgICAgICAgIGNh
bGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkodHJ1ZSk7CiAgICAgfQogCiAgICAg
bV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCA9
IGZhbHNlOwpAQCAtNTE4Miw3ICs1MTg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxM
b2FkRm9yRnJhbWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJgogICAg
ICAgICBpZiAobmF2aWdhdGlvbikKICAgICAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5h
dmlnYXRpb25BY3Rpdml0eShudWxscHRyKTsKIAotICAgICAgICBjYWxsU2VydmljZVdvcmtlckxh
dW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExvYWRDb21w
bGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAgICAgfQogfQogCkBAIC04MDE4LDcg
KzgwMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzZXRTdGF0ZShSZXNldFN0YXRlUmVhc29u
IHJlc2V0U3RhdGVSZWFzb24pCiAjZW5kaWYKIAogICAgIGlmIChyZXNldFN0YXRlUmVhc29uICE9
IFJlc2V0U3RhdGVSZWFzb246Ok5hdmlnYXRpb25Td2FwKQotICAgICAgICBjYWxsU2VydmljZVdv
cmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsKKyAgICAgICAgY2FsbExv
YWRDb21wbGV0aW9uSGFuZGxlcnNJZk5lY2Vzc2FyeShmYWxzZSk7CiAKICAgICBpZiAobV9vcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVy
LT5pbnZhbGlkYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGNhMjQyZjIzZmIwZC4uOGNmYjUyN2FiYjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMjA4MSw2ICsyMDgxLDE0IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW50
ZXJhY3RhYmxlUmVnaW9uc0luUm9vdFZpZXdDb29yZGluYXRlcyhXZWJDb3JlOjpGbG9hdFJlY3Qs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkZsb2F0UmVjdD4pPiYmKTsK
IAorI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICB2b2lkIHNldFNlcnZpY2VXb3JrZXJP
cGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3NlcnZpY2VX
b3JrZXJPcGVuV2luZG93Q29tcGxldGlvbkNhbGxiYWNrKTsKKyAgICAgICAgbV9zZXJ2aWNlV29y
a2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxi
YWNrKTsKKyAgICB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
ICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwpAQCAtMjYwNyw3ICsyNjE1LDcgQEAgcHJp
dmF0ZToKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBkaWRGaW5pc2hTZXJ2
aWNlV29ya2VyUGFnZVJlZ2lzdHJhdGlvbihib29sIHN1Y2Nlc3MpOwogI2VuZGlmCi0gICAgdm9p
ZCBjYWxsU2VydmljZVdvcmtlckxhdW5jaENvbXBsZXRpb25IYW5kbGVySWZOZWNlc3NhcnkoKTsK
KyAgICB2b2lkIGNhbGxMb2FkQ29tcGxldGlvbkhhbmRsZXJzSWZOZWNlc3NhcnkoYm9vbCBzdWNj
ZXNzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgc3RhdGljIGJvb2wgaXNJbkhh
cmR3YXJlS2V5Ym9hcmRNb2RlKCk7CkBAIC0zMTE5LDYgKzMxMjcsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBib29sIG1faXNTZXJ2aWNlV29ya2VyUGFnZSB7
IGZhbHNlIH07CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gbV9zZXJ2aWNlV29y
a2VyTGF1bmNoQ29tcGxldGlvbkhhbmRsZXI7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4gbV9zZXJ2aWNlV29ya2VyT3BlbldpbmRvd0NvbXBsZXRpb25DYWxsYmFjazsKICNlbmRp
ZgogCiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUGFnZVByb3h5PiBtX3RyeUNsb3NlVGltZW91dFRp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA3MWFlOTI2NTQ4YmMuLmUxNzM2NTg2NzE5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKQEAgLTIwODcsNCArMjA4NywzNCBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmRpZERlc3Ryb3lTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uKGNvbnN0IFVVSUQmIG5vdGlm
aWNhdAogICAgIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hhcmVkU2VydmljZVdvcmtl
ck1hbmFnZXIoKS5kaWREZXN0cm95Tm90aWZpY2F0aW9uKG51bGxwdHIsIG5vdGlmaWNhdGlvbklE
KTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpvcGVuV2luZG93RnJvbVNlcnZpY2VXb3Jr
ZXIoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgc2VydmljZVdvcmtlck9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPik+JiYgY2FsbGJhY2spCit7CisgICAgYXV0
byBpbm5lckNhbGxiYWNrID0gW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChXZWJQYWdl
UHJveHkqIG5ld1BhZ2UpIG11dGFibGUgeworICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoIW5ld1BhZ2UtPnBhZ2VMb2FkU3RhdGUoKS5pc0xvYWRpbmco
KSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIlRoZSBXS1dlYlZpZXcgcHJv
dmlkZWQgaW4gcmVzcG9uc2UgdG8gYSBTZXJ2aWNlV29ya2VyIG9wZW5XaW5kb3cgcmVxdWVzdCB3
YXMgbm90IGluIHRoZSBsb2FkaW5nIHN0YXRlIik7CisgICAgICAgICAgICBjYWxsYmFjayhzdGQ6
Om51bGxvcHQpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0
byBpbm5lckNhbGxiYWNrID0gW3BhZ2VJRCA9IG5ld1BhZ2UtPmlkZW50aWZpZXIoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgICAg
ICAgICBhdXRvKiBuZXdQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7Cisg
ICAgICAgICAgICBpZiAoIW5ld1BhZ2UgfHwgIXN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2sobmV3UGFnZS0+d2ViUGFnZUlEKCkpOworICAg
ICAgICB9OworCisgICAgICAgIG5ld1BhZ2UtPnNldFNlcnZpY2VXb3JrZXJPcGVuV2luZG93Q29t
cGxldGlvbkNhbGxiYWNrKFdURk1vdmUoaW5uZXJDYWxsYmFjaykpOworICAgIH07CisKKyAgICBt
X2NsaWVudC0+b3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKHVybFN0cmluZywgc2VydmljZVdv
cmtlck9yaWdpbiwgV1RGTW92ZShpbm5lckNhbGxiYWNrKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApp
bmRleCA2ZWY5NTUwMTcyNjYuLjJhNWQyZmQ2MzMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzc5LDYg
KzM3OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2VydmljZVdvcmtlck5vdGlmaWNhdGlv
bihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAgICAgdm9pZCBkaWREZXN0cm95U2Vydmlj
ZVdvcmtlck5vdGlmaWNhdGlvbihjb25zdCBVVUlEJiBub3RpZmljYXRpb25JRCk7CiAKKyAgICB2
b2lkIG9wZW5XaW5kb3dGcm9tU2VydmljZVdvcmtlcihjb25zdCBTdHJpbmcmIHVybFN0cmluZywg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZXJ2aWNlV29ya2VyT3JpZ2luLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+KT4mJik7CisKIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBGb3JjZVJlaW5pdGlhbGl6YXRp
b24gOiBib29sIHsgTm8sIFllcyB9OwogI2lmIEVOQUJMRShBUFBfQk9VTkRfRE9NQUlOUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmVDbGllbnQuaAppbmRleCBmN2M2ODNmZjcxNjMuLmY3YWJlMzA3YTY1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDbGllbnQuaApAQCAtMzYsNiArMzYsOCBAQCBzdHJ1Y3QgU2VjdXJpdHlP
cmlnaW5EYXRhOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3MgV2ViUGFnZVByb3h5Owor
CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKQEAgLTUwLDYgKzUyLDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IGNoYWxsZW5nZS0+bGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsKICAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgb3BlbldpbmRvd0Zyb21TZXJ2aWNlV29ya2VyKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViUGFnZVByb3h5Kik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihudWxscHRyKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZTk1YjdjYWU4NmJj
Li40OGU3NTU0ZDIwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0x
NTAsNiArMTUwLDggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyOjpzZW5kTm90aWZpY2F0aW9uTWVzc2FnZShVJiYgbWUKIAogYm9vbCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBw
YWdlKQogeworICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBnb2luZyB0byBz
aG93IG5vdGlmaWNhdGlvbiAlcyIsIGdldHBpZCgpLCBub3RpZmljYXRpb24uaWRlbnRpZmllcigp
LnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBpZiAocGFnZSAmJiAhcGFnZS0+Y29y
ZVBhZ2UoKS0+c2V0dGluZ3MoKS5ub3RpZmljYXRpb25zRW5hYmxlZCgpKQpAQCAtMjA4LDYgKzIx
MCw4IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkU2hvd05vdGlmaWNhdGlvbihj
b25zdCBVVUlEJiBub3RpZmljYXRpb25JRCkKIHsKICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgp
KTsKIAorICAgIExPRyhOb3RpZmljYXRpb25zLCAiV2ViUHJvY2VzcyAlaSBESUQgU0hPVyBub3Rp
ZmljYXRpb24gJXMiLCBnZXRwaWQoKSwgbm90aWZpY2F0aW9uSUQudG9TdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogICAgIFJlZlB0cjxOb3RpZmlj
YXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAuZ2V0KG5vdGlmaWNhdGlv
bklEKTsKICAgICBpZiAoIW5vdGlmaWNhdGlvbikKQEAgLTIyMywxMSArMjI3LDE1IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkQ2xpY2tOb3RpZmljYXRpb24oY29uc3QgVVVJRCYg
bm90aWZpY2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7CiAKKyAgICBM
T0coTm90aWZpY2F0aW9ucywgIldlYlByb2Nlc3MgJWkgRElEIENMSUNLIG5vdGlmaWNhdGlvbiAl
cyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90
aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQpOwogICAg
IGlmICghbm90aWZpY2F0aW9uKQogICAgICAgICByZXR1cm47CiAKKyAgICBMT0coTm90aWZpY2F0
aW9ucywgIldlYlByb2Nlc3MgJWkgaGFuZGxpbmcgY2xpY2sgZXZlbnQgZm9yIG5vdGlmaWNhdGlv
biAlcyIsIGdldHBpZCgpLCBub3RpZmljYXRpb25JRC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OworCiAgICAgLy8gSW5kaWNhdGUgdGhhdCB0aGlzIGV2ZW50IGlzIGJlaW5nIGRpc3BhdGNoZWQg
aW4gcmVhY3Rpb24gdG8gYSB1c2VyJ3MgaW50ZXJhY3Rpb24gd2l0aCBhIHBsYXRmb3JtIG5vdGlm
aWNhdGlvbi4KICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3IoUHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKICAgICBub3RpZmljYXRpb24tPmRpc3BhdGNoQ2xpY2tFdmVudCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IGUyM2MyNTcxN2JjYS4uMWUxYTM5
YmU3YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zMzIsNiAr
MzMyLDExIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Om1hdGNoQWxsQ29t
cGxldGVkKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyCiAgICAgICAgIGNhbGxiYWNrKFdURk1v
dmUoY2xpZW50c0RhdGEpKTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6b3BlbldpbmRvdyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mJik+JiYgY2FsbGJhY2spCit7
CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246Ok9wZW5XaW5kb3cgeyBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgdXJsIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9p
ZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6Y2xhaW0oU2VydmljZVdvcmtlcklkZW50
aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhj
ZXB0aW9uT3I8dm9pZD4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb246OkNsYWltIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIgfSwgW2NhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggZWNkODFmYjNmMmFiLi5mODk2YjFiMGViNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtODcsNiArODcsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRp
ZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAgICAgdm9pZCBzZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgYm9vbCkgZmluYWw7CisgICAgdm9pZCBvcGVuV2luZG93KFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYmKT4mJikgZmluYWw7CiAK
ICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6
Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGVj
MDMwMWE3NWE3Li4yYWJhY2FlMDgwNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAyMi0wMy0yNyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBTZXJ2aWNlV29ya2Vy
Q2xpZW50cy5vcGVuV2luZG93LgorICAgICAgICA8cmRhcjovLzkwNjE2NjUxPiBhbmQgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODQwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbmV3IGRlbGVn
YXRlIHRvIGNyZWF0ZSB0aGUgbmV3IHZpZXcuCisgICAgICAgIAorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Y3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmNyZWF0
ZU90aGVyUGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmg6CisgICAgICAgIAorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBs
YXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NvY29h
L1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUubW06CisgICAgICAgICgtW1Rlc3RXZWJzaXRl
RGF0YVN0b3JlRGVsZWdhdGUgd2Vic2l0ZURhdGFTdG9yZTpvcGVuV2luZG93OmZyb21TZXJ2aWNl
V29ya2VyT3JpZ2luOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCiAyMDIyLTAzLTI2ICBZb3Vlbm4g
RmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdv
cmtlcldpbmRvd0NsaWVudC5mb2N1cwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcAppbmRleCBhMDFjZWE0Mjc3MWEuLjAxNmNkYjBhNTBmMyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTM4MCw2ICszODAsMTcgQEAgV0tQYWdl
UmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVPdGhlclBhZ2UoV0tQYWdlUmVmLCBXS1BhZ2VDb25m
aWd1cmF0aW9uUmVmIGNvbmYKIH0KIAogV0tQYWdlUmVmIFRlc3RDb250cm9sbGVyOjpjcmVhdGVP
dGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9u
UmVmIGNvbmZpZ3VyYXRpb24sIFdLTmF2aWdhdGlvbkFjdGlvblJlZiBuYXZpZ2F0aW9uQWN0aW9u
LCBXS1dpbmRvd0ZlYXR1cmVzUmVmIHdpbmRvd0ZlYXR1cmVzKQoreworICAgIGF1dG8qIHBsYXRm
b3JtV2ViVmlldyA9IGNyZWF0ZU90aGVyUGxhdGZvcm1XZWJWaWV3KHBhcmVudFZpZXcsIGNvbmZp
Z3VyYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIHdpbmRvd0ZlYXR1cmVzKTsKKyAgICBpZiAoIXBs
YXRmb3JtV2ViVmlldykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvKiBwYWdl
ID0gcGxhdGZvcm1XZWJWaWV3LT5wYWdlKCk7CisgICAgV0tSZXRhaW4ocGFnZSk7CisgICAgcmV0
dXJuIHBhZ2U7Cit9CisKK1BsYXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6OmNyZWF0ZU90
aGVyUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29u
ZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS05hdmlnYXRpb25BY3Rpb25SZWYsIFdLV2lu
ZG93RmVhdHVyZXNSZWYpCiB7CiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+d2lsbENyZWF0ZU5l
d1BhZ2UoKTsKIApAQCAtMzg5LDcgKzQwMCw4IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJvbGxlcjo6
Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uCiAK
ICAgICBtX2NyZWF0ZWRPdGhlclBhZ2UgPSB0cnVlOwogCi0gICAgYXV0byB2aWV3ID0gcGxhdGZv
cm1DcmVhdGVPdGhlclBhZ2UocGFyZW50VmlldywgY29uZmlndXJhdGlvbiwgcGFyZW50Vmlldy0+
b3B0aW9ucygpKTsKKyAgICBhdXRvIG9wdGlvbnMgPSBwYXJlbnRWaWV3ID8gcGFyZW50Vmlldy0+
b3B0aW9ucygpIDogbV9tYWluV2ViVmlldy0+b3B0aW9ucygpOworICAgIGF1dG8gdmlldyA9IHBs
YXRmb3JtQ3JlYXRlT3RoZXJQYWdlKHBhcmVudFZpZXcsIGNvbmZpZ3VyYXRpb24sIG9wdGlvbnMp
OwogICAgIFdLUGFnZVJlZiBuZXdQYWdlID0gdmlldy0+cGFnZSgpOwogCiAgICAgdmlldy0+cmVz
aXplVG8oODAwLCA2MDApOwpAQCAtNTA5LDkgKzUyMSw5IEBAIFdLUGFnZVJlZiBUZXN0Q29udHJv
bGxlcjo6Y3JlYXRlT3RoZXJQYWdlKFBsYXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdl
Q29uCiAKICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkudXBkYXRlV2luZG93U2NhbGVG
b3JUZXN0KHZpZXcucHRyKCksICpUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubV9jdXJyZW50
SW52b2NhdGlvbik7CiAKKyAgICBQbGF0Zm9ybVdlYlZpZXcqIHZpZXdUb1JldHVybiA9IHZpZXcu
cHRyKCk7CiAgICAgbV9hdXhpbGlhcnlXZWJWaWV3cy5hcHBlbmQoV1RGTW92ZSh2aWV3KSk7Ci0g
ICAgV0tSZXRhaW4obmV3UGFnZSk7Ci0gICAgcmV0dXJuIG5ld1BhZ2U7CisgICAgcmV0dXJuIHZp
ZXdUb1JldHVybjsKIH0KIAogY29uc3QgY2hhciogVGVzdENvbnRyb2xsZXI6OmxpYnJhcnlQYXRo
Rm9yVGVzdGluZygpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXgg
NDQ1Mzk1Mzg4MzkyLi40OGZhNWFkNDJlZjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmgKQEAgLTM3OCw2ICszNzgsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZW55Tm90
aWZpY2F0aW9uUGVybWlzc2lvbihXS1N0cmluZ1JlZiBvcmlnaW4pOwogICAgIGJvb2wgZGVueU5v
dGlmaWNhdGlvblBlcm1pc3Npb25PblByb21wdChXS1N0cmluZ1JlZiBvcmlnaW4pOwogCisgICAg
UGxhdGZvcm1XZWJWaWV3KiBjcmVhdGVPdGhlclBsYXRmb3JtV2ViVmlldyhQbGF0Zm9ybVdlYlZp
ZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIFdLTmF2aWdhdGlvbkFjdGlv
blJlZiwgV0tXaW5kb3dGZWF0dXJlc1JlZik7CisKIHByaXZhdGU6CiAgICAgV0tSZXRhaW5QdHI8
V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gZ2VuZXJhdGVQYWdlQ29uZmlndXJhdGlvbihjb25zdCBU
ZXN0T3B0aW9ucyYpOwogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWY+
IGdlbmVyYXRlQ29udGV4dENvbmZpZ3VyYXRpb24oY29uc3QgVGVzdE9wdGlvbnMmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJD
b2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2Nv
YS5tbQppbmRleCA3NzIzYmE0ODdhNTYuLmRlZDUxYmI2MDYwYyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMjE0LDcg
KzIxNCw4IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1Bh
Z2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiBVbmlxdWVSZWY8UGxhdGZvcm1XZWJW
aWV3PiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJW
aWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKICAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIGNvcHldKTsKLSAgICBbbmV3Q29uZmlndXJhdGlvbiBf
c2V0UmVsYXRlZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxh
dGZvcm1WaWV3KCkpXTsKKyAgICBpZiAocGFyZW50VmlldykKKyAgICAgICAgW25ld0NvbmZpZ3Vy
YXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVudFZp
ZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1cmF0aW9uIF9yZWxhdGVk
V2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6
W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9uLndlYnNpdGVE
YXRhU3RvcmVdOwogICAgIGF1dG8gdmlldyA9IG1ha2VVbmlxdWVSZWY8UGxhdGZvcm1XZWJWaWV3
PihuZXdDb25maWd1cmF0aW9uLmdldCgpLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5t
bQppbmRleCBlMWY2OGU0OGFmNzMuLjAzYTEzOGQ2NmNmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlLm1tCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZS5tbQpAQCAtMjYsNiArMjYsMTIgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiVGVz
dFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZS5oIgogCisjaW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcu
aCIKKyNpbXBvcnQgIlRlc3RDb250cm9sbGVyLmgiCisjaW1wb3J0ICJUZXN0UnVubmVyV0tXZWJW
aWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvVW5pcXVl
UmVmLmg+CisKIEBpbXBsZW1lbnRhdGlvbiBUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlIHsg
fQogLSAoaW5zdGFuY2V0eXBlKWluaXQKIHsKQEAgLTYxLDQgKzY3LDE1IEBACiAgICAgX3Nob3Vs
ZEFsbG93QW55U1NMQ2VydGlmaWNhdGUgPSBzaG91bGRBbGxvd0FueVNTTENlcnRpZmljYXRlOwog
fQogCistICh2b2lkKXdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKWRhdGFT
dG9yZSBvcGVuV2luZG93OihOU1VSTCAqKXVybCBmcm9tU2VydmljZVdvcmtlck9yaWdpbjooV0tT
ZWN1cml0eU9yaWdpbiAqKXNlcnZpY2VXb3JrZXJPcmlnaW4gY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLV2ViVmlldyAqbmV3V2ViVmlldykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBh
dXRvKiBuZXdWaWV3ID0gV1RSOjpUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuY3JlYXRlT3Ro
ZXJQbGF0Zm9ybVdlYlZpZXcobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7Cisg
ICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gbmV3Vmlldy0+cGxhdGZvcm1WaWV3KCk7CisKKyAgICBB
U1NFUlQod2ViVmlldy5jb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPT0gZGF0YVN0b3Jl
KTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6dXJsXV07CisgICAgY29tcGxldGlvbkhhbmRsZXIod2ViVmlldyk7Cit9CisKIEBlbmQK
</data>

          </attachment>
      

    </bug>

</bugzilla>