<?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>236863</bug_id>
          
          <creation_ts>2022-02-18 15:12:17 -0800</creation_ts>
          <short_desc>Enforce silent push quota</short_desc>
          <delta_ts>2022-03-03 22:24:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237461</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="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>nham</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1843664</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 15:12:17 -0800</bug_when>
    <thetext>Enforce silent push quota</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843666</commentid>
    <comment_count>1</comment_count>
      <attachid>452588</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 15:14:36 -0800</bug_when>
    <thetext>Created attachment 452588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843679</commentid>
    <comment_count>2</comment_count>
      <attachid>452592</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 15:57:58 -0800</bug_when>
    <thetext>Created attachment 452592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843684</commentid>
    <comment_count>3</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 16:01:43 -0800</bug_when>
    <thetext>*** Bug 236543 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843704</commentid>
    <comment_count>4</comment_count>
      <attachid>452602</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 16:21:21 -0800</bug_when>
    <thetext>Created attachment 452602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843711</commentid>
    <comment_count>5</comment_count>
      <attachid>452592</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-18 16:31:09 -0800</bug_when>
    <thetext>Comment on attachment 452592
Patch

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

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.h:92
&gt; +    bool hasPendingSilentPushEvent() { return m_hasPendingSilentPushEvent; }

nit: should be const.

&gt; Source/WebCore/workers/service/ServiceWorkerGlobalScope.h:117
&gt; +    bool m_hasPendingSilentPushEvent;

Missing initialization?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:227
&gt; +        serviceWorkerGlobalScope-&gt;setHasPendingSilentPushEvent(true);

I don&apos;t fully understand the logic here. What if there is more than 1 push event being dispatched one after the other. Won&apos;t that boolean already be true?
Also, won&apos;t the first event to be dispatched reset this boolean to false even though there is still another pending event?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:245
&gt; +                RELEASE_LOG(ServiceWorker, &quot;ServiceWorkerThread::queueTaskToFirePushEvent failed to process push event (rejectedPromise = %d, showedNotification = %d)&quot;, hasRejectedAnyPromise, showedNotification);

RELEASE_LOG_ERROR()

&gt; Source/WebKit/Shared/WebPushDaemonConstants.h:31
&gt; +static constexpr int maxSilentPushCount = 3;

Probably don&apos;t need the static.

&gt; Source/WebKit/webpushd/PushService.mm:491
&gt; +                        RELEASE_LOG(Push, &quot;IncrementSilentPushRequest couldn&apos;t remove subscription for topic %{sensitive}s: %{public}s code: %lld)&quot;, topic.utf8().data(), error.domain.UTF8String ?: &quot;none&quot;, static_cast&lt;int64_t&gt;(error.code));

RELEASE_LOG_ERROR ?

&gt; Tools/TestWebKitAPI/TestNotificationProvider.h:43
&gt; +    WKDictionaryRef notificationPermissions();

Can this be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843762</commentid>
    <comment_count>6</comment_count>
      <attachid>452616</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 19:43:27 -0800</bug_when>
    <thetext>Created attachment 452616
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843774</commentid>
    <comment_count>7</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 20:17:45 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; Comment on attachment 452592 [details]
&gt; Patch
&gt; &gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:227
&gt; &gt; +        serviceWorkerGlobalScope-&gt;setHasPendingSilentPushEvent(true);
&gt; 
&gt; I don&apos;t fully understand the logic here. What if there is more than 1 push
&gt; event being dispatched one after the other. Won&apos;t that boolean already be
&gt; true?
&gt; Also, won&apos;t the first event to be dispatched reset this boolean to false
&gt; even though there is still another pending event?

I mentioned this in the ChangeLog. We are only dispatching one push event at a time, and we don&apos;t dispatch the next one until the current one finishes.

I actually brought up this concern to Brady earlier (who suggested this approach) and he said not to worry about it due to that. But obviously we could change it to track actual in-flight events instead of a boolean flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1843775</commentid>
    <comment_count>8</comment_count>
      <attachid>452619</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-18 20:23:06 -0800</bug_when>
    <thetext>Created attachment 452619
Patch feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1844291</commentid>
    <comment_count>9</comment_count>
      <attachid>452750</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-21 11:23:10 -0800</bug_when>
    <thetext>Created attachment 452750
EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846046</commentid>
    <comment_count>10</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-25 09:21:01 -0800</bug_when>
    <thetext>&lt;rdar://87409042&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846101</commentid>
    <comment_count>11</comment_count>
      <attachid>452750</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-02-25 11:18:02 -0800</bug_when>
    <thetext>Comment on attachment 452750
EWS

LGTM overall, some nits below.

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

&gt; Source/WebKit/ChangeLog:9
&gt; +           then we not increment the silent push count associated with that origin.

s/not//

&gt; Source/WebCore/Modules/push-api/PushDatabase.cpp:524
&gt; +        WorkQueue::main().dispatch([completionHandler = WTFMove(completionHandler), topics = crossThreadCopy(WTFMove(topics))]() mutable {

completeOnMainQueue?

&gt; Source/WebCore/Modules/push-api/PushDatabase.cpp:530
&gt; +void PushDatabase::incrementSilentPushCount(const String&amp; bundleID, const String&amp; securityOrigin, CompletionHandler&lt;void(int)&gt;&amp;&amp; completionHandler)

should probably an unsigned, not an int.

&gt; Source/WebCore/Modules/push-api/PushDatabase.cpp:557
&gt; +                completeOnMainQueue(WTFMove(completionHandler), 0);

We could use scope Exit here, see below.

&gt; Source/WebCore/Modules/push-api/PushDatabase.cpp:622
&gt; +                completeOnMainQueue(WTFMove(completionHandler), Vector&lt;PushRecord&gt; { });

You might want to use scopeExit to return early without calling completeOnMainQueue explicitly.
Something like:
auto scope = makeScopeExit([this, &amp;completionHandler] { completeOnMainQueue(WTFMove(completionHandler), Vector&lt;PushRecord&gt; { }); })
Then, use release() before calling
completeOnMainQueue(WTFMove(completionHandler), WTFMove(removedRecords));

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:232
&gt; +        pushEvent-&gt;whenAllExtendLifetimePromisesAreSettled([weakThis = WTFMove(weakThis), serviceWorkerGlobalScope, eventCreationTime = pushEvent-&gt;timeStamp(), callback = WTFMove(callback)](auto&amp;&amp; extendLifetimePromises) mutable {

We are not using weakThis here apparently, can we remove it?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:241
&gt; +            bool showedNotification = !serviceWorkerGlobalScope-&gt;hasPendingSilentPushEvent();

This seems correct to me to check hasPendingSilentPushEvent when the event wait promises are settled.
The spec is not super clear about userVisibleOnly being treated this way. Are other browsers detecting this in this manner?

&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:245
&gt; +                RELEASE_LOG_ERROR(ServiceWorker, &quot;ServiceWorkerThread::queueTaskToFirePushEvent failed to process push event (rejectedPromise = %d, showedNotification = %d)&quot;, hasRejectedAnyPromise, showedNotification);

RELEASE_LOG_ERROR_IF

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2272
&gt; +            if (!result &amp;&amp; (session = networkSession(sessionID))) {

We are incrementing the counter in case of web process crash. Crash should be fairly limited hopefully but this might trigger some potential overprompting.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2274
&gt; +                    .incrementSilentPushCount(WTFMove(origin), [callback = WTFMove(callback), result](int) mutable {

Why doing this incrementation?

&gt; Source/WebKit/webpushd/PushService.mm:489
&gt; +                m_connection-&gt;unsubscribe(topic, record.serverVAPIDPublicKey, [topic](bool unsubscribed, NSError* error) {

unsubscribe should notify the service worker so that the service worker knows it has been unregistered through pushsubscriptionchange.
Do we have test coverage for this?
Are we sure current websites handle this unregistration code path correctly? If not, we could unregister the whole service worker registration to make sure things would restart with a clean state.

&gt; Source/WebKit/webpushd/PushService.mm:491
&gt; +                        RELEASE_LOG_ERROR(Push, &quot;IncrementSilentPushRequest couldn&apos;t remove subscription for topic %{sensitive}s: %{public}s code: %lld)&quot;, topic.utf8().data(), error.domain.UTF8String ?: &quot;none&quot;, static_cast&lt;int64_t&gt;(error.code));

RELEASE_LOG_ERROR_IF(Push, !unsubscribed, ...).

&gt; Source/WebKit/webpushd/WebPushDaemon.h:36
&gt; +#include &lt;WebCore/SecurityOriginData.h&gt;

We could forward declare SecurityOriginData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846372</commentid>
    <comment_count>12</comment_count>
      <attachid>452750</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-26 22:22:34 -0800</bug_when>
    <thetext>Comment on attachment 452750
EWS

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

&gt;&gt; Source/WebCore/workers/service/context/ServiceWorkerThread.cpp:241
&gt;&gt; +            bool showedNotification = !serviceWorkerGlobalScope-&gt;hasPendingSilentPushEvent();
&gt; 
&gt; This seems correct to me to check hasPendingSilentPushEvent when the event wait promises are settled.
&gt; The spec is not super clear about userVisibleOnly being treated this way. Are other browsers detecting this in this manner?

Exactly how to treat userVisibleOnly isn&apos;t mentioned in the spec. In practice, both Firefox and Chrome apply some penalty if you send too many silent pushes. This patch implements a quota system which is pretty similar to what Firefox implements (they also unsubscribe once you hit your quota).

I think the two main differences we have from Firefox&apos;s implementation from my quick look are that:

1. They check that a notification is shown some fixed interval after the push event is fired (e.g. N seconds afterwards), whereas we are checking when the push event&apos;s promises settle. I think checking when the promises settle seems reasonable so I chose that.
2. Their quota is higher than ours.

Chrome&apos;s penalty is a bit different, as they make silent pushes consume some sort of budget based on how you&apos;ve handled the last N messages. If too many push event handlers fail to show a notification, then they automatically show a notification along the lines of &quot;$DOMAIN is doing work in the background&quot;. There was significant pushback against showing a notification with text like that so I didn&apos;t implement that.

There is some more discussion here: https://github.com/w3c/push-api/issues/313.

&gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2274
&gt;&gt; +                    .incrementSilentPushCount(WTFMove(origin), [callback = WTFMove(callback), result](int) mutable {
&gt; 
&gt; Why doing this incrementation?

This is where we&apos;re incrementing the silent push count if the push event handler failed to fulfill all promises or show a notification.

I guess if WebContent crashes during pushEvent handling become a big issue I can add more code in the future to deal with that scenario.

&gt;&gt; Source/WebKit/webpushd/PushService.mm:489
&gt;&gt; +                m_connection-&gt;unsubscribe(topic, record.serverVAPIDPublicKey, [topic](bool unsubscribed, NSError* error) {
&gt; 
&gt; unsubscribe should notify the service worker so that the service worker knows it has been unregistered through pushsubscriptionchange.
&gt; Do we have test coverage for this?
&gt; Are we sure current websites handle this unregistration code path correctly? If not, we could unregister the whole service worker registration to make sure things would restart with a clean state.

For this initial version of the feature I am thinking of not emitting the pushsubscriptionchange event unless people strongly want it:

1. Only Firefox emits this event right now (even though it&apos;s been mentioned in the spec for years), and it&apos;s actually not even the current version of the event that has the oldSubscription and newSubscription objects. So this event handler is unlikely to be widely deployed on the current web.

2. We would probably not want to emit the pushsubscriptionchange event instantly, since the most likely response would be for the pushsubsriptionchange event handler to simply re-subscribe to push, which would make this whole heuristic pretty pointless. Instead, we&apos;d probably to do something like persisting some bit in the service worker RegistrationDatabase that says that the next user-facing visit to this origin would result in a pushsubscriptionchange event firing on the service worker. As far as I could tell from experimenting, this is what Firefox does when you run out of quota and get unsubscribed.

(2) makes the event more complicated to implement (although obviously very tractable), and (1) makes it so that work is likely not very useful on the real web, so I didn&apos;t implement it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846384</commentid>
    <comment_count>13</comment_count>
      <attachid>453328</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-02-27 00:15:29 -0800</bug_when>
    <thetext>Created attachment 453328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847079</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-01 10:12:22 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2274
&gt; &gt;&gt; +                    .incrementSilentPushCount(WTFMove(origin), [callback = WTFMove(callback), result](int) mutable {
&gt; &gt; 
&gt; &gt; Why doing this incrementation?

Sorry, I was meaning indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848114</commentid>
    <comment_count>15</comment_count>
      <attachid>453328</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-03-03 16:54:45 -0800</bug_when>
    <thetext>Comment on attachment 453328
Patch

I&apos;m fine with all of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848154</commentid>
    <comment_count>16</comment_count>
      <attachid>453807</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2022-03-03 18:56:43 -0800</bug_when>
    <thetext>Created attachment 453807
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848169</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-03 21:29:40 -0800</bug_when>
    <thetext>Committed r290815 (248051@main): &lt;https://commits.webkit.org/248051@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453807.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452588</attachid>
            <date>2022-02-18 15:14:36 -0800</date>
            <delta_ts>2022-02-18 16:00:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236863-20220218151436.patch</filename>
            <type>text/plain</type>
            <size>74372</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZWRkMzA4NzY2Y2Rj
YTQ0ZTk5ZTgzMzNkNDY1NGUyYTg1MTYwNC4uZGNhNmNlNjNiZWJjMDZmYzFhOWFiZjRhNjQwYjRk
ZGU4MGZlMjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlc2Ny
aXB0aW9uIHRvIGZvbGxvdy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENvcHkpOgorICAgICAg
ICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFz
ZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoRGF0YWJhc2U6Omdl
dFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6
aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFz
ZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVu
dCk6CisKIDIwMjItMDItMTcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gQnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIHdpdGggQU5HTEUg
ZW5hYmxlZCBzaW5jZSByMjg5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMGVmMzhjZDI3NDdlNTc1NzgyZGYy
NzA3NzNlY2ZjN2M3NzMyYmQuLmFmMjFjMGUxNGVkY2NjZDE0ZjMyODk2MTg4OGY2ZDU2YWQ5MTU3
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDItMTggIEJlbiBOaGFtICA8bmhh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVzY3JpcHRpb24gdG8g
Zm9sbG93LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVy
PGludD46OmNhbGxSZXBseSk6CisgICAgICAgICogU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFu
dHMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaEQ6Om1lc3NhZ2VUeXBlU2VuZHNSZXBseSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAg
ICAoLVtXS1Byb2Nlc3NQb29sIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10pOgorICAg
ICAgICAqIHdlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViUHVzaEQ6OnVwZGF0
ZVRvcGljTGlzdHMpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hTZXJ2aWNlOjppbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQpOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06Cisg
ICAgICAgIChXZWJQdXNoRDo6TWVzc2FnZUluZm86OmluY3JlbWVudFNpbGVudFB1c2hDb3VudDo6
ZW5jb2RlUmVwbHkpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZGVjb2RlQW5kSGFuZGxl
TWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQpOgorCiAyMDIyLTAyLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggd2hpbGUgZGVzdHJveWluZyBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJh
c2UuY3BwCmluZGV4IDhhMWY1M2FiNDgwYWUwYjQwNTk2MjZiY2EwYzQ2ZWUwN2MzOTI1YzUuLmZk
NTc0N2I5YWMxNDE5ZWViMmVmODc0MTdlOTY1MjRlNGY1ODJlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKQEAgLTQzLDE5ICs0Mywy
NCBAQAogI2RlZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0VSUk9SKFB1c2gsICIlcCAtIFB1c2hEYXRhYmFzZTo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCkgUFVTSERCX1JF
TEVBU0VfTE9HX0VSUk9SKCJGYWlsZWQgdG8gYmluZCBzdGF0ZW1lbnQgKCVkKTogJXMiLCBtX2Ri
LT5sYXN0RXJyb3IoKSwgbV9kYi0+bGFzdEVycm9yTXNnKCkpCiAKKyNkZWZpbmUga1B1c2hSZWNv
cmRDb2x1bW5zICIgc3ViLnJvd0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1
Yi5zY29wZSwgc3ViLmVuZHBvaW50LCBzdWIudG9waWMsIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tl
eSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksIHN1Yi5zaGFyZWRB
dXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUgIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBjb25zdGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMTsKK3N0
YXRpYyBjb25zdGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMjsKKyNkZWZp
bmUga0N1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uU3RyaW5nICIyIgogCiBzdGF0aWMgY29uc3Qg
QVNDSUlMaXRlcmFsIHB1c2hEYXRhYmFzZVNjaGVtYVYxU3RhdGVtZW50c1tdID0gewogICAgICJQ
UkFHTUEgYXV0b192YWN1dW09SU5DUkVNRU5UQUwiX3MsCiAgICAgIkNSRUFURSBUQUJMRSBTdWJz
Y3JpcHRpb25TZXRzKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNS
RU1FTlQsIgogICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEwsIgogICAgICIgIGJ1bmRs
ZUlEIFRFWFQgTk9UIE5VTEwsIgogICAgICIgIHNlY3VyaXR5T3JpZ2luIFRFWFQgTk9UIE5VTEws
IgotICAgICIgIHdha2VTdGF0ZSBJTlQgTk9UIE5VTEwsIgorICAgICIgIHNpbGVudFB1c2hDb3Vu
dCBJTlQgTk9UIE5VTEwsIgogICAgICIgIFVOSVFVRShidW5kbGVJRCwgc2VjdXJpdHlPcmlnaW4p
KSJfcywKICAgICAiQ1JFQVRFIFRBQkxFIFN1YnNjcmlwdGlvbnMoIgorICAgICIgIHJvd0lEIElO
VEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCiAgICAgIiAgY3JlYXRpb25UaW1lIElO
VCBOT1QgTlVMTCwiCiAgICAgIiAgc3Vic2NyaXB0aW9uU2V0SUQgSU5UIE5PVCBOVUxMLCIKICAg
ICAiICBzY29wZSBURVhUIE5PVCBOVUxMLCIKQEAgLTY4LDcgKzczLDcgQEAgc3RhdGljIGNvbnN0
IEFTQ0lJTGl0ZXJhbCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAi
ICBleHBpcmF0aW9uVGltZSBJTlQsIgogICAgICIgIFVOSVFVRShzY29wZSwgc3Vic2NyaXB0aW9u
U2V0SUQpKSJfcywKICAgICAiQ1JFQVRFIElOREVYIFN1YnNjcmlwdGlvbnNfU3Vic2NyaXB0aW9u
U2V0SURfSW5kZXggT04gU3Vic2NyaXB0aW9ucyhzdWJzY3JpcHRpb25TZXRJRCkiX3MsCi0gICAg
IlBSQUdNQSB1c2VyX3ZlcnNpb24gPSAxIl9zCisgICAgIlBSQUdNQSB1c2VyX3ZlcnNpb24gPSAi
IGtDdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiIl9zCiB9OwogCiBQdXNoUmVjb3Jk
IFB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKQEAgLTg0LDggKzg5LDcgQEAgUHVz
aFJlY29yZCBQdXNoUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiAgICAgICAgIGNsaWVu
dFB1YmxpY0tleSwKICAgICAgICAgY2xpZW50UHJpdmF0ZUtleSwKICAgICAgICAgc2hhcmVkQXV0
aFNlY3JldCwKLSAgICAgICAgZXhwaXJhdGlvblRpbWUsCi0gICAgICAgIHdha2VTdGF0ZQorICAg
ICAgICBleHBpcmF0aW9uVGltZQogICAgIH07CiB9CiAKQEAgLTEwMiw4ICsxMDYsNyBAQCBQdXNo
UmVjb3JkIFB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSgpICYmCiAgICAgICAgIFdURk1vdmUoY2xp
ZW50UHVibGljS2V5KSwKICAgICAgICAgV1RGTW92ZShjbGllbnRQcml2YXRlS2V5KSwKICAgICAg
ICAgV1RGTW92ZShzaGFyZWRBdXRoU2VjcmV0KSwKLSAgICAgICAgZXhwaXJhdGlvblRpbWUsCi0g
ICAgICAgIHdha2VTdGF0ZQorICAgICAgICBleHBpcmF0aW9uVGltZQogICAgIH07CiB9CiAKQEAg
LTI4MCw3ICsyODMsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6aW5zZXJ0UmVjb3JkKGNvbnN0IFB1
c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogICAgICAgICBpbnQ2NF90
IHN1YnNjcmlwdGlvblNldElEID0gMDsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNFTEVDVCByb3dpZCwgd2FrZVN0YXRlIEZST00g
U3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2luID0g
PyJfcyk7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNF
TEVDVCByb3dJRCBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBz
ZWN1cml0eU9yaWdpbiA9ID8iX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAg
ICAgICB8fCBzcWwtPmJpbmRUZXh0KDEsIHJlY29yZC5idW5kbGVJRCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCByZWNvcmQuc2VjdXJpdHlPcmlnaW4p
ICE9IFNRTElURV9PSykgewpAQCAtMjg5LDE5ICsyOTIsMTYgQEAgdm9pZCBQdXNoRGF0YWJhc2U6
Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiByZWNvcmQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25TZXRJ
RCA9IHNxbC0+Y29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAgICAgICAgcmVjb3JkLndha2VTdGF0
ZSA9IHN0YXRpY19jYXN0PFB1c2hXYWtlU3RhdGU+KHNxbC0+Y29sdW1uSW50KDEpKTsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICghc3Vic2NyaXB0aW9uU2V0SUQpIHsK
LSAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElO
VE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxVRVMoPywgPywgPywgPykiX3MpOworICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRp
b25TZXRzIFZBTFVFUyhOVUxMLCA/LCA/LCA/LCAwKSJfcyk7CiAgICAgICAgICAgICBpZiAoIXNx
bAogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIHRpbWUobnVsbHB0cikpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLmJ1
bmRsZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMs
IHJlY29yZC5zZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwg
c3FsLT5iaW5kSW50KDQsIHN0YXRpY19jYXN0PGludD4ocmVjb3JkLndha2VTdGF0ZSkpICE9IFNR
TElURV9PSykgeworICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMywgcmVjb3JkLnNl
Y3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgICAgICBQVVNIREJfUkVM
RUFTRV9MT0dfQklORF9FUlJPUigpOwogICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVl
dWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4g
eyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBQ
dXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiByZWNvcmQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9u
cyBWQUxVRVMoPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOworICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRp
b25zIFZBTFVFUyhOVUxMLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CiAgICAg
ICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIHRp
bWUobnVsbHB0cikpICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZElu
dDY0KDIsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0sKQEAgLTQyMywyMSArNDIzLDIw
IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpyZW1vdmVSZWNvcmRCeUlkZW50aWZpZXIoUHVzaFN1YnNj
cmlwdGlvbklkZW50aWZpZXIgaWRlbnRpZmllCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBQdXNoUmVj
b3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYg
c3FsKQorc3RhdGljIFB1c2hSZWNvcmQgbWFrZVB1c2hSZWNvcmRGcm9tUm93KFNRTGl0ZVN0YXRl
bWVudEF1dG9SZXNldFNjb3BlJiBzcWwsIGludCBjb2x1bW5JbmRleCkKIHsKICAgICBQdXNoUmVj
b3JkIHJlY29yZDsKLSAgICByZWNvcmQuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oc3FsLT5jb2x1bW5JbnQ2NCgwKSk7Ci0g
ICAgcmVjb3JkLmJ1bmRsZUlEID0gc3FsLT5jb2x1bW5UZXh0KDEpOwotICAgIHJlY29yZC5zZWN1
cml0eU9yaWdpbiA9IHNxbC0+Y29sdW1uVGV4dCgyKTsKLSAgICByZWNvcmQuc2NvcGUgPSBzcWwt
PmNvbHVtblRleHQoMyk7Ci0gICAgcmVjb3JkLmVuZHBvaW50ID0gc3FsLT5jb2x1bW5UZXh0KDQp
OwotICAgIHJlY29yZC50b3BpYyA9IHNxbC0+Y29sdW1uVGV4dCg1KTsKLSAgICByZWNvcmQuc2Vy
dmVyVkFQSURQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoNik7Ci0gICAgcmVjb3JkLmNsaWVu
dFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYig3KTsKLSAgICByZWNvcmQuY2xpZW50UHJpdmF0
ZUtleSA9IHNxbC0+Y29sdW1uQmxvYig4KTsKLSAgICByZWNvcmQuc2hhcmVkQXV0aFNlY3JldCA9
IHNxbC0+Y29sdW1uQmxvYig5KTsKLSAgICByZWNvcmQuZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0
aW9uVGltZUZyb21WYWx1ZShzcWwtPmNvbHVtblZhbHVlKDEwKSk7Ci0gICAgcmVjb3JkLndha2VT
dGF0ZSA9IHN0YXRpY19jYXN0PFB1c2hXYWtlU3RhdGU+KHNxbC0+Y29sdW1uSW50KDExKSk7Cisg
ICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoY29sdW1uSW5kZXgrKykpOworICAg
IHJlY29yZC5idW5kbGVJRCA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICBy
ZWNvcmQuc2VjdXJpdHlPcmlnaW4gPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7Cisg
ICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJl
Y29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNv
cmQudG9waWMgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNl
cnZlclZBUElEUHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAg
IHJlY29yZC5jbGllbnRQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5kZXgrKyk7
CisgICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5k
ZXgrKyk7CisgICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVtbkJsb2IoY29s
dW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVG
cm9tVmFsdWUoc3FsLT5jb2x1bW5WYWx1ZShjb2x1bW5JbmRleCsrKSk7CiAKICAgICByZXR1cm4g
cmVjb3JkOwogfQpAQCAtNDQ3LDEwICs0NDYsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0UmVj
b3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAog
ICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIHRvcGljID0gY3Jvc3NUaHJlYWRDb3B5KHRv
cGljKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2UgU1FMaXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlw
dGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZpYSBDUk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCi0gICAgICAgICAgICAiU0VMRUNUICIKLSAgICAg
ICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVuZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIu
c2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRvcGljLCAiCi0gICAgICAgICAgICAiICBzdWIuc2Vy
dmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGllbnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRl
S2V5LCAiCi0gICAgICAgICAgICAiICBzdWIuc2hhcmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRp
b25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAgICAgICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3Jk
Q29sdW1ucwogICAgICAgICAgICAgIkZST00gU3Vic2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAg
ICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9uU2V0cyBzcyAiCiAgICAgICAgICAgICAiT04gc3Vi
LnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93aWQgIgpAQCAtNDY3LDcgKzQ2Myw3IEBAIHZvaWQg
UHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtl
UHVzaFJlY29yZEZyb21Sb3coc3FsKSk7CisgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsK
ICAgICB9KTsKIH0KIApAQCAtNDc2LDEwICs0NzIsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0
UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwg
YwogICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRD
b3B5KGJ1bmRsZUlEKSwgc2NvcGUgPSBjcm9zc1RocmVhZENvcHkoc2NvcGUpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAvLyBGb3JjZSBTUUxpdGUgdG8gY29uc3VsdCB0aGUgU3Vic2NyaXB0aW9ucyhzY29wZSkgaW5k
ZXggZmlyc3QgdmlhIENST1NTIEpPSU4uCiAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVt
ZW50T25RdWV1ZSgKLSAgICAgICAgICAgICJTRUxFQ1QgIgotICAgICAgICAgICAgIiAgc3ViLnJv
d0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1Yi5zY29wZSwgc3ViLmVuZHBv
aW50LCBzdWIudG9waWMsICIKLSAgICAgICAgICAgICIgIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tl
eSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksICIKLSAgICAgICAg
ICAgICIgIHN1Yi5zaGFyZWRBdXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUsIHNzLndha2VT
dGF0ZSAiCisgICAgICAgICAgICAiU0VMRUNUICIga1B1c2hSZWNvcmRDb2x1bW5zCiAgICAgICAg
ICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCiAgICAgICAgICAgICAiQ1JPU1MgSk9JTiBT
dWJzY3JpcHRpb25TZXRzIHNzICIKICAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0aW9uU2V0
SUQgPSBzcy5yb3dpZCAiCkBAIC00OTYsNyArNDg5LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6Omdl
dFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQs
IGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRlT25N
YWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVjb3JkRnJvbVJv
dyhzcWwpKTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCwgMCkpOwogICAgIH0pOwogfQogCkBA
IC01MTIsMTcgKzUwNSwxMSBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0SWRlbnRpZmllcnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3JpcHRpbwogICAgIH0pOwogfQog
Ci12b2lkIFB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUHVzaERhdGFiYXNlOjpnZXRUb3BpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBkaXNwYXRjaE9uV29y
a1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb25zdGV4cHIgaW50IG51bWJlck9mV2FrZVN0YXRl
cyA9IHN0YXRpY19jYXN0PGludD4oUHVzaFdha2VTdGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOwotICAg
ICAgICBWZWN0b3I8VmVjdG9yPFN0cmluZz4sIG51bWJlck9mV2FrZVN0YXRlcz4gdG9waWNzQnlX
YWtlU3RhdGUobnVtYmVyT2ZXYWtlU3RhdGVzKTsgLy8gdXNlZCBiZWNhdXNlIEhhc2hNYXA6Omlz
b2xhdGVkQ29weSBkb2Vzbid0IGV4aXN0Ci0KLSAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0
ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCBzcy53YWtlU3RhdGUsIHN1Yi50b3Bp
YyAiCi0gICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCi0gICAgICAgICAgICAi
Sk9JTiBTdWJzY3JpcHRpb25TZXRzIHNzICIKLSAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0
aW9uU2V0SUQgPSBzcy5yb3dpZCJfcyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRvcGljczsK
KyAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1QgdG9waWMg
RlJPTSBTdWJzY3JpcHRpb25zIl9zKTsKICAgICAgICAgaWYgKCFzcWwpIHsKICAgICAgICAgICAg
IFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CiAgICAgICAgICAgICBXb3JrUXVldWU6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTUzMSwyMiArNTE4LDExOCBAQCB2b2lkIFB1c2hEYXRh
YmFzZTo6Z2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQdXNoV2Fr
ZVN0YXRlVG9UbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2hp
bGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIGF1dG8gcHVzaFdh
a2VTdGF0ZSA9IHNxbC0+Y29sdW1uSW50KDApOwotICAgICAgICAgICAgYXV0byB0b3BpYyA9IHNx
bC0+Y29sdW1uVGV4dCgxKTsKLSAgICAgICAgICAgIGlmIChwdXNoV2FrZVN0YXRlID49IDAgJiYg
cHVzaFdha2VTdGF0ZSA8IG51bWJlck9mV2FrZVN0YXRlcykKLSAgICAgICAgICAgICAgICB0b3Bp
Y3NCeVdha2VTdGF0ZVtwdXNoV2FrZVN0YXRlXS5hcHBlbmQoV1RGTW92ZSh0b3BpYykpOwotICAg
ICAgICB9CisgICAgICAgIHdoaWxlIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAg
ICAgICAgdG9waWNzLmFwcGVuZChzcWwtPmNvbHVtblRleHQoMCkpOwogCi0gICAgICAgIFdvcmtR
dWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB0b3BpY3NCeVdha2VTdGF0ZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KHRvcGljc0J5V2FrZVN0YXRlKSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBQdXNoV2FrZVN0
YXRlVG9Ub3BpY01hcCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0
YXRpY19jYXN0PGludD4oUHVzaFdha2VTdGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOyArK2kpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChzdGF0aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihpKSwgV1RG
TW92ZSh0b3BpY3NCeVdha2VTdGF0ZVtpXSkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRvcGljcyA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRvcGljcykpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CiAKK3ZvaWQgUHVzaERhdGFiYXNlOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoY29u
c3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc3Bh
dGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRsZUlE
KSwgc2VjdXJpdHlPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBpbnQgc2lsZW50UHVzaENvdW50ID0gMDsKKyAgICAgICAgU1FMaXRlVHJhbnNhY3Rp
b24gdHJhbnNhY3Rpb24obV9kYik7CisgICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJV
UERBVEUgU3Vic2NyaXB0aW9uU2V0cyBTRVQgc2lsZW50UHVzaENvdW50ID0gc2lsZW50UHVzaENv
dW50ICsgMSBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisK
KyAgICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNR
TElURV9PSyB8fCBzcWwtPmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
eworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qg
c2lsZW50UHVzaENvdW50IEZST00gU3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8g
QU5EIHNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisKKyAgICAgICAgICAgIGlmICghc3FsIHx8IHNx
bC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwtPmJpbmRUZXh0KDIs
IHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNIREJf
UkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWlu
UXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09IFNR
TElURV9ST1cpCisgICAgICAgICAgICAgICAgc2lsZW50UHVzaENvdW50ID0gc3FsLT5jb2x1bW5J
bnQoMCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKKworICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzaWxl
bnRQdXNoQ291bnQpOworICAgIH0pOworfQorCit2b2lkIFB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVj
b3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFB1c2hSZWNvcmQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRp
c3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRs
ZUlEKSwgc2VjdXJpdHlPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBWZWN0b3I8UHVzaFJlY29yZD4gcmVtb3ZlZFJlY29yZHM7CisgICAgICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOworCisgICAgICAgIGludDY0X3Qgc3Vic2NyaXB0aW9uU2V0SUQgPSAwOworCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgKKyAg
ICAgICAgICAgICAgICAiU0VMRUNUIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCwgIiBrUHVzaFJlY29y
ZENvbHVtbnMKKyAgICAgICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25TZXRzIHNzICIKKyAg
ICAgICAgICAgICAgICAiSk9JTiBTdWJzY3JpcHRpb25zIHN1YiAiCisgICAgICAgICAgICAgICAg
Ik9OIHNzLnJvd2lkID0gc3ViLnN1YnNjcmlwdGlvblNldElEICIKKyAgICAgICAgICAgICAgICAi
V0hFUkUgc3MuYnVuZGxlSUQgPSA/IEFORCBzcy5zZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAg
ICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRF
X09LIHx8IHNxbC0+YmluZFRleHQoMiwgc2VjdXJpdHlPcmlnaW4pICE9IFNRTElURV9PSykgewor
ICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAg
ICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
VmVjdG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykg
eworICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNldElEID0gc3FsLT5jb2x1bW5JbnQoMCk7
CisgICAgICAgICAgICAgICAgcmVtb3ZlZFJlY29yZHMuYXBwZW5kKG1ha2VQdXNoUmVjb3JkRnJv
bVJvdyhzcWwsIDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00g
U3Vic2NyaXB0aW9ucyBXSEVSRSBzdWJzY3JpcHRpb25TZXRJRCA9ID8iX3MpOworICAgICAgICAg
ICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kSW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJ
VEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIFZlY3RvcjxQdXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgVmVjdG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJERUxFVEUgRlJPTSBTdWJz
Y3JpcHRpb25TZXRzIFdIRVJFIHJvd2lkID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8
fCBzcWwtPmJpbmRJbnQoMSwgc3Vic2NyaXB0aW9uU2V0SUQpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVj
dG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBWZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsK
KworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBXVEZNb3ZlKHJlbW92ZWRSZWNvcmRzKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oCmluZGV4IDgzZDg5ODFlMDMz
MzZhYzI3NjY5NmM2ZTUzZDE4OTFjNWI1MjA2NzcuLmE2Y2U4NzY0ZmFhZmViZTRmZjYxODEyOGRi
MWEwNjlkNjljNWU5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoRGF0YWJhc2UuaApAQCAtNDIsMTQgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBXYWtlIHN0YXRlIHRoYXQgYXBwbGllcyBmb3IgZGV2aWNlcyB0aGF0IHJhY2UtdG8tc2xl
ZXAuCi1lbnVtIGNsYXNzIFB1c2hXYWtlU3RhdGUgOiB1aW50OF90IHsKLSAgICBXYWtpbmcsIC8v
IEFsbCBwdXNoZXMgd2lsbCB3YWtlIGRldmljZS4KLSAgICBPcHBvcnR1bmlzdGljLCAvLyBMb3cg
cHJpb3JpdHkgcHVzaGVzIG1heSBub3Qgd2FrZSBkZXZpY2UuCi0gICAgTm9uV2FraW5nLCAvLyBO
byBwdXNoZXMgd2lsbCB3YWtlIGRldmljZS4KLSAgICBOdW1iZXJPZlN0YXRlcwotfTsKLQogc3Ry
dWN0IFB1c2hSZWNvcmQgewogICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIGJ1bmRsZUlEOwpAQCAtNjIsNyArNTQsNiBAQCBzdHJ1Y3QgUHVzaFJl
Y29yZCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNsaWVudFByaXZhdGVLZXk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNyZXQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVT
dGFtcD4gZXhwaXJhdGlvblRpbWUgeyB9OwotICAgIFB1c2hXYWtlU3RhdGUgd2FrZVN0YXRlIHsg
UHVzaFdha2VTdGF0ZTo6V2FraW5nIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQdXNoUmVjb3Jk
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBp
c29sYXRlZENvcHkoKSAmJjsKQEAgLTgxLDkgKzcyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFJlY29yZEJ5VG9waWMoY29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+JiYpPiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKGNv
bnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFRvcGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKIAotICAgIHVzaW5nIFB1c2hXYWtlU3RhdGVUb1RvcGljTWFwID0gSGFzaE1hcDxQdXNoV2Fr
ZVN0YXRlLCBWZWN0b3I8U3RyaW5nPiwgV1RGOjpJbnRIYXNoPFB1c2hXYWtlU3RhdGU+LCBXVEY6
OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFB1c2hXYWtlU3RhdGU+PjsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldFRvcGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVzaFdh
a2VTdGF0ZVRvVG9waWNNYXAmJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jcmVt
ZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJp
dHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UHVzaFJlY29yZD4mJik+JiYpOwog
CiBwcml2YXRlOgogICAgIFB1c2hEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmLCBVbmlxdWVSZWY8
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDUxMGMx
YjA3MmI4OTdkNzkwMGFhNmU2ZWEwMmQ4ZjAwNjM4ZmIzZGQuLjg0NjgyNDRiOWZjMmY5Y2M2NWE5
ZDZkN2RkZmFlMWQ0ODkzYmNiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDYgKzg5LDkgQEAgcHVibGljOgogICAgIHZv
aWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUs
IE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKICNlbmRpZgogCisgICAgYm9v
bCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkgeyByZXR1cm4gbV9oYXNQZW5kaW5nU2lsZW50
UHVzaEV2ZW50OyB9CisgICAgdm9pZCBzZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGJvb2wg
dmFsdWUpIHsgbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50ID0gdmFsdWU7IH0KKwogcHJpdmF0
ZToKICAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3Zp
ZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3Nh
cnkoKTsKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZl
bnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKICAg
ICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIGZpbmFsIHsgcmV0dXJu
IG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgpOyB9CisKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CkBAIC0xMDks
NiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPj4gbV9wZW5kaW5nU2tpcFdhaXRpbmdQcm9taXNlczsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50
PiBtX25vdGlmaWNhdGlvbkNsaWVudDsKKyAgICBib29sIG1faGFzUGVuZGluZ1NpbGVudFB1c2hF
dmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cAppbmRleCBkODg0NWFiMjRjMzgwNjJjMDcyODAxNTY0MGZmYjBhNGYzZGZiYWY3Li5mN2E0NDVk
MTY1ZmFhY2FhZjdjMmM4NGZkMzJlMDU5N2I0YjVlYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjg2LDYgKzI4Nyw5IEBAIHZv
aWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
Y29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnNldEhhc1BlbmRpbmdTaWxlbnRQdXNo
RXZlbnQoZmFsc2UpOworCiAgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5
IHZpcnR1ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgogICAgIC8vIEZJWE1FOiBXaGVuIGltcGxl
bWVudGluZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRo
ZSByZWdpc3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KICAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZTJlNDA4YjEwOTE1NDdmZDAwYjdmYTUwMjdmODQx
ZWVjN2JlNTY4Yi4uYzI4NDU1YjA0MTI3YTU0NzQxOWQ3NDE2ZGM2NTJlODA2ZDc3OWQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTIyNCwxMCArMjI0LDEyIEBAIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+CiAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQgZmlyaW5n
IGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRo
cmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAorICAgICAgICBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPnNldEhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQodHJ1ZSk7CisKICAgICAg
ICAgYXV0byBwdXNoRXZlbnQgPSBQdXNoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaEV2
ZW50LCB7IH0sIFdURk1vdmUoZGF0YSksIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQocHVzaEV2
ZW50KTsKIAotICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2Vz
QXJlU2V0dGxlZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIG11dGFibGUgewor
ICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LCBldmVudENyZWF0aW9uVGltZSA9IHB1c2hFdmVudC0+dGltZVN0YW1wKCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlID0gZmFsc2U7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1
czo6UmVqZWN0ZWQpIHsKQEAgLTIzNSw3ICsyMzcsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FsbGJhY2soIWhhc1JlamVjdGVkQW55UHJvbWlzZSk7CisK
KyAgICAgICAgICAgIGJvb2wgc2hvd2VkTm90aWZpY2F0aW9uID0gIXNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS0+aGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCgpOworICAgICAgICAgICAgYm9vbCBz
dWNjZXNzID0gIWhhc1JlamVjdGVkQW55UHJvbWlzZSAmJiBzaG93ZWROb3RpZmljYXRpb247CisK
KyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2
ZW50IGZhaWxlZCB0byBwcm9jZXNzIHB1c2ggZXZlbnQgKHJlamVjdGVkUHJvbWlzZSA9ICVkLCBz
aG93ZWROb3RpZmljYXRpb24gPSAlZCkiLCBoYXNSZWplY3RlZEFueVByb21pc2UsIHNob3dlZE5v
dGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMTJmOGU4YTViNTlmMDBkZDdiN2VmZDNiMmFkMTM1N2ZhMjUxNjkz
My4uYzZjMDExYjZkMzY0MDE3OGY4ZDYzODUzZDM3ODQ2YTRkODA5YzQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNjgsNyAr
MjI2OCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZQogewogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5l
dHdvcmtpbmcgcHJvY2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3Mg
aW4gc2Vzc2lvbiAlbGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwotICAgICAgICBzZXNzaW9u
LT5lbnN1cmVTV1NlcnZlcigpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdl
LnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tVVJMKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCk7CisgICAgICAgIHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVz
aERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9y
aWdpbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxl
IHsKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgICAgIE5ldHdv
cmtTZXNzaW9uKiBzZXNzaW9uOworICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgKHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICAgICAgICAgIHNlc3Npb24t
Pm5vdGlmaWNhdGlvbk1hbmFnZXIoKQorICAgICAgICAgICAgICAgICAgICAuaW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KFdURk1vdmUob3JpZ2luKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHJlc3VsdF0oaW50KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOworICAgICAgICB9KTsKICAgICB9IGVsc2UKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3Jr
aW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2Vz
cyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIsIHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDQ4NmNiNWIzZGY2NzAwZTg4MDNmNjAwOTljYTM1N2VmMGQyYmE4
NDEuLjg5OTU4NmU3MGMwY2Y1Y2FjMTJkNDgzNDAyODk2Y2M5NjljOGY3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTc0LDYgKzE3NCwx
NiBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aQogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdl
YlB1c2hEOjpNZXNzYWdlVHlwZTo6R2V0UHVzaFBlcm1pc3Npb25TdGF0ZT4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIFdURk1vdmUoc2NvcGVVUkwpKTsKIH0KIAordm9pZCBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQ+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG9yaWdpbikpOworfQor
CiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZShBcmdz
JiYuLi4gYXJncykgY29uc3QKIHsKQEAgLTIyNyw2ICsyMzcsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgUmVwbHlDYWxsZXI8Ym9vbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IFJl
cGx5Q2FsbGVyPGludD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29k
ZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHZhbHVlOworICAgICAg
ICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigqdmFs
dWUpOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFZlY3RvcjxT
dHJpbmc+JiY+IHsKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYg
ZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oCmluZGV4IDUyYTYzODRiYWIxMGUwYWU5MTZiYWEyM2Y5MTRhOTI1ZmVlMzA4ZGQu
LjA2ZTYxNTdmYTg2NTQ1MjU1NTliY2I1ODQwMzIyOWZjMmFjMzJjMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFVSTCYmIHNjb3BlVVJMLCBX
ZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9p
ZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlz
c2lvblN0YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGluY3Jl
bWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hT
ZXJ2aWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKaW5kZXggZjNmN2JiZTYzZjRlZDM1ZWRjZjNlMmFhYWQ5M2ZiM2U0OTI5ZmY5OS4uMjY1
NjBjMDZjOWQyM2ZjNjA1MjM3Mjk1NWZlMDg5ODg5NzgxZjA3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaApAQCAtMjcsNiArMjcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRCB7CiAKKy8vIElmIGFuIG9yaWdpbiBwcm9jZXNzZXMg
bW9yZSB0aGFuIHRoaXMgbWFueSBzaWxlbnQgcHVzaGVzLCB0aGVuIGl0IHdpbGwgYmUgdW5zdWJz
Y3JpYmVkIGZyb20gcHVzaC4KK3N0YXRpYyBjb25zdGV4cHIgaW50IG1heFNpbGVudFB1c2hDb3Vu
dCA9IDM7CisKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJv
dG9jb2wgdmVyc2lvbiI7CiBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUg
PSAxOwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAi
ZW5jb2RlZCBtZXNzYWdlIjsKQEAgLTQ4LDcgKzUxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3QgewogICAgIFN1YnNjcmliZVRvUHVzaFNlcnZpY2UsCiAgICAgVW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UsCiAgICAgR2V0UHVzaFN1YnNjcmlwdGlvbiwKLSAgICBHZXRQdXNo
UGVybWlzc2lvblN0YXRlCisgICAgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZSwKKyAgICBJbmNyZW1l
bnRTaWxlbnRQdXNoQ291bnQsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVw
bHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCkBAIC02NSw2ICs2OSw3IEBAIGlubGluZSBib29s
IG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpVbnN1YnNjcmliZUZyb21QdXNoU2VydmljZToKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpHZXRQdXNoU3Vic2NyaXB0aW9uOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFB1
c2hQZXJtaXNzaW9uU3RhdGU6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SW5jcmVtZW50U2lsZW50
UHVzaENvdW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpT
ZXREZWJ1Z01vZGVJc0VuYWJsZWQ6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VXBkYXRlQ29ubmVj
dGlvbkNvbmZpZ3VyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGE3YThiYjYwODc1YTk5NTJlOTkwYTUyYWQ4OWQz
MzRjNmQ2ZmY4ZmEuLjNjODE4ZmIyMTgzOTMyYzIxMGY1N2FhZTYwMDAzMjM3ZTRhZDQyYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTYW5k
Ym94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAi
V0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgpAQCAtNDEsNiArNDIsNyBA
QAogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2ltcG9ydCAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW1wb3J0ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbXBvcnQgIldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NhY2hlLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCkBAIC02MTIsNCArNjE0LDkgQEAgLSAodm9pZClfdGVybWluYXRlQWxsV2ViQ29udGVudFBy
b2Nlc3NlcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlQWxsV2ViQ29udGVudFByb2Nlc3Nl
cygpOwogfQogCistIChXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFn
ZXJGb3JUZXN0aW5nCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoX3Byb2Nlc3NQb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpKTsKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCBlMWZkOTkxZGZiMmI3ODQ5NDQ1MDM2Y2Q4MjllNjRk
N2NjNWRkYjYxLi4wYjBmYzU5NDcwNDBmNDAwZmI3NDI3MTg3YTI3ZTI2MTlkMjIxYmZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaApAQCAtMTM3LDYgKzEzNyw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBnZXR0ZXI9X2lzQ29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0
Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZCBXS19BUElfREVQUkVDQVRFRCgiUGFydGl0aW9uZWQgY29va2llcyBh
cmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCIsIG1hY29zKDEwLjEyLjMsIDEwLjE0LjQpLCBpb3MoMTAu
MywgMTIuMikpOwogCistIChXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1h
bmFnZXJGb3JUZXN0aW5nOworCiAvLyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZWVkUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5
VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlm
aWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlw
dE9iamVjdHNGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4w
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKaW5kZXggZmU0MTVlMDA4ZGQ2MzA1
MTA1ODI0ZjhjZmIwMjY5NWFmYzMyM2ZlYi4uZjdkZDQzYTgxMTQwZGNlZjZmOTMxNDEzMjUwNzNk
Njc0YjlkMjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2Vydmlj
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNjEsNiAr
NjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJ
ZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZh
cGlkUHVibGljS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNv
cmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsK
ICAgICB2b2lkIHVuc3Vic2NyaWJlKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBzY29wZSwgV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25z
dCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisKICAgICB2b2lkIGRpZENvbXBsZXRl
R2V0U3Vic2NyaXB0aW9uUmVxdWVzdChHZXRTdWJzY3JpcHRpb25SZXF1ZXN0Jik7CiAgICAgdm9p
ZCBkaWRDb21wbGV0ZVN1YnNjcmliZVJlcXVlc3QoU3Vic2NyaWJlUmVxdWVzdCYpOwogICAgIHZv
aWQgZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0Jik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQppbmRleCAwNThhNzY5ZTY5NmNhZWNlNjY0
NTQyZDBjYTcwMDhjODc0YjhhN2YwLi5lN2QyZjdjYmNhYmMyYmNkMWIyMWI0Y2IxZDM3NjJhYzc4
MTZmYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KQEAgLTI5LDYgKzI5
LDcgQEAKICNpbXBvcnQgIkFwcGxlUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJN
b2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0
ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRp
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTQ0LDE5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJQ
dXNoRCB7CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVRvcGljTGlzdHMoUHVzaFNlcnZpY2VDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBQdXNoRGF0YWJhc2UmIGRhdGFiYXNlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGRhdGFiYXNlLmdldFRvcGljc0J5
V2FrZVN0YXRlKFsmY29ubmVjdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oYXV0byYmIHRvcGljTWFwKSBtdXRhYmxlIHsKKyAgICBkYXRhYmFzZS5n
ZXRUb3BpY3MoWyZjb25uZWN0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXShhdXRvJiYgdG9waWNzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6
IG1vdmUgdG9waWNzIHRvIGlnbm9yZWQgbGlzdCBiYXNlZCBvbiB1c2VyIHByZWZlcmVuY2VzLgot
ICAgICAgICBQdXNoU2VydmljZUNvbm5lY3Rpb246OlRvcGljTGlzdHMgdG9waWNMaXN0czsKLQot
ICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6V2FraW5n
KTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAodG9waWNMaXN0
cy5lbmFibGVkVG9waWNzLCBpdC0+dmFsdWUpOwotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGlj
TWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYyk7IGl0ICE9IHRvcGljTWFwLmVu
ZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlzdHMub3Bwb3J0dW5pc3RpY1RvcGlj
cywgaXQtPnZhbHVlKTsKLSAgICAgICAgaWYgKGF1dG8gaXQgPSB0b3BpY01hcC5maW5kKFB1c2hX
YWtlU3RhdGU6Ok5vbldha2luZyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAg
c3RkOjpzd2FwKHRvcGljTGlzdHMubm9uV2FraW5nVG9waWNzLCBpdC0+dmFsdWUpOwotCi0gICAg
ICAgIGNvbm5lY3Rpb24uc2V0VG9waWNMaXN0cyhXVEZNb3ZlKHRvcGljTGlzdHMpKTsKLQorICAg
ICAgICBjb25uZWN0aW9uLnNldEVuYWJsZWRUb3BpY3MoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTQ4Miw2ICs0NzMsMzIgQEAg
dm9pZCBQdXNoU2VydmljZTo6ZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3Jp
YmVSZXF1ZXN0JiByZXF1ZXN0KQogICAgIGZpbmlzaGVkUHVzaFNlcnZpY2VSZXF1ZXN0KG1fdW5z
dWJzY3JpYmVSZXF1ZXN0cywgcmVxdWVzdCk7CiB9CiAKK3ZvaWQgUHVzaFNlcnZpY2U6OmluY3Jl
bWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBo
YW5kbGVyKQoreworICAgIG1fZGF0YWJhc2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5k
bGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNl
Y3VyaXR5T3JpZ2luLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaW50IHNpbGVudFB1c2hD
b3VudCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChzaWxlbnRQdXNoQ291bnQgPCBXZWJLaXQ6Oldl
YlB1c2hEOjptYXhTaWxlbnRQdXNoQ291bnQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50
UHVzaENvdW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJF
TEVBU0VfTE9HKFB1c2gsICJSZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdp
dGggJXtwdWJsaWN9cyAle3NlbnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAlZCBzaWxlbnQg
cHVzaGVzIiwgYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51
dGY4KCkuZGF0YSgpLCBzaWxlbnRQdXNoQ291bnQpOworCisgICAgICAgIG1fZGF0YWJhc2UtPnJl
bW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVu
dGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5
T3JpZ2luLCBzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRv
JiYgcmVtb3ZlZFJlY29yZHMpIG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNv
cmQgOiByZW1vdmVkUmVjb3JkcykgeworICAgICAgICAgICAgICAgIGF1dG8gdG9waWMgPSBtYWtl
UHVzaFRvcGljKHJlY29yZC5idW5kbGVJRCwgcmVjb3JkLnNjb3BlKTsKKyAgICAgICAgICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJs
aWNLZXksIFt0b3BpY10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0coUHVzaCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0IGNvdWxkbid0
IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7cHVibGljfXMg
Y29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4uVVRGOFN0cmlu
ZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlVG9waWNMaXN0
cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFtzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBX
VEZNb3ZlKGhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoc2ls
ZW50UHVzaENvdW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30K
KwogZW51bSBjbGFzcyBDb250ZW50RW5jb2RpbmcgewogICAgIEVtcHR5LAogICAgIEFFU0dDTSwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMDI4MDg0ZTUyYjRhMGRi
YjNjMTQ5YmU2Yzk3MzZmNzU3NWU3ODdiMy4uMmNkMTgzZDMyNGJlOTE3MDZkOWMwNGViODFiNzBh
YmZkMWY4OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFN1YnNjcmlwdGlvbkRh
dGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KQEAgLTgwLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVG
cm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIFdl
YkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlT
ZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlwdGlvbihDbGllbnRDb25uZWN0aW9uKiwg
Y29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3Rl
ZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlz
c2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENv
dW50KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOwogCiAgICAgdm9pZCBicm9hZGNhc3RE
ZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
YnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5tbQppbmRleCBhZGQ2ZTNkOGFkZmVhODk5ODg4ZjRiYWY2MWFjYzA1MzEz
NjNkY2M1Li41NjRkOGE2OTU4ZDlhNWM3NWFkMmQ3YzQ5MWU2MTY1Yzk1MDk3N2I2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0xMTcsNiArMTE3LDExIEBAIEFS
R1VNRU5UUyhVUkwpCiBSRVBMWShjb25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYpCiBFTkQKIAorRlVOQ1RJT04oaW5jcmVtZW50U2lsZW50UHVzaENvdW50KQor
QVJHVU1FTlRTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKGludCkKK0VORAor
CiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTk5
LDYgKzIwNCwxMyBAQCBXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgZ2V0UHVzaFBlcm1pc3Npb25T
dGF0ZTo6ZW5jb2RlUmVwbHkoY29uc3QgRXhwZWN0ZWQ8dWludAogICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluY3JlbWVudFNp
bGVudFB1c2hDb3VudDo6ZW5jb2RlUmVwbHkoaW50IHJlcGx5KQoreworICAgIFdlYktpdDo6RGFl
bW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4g
ZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAK
IHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CkBAIC00MDEsNiArNDEzLDkgQEAgdm9pZCBEYWVtb246
OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNz
YWdlVHlwZSBtZXMKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRl
OgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86Omdl
dFB1c2hQZXJtaXNzaW9uU3RhdGU+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBX
VEZNb3ZlKHJlcGx5U2VuZGVyKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudDoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNz
YWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ+KGNsaWVu
dENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAg
ICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNjI2LDYgKzY0MSwxOCBAQCB2b2lkIERhZW1vbjo6
Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25z
dCBVUkwmIHNjbwogI2VuZGlmCiB9CiAKK3ZvaWQgRGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQp
PiYmIHJlcGx5U2VuZGVyKQoreworICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShbdGhp
cywgYnVuZGxlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXIoKSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCByZXBs
eVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAo
IW1fcHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+aW5jcmVtZW50
U2lsZW50UHVzaENvdW50KGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3Zl
KHJlcGx5U2VuZGVyKSk7CisgICAgfSk7Cit9CisKIENsaWVudENvbm5lY3Rpb24qIERhZW1vbjo6
dG9DbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBh
dXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24pOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NmIw
NGZjMWFhNDhjY2Q3YWY0YjYyMDE0MmQ0Zjg3MTEzYzk1OTIuLmU0NjBjMDEzMWYyMTE1ZTg4MTU4
ODRiODQwOTA5NjAxNzFjNDVmODQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMi0wMi0xOCAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3RO
b3RpZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRp
b25Qcm92aWRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJv
dmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbik6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHA6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjptYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmdldFRvcGljc1N5bmMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFi
YXNlVGVzdDo6Z2V0VG9waWNzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRhYmFz
ZVRlc3Q6OnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbik6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJhc2VUZXN0OjppbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6b3JpZ2luIGNvbnN0KToKKwogMjAyMi0wMi0x
NyAgQW5nZWxvcyBPaWtvbm9tb3BvdWxvcyAgPGFuZ2Vsb3NAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbSlNDXSBJbmNyZWFzZSB0aW1lb3V0IHRvIGFjY291bnQgZm9yIE1JUFMgc2xvd25lc3MKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXMudHh0CmluZGV4IDkyNmQ1NmU4OGE0MmI5NjIwNDU4NDBiZWIyZTNjZWM4
ODE1MzJjMDMuLjRhYzdjYjgwMWZiNDVhMWYxYjI0ZjVhY2M0OTk4NTc2MjI0ZGRiZGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzLnR4dApAQCAtMjUsNSArMjUsNiBAQCBEZXByZWNhdGVkR2xvYmFsVmFs
dWVzLmNwcAogSmF2YVNjcmlwdFRlc3QuY3BwCiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAKIFRlc3Rz
Q29udHJvbGxlci5jcHAKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKIFRlc3RVdGlsaXRp
ZXMuY3BwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wODVjNjRkMTYwY2MxNTU2M2E2YTRkOGY0ODZmM2FhMjkzOTNk
YzQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisKKyNpbmNs
dWRlICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRp
b25NYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTnVtYmVyLmg+CisjaW5jbHVkZSA8V2Vi
S2l0L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgV0tEaWN0aW9uYXJ5UmVm
IG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKS0+bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKK30KKworVGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdL
Tm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJiBtYW5hZ2VycykKKyAgICA6IG1fbWFuYWdlcnMoV1RG
TW92ZShtYW5hZ2VycykpCisgICAgLCBtX3Blcm1pc3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpKSkKK3sKKyAgICBtX3Byb3ZpZGVyID0geworICAgICAgICB7IDAsIHRo
aXMgfSwKKyAgICAgICAgMCwgLy8gc2hvd1dlYk5vdGlmaWNhdGlvbgorICAgICAgICAwLCAvLyBj
bG9zZVdlYk5vdGlmaWNhdGlvbgorICAgICAgICAwLCAvLyBkaWREZXN0cm95Tm90aWZpY2F0aW9u
CisgICAgICAgIDAsIC8vIGFkZE5vdGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgMCwgLy8gcmVt
b3ZlTm90aWZpY2F0aW9uTWFuYWdlcgorICAgICAgICAmVGVzdFdlYktpdEFQSTo6bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMsCisgICAgICAgIDAsIC8vIGNsZWFyTm90aWZpY2F0aW9ucworICAgIH07
CisKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5hZ2VyLCAmbV9wcm92aWRlci5iYXNlKTsKK30K
KworVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkK
K3sKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlm
aWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5hZ2VyLCBudWxscHRyKTsKK30KKworV0tEaWN0
aW9uYXJ5UmVmIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoKQoreworICAgIFdLUmV0YWluKG1fcGVybWlzc2lvbnMuZ2V0KCkpOworICAgIHJldHVybiBt
X3Blcm1pc3Npb25zLmdldCgpOworfQorCit2b2lkIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6
c2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworICAg
IGF1dG8gd2tBbGxvd2VkID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOworICAg
IGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKG9yaWdpbi51dGY4KCkuZGF0YSgpKSk7CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3Bl
cm1pc3Npb25zLmdldCgpLCB3a09yaWdpblN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsK
KworICAgIGF1dG8gd2tPcmlnaW4gPSBhZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9t
U3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdldCgpKSk7CisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDog
bV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRh
dGVOb3RpZmljYXRpb25Qb2xpY3kobWFuYWdlciwgd2tPcmlnaW4uZ2V0KCksIGFsbG93ZWQpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjAxZDY4MWMyYTc0ODdj
MGJjZDYxYWZjYWYzYWQ5YjQzZmNlMjdhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tNdXRhYmxlRGljdGlv
bmFyeS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaD4KKyNpbmNs
dWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25Qcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYktpdC9X
S1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKFZlY3RvcjxXS05vdGlmaWNh
dGlvbk1hbmFnZXJSZWY+JiYpOworICAgIH5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKKwor
ICAgIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOworICAgIHZvaWQg
c2V0UGVybWlzc2lvbihjb25zdCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKworcHJp
dmF0ZToKKyAgICBWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX21hbmFnZXJzOwor
ICAgIFdLUmV0YWluUHRyPFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7Cisg
ICAgV0tOb3RpZmljYXRpb25Qcm92aWRlclYwIG1fcHJvdmlkZXI7Cit9OworCit9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDljMzlkMjQ5NzQzMjkyNzg0YWQ5Yzg1M2QwMjdhNzU5Y2I3YjQ0
N2QuLjkwZDI5NDI5YmUyZjlhY2NkNjJhMDU5YjI3YmY3MGQ3ZGM5ZjM2NzQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yOTgwLDYgKzI5ODAsOCBAQAogCQlFNUFBOEQxQzI1MTUxQ0M2MDA1
MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRlSW5w
dXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0QyNDVFNzIy
RTAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IElEQkNoZWNrcG9pbnRXQUwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRUIyMzBEM0UyNDVFNzI2MzAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjREMzIwNzI3QzA0NTQzMDA4MUE4RTQgLyog
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCNEQz
MjA4MjdDMDQ1NDQwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUVCOUFEOEM2Mjc2NDZFNzMwMEQ4OTNBNCAvKiBQdXNoRGF0YWJhc2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaERhdGFiYXNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1
c2hNZXNzYWdlQ3J5cHRvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRv
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3
QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyNjgsNiArMzI3
MCw4IEBACiAJCQkJQkNCOUU3RkExMTIzNTlBMzAwQTEzN0UwIC8qIFRlc3QuaCAqLywKIAkJCQlC
QzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNwcCAqLywKIAkJCQlC
Q0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVyLmggKi8sCisJCQkJRUI0
RDMyMDcyN0MwNDU0MzAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8s
CisJCQkJRUI0RDMyMDgyN0MwNDU0NDAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRl
ci5oICovLAogCQkJCTdCQjc1NEIwMjc0RTM5QTEwMEQwMEVDMSAvKiBUZXN0VXRpbGl0aWVzLmNw
cCAqLywKIAkJCQk3QkI3NTRBRjI3NEUzOUExMDBEMDBFQzEgLyogVGVzdFV0aWxpdGllcy5oICov
LAogCQkJCTdDODNFMDM2MUQwQTVGNzAwMEZFQkNGMyAvKiBVdGlsaXRpZXMuaCAqLywKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAKaW5k
ZXggNzBiY2UzOTdjMjA1MjEwZTNhNTY3NzU4YTZiNzdhM2IyZDMwMjljMi4uMTA2YmVkMzY3MTNh
ZWMxN2Q2ZWQ0NzliMmY0ZWRmYmU4YzJiMWI1YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAKQEAgLTM1LDE4ICszNSwyNiBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1z
dGF0aWMgUHVzaERhdGFiYXNlOjpQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCBnZXRUb3BpY3NCeVdh
a2VTdGF0ZVN5bmMoUHVzaERhdGFiYXNlJiBkYXRhYmFzZSkKK3N0YXRpYyBTdHJpbmcgbWFrZVRl
bXBvcmFyeURhdGFiYXNlUGF0aCgpCit7CisgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKKyAgICBhdXRvIHBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiUHVzaERhdGFiYXNlIiwgaGFuZGxlLCAiLmRiIik7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VG
aWxlKGhhbmRsZSk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5n
PiBnZXRUb3BpY3NTeW5jKFB1c2hEYXRhYmFzZSYgZGF0YWJhc2UpCiB7CiAgICAgYm9vbCBkb25l
ID0gZmFsc2U7Ci0gICAgUHVzaERhdGFiYXNlOjpQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCBnZXRS
ZXN1bHQ7CisgICAgVmVjdG9yPFN0cmluZz4gdG9waWNzOwogCi0gICAgZGF0YWJhc2UuZ2V0VG9w
aWNzQnlXYWtlU3RhdGUoWyZkb25lLCAmZ2V0UmVzdWx0XShQdXNoRGF0YWJhc2U6OlB1c2hXYWtl
U3RhdGVUb1RvcGljTWFwJiYgcmVzdWx0KSB7Ci0gICAgICAgIGdldFJlc3VsdCA9IFdURk1vdmUo
cmVzdWx0KTsKKyAgICBkYXRhYmFzZS5nZXRUb3BpY3MoWyZkb25lLCAmdG9waWNzXShhdXRvJiYg
cmVzdWx0KSB7CisgICAgICAgIHRvcGljcyA9IFdURk1vdmUocmVzdWx0KTsKICAgICAgICAgZG9u
ZSA9IHRydWU7CiAgICAgfSk7CiAgICAgVXRpbDo6cnVuKCZkb25lKTsKIAotICAgIHJldHVybiBn
ZXRSZXN1bHQ7CisgICAgcmV0dXJuIHRvcGljczsKIH0KIAogY2xhc3MgUHVzaERhdGFiYXNlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKQEAgLTU0LDMwICs2MiwyOSBAQCBwdWJsaWM6CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4gZGI7CiAKICAgICBQdXNoUmVjb3JkIHJl
Y29yZDEgeworICAgICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcigpLAorICAgICAgICAi
Y29tLmFwcGxlLndlYmFwcCJfcywKKyAgICAgICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJfcywK
KyAgICAgICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbS9pcGhvbmUiX3MsCisgICAgICAgICJodHRw
czovL3B1c2hFbmRwb2ludDIiX3MsCisgICAgICAgICJ0b3BpYzEiX3MsCisgICAgICAgIHsgNSwg
NiB9LAorICAgICAgICB7IDYsIDcgfSwKKyAgICAgICAgeyA3LCA4IH0sCisgICAgICAgIHsgOCwg
OSB9CisgICAgfTsKKyAgICBQdXNoUmVjb3JkIHJlY29yZDIgewogICAgICAgICBQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllcigpLAogICAgICAgICAiY29tLmFwcGxlLlNhZmFyaSJfcywKICAgICAg
ICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJfcywKICAgICAgICAgImh0dHBzOi8vd3d3LmFwcGxl
LmNvbS9tYWMiX3MsCiAgICAgICAgICJodHRwczovL3B1c2hFbmRwb2ludDEiX3MsCi0gICAgICAg
ICJ0b3BpYzEiX3MsCisgICAgICAgICJ0b3BpYzIiX3MsCiAgICAgICAgIHsgMCwgMSB9LAogICAg
ICAgICB7IDEsIDIgfSwKICAgICAgICAgeyAyLCAzIH0sCiAgICAgICAgIHsgNCwgNSB9LAogICAg
ICAgICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAgICAg
IFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMKLSAgICB9OwotICAgIFB1c2hSZWNvcmQgcmVj
b3JkMiB7Ci0gICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCi0gICAgICAgICJj
b20uYXBwbGUud2ViYXBwIl9zLAotICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAot
ICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL2lwaG9uZSJfcywKLSAgICAgICAgImh0dHBz
Oi8vcHVzaEVuZHBvaW50MiJfcywKLSAgICAgICAgInRvcGljMiJfcywKLSAgICAgICAgeyA1LCA2
IH0sCi0gICAgICAgIHsgNiwgNyB9LAotICAgICAgICB7IDcsIDggfSwKLSAgICAgICAgeyA4LCA5
IH0KICAgICB9OwogICAgIFB1c2hSZWNvcmQgcmVjb3JkMyB7CiAgICAgICAgIFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyKCksCkBAIC0xNjcsMTUgKzE3NCw0MyBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiByb3dJZGVudGlmaWVyczsKICAgICB9CiAKLSAgICBQdXNoRGF0YWJhc2U6OlB1c2hX
YWtlU3RhdGVUb1RvcGljTWFwIGdldFRvcGljc0J5V2FrZVN0YXRlKCkKKyAgICBWZWN0b3I8U3Ry
aW5nPiBnZXRUb3BpY3MoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdldFRvcGljc0J5V2FrZVN0
YXRlU3luYygqZGIpOworICAgICAgICByZXR1cm4gZ2V0VG9waWNzU3luYygqZGIpOworICAgIH0K
KworICAgIFZlY3RvcjxQdXNoUmVjb3JkPiByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVy
QW5kU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAg
ICBWZWN0b3I8UHVzaFJlY29yZD4gcmVtb3ZlZFJlY29yZHM7CisKKyAgICAgICAgZGItPnJlbW92
ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJRCwgc2Vj
dXJpdHlPcmlnaW4sIFsmZG9uZSwgJnJlbW92ZWRSZWNvcmRzXShhdXRvJiYgcmVzdWx0KSB7Cisg
ICAgICAgICAgICByZW1vdmVkUmVjb3JkcyA9IFdURk1vdmUocmVzdWx0KTsKKyAgICAgICAgICAg
IGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgICAgICByZXR1cm4gcmVtb3ZlZFJlY29yZHM7CisgICAgfQorCisgICAgaW50IGluY3JlbWVu
dFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNl
Y3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAg
IGludCBjb3VudCA9IDA7CisKKyAgICAgICAgZGItPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChi
dW5kbGVJRCwgc2VjdXJpdHlPcmlnaW4sIFsmZG9uZSwgJmNvdW50XShpbnQgcmVzdWx0KSB7Cisg
ICAgICAgICAgICBjb3VudCA9IHJlc3VsdDsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAg
ICAgICB9KTsKKyAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgICAgICByZXR1cm4gY291
bnQ7CiAgICAgfQogCiAgICAgdm9pZCBTZXRVcCgpIGZpbmFsCiAgICAgewogICAgICAgICBib29s
IGRvbmUgPSBmYWxzZTsKLSAgICAgICAgUHVzaERhdGFiYXNlOjpjcmVhdGUoU1FMaXRlRGF0YWJh
c2U6OmluTWVtb3J5UGF0aCgpLCBbdGhpcywgJmRvbmVdKHN0ZDo6dW5pcXVlX3B0cjxQdXNoRGF0
YWJhc2U+JiYgZGF0YWJhc2UpIHsKKyAgICAgICAgUHVzaERhdGFiYXNlOjpjcmVhdGUobWFrZVRl
bXBvcmFyeURhdGFiYXNlUGF0aCgpLCBbdGhpcywgJmRvbmVdKHN0ZDo6dW5pcXVlX3B0cjxQdXNo
RGF0YWJhc2U+JiYgZGF0YWJhc2UpIHsKICAgICAgICAgICAgIGRiID0gV1RGTW92ZShkYXRhYmFz
ZSk7CiAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKICAgICAgICAgfSk7CkBAIC0yMDAsOCArMjM1
LDcgQEAgc3RhdGljIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQdXNoUmVjb3JkJiBhLCBjb25zdCBQ
dXNoUmVjb3JkJiBiKQogICAgICAgICAmJiBhLmNsaWVudFB1YmxpY0tleSA9PSBiLmNsaWVudFB1
YmxpY0tleQogICAgICAgICAmJiBhLmNsaWVudFByaXZhdGVLZXkgPT0gYi5jbGllbnRQcml2YXRl
S2V5CiAgICAgICAgICYmIGEuc2hhcmVkQXV0aFNlY3JldCA9PSBiLnNoYXJlZEF1dGhTZWNyZXQK
LSAgICAgICAgJiYgYS5leHBpcmF0aW9uVGltZSA9PSBiLmV4cGlyYXRpb25UaW1lCi0gICAgICAg
ICYmIGEud2FrZVN0YXRlID09IGIud2FrZVN0YXRlOworICAgICAgICAmJiBhLmV4cGlyYXRpb25U
aW1lID09IGIuZXhwaXJhdGlvblRpbWU7CiB9CiAKIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBJ
bnNlcnRSZWNvcmQpCkBAIC0yMTQsMTEgKzI0OCw4IEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0
LCBJbnNlcnRSZWNvcmQpCiAgICAgZXhwZWN0ZWRSZWNvcmQyLmlkZW50aWZpZXIgPSBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllclR5cGU+KDIpOwogICAgIEVY
UEVDVF9UUlVFKGV4cGVjdGVkUmVjb3JkMiA9PSAqaW5zZXJ0UmVzdWx0Mik7CiAKLSAgICAvLyBT
aW5jZSByZWNvcmQzIGlzIGluIHRoZSBzYW1lIFN1YnNjcmlwdGlvblNldCBhcyByZWNvcmQxLCBp
dCBzaG91bGQKLSAgICAvLyBpbmhlcml0IHJlY29yZDEncyB3YWtlIHN0YXRlLgogICAgIGF1dG8g
ZXhwZWN0ZWRSZWNvcmQzID0gcmVjb3JkMzsKICAgICBleHBlY3RlZFJlY29yZDMuaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4o
Myk7Ci0gICAgZXhwZWN0ZWRSZWNvcmQzLndha2VTdGF0ZSA9IGV4cGVjdGVkUmVjb3JkMS53YWtl
U3RhdGU7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQzID09ICppbnNlcnRSZXN1bHQz
KTsKIAogICAgIC8vIEluc2VydGluZyBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIChidW5kbGVJRCwg
c2NvcGUpIGFzIHJlY29yZCAxIHNob3VsZCBmYWlsLgpAQCAtMjM2LDYgKzI2NywzMCBAQCBURVNU
X0YoUHVzaERhdGFiYXNlVGVzdCwgUmVtb3ZlUmVjb3JkKQogICAgIEVYUEVDVF9FUShnZXRSb3dJ
ZGVudGlmaWVycygpLCAoSGFzaFNldDx1aW50NjRfdD4geyAyLCAzIH0pKTsKIH0KIAorVEVTVF9G
KFB1c2hEYXRhYmFzZVRlc3QsIFJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1
cml0eU9yaWdpbikKK3sKKyAgICAvLyByZWNvcmQyIGFuZCByZWNvcmQzIGhhdmUgdGhlIHNhbWUg
YnVuZGxlSUQgYW5kIHNlY3VyaXR5T3JpZ2luLgorICAgIGF1dG8gcmVtb3ZlZFJlY29yZHMgPSBy
ZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4ocmVjb3JkMi5i
dW5kbGVJRCwgcmVjb3JkMi5zZWN1cml0eU9yaWdpbik7CisgICAgYm9vbCBjb250YWluc1JlY29y
ZDIgPSByZW1vdmVkUmVjb3Jkcy5maW5kSWYoW3RvcGljID0gcmVjb3JkMi50b3BpY10oYXV0byYg
cmVjb3JkKSB7CisgICAgICAgIHJldHVybiB0b3BpYyA9PSByZWNvcmQudG9waWM7CisgICAgfSkg
IT0gbm90Rm91bmQ7CisgICAgYm9vbCBjb250YWluc1JlY29yZDMgPSByZW1vdmVkUmVjb3Jkcy5m
aW5kSWYoW3RvcGljID0gcmVjb3JkMy50b3BpY10oYXV0byYgcmVjb3JkKSB7CisgICAgICAgIHJl
dHVybiB0b3BpYyA9PSByZWNvcmQudG9waWM7CisgICAgfSkgIT0gbm90Rm91bmQ7CisKKyAgICBF
WFBFQ1RfVFJVRShjb250YWluc1JlY29yZDIpOworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVj
b3JkMyk7CisgICAgRVhQRUNUX0VRKHJlbW92ZWRSZWNvcmRzLnNpemUoKSwgMnUpOworICAgIEVY
UEVDVF9FUShnZXRSb3dJZGVudGlmaWVycygpLCAoSGFzaFNldDx1aW50NjRfdD4geyAxIH0pKTsK
KworICAgIC8vIEluc2VydGluZyBhIG5ldyByZWNvcmQgc2hvdWxkIGdldCBhIG5ldyByb3dpZC4K
KyAgICBQdXNoUmVjb3JkIHJlY29yZDQgPSByZWNvcmQyOworICAgIGF1dG8gaW5zZXJ0UmVzdWx0
ID0gaW5zZXJ0UmVjb3JkKFdURk1vdmUocmVjb3JkNCkpOworICAgIEVYUEVDVF9UUlVFKGluc2Vy
dFJlc3VsdCk7CisgICAgRVhQRUNUX0VRKGluc2VydFJlc3VsdC0+aWRlbnRpZmllciwgbWFrZU9i
amVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPig0KSk7CisgICAg
RVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEsIDQg
fSkpOworfQorCiBURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0UmVjb3JkQnlUb3BpYykKIHsK
ICAgICBhdXRvIHJlc3VsdDEgPSBnZXRSZWNvcmRCeVRvcGljKHJlY29yZDEudG9waWMpOwpAQCAt
MjU5LDI5ICszMTQsMjcgQEAgVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEdldFJlY29yZEJ5QnVu
ZGxlSWRlbnRpZmllckFuZFNjb3BlKQogICAgIEVYUEVDVF9GQUxTRShyZXN1bHQzKTsKIH0KIAot
VEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEdldFRvcGljc0J5V2FrZVN0YXRlKQorVEVTVF9GKFB1
c2hEYXRhYmFzZVRlc3QsIEdldFRvcGljcykKIHsKLSAgICBIYXNoTWFwPFN0cmluZywgUHVzaFdh
a2VTdGF0ZT4gZXhwZWN0ZWQgewotICAgICAgICB7ICJ0b3BpYzEiLCBQdXNoV2FrZVN0YXRlOjpP
cHBvcnR1bmlzdGljIH0sCi0gICAgICAgIHsgInRvcGljMiIsIFB1c2hXYWtlU3RhdGU6Oldha2lu
ZyB9LAotICAgICAgICB7ICJ0b3BpYzMiLCBQdXNoV2FrZVN0YXRlOjpPcHBvcnR1bmlzdGljIH0K
LSAgICB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBQdXNoV2FrZVN0YXRlPiBhY3R1YWw7Ci0KLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIFt3YWtlU3RhdGUsIHRvcGljc10gOiBnZXRUb3BpY3NCeVdha2VT
dGF0ZSgpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgdG9waWMgOiB0b3BpY3MpCi0gICAg
ICAgICAgICBhY3R1YWwuYWRkKHRvcGljLCB3YWtlU3RhdGUpOwotICAgIH0KLQotICAgIEVYUEVD
VF9FUShleHBlY3RlZCwgYWN0dWFsKTsKKyAgICBWZWN0b3I8U3RyaW5nPiBleHBlY3RlZCB7ICJ0
b3BpYzEiX3MsICJ0b3BpYzIiX3MsICJ0b3BpYzMiX3MgfTsKKyAgICBFWFBFQ1RfRVEoZ2V0VG9w
aWNzKCksIGV4cGVjdGVkKTsKIH0KIAotc3RhdGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJh
c2VQYXRoKCkKK1RFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBJbmNyZW1lbnRTaWxlbnRQdXNoQ291
bnQpCiB7Ci0gICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBh
dXRvIHBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiUHVzaERhdGFiYXNlIiwg
aGFuZGxlLCAiLmRiIik7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAg
cmV0dXJuIHBhdGg7CisgICAgYXV0byBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChy
ZWNvcmQxLmJ1bmRsZUlELCByZWNvcmQxLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEo
Y291bnQsIDEpOworCisgICAgLy8gcmVjb3JkMidzIGJ1bmRsZUlEIGFuZCBzZWN1cml0eU9yaWdp
biBhcmUgZGlmZmVyZW50CisgICAgY291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQocmVj
b3JkMi5idW5kbGVJRCwgcmVjb3JkMi5zZWN1cml0eU9yaWdpbik7CisgICAgRVhQRUNUX0VRKGNv
dW50LCAxKTsKKworICAgIC8vIHJlY29yZDIgYW5kIHJlY29yZDMgaGF2ZSB0aGUgc2FtZSBidW5k
bGVJRCBhbmQgc2VjdXJpdHlPcmlnaW4uCisgICAgY291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQocmVjb3JkMy5idW5kbGVJRCwgcmVjb3JkMy5zZWN1cml0eU9yaWdpbik7CisgICAgRVhQ
RUNUX0VRKGNvdW50LCAyKTsKKworICAgIGNvdW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50
KCJub25leGlzdGVudCJfcywgIm5vbmV4aXN0ZW50Il9zKTsKKyAgICBFWFBFQ1RfRVEoY291bnQs
IDApOwogfQogCiBURVNUKFB1c2hEYXRhYmFzZSwgTWFueUluRmxpZ2h0T3BzKQpAQCAtMzE0LDcg
KzM2Nyw2IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCiAgICAgICAgICAg
ICB7IDIsIDMgfSwKICAgICAgICAgICAgIHsgNCwgNSB9LAogICAgICAgICAgICAgY29udmVydFNl
Y29uZHNUb0Vwb2NoVGltZVN0YW1wKDE2NDMzNTAwMDApLAotICAgICAgICAgICAgUHVzaFdha2VT
dGF0ZTo6V2FraW5nCiAgICAgICAgIH07CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHJlY29yZENvdW50OyBpKyspIHsKQEAgLTMzOSw4ICszOTEsNyBAQCBURVNUKFB1c2hEYXRh
YmFzZSwgTWFueUluRmxpZ2h0T3BzKQogICAgICAgICBVdGlsOjpydW4oJmRvbmUpOwogICAgICAg
ICBBU1NFUlRfVFJVRShjcmVhdGVSZXN1bHQpOwogCi0gICAgICAgIGF1dG8gZ2V0UmVzdWx0ID0g
Z2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpjcmVhdGVSZXN1bHQpOwotICAgICAgICBhdXRvIHRv
cGljcyA9IGdldFJlc3VsdC50YWtlKFB1c2hXYWtlU3RhdGU6Oldha2luZyk7CisgICAgICAgIGF1
dG8gdG9waWNzID0gZ2V0VG9waWNzU3luYygqY3JlYXRlUmVzdWx0KTsKICAgICAgICAgRVhQRUNU
X0VRKHRvcGljcy5zaXplKCksIHJlY29yZENvdW50KTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KaW5kZXggYjY3Mjk2Nzhh
Zjk5ODU3ZDJhZmY5MGMzY2FlNDNlNmZiMjQ3Y2FiNC4uOGNmNThkZWY4NjQ2OTkxMmI1YTNmYjE5
YWZmYWYyOTNhOGNiZGJjOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QdXNoQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHVzaEFQSS5tbQpAQCAtMjksNyArMjksMTAgQEAKICNpbXBvcnQgIkhUVFBTZXJ2
ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisj
aW1wb3J0ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZp
ZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CkBA
IC04OSw2ICs5Miw3IEBAIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkg
PT4gewogICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlYWR5Iik7CiB9KTsKIHNlbGYuYWRkRXZlbnRM
aXN0ZW5lcigicHVzaCIsIChldmVudCkgPT4geworICAgIHNlbGYucmVnaXN0cmF0aW9uLnNob3dO
b3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOwogICAgIHRyeSB7CiAgICAgICAgIGlmICghZXZl
bnQuZGF0YSkgewogICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwg
ZGF0YSIpOwpAQCAtMTM4LDYgKzE0Miw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudCkK
IAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBf
bm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRT
aGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVy
LnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2Fn
ZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVz
c2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOwogCkBAIC0xODgsNiArMTk1LDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0pOwog
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdp
c3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CiAgICAgaWYgKCFldmVu
dC5kYXRhKQogICAgICAgICByZXR1cm47CiAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRhLnRl
eHQoKTsKQEAgLTIyNSw2ICsyMzMsOSBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRo
Tm9QYWdlc1N1Y2Nlc3NmdWwpCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjbGVhcldlYnNpdGVEYXRh
U3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOwogCisgICAgYXV0byBwcm92
aWRlciA9IFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcih7IFtbY29uZmln
dXJhdGlvbiBwcm9jZXNzUG9vbF0gX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSwgV0tO
b3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFn
ZXIoKSB9KTsKKyAgICBwcm92aWRlci5zZXRQZXJtaXNzaW9uKHNlcnZlci5vcmlnaW4oKSwgdHJ1
ZSk7CisKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1B1c2hBUElNZXNzYWdl
SGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKIApAQCAtMjcwLDYgKzI4MSw5IEBAIFRFU1Qo
UHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzRmFpbCkKICAgICBhdXRvIGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3Jl
XSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFu
YWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24o
c2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5p
dF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVt
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVt
b24ubW0KaW5kZXggYjdiMzRiNmNhYTU0N2JlMzJhMzc2MjhjY2YxYWNkZWVjNmY1ZDY1OS4uYWNk
Yjg0M2ViNmM1YWE4Y2NlZTBiZmIxNTIwYjg0YTFkZjQ5ZjUxYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQpAQCAt
MjksMTAgKzI5LDEyIEBACiAjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oPgpAQCAtNDQwLDYgKzQ0Miw5IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24v
amF2YXNjcmlwdCIgfSB9LCBzZXJ2aWNlV29ya2VyU2NyaXB0U291cmNlIH0gfQogICAgICAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCkpOwogCisgICAgICAg
IG1fbm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFRlc3RXZWJLaXRBUEk6OlRlc3RO
b3RpZmljYXRpb25Qcm92aWRlcj4oVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4geyBb
W21fY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0
aW5nXSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNh
dGlvbk1hbmFnZXIoKSB9KTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+c2V0UGVy
bWlzc2lvbihtX3NlcnZlci0+b3JpZ2luKCksIHRydWUpOworCiAgICAgICAgIG1fd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjptX2NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICAg
ICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDptX3NlcnZlci0+cmVxdWVzdCgpXTsKICAgICB9CkBA
IC00NDksMTIgKzQ1NCw0MyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGNsZWFuVXBUZXN0V2ViUHVz
aEQobV90ZW1wRGlyZWN0b3J5LmdldCgpKTsKICAgICB9CiAKKyAgICBSZXRhaW5QdHI8TlNEaWN0
aW9uYXJ5PiBpbmplY3RQdXNoTWVzc2FnZShOU0RpY3Rpb25hcnkgKnB1c2hVc2VySW5mbykKKyAg
ICB7CisgICAgICAgIFN0cmluZyBzY29wZSA9IG1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMLmFic29s
dXRlU3RyaW5nOworICAgICAgICBTdHJpbmcgdG9waWMgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0
V2ViS2l0QVBJICJfc3RyICsgc2NvcGU7CisgICAgICAgIGlkIG9iaiA9IEB7CisgICAgICAgICAg
ICBAInRvcGljIjogKE5TU3RyaW5nICopdG9waWMsCisgICAgICAgICAgICBAInVzZXJJbmZvIjog
cHVzaFVzZXJJbmZvCisgICAgICAgIH07CisgICAgICAgIE5TRGF0YSAqZGF0YSA9IFtOU0pTT05T
ZXJpYWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpvYmogb3B0aW9uczowIGVycm9yOm51bGxw
dHJdOworCisgICAgICAgIFN0cmluZyBtZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAq
PihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGEubGVuZ3RoKSB9OworICAg
ICAgICBhdXRvIGVuY29kZWRNZXNzYWdlID0gZW5jb2RlU3RyaW5nKFdURk1vdmUobWVzc2FnZSkp
OworCisgICAgICAgIGF1dG8gdXRpbGl0eUNvbm5lY3Rpb24gPSBjcmVhdGVBbmRDb25maWd1cmVD
b25uZWN0aW9uVG9TZXJ2aWNlKCJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2Ui
KTsKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29u
bmVjdGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9y
VGVzdGluZywgZW5jb2RlZE1lc3NhZ2UpOworCisgICAgICAgIC8vIEZldGNoIHB1c2ggbWVzc2Fn
ZXMKKyAgICAgICAgX19ibG9jayBib29sIGdvdE1lc3NhZ2VzID0gZmFsc2U7CisgICAgICAgIF9f
YmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKKyAgICAg
ICAgW21fZGF0YVN0b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOl4oTlNBcnJheTxOU0RpY3Rp
b25hcnkgKj4gKnJhd01lc3NhZ2VzKSB7CisgICAgICAgICAgICBtZXNzYWdlcyA9IHJhd01lc3Nh
Z2VzOworICAgICAgICAgICAgZ290TWVzc2FnZXMgPSB0cnVlOworICAgICAgICB9XTsKKyAgICAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlcyk7CisKKyAgICAgICAgRVhQ
RUNUX0VRKFttZXNzYWdlcyBjb3VudF0sIDF1KTsKKworICAgICAgICByZXR1cm4gW21lc3NhZ2Vz
IG9iamVjdEF0SW5kZXg6MF07CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5TVVJMPiBtX3RlbXBE
aXJlY3Rvcnk7CiAgICAgUmV0YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gbV9kYXRhU3RvcmU7
CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IG1fY29uZmlndXJhdGlvbjsK
ICAgICBSZXRhaW5QdHI8VGVzdE1lc3NhZ2VIYW5kbGVyPiBtX3Rlc3RNZXNzYWdlSGFuZGxlcjsK
ICAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uU2NyaXB0TWVzc2FnZUhhbmRsZXI+IG1fbm90aWZp
Y2F0aW9uTWVzc2FnZUhhbmRsZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI+IG1fc2VydmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0V2ViS2l0QVBJ
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fbm90aWZpY2F0aW9uUHJvdmlkZXI7CiAgICAg
UmV0YWluUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OwogfTsKIApAQCAtNDk3LDYgKzUzMyw3IEBA
IHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0OjpydW5UZXN0KE5TU3RyaW5nICpleHBlY3Rl
ZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfSk7CiAgICAgc2VsZi5hZGRFdmVudExpc3Rl
bmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CiAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzZWxm
LnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICAgICAg
ICAgIGlmICghZXZlbnQuZGF0YSkgewogICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2Uo
IlJlY2VpdmVkOiBudWxsIGRhdGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MjAs
NDMgKzU1NywyMCBAQCB2b2lkIFdlYlB1c2hESW5qZWN0ZWRQdXNoVGVzdDo6cnVuVGVzdChOU1N0
cmluZyAqZXhwZWN0ZWRNZXNzYWdlLCBOU0RpY3Rpb25hcnkgKgogICAgIH1dOwogCiAgICAgbG9h
ZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtlclNvdXJjZSk7Ci0KICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5KTsKIAotICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVy
ID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQSSJfczsKLSAgICBTdHJpbmcgc2NvcGUg
PSBtX3NlcnZlci0+cmVxdWVzdCgpLlVSTC5hYnNvbHV0ZVN0cmluZzsKLSAgICBTdHJpbmcgdG9w
aWMgPSBidW5kbGVJZGVudGlmaWVyICsgIiAiX3MgKyBzY29wZTsKLQotICAgIGlkIG9iaiA9IEB7
Ci0gICAgICAgIEAidG9waWMiOiAoTlNTdHJpbmcgKil0b3BpYywKLSAgICAgICAgQCJ1c2VySW5m
byI6IHB1c2hVc2VySW5mbwotICAgIH07Ci0gICAgTlNEYXRhICpkYXRhID0gW05TSlNPTlNlcmlh
bGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07
Ci0KLSAgICBTdHJpbmcgbWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZGF0YS5i
eXRlcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkYXRhLmxlbmd0aCkgfTsKLSAgICBhdXRvIGVu
Y29kZWRNZXNzYWdlID0gZW5jb2RlU3RyaW5nKFdURk1vdmUobWVzc2FnZSkpOwotCi0gICAgYXV0
byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZp
Y2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOwotICAgIHNlbmRNZXNz
YWdlVG9EYWVtb25XYWl0aW5nRm9yUmVwbHkodXRpbGl0eUNvbm5lY3Rpb24uZ2V0KCksIE1lc3Nh
Z2VUeXBlOjpJbmplY3RFbmNyeXB0ZWRQdXNoTWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZWRNZXNz
YWdlKTsKLQotICAgIC8vIEZldGNoIHB1c2ggbWVzc2FnZXMKLSAgICBfX2Jsb2NrIGJvb2wgZ290
TWVzc2FnZXMgPSBmYWxzZTsKLSAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PE5TRGljdGlv
bmFyeSAqPj4gbWVzc2FnZXM7Ci0gICAgW21fZGF0YVN0b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzOl4oTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKnJhd01lc3NhZ2VzKSB7Ci0gICAgICAgIG1l
c3NhZ2VzID0gcmF3TWVzc2FnZXM7Ci0gICAgICAgIGdvdE1lc3NhZ2VzID0gdHJ1ZTsKLSAgICB9
XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2VzKTsKLQotICAgIEVY
UEVDVF9FUShbbWVzc2FnZXMgY291bnRdLCAxdSk7CisgICAgYXV0byBtZXNzYWdlID0gaW5qZWN0
UHVzaE1lc3NhZ2UocHVzaFVzZXJJbmZvKTsKIAotICAgIC8vIEhhbmRsZSBwdXNoIG1lc3NhZ2UK
ICAgICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKLSAgICBbbV9k
YXRhU3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZXMgZmlyc3RPYmplY3RdIGNvbXBs
ZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWRSZXN1bHQgPSBmYWxzZTsKKyAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNo
TWVzc2FnZTptZXNzYWdlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsK
KyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIHB1
c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmdvdEV4cGVjdGVkTWVzc2FnZSk7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisKKyAgICBFWFBFQ1RfVFJVRShwdXNoTWVzc2Fn
ZVByb2Nlc3NlZFJlc3VsdCk7CiB9CiAKIFRFU1RfRihXZWJQdXNoREluamVjdGVkUHVzaFRlc3Qs
IEhhbmRsZUluamVjdGVkRW1wdHlQdXNoKQpAQCAtNzA3LDYgKzcyMSw3NyBAQCBURVNUX0YoV2Vi
UHVzaERUZXN0LCBVbnN1YnNjcmliZVRlc3QpCiAgICAgQVNTRVJUX1RSVUUoW29iaiBpc0VxdWFs
OmV4cGVjdGVkXSk7CiB9CiAKK1RFU1RfRihXZWJQdXNoRFRlc3QsIFRvb01hbnlTaWxlbnRQdXNo
ZXNDYXVzZXNVbnN1YnNjcmliZSkKK3sKKyAgICBzdGF0aWMgY29uc3QgY2hhciogaHRtbFNvdXJj
ZSA9IFIiSFRNTCgKKyAgICA8c2NyaXB0IHNyYz0iL2NvbnN0YW50cy5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICBsZXQgcHVzaE1hbmFnZXIgPSBudWxsOworCisgICAgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oYXN5bmMgKCkgPT4geworICAg
ICAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWFkeTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgICBwdXNoTWFuYWdlciA9IHJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlcjsKKyAgICAgICAgICAg
IGxldCBzdWJzY3JpcHRpb24gPSBhd2FpdCBwdXNoTWFuYWdlci5zdWJzY3JpYmUoeworICAgICAg
ICAgICAgICAgIHVzZXJWaXNpYmxlT25seTogdHJ1ZSwKKyAgICAgICAgICAgICAgICBhcHBsaWNh
dGlvblNlcnZlcktleTogVkFMSURfU0VSVkVSX0tFWQorICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICByZXN1bHQgPSAiU3Vic2NyaWJlZCI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAg
ICAgICAgIHJlc3VsdCA9ICJFcnJvcjogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShyZXN1bHQpOworICAgIH0p
OworCisgICAgZnVuY3Rpb24gZ2V0UHVzaFN1YnNjcmlwdGlvbigpCisgICAgeworICAgICAgICBw
dXNoTWFuYWdlci5nZXRTdWJzY3JpcHRpb24oKS50aGVuKChzdWJzY3JpcHRpb24pID0+IHsKKyAg
ICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm5vdGUucG9zdE1lc3NhZ2Uo
c3Vic2NyaXB0aW9uID8gIlN1YnNjcmliZWQiIDogIlVuc3Vic2NyaWJlZCIpOworICAgICAgICB9
KTsKKyAgICB9CisgICAgPC9zY3JpcHQ+CisgICAgKUhUTUwiOworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzZXJ2aWNlV29ya2VyU2NyaXB0U291cmNlID0gInNlbGYuYWRkRXZlbnRMaXN0ZW5lcign
cHVzaCcsIChldmVudCkgPT4geyB9KTsiOworCisgICAgX19ibG9jayBSZXRhaW5QdHI8aWQ+IG1l
c3NhZ2UgPSBuaWw7CisgICAgX19ibG9jayBib29sIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBb
bV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlciBzZXRNZXNzYWdlSGFuZGxlcjpeKGlkIHJlY2Vp
dmVkTWVzc2FnZSkgeworICAgICAgICBtZXNzYWdlID0gcmVjZWl2ZWRNZXNzYWdlOworICAgICAg
ICBnb3RNZXNzYWdlID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIGxvYWRSZXF1ZXN0KGh0bWxTb3Vy
Y2UsIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UpOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9T
dHJpbmc6QCJTdWJzY3JpYmVkIl0pOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBXZWJLaXQ6
OldlYlB1c2hEOjptYXhTaWxlbnRQdXNoQ291bnQ7IGkrKykgeworICAgICAgICBnb3RNZXNzYWdl
ID0gZmFsc2U7CisgICAgICAgIFttX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZ2V0UHVz
aFN1YnNjcmlwdGlvbigpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yKikgeyB9XTsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3Vic2NyaWJlZCJdKTsKKwor
ICAgICAgICBfX2Jsb2NrIGJvb2wgcHJvY2Vzc2VkUHVzaCA9IGZhbHNlOworICAgICAgICBfX2Js
b2NrIGJvb2wgcHVzaFJlc3VsdCA9IGZhbHNlOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBpbmpl
Y3RQdXNoTWVzc2FnZShAeyB9KTsKKworICAgICAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNo
TWVzc2FnZTptZXNzYWdlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsK
KyAgICAgICAgICAgIHB1c2hSZXN1bHQgPSByZXN1bHQ7CisgICAgICAgICAgICBwcm9jZXNzZWRQ
dXNoID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcHJvY2Vzc2VkUHVzaCk7CisKKyAgICAgICAgLy8gV2ViQ29udGVudCBzaG91bGQgZmFpbCBw
cm9jZXNzaW5nIHRoZSBwdXNoIHNpbmNlIG5vIG5vdGlmaWNhdGlvbiB3YXMgc2hvd24uCisgICAg
ICAgIEVYUEVDVF9GQUxTRShwdXNoUmVzdWx0KTsKKyAgICB9CisKKyAgICBnb3RNZXNzYWdlID0g
ZmFsc2U7CisgICAgW21fd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2Ny
aXB0aW9uKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IqKSB7IH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZSk7CisgICAgQVNTRVJUX1RSVUUoW21l
c3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiVW5zdWJzY3JpYmVkIl0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5kZXggNzVkMjgyZWE5
ZTQwZDIxMTVhZjE5NDhhZDNmOGViOGZjNjM3Y2NkNC4uYzUzYjQzOWVhMzgxMTAxMjU2YjVjMjhi
NTIxYWY4MzA0ZDI5Y2QzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgK
QEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChD
b25uZWN0aW9uKT4mJiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgfkhUVFBTZXJ2
ZXIoKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIG9yaWdpbigpIGNv
bnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGggPSAiLyJf
c3RyKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoTG9jYWxob3N0KGNvbnN0
IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3Rz
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXggODhk
ODZiZjFkMGMxOWYwY2NmMzA1ZmQwODVkYWE0ZDc4NzM0ZDQ5MC4uNmM2MTg0OGJhMmQ2MTRjOWE3
NzZlOTNlNzFjOTA3Zjc5ZmFiOWM3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbQpAQCAtMzc2LDYgKzM3NiwxMSBAQCBjb25zdCBjaGFyKiBIVFRQU2VydmVyOjpzY2hl
bWUoKSBjb25zdAogICAgIHJldHVybiBzY2hlbWU7CiB9CiAKK1N0cmluZyBIVFRQU2VydmVyOjpv
cmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVzOi8vMTI3LjAuMC4xOiVkIiwgc2NoZW1lKCksIHBvcnQoKV07Cit9CisKIE5TVVJMUmVxdWVz
dCAqSFRUUFNlcnZlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlczovLzEyNy4wLjAuMTolZCVAIiwgc2NoZW1l
KCksIHBvcnQoKSwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpXV1dOwo=
</data>
<flag name="commit-queue"
          id="479680"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452592</attachid>
            <date>2022-02-18 15:57:58 -0800</date>
            <delta_ts>2022-02-18 19:43:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236863-20220218155757.patch</filename>
            <type>text/plain</type>
            <size>74533</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZWRkMzA4NzY2Y2Rj
YTQ0ZTk5ZTgzMzNkNDY1NGUyYTg1MTYwNC4uZGNhNmNlNjNiZWJjMDZmYzFhOWFiZjRhNjQwYjRk
ZGU4MGZlMjFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTAyLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlc2Ny
aXB0aW9uIHRvIGZvbGxvdy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFi
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENvcHkpOgorICAgICAg
ICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAgICAgICAoV2ViQ29y
ZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFz
ZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoRGF0YWJhc2U6Omdl
dFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6
aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFz
ZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKToKKyAg
ICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAgICAgICAqIHdvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVu
dCk6CisKIDIwMjItMDItMTcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0dUS10gQnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIHdpdGggQU5HTEUg
ZW5hYmxlZCBzaW5jZSByMjg5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMGVmMzhjZDI3NDdlNTc1NzgyZGYy
NzA3NzNlY2ZjN2M3NzMyYmQuLmFmMjFjMGUxNGVkY2NjZDE0ZjMyODk2MTg4OGY2ZDU2YWQ5MTU3
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDItMTggIEJlbiBOaGFtICA8bmhh
bUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVzY3JpcHRpb24gdG8g
Zm9sbG93LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisgICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVy
PGludD46OmNhbGxSZXBseSk6CisgICAgICAgICogU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFu
dHMuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaEQ6Om1lc3NhZ2VUeXBlU2VuZHNSZXBseSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAg
ICAoLVtXS1Byb2Nlc3NQb29sIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10pOgorICAg
ICAgICAqIHdlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tOgorICAgICAgICAoV2ViUHVzaEQ6OnVwZGF0
ZVRvcGljTGlzdHMpOgorICAgICAgICAoV2ViUHVzaEQ6OlB1c2hTZXJ2aWNlOjppbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQpOgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06Cisg
ICAgICAgIChXZWJQdXNoRDo6TWVzc2FnZUluZm86OmluY3JlbWVudFNpbGVudFB1c2hDb3VudDo6
ZW5jb2RlUmVwbHkpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZGVjb2RlQW5kSGFuZGxl
TWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQpOgorCiAyMDIyLTAyLTE3ICBLaW1tbyBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggd2hpbGUgZGVzdHJveWluZyBSZW1vdGVWaWRlb0ZyYW1lT2Jq
ZWN0SGVhcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNo
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJh
c2UuY3BwCmluZGV4IDhhMWY1M2FiNDgwYWUwYjQwNTk2MjZiY2EwYzQ2ZWUwN2MzOTI1YzUuLmZk
NTc0N2I5YWMxNDE5ZWViMmVmODc0MTdlOTY1MjRlNGY1ODJlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKQEAgLTQzLDE5ICs0Mywy
NCBAQAogI2RlZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0Vf
TE9HX0VSUk9SKFB1c2gsICIlcCAtIFB1c2hEYXRhYmFzZTo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCkgUFVTSERCX1JF
TEVBU0VfTE9HX0VSUk9SKCJGYWlsZWQgdG8gYmluZCBzdGF0ZW1lbnQgKCVkKTogJXMiLCBtX2Ri
LT5sYXN0RXJyb3IoKSwgbV9kYi0+bGFzdEVycm9yTXNnKCkpCiAKKyNkZWZpbmUga1B1c2hSZWNv
cmRDb2x1bW5zICIgc3ViLnJvd0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1
Yi5zY29wZSwgc3ViLmVuZHBvaW50LCBzdWIudG9waWMsIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tl
eSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksIHN1Yi5zaGFyZWRB
dXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUgIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBjb25zdGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMTsKK3N0
YXRpYyBjb25zdGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMjsKKyNkZWZp
bmUga0N1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uU3RyaW5nICIyIgogCiBzdGF0aWMgY29uc3Qg
QVNDSUlMaXRlcmFsIHB1c2hEYXRhYmFzZVNjaGVtYVYxU3RhdGVtZW50c1tdID0gewogICAgICJQ
UkFHTUEgYXV0b192YWN1dW09SU5DUkVNRU5UQUwiX3MsCiAgICAgIkNSRUFURSBUQUJMRSBTdWJz
Y3JpcHRpb25TZXRzKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNS
RU1FTlQsIgogICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEwsIgogICAgICIgIGJ1bmRs
ZUlEIFRFWFQgTk9UIE5VTEwsIgogICAgICIgIHNlY3VyaXR5T3JpZ2luIFRFWFQgTk9UIE5VTEws
IgotICAgICIgIHdha2VTdGF0ZSBJTlQgTk9UIE5VTEwsIgorICAgICIgIHNpbGVudFB1c2hDb3Vu
dCBJTlQgTk9UIE5VTEwsIgogICAgICIgIFVOSVFVRShidW5kbGVJRCwgc2VjdXJpdHlPcmlnaW4p
KSJfcywKICAgICAiQ1JFQVRFIFRBQkxFIFN1YnNjcmlwdGlvbnMoIgorICAgICIgIHJvd0lEIElO
VEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCiAgICAgIiAgY3JlYXRpb25UaW1lIElO
VCBOT1QgTlVMTCwiCiAgICAgIiAgc3Vic2NyaXB0aW9uU2V0SUQgSU5UIE5PVCBOVUxMLCIKICAg
ICAiICBzY29wZSBURVhUIE5PVCBOVUxMLCIKQEAgLTY4LDcgKzczLDcgQEAgc3RhdGljIGNvbnN0
IEFTQ0lJTGl0ZXJhbCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAi
ICBleHBpcmF0aW9uVGltZSBJTlQsIgogICAgICIgIFVOSVFVRShzY29wZSwgc3Vic2NyaXB0aW9u
U2V0SUQpKSJfcywKICAgICAiQ1JFQVRFIElOREVYIFN1YnNjcmlwdGlvbnNfU3Vic2NyaXB0aW9u
U2V0SURfSW5kZXggT04gU3Vic2NyaXB0aW9ucyhzdWJzY3JpcHRpb25TZXRJRCkiX3MsCi0gICAg
IlBSQUdNQSB1c2VyX3ZlcnNpb24gPSAxIl9zCisgICAgIlBSQUdNQSB1c2VyX3ZlcnNpb24gPSAi
IGtDdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiIl9zCiB9OwogCiBQdXNoUmVjb3Jk
IFB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKQEAgLTg0LDggKzg5LDcgQEAgUHVz
aFJlY29yZCBQdXNoUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiAgICAgICAgIGNsaWVu
dFB1YmxpY0tleSwKICAgICAgICAgY2xpZW50UHJpdmF0ZUtleSwKICAgICAgICAgc2hhcmVkQXV0
aFNlY3JldCwKLSAgICAgICAgZXhwaXJhdGlvblRpbWUsCi0gICAgICAgIHdha2VTdGF0ZQorICAg
ICAgICBleHBpcmF0aW9uVGltZQogICAgIH07CiB9CiAKQEAgLTEwMiw4ICsxMDYsNyBAQCBQdXNo
UmVjb3JkIFB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSgpICYmCiAgICAgICAgIFdURk1vdmUoY2xp
ZW50UHVibGljS2V5KSwKICAgICAgICAgV1RGTW92ZShjbGllbnRQcml2YXRlS2V5KSwKICAgICAg
ICAgV1RGTW92ZShzaGFyZWRBdXRoU2VjcmV0KSwKLSAgICAgICAgZXhwaXJhdGlvblRpbWUsCi0g
ICAgICAgIHdha2VTdGF0ZQorICAgICAgICBleHBpcmF0aW9uVGltZQogICAgIH07CiB9CiAKQEAg
LTI4MCw3ICsyODMsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6aW5zZXJ0UmVjb3JkKGNvbnN0IFB1
c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogICAgICAgICBpbnQ2NF90
IHN1YnNjcmlwdGlvblNldElEID0gMDsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNFTEVDVCByb3dpZCwgd2FrZVN0YXRlIEZST00g
U3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2luID0g
PyJfcyk7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNF
TEVDVCByb3dJRCBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBz
ZWN1cml0eU9yaWdpbiA9ID8iX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAg
ICAgICB8fCBzcWwtPmJpbmRUZXh0KDEsIHJlY29yZC5idW5kbGVJRCkgIT0gU1FMSVRFX09LCiAg
ICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCByZWNvcmQuc2VjdXJpdHlPcmlnaW4p
ICE9IFNRTElURV9PSykgewpAQCAtMjg5LDE5ICsyOTIsMTYgQEAgdm9pZCBQdXNoRGF0YWJhc2U6
Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiByZWNvcmQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25TZXRJ
RCA9IHNxbC0+Y29sdW1uSW50NjQoMCk7Ci0gICAgICAgICAgICAgICAgcmVjb3JkLndha2VTdGF0
ZSA9IHN0YXRpY19jYXN0PFB1c2hXYWtlU3RhdGU+KHNxbC0+Y29sdW1uSW50KDEpKTsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGlmICghc3Vic2NyaXB0aW9uU2V0SUQpIHsK
LSAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElO
VE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxVRVMoPywgPywgPywgPykiX3MpOworICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRp
b25TZXRzIFZBTFVFUyhOVUxMLCA/LCA/LCA/LCAwKSJfcyk7CiAgICAgICAgICAgICBpZiAoIXNx
bAogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIHRpbWUobnVsbHB0cikpICE9
IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLmJ1
bmRsZUlEKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMs
IHJlY29yZC5zZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwg
c3FsLT5iaW5kSW50KDQsIHN0YXRpY19jYXN0PGludD4ocmVjb3JkLndha2VTdGF0ZSkpICE9IFNR
TElURV9PSykgeworICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMywgcmVjb3JkLnNl
Y3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgICAgICBQVVNIREJfUkVM
RUFTRV9MT0dfQklORF9FUlJPUigpOwogICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVl
dWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN0ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4g
eyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMTYsNyArMzE2LDcgQEAgdm9pZCBQ
dXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiByZWNvcmQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgfQogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9u
cyBWQUxVRVMoPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOworICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRp
b25zIFZBTFVFUyhOVUxMLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CiAgICAg
ICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludDY0KDEsIHRp
bWUobnVsbHB0cikpICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZElu
dDY0KDIsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0sKQEAgLTQyMywyMSArNDIzLDIw
IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpyZW1vdmVSZWNvcmRCeUlkZW50aWZpZXIoUHVzaFN1YnNj
cmlwdGlvbklkZW50aWZpZXIgaWRlbnRpZmllCiAgICAgfSk7CiB9CiAKLXN0YXRpYyBQdXNoUmVj
b3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZSYg
c3FsKQorc3RhdGljIFB1c2hSZWNvcmQgbWFrZVB1c2hSZWNvcmRGcm9tUm93KFNRTGl0ZVN0YXRl
bWVudEF1dG9SZXNldFNjb3BlJiBzcWwsIGludCBjb2x1bW5JbmRleCkKIHsKICAgICBQdXNoUmVj
b3JkIHJlY29yZDsKLSAgICByZWNvcmQuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oc3FsLT5jb2x1bW5JbnQ2NCgwKSk7Ci0g
ICAgcmVjb3JkLmJ1bmRsZUlEID0gc3FsLT5jb2x1bW5UZXh0KDEpOwotICAgIHJlY29yZC5zZWN1
cml0eU9yaWdpbiA9IHNxbC0+Y29sdW1uVGV4dCgyKTsKLSAgICByZWNvcmQuc2NvcGUgPSBzcWwt
PmNvbHVtblRleHQoMyk7Ci0gICAgcmVjb3JkLmVuZHBvaW50ID0gc3FsLT5jb2x1bW5UZXh0KDQp
OwotICAgIHJlY29yZC50b3BpYyA9IHNxbC0+Y29sdW1uVGV4dCg1KTsKLSAgICByZWNvcmQuc2Vy
dmVyVkFQSURQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoNik7Ci0gICAgcmVjb3JkLmNsaWVu
dFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYig3KTsKLSAgICByZWNvcmQuY2xpZW50UHJpdmF0
ZUtleSA9IHNxbC0+Y29sdW1uQmxvYig4KTsKLSAgICByZWNvcmQuc2hhcmVkQXV0aFNlY3JldCA9
IHNxbC0+Y29sdW1uQmxvYig5KTsKLSAgICByZWNvcmQuZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0
aW9uVGltZUZyb21WYWx1ZShzcWwtPmNvbHVtblZhbHVlKDEwKSk7Ci0gICAgcmVjb3JkLndha2VT
dGF0ZSA9IHN0YXRpY19jYXN0PFB1c2hXYWtlU3RhdGU+KHNxbC0+Y29sdW1uSW50KDExKSk7Cisg
ICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoY29sdW1uSW5kZXgrKykpOworICAg
IHJlY29yZC5idW5kbGVJRCA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICBy
ZWNvcmQuc2VjdXJpdHlPcmlnaW4gPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7Cisg
ICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJl
Y29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNv
cmQudG9waWMgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNl
cnZlclZBUElEUHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAg
IHJlY29yZC5jbGllbnRQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5kZXgrKyk7
CisgICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5k
ZXgrKyk7CisgICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVtbkJsb2IoY29s
dW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVG
cm9tVmFsdWUoc3FsLT5jb2x1bW5WYWx1ZShjb2x1bW5JbmRleCsrKSk7CiAKICAgICByZXR1cm4g
cmVjb3JkOwogfQpAQCAtNDQ3LDEwICs0NDYsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0UmVj
b3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKAog
ICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIHRvcGljID0gY3Jvc3NUaHJlYWRDb3B5KHRv
cGljKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2UgU1FMaXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlw
dGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZpYSBDUk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCi0gICAgICAgICAgICAiU0VMRUNUICIKLSAgICAg
ICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVuZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIu
c2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRvcGljLCAiCi0gICAgICAgICAgICAiICBzdWIuc2Vy
dmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGllbnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRl
S2V5LCAiCi0gICAgICAgICAgICAiICBzdWIuc2hhcmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRp
b25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAgICAgICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3Jk
Q29sdW1ucwogICAgICAgICAgICAgIkZST00gU3Vic2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAg
ICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9uU2V0cyBzcyAiCiAgICAgICAgICAgICAiT04gc3Vi
LnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93aWQgIgpAQCAtNDY3LDcgKzQ2Myw3IEBAIHZvaWQg
UHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtl
UHVzaFJlY29yZEZyb21Sb3coc3FsKSk7CisgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsK
ICAgICB9KTsKIH0KIApAQCAtNDc2LDEwICs0NzIsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0
UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwg
YwogICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRD
b3B5KGJ1bmRsZUlEKSwgc2NvcGUgPSBjcm9zc1RocmVhZENvcHkoc2NvcGUpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICAvLyBGb3JjZSBTUUxpdGUgdG8gY29uc3VsdCB0aGUgU3Vic2NyaXB0aW9ucyhzY29wZSkgaW5k
ZXggZmlyc3QgdmlhIENST1NTIEpPSU4uCiAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVt
ZW50T25RdWV1ZSgKLSAgICAgICAgICAgICJTRUxFQ1QgIgotICAgICAgICAgICAgIiAgc3ViLnJv
d0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1Yi5zY29wZSwgc3ViLmVuZHBv
aW50LCBzdWIudG9waWMsICIKLSAgICAgICAgICAgICIgIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tl
eSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksICIKLSAgICAgICAg
ICAgICIgIHN1Yi5zaGFyZWRBdXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUsIHNzLndha2VT
dGF0ZSAiCisgICAgICAgICAgICAiU0VMRUNUICIga1B1c2hSZWNvcmRDb2x1bW5zCiAgICAgICAg
ICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCiAgICAgICAgICAgICAiQ1JPU1MgSk9JTiBT
dWJzY3JpcHRpb25TZXRzIHNzICIKICAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0aW9uU2V0
SUQgPSBzcy5yb3dpZCAiCkBAIC00OTYsNyArNDg5LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6Omdl
dFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQs
IGMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRlT25N
YWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVjb3JkRnJvbVJv
dyhzcWwpKTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCwgMCkpOwogICAgIH0pOwogfQogCkBA
IC01MTIsMTcgKzUwNSwxMSBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0SWRlbnRpZmllcnMoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3JpcHRpbwogICAgIH0pOwogfQog
Ci12b2lkIFB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUHVzaERhdGFiYXNlOjpnZXRUb3BpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBkaXNwYXRjaE9uV29y
a1F1ZXVlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb25zdGV4cHIgaW50IG51bWJlck9mV2FrZVN0YXRl
cyA9IHN0YXRpY19jYXN0PGludD4oUHVzaFdha2VTdGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOwotICAg
ICAgICBWZWN0b3I8VmVjdG9yPFN0cmluZz4sIG51bWJlck9mV2FrZVN0YXRlcz4gdG9waWNzQnlX
YWtlU3RhdGUobnVtYmVyT2ZXYWtlU3RhdGVzKTsgLy8gdXNlZCBiZWNhdXNlIEhhc2hNYXA6Omlz
b2xhdGVkQ29weSBkb2Vzbid0IGV4aXN0Ci0KLSAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0
ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCBzcy53YWtlU3RhdGUsIHN1Yi50b3Bp
YyAiCi0gICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCi0gICAgICAgICAgICAi
Sk9JTiBTdWJzY3JpcHRpb25TZXRzIHNzICIKLSAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0
aW9uU2V0SUQgPSBzcy5yb3dpZCJfcyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRvcGljczsK
KyAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1QgdG9waWMg
RlJPTSBTdWJzY3JpcHRpb25zIl9zKTsKICAgICAgICAgaWYgKCFzcWwpIHsKICAgICAgICAgICAg
IFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CiAgICAgICAgICAgICBXb3JrUXVldWU6
Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTUzMSwyMiArNTE4LDExOCBAQCB2b2lkIFB1c2hEYXRh
YmFzZTo6Z2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQdXNoV2Fr
ZVN0YXRlVG9UbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2hp
bGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgICAgIGF1dG8gcHVzaFdh
a2VTdGF0ZSA9IHNxbC0+Y29sdW1uSW50KDApOwotICAgICAgICAgICAgYXV0byB0b3BpYyA9IHNx
bC0+Y29sdW1uVGV4dCgxKTsKLSAgICAgICAgICAgIGlmIChwdXNoV2FrZVN0YXRlID49IDAgJiYg
cHVzaFdha2VTdGF0ZSA8IG51bWJlck9mV2FrZVN0YXRlcykKLSAgICAgICAgICAgICAgICB0b3Bp
Y3NCeVdha2VTdGF0ZVtwdXNoV2FrZVN0YXRlXS5hcHBlbmQoV1RGTW92ZSh0b3BpYykpOwotICAg
ICAgICB9CisgICAgICAgIHdoaWxlIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQorICAgICAg
ICAgICAgdG9waWNzLmFwcGVuZChzcWwtPmNvbHVtblRleHQoMCkpOwogCi0gICAgICAgIFdvcmtR
dWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCB0b3BpY3NCeVdha2VTdGF0ZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3Zl
KHRvcGljc0J5V2FrZVN0YXRlKSldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBQdXNoV2FrZVN0
YXRlVG9Ub3BpY01hcCByZXN1bHQ7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0
YXRpY19jYXN0PGludD4oUHVzaFdha2VTdGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOyArK2kpCi0gICAg
ICAgICAgICAgICAgcmVzdWx0LmFkZChzdGF0aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihpKSwgV1RG
TW92ZSh0b3BpY3NCeVdha2VTdGF0ZVtpXSkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShyZXN1bHQpKTsKKyAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlzcGF0Y2go
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHRvcGljcyA9
IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRvcGljcykpXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CiAKK3ZvaWQgUHVzaERhdGFiYXNlOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoY29u
c3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc3Bh
dGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRsZUlE
KSwgc2VjdXJpdHlPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewor
ICAgICAgICBpbnQgc2lsZW50UHVzaENvdW50ID0gMDsKKyAgICAgICAgU1FMaXRlVHJhbnNhY3Rp
b24gdHJhbnNhY3Rpb24obV9kYik7CisgICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisKKyAg
ICAgICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJV
UERBVEUgU3Vic2NyaXB0aW9uU2V0cyBTRVQgc2lsZW50UHVzaENvdW50ID0gc2lsZW50UHVzaENv
dW50ICsgMSBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisK
KyAgICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNR
TElURV9PSyB8fCBzcWwtPmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0sp
IHsKKyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAg
ICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIDApOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
eworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qg
c2lsZW50UHVzaENvdW50IEZST00gU3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8g
QU5EIHNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisKKyAgICAgICAgICAgIGlmICghc3FsIHx8IHNx
bC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwtPmJpbmRUZXh0KDIs
IHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNIREJf
UkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWlu
UXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09IFNR
TElURV9ST1cpCisgICAgICAgICAgICAgICAgc2lsZW50UHVzaENvdW50ID0gc3FsLT5jb2x1bW5J
bnQoMCk7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKKworICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzaWxl
bnRQdXNoQ291bnQpOworICAgIH0pOworfQorCit2b2lkIFB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVj
b3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFB1c2hSZWNvcmQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRp
c3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRs
ZUlEKSwgc2VjdXJpdHlPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgICAgICBWZWN0b3I8UHVzaFJlY29yZD4gcmVtb3ZlZFJlY29yZHM7CisgICAgICAgIFNR
TGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5i
ZWdpbigpOworCisgICAgICAgIGludDY0X3Qgc3Vic2NyaXB0aW9uU2V0SUQgPSAwOworCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgKKyAg
ICAgICAgICAgICAgICAiU0VMRUNUIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCwgIiBrUHVzaFJlY29y
ZENvbHVtbnMKKyAgICAgICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25TZXRzIHNzICIKKyAg
ICAgICAgICAgICAgICAiSk9JTiBTdWJzY3JpcHRpb25zIHN1YiAiCisgICAgICAgICAgICAgICAg
Ik9OIHNzLnJvd2lkID0gc3ViLnN1YnNjcmlwdGlvblNldElEICIKKyAgICAgICAgICAgICAgICAi
V0hFUkUgc3MuYnVuZGxlSUQgPSA/IEFORCBzcy5zZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAg
ICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRF
X09LIHx8IHNxbC0+YmluZFRleHQoMiwgc2VjdXJpdHlPcmlnaW4pICE9IFNRTElURV9PSykgewor
ICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAg
ICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
VmVjdG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykg
eworICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNldElEID0gc3FsLT5jb2x1bW5JbnQoMCk7
CisgICAgICAgICAgICAgICAgcmVtb3ZlZFJlY29yZHMuYXBwZW5kKG1ha2VQdXNoUmVjb3JkRnJv
bVJvdyhzcWwsIDEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00g
U3Vic2NyaXB0aW9ucyBXSEVSRSBzdWJzY3JpcHRpb25TZXRJRCA9ID8iX3MpOworICAgICAgICAg
ICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kSW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJ
VEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigp
OworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIFZlY3RvcjxQdXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElU
RV9ET05FKSB7CisgICAgICAgICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgVmVjdG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJERUxFVEUgRlJPTSBTdWJz
Y3JpcHRpb25TZXRzIFdIRVJFIHJvd2lkID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8
fCBzcWwtPmJpbmRJbnQoMSwgc3Vic2NyaXB0aW9uU2V0SUQpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVj
dG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBWZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsK
KworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBXVEZNb3ZlKHJlbW92ZWRSZWNvcmRzKSk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oCmluZGV4IDgzZDg5ODFlMDMz
MzZhYzI3NjY5NmM2ZTUzZDE4OTFjNWI1MjA2NzcuLmE2Y2U4NzY0ZmFhZmViZTRmZjYxODEyOGRi
MWEwNjlkNjljNWU5Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoRGF0YWJhc2UuaApAQCAtNDIsMTQgKzQyLDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyBXYWtlIHN0YXRlIHRoYXQgYXBwbGllcyBmb3IgZGV2aWNlcyB0aGF0IHJhY2UtdG8tc2xl
ZXAuCi1lbnVtIGNsYXNzIFB1c2hXYWtlU3RhdGUgOiB1aW50OF90IHsKLSAgICBXYWtpbmcsIC8v
IEFsbCBwdXNoZXMgd2lsbCB3YWtlIGRldmljZS4KLSAgICBPcHBvcnR1bmlzdGljLCAvLyBMb3cg
cHJpb3JpdHkgcHVzaGVzIG1heSBub3Qgd2FrZSBkZXZpY2UuCi0gICAgTm9uV2FraW5nLCAvLyBO
byBwdXNoZXMgd2lsbCB3YWtlIGRldmljZS4KLSAgICBOdW1iZXJPZlN0YXRlcwotfTsKLQogc3Ry
dWN0IFB1c2hSZWNvcmQgewogICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyIGlkZW50aWZp
ZXI7CiAgICAgU3RyaW5nIGJ1bmRsZUlEOwpAQCAtNjIsNyArNTQsNiBAQCBzdHJ1Y3QgUHVzaFJl
Y29yZCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNsaWVudFByaXZhdGVLZXk7CiAgICAgVmVjdG9y
PHVpbnQ4X3Q+IHNoYXJlZEF1dGhTZWNyZXQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVT
dGFtcD4gZXhwaXJhdGlvblRpbWUgeyB9OwotICAgIFB1c2hXYWtlU3RhdGUgd2FrZVN0YXRlIHsg
UHVzaFdha2VTdGF0ZTo6V2FraW5nIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQdXNoUmVjb3Jk
IGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBp
c29sYXRlZENvcHkoKSAmJjsKQEAgLTgxLDkgKzcyLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFJlY29yZEJ5VG9waWMoY29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+JiYpPiYmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKGNv
bnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2NvcGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBnZXRJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXI+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGdldFRvcGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYm
KTsKIAotICAgIHVzaW5nIFB1c2hXYWtlU3RhdGVUb1RvcGljTWFwID0gSGFzaE1hcDxQdXNoV2Fr
ZVN0YXRlLCBWZWN0b3I8U3RyaW5nPiwgV1RGOjpJbnRIYXNoPFB1c2hXYWtlU3RhdGU+LCBXVEY6
OlN0cm9uZ0VudW1IYXNoVHJhaXRzPFB1c2hXYWtlU3RhdGU+PjsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGdldFRvcGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVzaFdh
a2VTdGF0ZVRvVG9waWNNYXAmJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5jcmVt
ZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYg
c2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJp
dHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9y
aWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UHVzaFJlY29yZD4mJik+JiYpOwog
CiBwcml2YXRlOgogICAgIFB1c2hEYXRhYmFzZShSZWY8V29ya1F1ZXVlPiYmLCBVbmlxdWVSZWY8
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDUxMGMx
YjA3MmI4OTdkNzkwMGFhNmU2ZWEwMmQ4ZjAwNjM4ZmIzZGQuLjg0NjgyNDRiOWZjMmY5Y2M2NWE5
ZDZkN2RkZmFlMWQ0ODkzYmNiMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
KyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9VUkxIYXNoLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDYgKzg5LDkgQEAgcHVibGljOgogICAgIHZv
aWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChOb3RpZmljYXRpb25FdmVudFR5cGUs
IE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9uKTsKICNlbmRpZgogCisgICAgYm9v
bCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkgeyByZXR1cm4gbV9oYXNQZW5kaW5nU2lsZW50
UHVzaEV2ZW50OyB9CisgICAgdm9pZCBzZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGJvb2wg
dmFsdWUpIHsgbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50ID0gdmFsdWU7IH0KKwogcHJpdmF0
ZToKICAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2Vj
dXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJUaHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+
JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNvbm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3Zp
ZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgbm90aWZ5U2VydmljZVdvcmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3Nh
cnkoKTsKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZl
bnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5kZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKICAg
ICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNhdGlvbkNsaWVudCgpIGZpbmFsIHsgcmV0dXJu
IG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgpOyB9CisKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6
U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsg
fQogCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fY29udGV4dERhdGE7CkBAIC0xMDks
NiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGVmZXJy
ZWRQcm9taXNlPj4gbV9wZW5kaW5nU2tpcFdhaXRpbmdQcm9taXNlczsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50
PiBtX25vdGlmaWNhdGlvbkNsaWVudDsKKyAgICBib29sIG1faGFzUGVuZGluZ1NpbGVudFB1c2hF
dmVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNw
cAppbmRleCBkODg0NWFiMjRjMzgwNjJjMDcyODAxNTY0MGZmYjBhNGYzZGZiYWY3Li5mN2E0NDVk
MTY1ZmFhY2FhZjdjMmM4NGZkMzJlMDU5N2I0YjVlYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24u
Y3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvbi5o
IgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIK
ICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjg2LDYgKzI4Nyw5IEBAIHZv
aWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
Y29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnNldEhhc1BlbmRpbmdTaWxlbnRQdXNo
RXZlbnQoZmFsc2UpOworCiAgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZlIGJ5
IHZpcnR1ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgogICAgIC8vIEZJWE1FOiBXaGVuIGltcGxl
bWVudGluZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGluIHRo
ZSByZWdpc3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KICAgICBhdXRvIG5vdGlmaWNhdGlv
biA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZTJlNDA4YjEwOTE1NDdmZDAwYjdmYTUwMjdmODQx
ZWVjN2JlNTY4Yi4uYzI4NDU1YjA0MTI3YTU0NzQxOWQ3NDE2ZGM2NTJlODA2ZDc3OWQ3ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTIyNCwxMCArMjI0LDEyIEBAIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPHVpbnQ4X3Q+CiAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdlYWtQ
dHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VXb3Jr
ZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQgZmlyaW5n
IGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPnRo
cmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAorICAgICAgICBzZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUtPnNldEhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQodHJ1ZSk7CisKICAgICAg
ICAgYXV0byBwdXNoRXZlbnQgPSBQdXNoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVzaEV2
ZW50LCB7IH0sIFdURk1vdmUoZGF0YSksIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZZXMp
OwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQocHVzaEV2
ZW50KTsKIAotICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2Vz
QXJlU2V0dGxlZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKV0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIG11dGFibGUgewor
ICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LCBldmVudENyZWF0aW9uVGltZSA9IHB1c2hFdmVudC0+dGltZVN0YW1wKCksIGNhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxl
IHsKICAgICAgICAgICAgIGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlID0gZmFsc2U7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1
czo6UmVqZWN0ZWQpIHsKQEAgLTIzNSw3ICsyMzcsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgY2FsbGJhY2soIWhhc1JlamVjdGVkQW55UHJvbWlzZSk7CisK
KyAgICAgICAgICAgIGJvb2wgc2hvd2VkTm90aWZpY2F0aW9uID0gIXNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS0+aGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCgpOworICAgICAgICAgICAgYm9vbCBz
dWNjZXNzID0gIWhhc1JlamVjdGVkQW55UHJvbWlzZSAmJiBzaG93ZWROb3RpZmljYXRpb247CisK
KyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPRyhT
ZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2
ZW50IGZhaWxlZCB0byBwcm9jZXNzIHB1c2ggZXZlbnQgKHJlamVjdGVkUHJvbWlzZSA9ICVkLCBz
aG93ZWROb3RpZmljYXRpb24gPSAlZCkiLCBoYXNSZWplY3RlZEFueVByb21pc2UsIHNob3dlZE5v
dGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpOwogICAgICAgICB9
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHAKaW5kZXggMTJmOGU4YTViNTlmMDBkZDdiN2VmZDNiMmFkMTM1N2ZhMjUxNjkz
My4uYzZjMDExYjZkMzY0MDE3OGY4ZDYzODUzZDM3ODQ2YTRkODA5YzQyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTIyNjgsNyAr
MjI2OCwyMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZQogewogICAgIGlmIChhdXRvKiBzZXNz
aW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5l
dHdvcmtpbmcgcHJvY2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3Mg
aW4gc2Vzc2lvbiAlbGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwotICAgICAgICBzZXNzaW9u
LT5lbnN1cmVTV1NlcnZlcigpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdl
LnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tVVJMKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCk7CisgICAgICAgIHNlc3Npb24tPmVu
c3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVz
aERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9y
aWdpbiksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxl
IHsKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICAgICAgICAgIE5ldHdv
cmtTZXNzaW9uKiBzZXNzaW9uOworICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgKHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICAgICAgICAgIHNlc3Npb24t
Pm5vdGlmaWNhdGlvbk1hbmFnZXIoKQorICAgICAgICAgICAgICAgICAgICAuaW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KFdURk1vdmUob3JpZ2luKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHJlc3VsdF0oaW50KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOworICAgICAgICB9KTsKICAgICB9IGVsc2UKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3Jr
aW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2Vz
cyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIsIHNlc3Np
b25JRC50b1VJbnQ2NCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDQ4NmNiNWIzZGY2NzAwZTg4MDNmNjAwOTljYTM1N2VmMGQyYmE4
NDEuLjg5OTU4NmU3MGMwY2Y1Y2FjMTJkNDgzNDAyODk2Y2M5NjljOGY3YWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTc0LDYgKzE3NCwx
NiBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRQdXNoUGVybWlzc2lvblN0
YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aQogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdl
YlB1c2hEOjpNZXNzYWdlVHlwZTo6R2V0UHVzaFBlcm1pc3Npb25TdGF0ZT4oV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlciksIFdURk1vdmUoc2NvcGVVUkwpKTsKIH0KIAordm9pZCBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2VuZE1l
c3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQ+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG9yaWdpbikpOworfQor
CiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4u
IEFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZShBcmdz
JiYuLi4gYXJncykgY29uc3QKIHsKQEAgLTIyNyw2ICsyMzcsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgUmVwbHlDYWxsZXI8Ym9vbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IFJl
cGx5Q2FsbGVyPGludD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29k
ZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxpbnQ+IHZhbHVlOworICAgICAg
ICBkZWNvZGVyID4+IHZhbHVlOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigqdmFs
dWUpOworICAgIH0KK307CisKIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPFZlY3RvcjxT
dHJpbmc+JiY+IHsKICAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYg
ZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oCmluZGV4IDUyYTYzODRiYWIxMGUwYWU5MTZiYWEyM2Y5MTRhOTI1ZmVlMzA4ZGQu
LjA2ZTYxNTdmYTg2NTQ1MjU1NTliY2I1ODQwMzIyOWZjMmFjMzJjMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKFVSTCYmIHNjb3BlVVJMLCBX
ZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9p
ZCBnZXRQdXNoU3Vic2NyaXB0aW9uKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlz
c2lvblN0YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVk
PHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKKyAgICB2b2lkIGluY3Jl
bWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hT
ZXJ2aWNlTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKaW5kZXggZjNmN2JiZTYzZjRlZDM1ZWRjZjNlMmFhYWQ5M2ZiM2U0OTI5ZmY5OS4uMjY1
NjBjMDZjOWQyM2ZjNjA1MjM3Mjk1NWZlMDg5ODg5NzgxZjA3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaApAQCAtMjcsNiArMjcsOSBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRCB7CiAKKy8vIElmIGFuIG9yaWdpbiBwcm9jZXNzZXMg
bW9yZSB0aGFuIHRoaXMgbWFueSBzaWxlbnQgcHVzaGVzLCB0aGVuIGl0IHdpbGwgYmUgdW5zdWJz
Y3JpYmVkIGZyb20gcHVzaC4KK3N0YXRpYyBjb25zdGV4cHIgaW50IG1heFNpbGVudFB1c2hDb3Vu
dCA9IDM7CisKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJv
dG9jb2wgdmVyc2lvbiI7CiBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUg
PSAxOwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAi
ZW5jb2RlZCBtZXNzYWdlIjsKQEAgLTQ4LDcgKzUxLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3QgewogICAgIFN1YnNjcmliZVRvUHVzaFNlcnZpY2UsCiAgICAgVW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UsCiAgICAgR2V0UHVzaFN1YnNjcmlwdGlvbiwKLSAgICBHZXRQdXNo
UGVybWlzc2lvblN0YXRlCisgICAgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZSwKKyAgICBJbmNyZW1l
bnRTaWxlbnRQdXNoQ291bnQsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVw
bHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCkBAIC02NSw2ICs2OSw3IEBAIGlubGluZSBib29s
IG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpVbnN1YnNjcmliZUZyb21QdXNoU2VydmljZToKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpHZXRQdXNoU3Vic2NyaXB0aW9uOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFB1
c2hQZXJtaXNzaW9uU3RhdGU6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SW5jcmVtZW50U2lsZW50
UHVzaENvdW50OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpT
ZXREZWJ1Z01vZGVJc0VuYWJsZWQ6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VXBkYXRlQ29ubmVj
dGlvbkNvbmZpZ3VyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGE3YThiYjYwODc1YTk5NTJlOTkwYTUyYWQ4OWQz
MzRjNmQ2ZmY4ZmEuLjNjODE4ZmIyMTgzOTMyYzIxMGY1N2FhZTYwMDAzMjM3ZTRhZDQyYWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJTYW5k
Ym94VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJVSUdhbWVwYWRQcm92aWRlci5oIgorI2ltcG9ydCAi
V0tBUElDYXN0LmgiCiAjaW1wb3J0ICJXS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
T2JqZWN0LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgpAQCAtNDEsNiArNDIsNyBA
QAogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRDYWNoZS5oIgogI2ltcG9ydCAiV2ViQ2VydGlmaWNh
dGVJbmZvLmgiCiAjaW1wb3J0ICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKyNpbXBvcnQgIldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc0NhY2hlLmgi
CiAjaW1wb3J0ICJXZWJQcm9jZXNzTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQb29s
LmgiCkBAIC02MTIsNCArNjE0LDkgQEAgLSAodm9pZClfdGVybWluYXRlQWxsV2ViQ29udGVudFBy
b2Nlc3NlcwogICAgIF9wcm9jZXNzUG9vbC0+dGVybWluYXRlQWxsV2ViQ29udGVudFByb2Nlc3Nl
cygpOwogfQogCistIChXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFn
ZXJGb3JUZXN0aW5nCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoX3Byb2Nlc3NQb29sLT5z
dXBwbGVtZW50PFdlYktpdDo6V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpKTsKK30KKwog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCBlMWZkOTkxZGZiMmI3ODQ5NDQ1MDM2Y2Q4MjllNjRk
N2NjNWRkYjYxLi42ZTE1NTdhYzViMWRlOTY4MjAyMjk3N2RkN2RjZjMzNjRiODYxNmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
UG9vbFByaXZhdGUuaApAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgPFdlYktpdC9XS0Jhc2UuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1Byb2Nlc3NQb29sLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpbi5o
PgogCkBAIC0xMzcsNiArMTM4LDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1f
aXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCwgc2V0dGVyPV9zZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdF
bmFibGVkIFdLX0FQSV9ERVBSRUNBVEVEKCJQYXJ0aXRpb25lZCBjb29raWVzIGFyZSBubyBsb25n
ZXIgc3VwcG9ydGVkIiwgbWFjb3MoMTAuMTIuMywgMTAuMTQuNCksIGlvcygxMC4zLCAxMi4yKSk7
CiAKKy0gKFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZilfbm90aWZpY2F0aW9uTWFuYWdlckZvclRl
c3Rpbmc7CisKIC8vIFRlc3Qgb25seS4KIC0gKHZvaWQpX3NlZWRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRm9yVGVzdGluZ1dpdGhGaXJzdFBhcnR5OihOU1VSTCAqKWZpcnN0UGFydHlVUkwgdGhpcmRQ
YXJ0eTooTlNVUkwgKil0aGlyZFBhcnR5VVJMIHNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uOihC
T09MKXNob3VsZFNjaGVkdWxlTm90aWZpY2F0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyICBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE1LjQp
LCBpb3MoMTMuNCkpOwogLSAodm9pZClfZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c0Zv
clRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMS4wKSwgaW9zKDE0LjApKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaCBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaAppbmRleCBmZTQxNWUwMDhkZDYzMDUxMDU4MjRmOGNm
YjAyNjk1YWZjMzIzZmViLi5mN2RkNDNhODExNDBkY2VmNmY5MzE0MTMyNTA3M2Q2NzRiOWQyN2Fl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCkBAIC02MSw2ICs2MSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHN1YnNjcmliZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc2NvcGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdmFwaWRQdWJsaWNL
ZXksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8V2ViQ29yZTo6UHVzaFN1
YnNjcmlwdGlvbkRhdGEsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYpOwogICAgIHZvaWQg
dW5zdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNjb3BlLCBXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxib29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYp
PiYmKTsKIAorICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYg
YnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKKwogICAgIHZvaWQgZGlkQ29tcGxldGVHZXRTdWJzY3Jp
cHRpb25SZXF1ZXN0KEdldFN1YnNjcmlwdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGRpZENvbXBs
ZXRlU3Vic2NyaWJlUmVxdWVzdChTdWJzY3JpYmVSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21w
bGV0ZVVuc3Vic2NyaWJlUmVxdWVzdChVbnN1YnNjcmliZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hTZXJ2aWNlLm1tCmluZGV4IDA1OGE3NjllNjk2Y2FlY2U2NjQ1NDJkMGNhNzAw
OGM4NzRiOGE3ZjAuLmU3ZDJmN2NiY2FiYzJiY2QxYjIxYjRjYjFkMzc2MmFjNzgxNmZhNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQpAQCAtMjksNiArMjksNyBAQAogI2lt
cG9ydCAiQXBwbGVQdXNoU2VydmljZUNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIk1vY2tQdXNoU2Vy
dmljZUNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYlB1c2hE
YWVtb25Db25zdGFudHMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgpAQCAtNDQsMTkgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYlB1c2hEIHsKIAog
c3RhdGljIHZvaWQgdXBkYXRlVG9waWNMaXN0cyhQdXNoU2VydmljZUNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFB1c2hEYXRhYmFzZSYgZGF0YWJhc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4g
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgZGF0YWJhc2UuZ2V0VG9waWNzQnlXYWtlU3RhdGUo
WyZjb25uZWN0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXShhdXRvJiYgdG9waWNNYXApIG11dGFibGUgeworICAgIGRhdGFiYXNlLmdldFRvcGljcyhb
JmNvbm5lY3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKGF1dG8mJiB0b3BpY3MpIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogbW92ZSB0b3Bp
Y3MgdG8gaWdub3JlZCBsaXN0IGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXMuCi0gICAgICAgIFB1
c2hTZXJ2aWNlQ29ubmVjdGlvbjo6VG9waWNMaXN0cyB0b3BpY0xpc3RzOwotCi0gICAgICAgIGlm
IChhdXRvIGl0ID0gdG9waWNNYXAuZmluZChQdXNoV2FrZVN0YXRlOjpXYWtpbmcpOyBpdCAhPSB0
b3BpY01hcC5lbmQoKSkKLSAgICAgICAgICAgIHN0ZDo6c3dhcCh0b3BpY0xpc3RzLmVuYWJsZWRU
b3BpY3MsIGl0LT52YWx1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGl0ID0gdG9waWNNYXAuZmluZChQ
dXNoV2FrZVN0YXRlOjpPcHBvcnR1bmlzdGljKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAg
ICAgICAgICBzdGQ6OnN3YXAodG9waWNMaXN0cy5vcHBvcnR1bmlzdGljVG9waWNzLCBpdC0+dmFs
dWUpOwotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6
Tm9uV2FraW5nKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAo
dG9waWNMaXN0cy5ub25XYWtpbmdUb3BpY3MsIGl0LT52YWx1ZSk7Ci0KLSAgICAgICAgY29ubmVj
dGlvbi5zZXRUb3BpY0xpc3RzKFdURk1vdmUodG9waWNMaXN0cykpOwotCisgICAgICAgIGNvbm5l
Y3Rpb24uc2V0RW5hYmxlZFRvcGljcyhXVEZNb3ZlKHRvcGljcykpOwogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtNDgyLDYgKzQ3MywzMiBAQCB2b2lkIFB1c2hT
ZXJ2aWNlOjpkaWRDb21wbGV0ZVVuc3Vic2NyaWJlUmVxdWVzdChVbnN1YnNjcmliZVJlcXVlc3Qm
IHJlcXVlc3QpCiAgICAgZmluaXNoZWRQdXNoU2VydmljZVJlcXVlc3QobV91bnN1YnNjcmliZVJl
cXVlc3RzLCByZXF1ZXN0KTsKIH0KIAordm9pZCBQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50
UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIGhhbmRsZXIpCit7
CisgICAgbV9kYXRhYmFzZS0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlkZW50aWZp
ZXIsIHNlY3VyaXR5T3JpZ2luLCBbdGhpcywgYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmln
aW4sIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShpbnQgc2lsZW50UHVzaENvdW50KSBtdXRh
YmxlIHsKKyAgICAgICAgaWYgKHNpbGVudFB1c2hDb3VudCA8IFdlYktpdDo6V2ViUHVzaEQ6Om1h
eFNpbGVudFB1c2hDb3VudCkgeworICAgICAgICAgICAgaGFuZGxlcihzaWxlbnRQdXNoQ291bnQp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUkVMRUFTRV9MT0co
UHVzaCwgIlJlbW92aW5nIGFsbCBzdWJzY3JpcHRpb25zIGFzc29jaWF0ZWQgd2l0aCAle3B1Ymxp
Y31zICV7c2Vuc2l0aXZlfXMgc2luY2UgaXQgcHJvY2Vzc2VkICVkIHNpbGVudCBwdXNoZXMiLCBi
dW5kbGVJZGVudGlmaWVyLnV0ZjgoKS5kYXRhKCksIHNlY3VyaXR5T3JpZ2luLnV0ZjgoKS5kYXRh
KCksIHNpbGVudFB1c2hDb3VudCk7CisKKyAgICAgICAgbV9kYXRhYmFzZS0+cmVtb3ZlUmVjb3Jk
c0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGJ1bmRsZUlkZW50aWZpZXIsIHNl
Y3VyaXR5T3JpZ2luLCBbdGhpcywgYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIHNp
bGVudFB1c2hDb3VudCwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKGF1dG8mJiByZW1vdmVk
UmVjb3JkcykgbXV0YWJsZSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIHJlY29yZCA6IHJlbW92
ZWRSZWNvcmRzKSB7CisgICAgICAgICAgICAgICAgYXV0byB0b3BpYyA9IG1ha2VQdXNoVG9waWMo
cmVjb3JkLmJ1bmRsZUlELCByZWNvcmQuc2NvcGUpOworICAgICAgICAgICAgICAgIG1fY29ubmVj
dGlvbi0+dW5zdWJzY3JpYmUodG9waWMsIHJlY29yZC5zZXJ2ZXJWQVBJRFB1YmxpY0tleSwgW3Rv
cGljXShib29sIHVuc3Vic2NyaWJlZCwgTlNFcnJvciogZXJyb3IpIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCF1bnN1YnNjcmliZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPRyhQdXNoLCAiSW5jcmVtZW50U2lsZW50UHVzaFJlcXVlc3QgY291bGRuJ3QgcmVtb3ZlIHN1
YnNjcmlwdGlvbiBmb3IgdG9waWMgJXtzZW5zaXRpdmV9czogJXtwdWJsaWN9cyBjb2RlOiAlbGxk
KSIsIHRvcGljLnV0ZjgoKS5kYXRhKCksIGVycm9yLmRvbWFpbi5VVEY4U3RyaW5nID86ICJub25l
Iiwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oZXJyb3IuY29kZSkpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1cGRhdGVUb3BpY0xpc3RzKG1fY29ubmVj
dGlvbiwgbV9kYXRhYmFzZSwgW3NpbGVudFB1c2hDb3VudCwgaGFuZGxlciA9IFdURk1vdmUoaGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaGFuZGxlcihzaWxlbnRQdXNoQ291
bnQpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCiBlbnVtIGNs
YXNzIENvbnRlbnRFbmNvZGluZyB7CiAgICAgRW1wdHksCiAgICAgQUVTR0NNLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAppbmRleCAwMjgwODRlNTJiNGEwZGJiM2MxNDliZTZj
OTczNmY3NTc1ZTc4N2IzLi4yY2QxODNkMzI0YmU5MTcwNmQ5YzA0ZWI4MWI3MGFiZmQxZjg4Zjk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIldlYlB1c2hNZXNzYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FeGNlcHRp
b25EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdXNoU3Vic2NyaXB0aW9uRGF0YS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpA
QCAtODAsNiArODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2Vy
dmljZShDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVSTCwgV2ViQ29yZTo6UHVz
aFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhw
ZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7CiAg
ICAgdm9pZCBnZXRQdXNoU3Vic2NyaXB0aW9uKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwm
IHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHN0ZDo6b3B0
aW9uYWw8V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbkRhdGE+LCBXZWJDb3JlOjpFeGNlcHRpb25E
YXRhPiYpPiYmIHJlcGx5U2VuZGVyKTsKICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUo
Q2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4m
JiByZXBseVNlbmRlcik7CisgICAgdm9pZCBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoQ2xpZW50
Q29ubmVjdGlvbiosIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoaW50KT4mJik7CiAKICAgICB2b2lkIGJyb2FkY2FzdERlYnVnTWVzc2Fn
ZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBicm9hZGNhc3RB
bGxDb25uZWN0aW9uSWRlbnRpdGllcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uLm1tCmluZGV4IGFkZDZlM2Q4YWRmZWE4OTk4ODhmNGJhZjYxYWNjMDUzMTM2M2RjYzUuLjU2
NGQ4YTY5NThkOWE1Yzc1YWQyZDdjNDkxZTYxNjVjOTUwOTc3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTExNyw2ICsxMTcsMTEgQEAgQVJHVU1FTlRTKFVS
TCkKIFJFUExZKGNvbnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+
JikKIEVORAogCitGVU5DVElPTihpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQpCitBUkdVTUVOVFMo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhKQorUkVQTFkoaW50KQorRU5ECisKICN1bmRlZiBG
VU5DVElPTgogI3VuZGVmIEFSR1VNRU5UUwogI3VuZGVmIFJFUExZCkBAIC0xOTksNiArMjA0LDEz
IEBAIFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBnZXRQdXNoUGVybWlzc2lvblN0YXRlOjplbmNv
ZGVSZXBseShjb25zdCBFeHBlY3RlZDx1aW50CiAgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZl
cigpOwogfQogCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgaW5jcmVtZW50U2lsZW50UHVzaENv
dW50OjplbmNvZGVSZXBseShpbnQgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29k
ZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRh
a2VCdWZmZXIoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8
dHlwZW5hbWUgSW5mbz4KQEAgLTQwMSw2ICs0MTMsOSBAQCB2b2lkIERhZW1vbjo6ZGVjb2RlQW5k
SGFuZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlIG1l
cwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFB1c2hQZXJtaXNzaW9uU3RhdGU6CiAgICAgICAg
IGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Z2V0UHVzaFBlcm1p
c3Npb25TdGF0ZT4oY2xpZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVw
bHlTZW5kZXIpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SW5jcmVt
ZW50U2lsZW50UHVzaENvdW50OgorICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVw
bHk8TWVzc2FnZUluZm86OmluY3JlbWVudFNpbGVudFB1c2hDb3VudD4oY2xpZW50Q29ubmVjdGlv
biwgZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7
CiAgICAgfQogfQogCkBAIC02MjYsNiArNjQxLDE4IEBAIHZvaWQgRGFlbW9uOjpnZXRQdXNoUGVy
bWlzc2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgc2Nv
CiAjZW5kaWYKIH0KIAordm9pZCBEYWVtb246OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChDbGll
bnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYgcmVwbHlT
ZW5kZXIpCit7CisgICAgcnVuQWZ0ZXJTdGFydGluZ1B1c2hTZXJ2aWNlKFt0aGlzLCBidW5kbGVJ
ZGVudGlmaWVyID0gY29ubmVjdGlvbi0+aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpLCBz
ZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCksIHJlcGx5U2VuZGVyID0g
V1RGTW92ZShyZXBseVNlbmRlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGlmICghbV9wdXNoU2Vy
dmljZSkgeworICAgICAgICAgICAgcmVwbHlTZW5kZXIoMCk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBtX3B1c2hTZXJ2aWNlLT5pbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQoYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIFdURk1vdmUocmVwbHlTZW5k
ZXIpKTsKKyAgICB9KTsKK30KKwogQ2xpZW50Q29ubmVjdGlvbiogRGFlbW9uOjp0b0NsaWVudENv
bm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY2xpZW50
Q29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29ubmVjdGlvbik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTY2YjA0ZmMxYWE0OGNj
ZDdhZjRiNjIwMTQyZDRmODcxMTNjOTU5Mi4uZTQ2MGMwMTMxZjIxMTVlODgxNTg4NGI4NDA5MDk2
MDE3MWM0NWY4NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIyLTAyLTE4ICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVvdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6bm90
aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
Om1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Z2V0
VG9waWNzU3luYyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJhc2VUZXN0Ojpn
ZXRUb3BpY3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNlVGVzdDo6cmVt
b3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRhYmFzZVRlc3Q6OmluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpvcmlnaW4gY29uc3QpOgorCiAyMDIyLTAyLTE3ICBBbmdlbG9z
IE9pa29ub21vcG91bG9zICA8YW5nZWxvc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtKU0NdIElu
Y3JlYXNlIHRpbWVvdXQgdG8gYWNjb3VudCBmb3IgTUlQUyBzbG93bmVzcwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291
cmNlcy50eHQKaW5kZXggOTI2ZDU2ZTg4YTQyYjk2MjA0NTg0MGJlYjJlM2NlYzg4MTUzMmMwMy4u
NGFjN2NiODAxZmI0NWExZjFiMjRmNWFjYzQ5OTg1NzYyMjRkZGJkYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Nv
dXJjZXMudHh0CkBAIC0yNSw1ICsyNSw2IEBAIERlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuY3BwCiBK
YXZhU2NyaXB0VGVzdC5jcHAKIFBsYXRmb3JtVXRpbGl0aWVzLmNwcAogVGVzdHNDb250cm9sbGVy
LmNwcAorVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAogVGVzdFV0aWxpdGllcy5jcHAKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA4NWM2NGQxNjBjYzE1NTYzYTZhNGQ4ZjQ4NmYzYWEyOTM5M2RjNDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRl
ci5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIldURlN0
cmluZ1V0aWxpdGllcy5oIgorI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvbk1hbmFnZXIu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tOdW1iZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1
cml0eU9yaWdpblJlZi5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOworfQorCitUZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmPiYmIG1hbmFnZXJzKQorICAgIDogbV9tYW5hZ2VycyhXVEZNb3ZlKG1hbmFn
ZXJzKSkKKyAgICAsIG1fcGVybWlzc2lvbnMoYWRvcHRXSyhXS011dGFibGVEaWN0aW9uYXJ5Q3Jl
YXRlKCkpKQoreworICAgIG1fcHJvdmlkZXIgPSB7CisgICAgICAgIHsgMCwgdGhpcyB9LAorICAg
ICAgICAwLCAvLyBzaG93V2ViTm90aWZpY2F0aW9uCisgICAgICAgIDAsIC8vIGNsb3NlV2ViTm90
aWZpY2F0aW9uCisgICAgICAgIDAsIC8vIGRpZERlc3Ryb3lOb3RpZmljYXRpb24KKyAgICAgICAg
MCwgLy8gYWRkTm90aWZpY2F0aW9uTWFuYWdlcgorICAgICAgICAwLCAvLyByZW1vdmVOb3RpZmlj
YXRpb25NYW5hZ2VyCisgICAgICAgICZUZXN0V2ViS2l0QVBJOjpub3RpZmljYXRpb25QZXJtaXNz
aW9ucywKKyAgICAgICAgMCwgLy8gY2xlYXJOb3RpZmljYXRpb25zCisgICAgfTsKKworICAgIGZv
ciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKG1hbmFnZXIsICZtX3Byb3ZpZGVyLmJhc2UpOworfQorCitUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKQoreworICAgIGZv
ciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFu
YWdlclNldFByb3ZpZGVyKG1hbmFnZXIsIG51bGxwdHIpOworfQorCitXS0RpY3Rpb25hcnlSZWYg
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCit7Cisg
ICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7CisgICAgcmV0dXJuIG1fcGVybWlzc2lv
bnMuZ2V0KCk7Cit9CisKK3ZvaWQgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpCit7CisgICAgYXV0byB3a0Fs
bG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShhbGxvd2VkKSk7CisgICAgYXV0byB3a09y
aWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcob3JpZ2lu
LnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1fcGVybWlzc2lvbnMu
Z2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0FsbG93ZWQuZ2V0KCkpOworCisgICAgYXV0
byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcod2tP
cmlnaW5TdHJpbmcuZ2V0KCkpKTsKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJz
KQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQcm92aWRlckRpZFVwZGF0ZU5vdGlmaWNh
dGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQoKSwgYWxsb3dlZCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQyMDFkNjgxYzJhNzQ4N2MwYmNkNjFhZmNh
ZjNhZDliNDNmY2UyN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3ROb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS011dGFibGVEaWN0aW9uYXJ5Lmg+Cisj
aW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdl
clJlZj4mJik7CisgICAgflRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigpOworCisgICAgV0tEaWN0
aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CisgICAgdm9pZCBzZXRQZXJtaXNz
aW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFsbG93ZWQpOworCitwcml2YXRlOgorICAg
IFZlY3RvcjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+IG1fbWFuYWdlcnM7CisgICAgV0tSZXRh
aW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4gbV9wZXJtaXNzaW9uczsKKyAgICBXS05vdGlm
aWNhdGlvblByb3ZpZGVyVjAgbV9wcm92aWRlcjsKK307CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWMzOWQyNDk3NDMyOTI3ODRhZDljODUzZDAyN2E3NTljYjdiNDQ3ZC4uOTBkMjk0
MjliZTJmOWFjY2Q2MmEwNTliMjdiZjcwZDdkYzlmMzY3NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTI5ODAsNiArMjk4MCw4IEBACiAJCUU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBE
YXRlSW5wdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGVJbnB1dFRlc3RzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIzMEQzRDI0NUU3MjJFMDBDNjZBRDEg
LyogSURCQ2hlY2twb2ludFdBTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURC
Q2hlY2twb2ludFdBTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIzMEQz
RTI0NUU3MjYzMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUVCNEQzMjA3MjdDMDQ1NDMwMDgxQThFNCAvKiBUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUI0RDMyMDgyN0MwNDU0
NDAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RUI5QUQ4QzYyNzY0NkU3MzAwRDg5M0E0IC8qIFB1c2hEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQkE3NUM0ODI3NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VD
cnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFy
a2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzI2OCw2ICszMjcwLDggQEAKIAkJ
CQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAgLyogVGVzdC5oICovLAogCQkJCUJDMTMxQUE4MTE3
MTMxRkMwMEI2OTcyNyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDQjlFN0M3MTEy
MzRFM0EwMEExMzdFMCAvKiBUZXN0c0NvbnRyb2xsZXIuaCAqLywKKwkJCQlFQjREMzIwNzI3QzA0
NTQzMDA4MUE4RTQgLyogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCAqLywKKwkJCQlFQjRE
MzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8sCiAJ
CQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuY3BwICovLAogCQkJ
CTdCQjc1NEFGMjc0RTM5QTEwMEQwMEVDMSAvKiBUZXN0VXRpbGl0aWVzLmggKi8sCiAJCQkJN0M4
M0UwMzYxRDBBNUY3MDAwRkVCQ0YzIC8qIFV0aWxpdGllcy5oICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAppbmRleCA3MGJjZTM5
N2MyMDUyMTBlM2E1Njc3NThhNmI3N2EzYjJkMzAyOWMyLi4xMDZiZWQzNjcxM2FlYzE3ZDZlZDQ3
OWIyZjRlZGZiZThjMmIxYjVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcApAQCAtMzUsMTggKzM1LDI2IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBQdXNo
RGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdldFRvcGljc0J5V2FrZVN0YXRlU3lu
YyhQdXNoRGF0YWJhc2UmIGRhdGFiYXNlKQorc3RhdGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0
YWJhc2VQYXRoKCkKK3sKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxl
OworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0
YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxl
KTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldFRvcGlj
c1N5bmMoUHVzaERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBib29sIGRvbmUgPSBmYWxzZTsK
LSAgICBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdldFJlc3VsdDsKKyAg
ICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CiAKLSAgICBkYXRhYmFzZS5nZXRUb3BpY3NCeVdha2VT
dGF0ZShbJmRvbmUsICZnZXRSZXN1bHRdKFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9w
aWNNYXAmJiByZXN1bHQpIHsKLSAgICAgICAgZ2V0UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpOwor
ICAgIGRhdGFiYXNlLmdldFRvcGljcyhbJmRvbmUsICZ0b3BpY3NdKGF1dG8mJiByZXN1bHQpIHsK
KyAgICAgICAgdG9waWNzID0gV1RGTW92ZShyZXN1bHQpOwogICAgICAgICBkb25lID0gdHJ1ZTsK
ICAgICB9KTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogCi0gICAgcmV0dXJuIGdldFJlc3VsdDsK
KyAgICByZXR1cm4gdG9waWNzOwogfQogCiBjbGFzcyBQdXNoRGF0YWJhc2VUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewpAQCAtNTQsMzAgKzYyLDI5IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UHVzaERhdGFiYXNlPiBkYjsKIAogICAgIFB1c2hSZWNvcmQgcmVjb3JkMSB7Cisg
ICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCisgICAgICAgICJjb20uYXBwbGUu
d2ViYXBwIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAorICAgICAgICAi
aHR0cHM6Ly93d3cuYXBwbGUuY29tL2lwaG9uZSJfcywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVu
ZHBvaW50MiJfcywKKyAgICAgICAgInRvcGljMSJfcywKKyAgICAgICAgeyA1LCA2IH0sCisgICAg
ICAgIHsgNiwgNyB9LAorICAgICAgICB7IDcsIDggfSwKKyAgICAgICAgeyA4LCA5IH0KKyAgICB9
OworICAgIFB1c2hSZWNvcmQgcmVjb3JkMiB7CiAgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVu
dGlmaWVyKCksCiAgICAgICAgICJjb20uYXBwbGUuU2FmYXJpIl9zLAogICAgICAgICAiaHR0cHM6
Ly93d3cuYXBwbGUuY29tIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL21hYyJf
cywKICAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MSJfcywKLSAgICAgICAgInRvcGljMSJf
cywKKyAgICAgICAgInRvcGljMiJfcywKICAgICAgICAgeyAwLCAxIH0sCiAgICAgICAgIHsgMSwg
MiB9LAogICAgICAgICB7IDIsIDMgfSwKICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgIGNvbnZl
cnRTZWNvbmRzVG9FcG9jaFRpbWVTdGFtcCgxNjQzMzUwMDAwKSwKLSAgICAgICAgUHVzaFdha2VT
dGF0ZTo6T3Bwb3J0dW5pc3RpYwotICAgIH07Ci0gICAgUHVzaFJlY29yZCByZWNvcmQyIHsKLSAg
ICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgImNvbS5hcHBsZS53
ZWJhcHAiX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20iX3MsCi0gICAgICAgICJo
dHRwczovL3d3dy5hcHBsZS5jb20vaXBob25lIl9zLAotICAgICAgICAiaHR0cHM6Ly9wdXNoRW5k
cG9pbnQyIl9zLAotICAgICAgICAidG9waWMyIl9zLAotICAgICAgICB7IDUsIDYgfSwKLSAgICAg
ICAgeyA2LCA3IH0sCi0gICAgICAgIHsgNywgOCB9LAotICAgICAgICB7IDgsIDkgfQogICAgIH07
CiAgICAgUHVzaFJlY29yZCByZWNvcmQzIHsKICAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50
aWZpZXIoKSwKQEAgLTE2NywxNSArMTc0LDQzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJv
d0lkZW50aWZpZXJzOwogICAgIH0KIAotICAgIFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRv
VG9waWNNYXAgZ2V0VG9waWNzQnlXYWtlU3RhdGUoKQorICAgIFZlY3RvcjxTdHJpbmc+IGdldFRv
cGljcygpCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpk
Yik7CisgICAgICAgIHJldHVybiBnZXRUb3BpY3NTeW5jKCpkYik7CisgICAgfQorCisgICAgVmVj
dG9yPFB1c2hSZWNvcmQ+IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0
eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFZlY3RvcjxQ
dXNoUmVjb3JkPiByZW1vdmVkUmVjb3JkczsKKworICAgICAgICBkYi0+cmVtb3ZlUmVjb3Jkc0J5
QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdp
biwgWyZkb25lLCAmcmVtb3ZlZFJlY29yZHNdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAg
IHJlbW92ZWRSZWNvcmRzID0gV1RGTW92ZShyZXN1bHQpOworICAgICAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIHJl
dHVybiByZW1vdmVkUmVjb3JkczsKKyAgICB9CisKKyAgICBpbnQgaW5jcmVtZW50U2lsZW50UHVz
aENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4pCisgICAgeworICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgaW50IGNvdW50
ID0gMDsKKworICAgICAgICBkYi0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlELCBz
ZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmY291bnRdKGludCByZXN1bHQpIHsKKyAgICAgICAgICAg
IGNvdW50ID0gcmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOwor
ICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9
CiAKICAgICB2b2lkIFNldFVwKCkgZmluYWwKICAgICB7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZh
bHNlOwotICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShTUUxpdGVEYXRhYmFzZTo6aW5NZW1v
cnlQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBk
YXRhYmFzZSkgeworICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShtYWtlVGVtcG9yYXJ5RGF0
YWJhc2VQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4m
JiBkYXRhYmFzZSkgewogICAgICAgICAgICAgZGIgPSBXVEZNb3ZlKGRhdGFiYXNlKTsKICAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9KTsKQEAgLTIwMCw4ICsyMzUsNyBAQCBzdGF0
aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB1c2hSZWNvcmQmIGEsIGNvbnN0IFB1c2hSZWNvcmQm
IGIpCiAgICAgICAgICYmIGEuY2xpZW50UHVibGljS2V5ID09IGIuY2xpZW50UHVibGljS2V5CiAg
ICAgICAgICYmIGEuY2xpZW50UHJpdmF0ZUtleSA9PSBiLmNsaWVudFByaXZhdGVLZXkKICAgICAg
ICAgJiYgYS5zaGFyZWRBdXRoU2VjcmV0ID09IGIuc2hhcmVkQXV0aFNlY3JldAotICAgICAgICAm
JiBhLmV4cGlyYXRpb25UaW1lID09IGIuZXhwaXJhdGlvblRpbWUKLSAgICAgICAgJiYgYS53YWtl
U3RhdGUgPT0gYi53YWtlU3RhdGU7CisgICAgICAgICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5l
eHBpcmF0aW9uVGltZTsKIH0KIAogVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29y
ZCkKQEAgLTIxNCwxMSArMjQ4LDggQEAgVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJl
Y29yZCkKICAgICBleHBlY3RlZFJlY29yZDIuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oMik7CiAgICAgRVhQRUNUX1RSVUUo
ZXhwZWN0ZWRSZWNvcmQyID09ICppbnNlcnRSZXN1bHQyKTsKIAotICAgIC8vIFNpbmNlIHJlY29y
ZDMgaXMgaW4gdGhlIHNhbWUgU3Vic2NyaXB0aW9uU2V0IGFzIHJlY29yZDEsIGl0IHNob3VsZAot
ICAgIC8vIGluaGVyaXQgcmVjb3JkMSdzIHdha2Ugc3RhdGUuCiAgICAgYXV0byBleHBlY3RlZFJl
Y29yZDMgPSByZWNvcmQzOwogICAgIGV4cGVjdGVkUmVjb3JkMy5pZGVudGlmaWVyID0gbWFrZU9i
amVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPigzKTsKLSAgICBl
eHBlY3RlZFJlY29yZDMud2FrZVN0YXRlID0gZXhwZWN0ZWRSZWNvcmQxLndha2VTdGF0ZTsKICAg
ICBFWFBFQ1RfVFJVRShleHBlY3RlZFJlY29yZDMgPT0gKmluc2VydFJlc3VsdDMpOwogCiAgICAg
Ly8gSW5zZXJ0aW5nIGEgcmVjb3JkIHdpdGggdGhlIHNhbWUgKGJ1bmRsZUlELCBzY29wZSkgYXMg
cmVjb3JkIDEgc2hvdWxkIGZhaWwuCkBAIC0yMzYsNiArMjY3LDMwIEBAIFRFU1RfRihQdXNoRGF0
YWJhc2VUZXN0LCBSZW1vdmVSZWNvcmQpCiAgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJz
KCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDIsIDMgfSkpOwogfQogCitURVNUX0YoUHVzaERhdGFi
YXNlVGVzdCwgUmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2lu
KQoreworICAgIC8vIHJlY29yZDIgYW5kIHJlY29yZDMgaGF2ZSB0aGUgc2FtZSBidW5kbGVJRCBh
bmQgc2VjdXJpdHlPcmlnaW4uCisgICAgYXV0byByZW1vdmVkUmVjb3JkcyA9IHJlbW92ZVJlY29y
ZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihyZWNvcmQyLmJ1bmRsZUlELCBy
ZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMiA9IHJlbW92
ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQyLnRvcGljXShhdXRvJiByZWNvcmQpIHsK
KyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3Vu
ZDsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMyA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9w
aWMgPSByZWNvcmQzLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGlj
ID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKworICAgIEVYUEVDVF9UUlVF
KGNvbnRhaW5zUmVjb3JkMik7CisgICAgRVhQRUNUX1RSVUUoY29udGFpbnNSZWNvcmQzKTsKKyAg
ICBFWFBFQ1RfRVEocmVtb3ZlZFJlY29yZHMuc2l6ZSgpLCAydSk7CisgICAgRVhQRUNUX0VRKGdl
dFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEgfSkpOworCisgICAgLy8g
SW5zZXJ0aW5nIGEgbmV3IHJlY29yZCBzaG91bGQgZ2V0IGEgbmV3IHJvd2lkLgorICAgIFB1c2hS
ZWNvcmQgcmVjb3JkNCA9IHJlY29yZDI7CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBpbnNlcnRS
ZWNvcmQoV1RGTW92ZShyZWNvcmQ0KSk7CisgICAgRVhQRUNUX1RSVUUoaW5zZXJ0UmVzdWx0KTsK
KyAgICBFWFBFQ1RfRVEoaW5zZXJ0UmVzdWx0LT5pZGVudGlmaWVyLCBtYWtlT2JqZWN0SWRlbnRp
ZmllcjxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllclR5cGU+KDQpKTsKKyAgICBFWFBFQ1RfRVEo
Z2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWludDY0X3Q+IHsgMSwgNCB9KSk7Cit9CisK
IFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBHZXRSZWNvcmRCeVRvcGljKQogewogICAgIGF1dG8g
cmVzdWx0MSA9IGdldFJlY29yZEJ5VG9waWMocmVjb3JkMS50b3BpYyk7CkBAIC0yNTksMjkgKzMx
NCwyNyBAQCBURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0UmVjb3JkQnlCdW5kbGVJZGVudGlm
aWVyQW5kU2NvcGUpCiAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdDMpOwogfQogCi1URVNUX0YoUHVz
aERhdGFiYXNlVGVzdCwgR2V0VG9waWNzQnlXYWtlU3RhdGUpCitURVNUX0YoUHVzaERhdGFiYXNl
VGVzdCwgR2V0VG9waWNzKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBQdXNoV2FrZVN0YXRlPiBl
eHBlY3RlZCB7Ci0gICAgICAgIHsgInRvcGljMSIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0
aWMgfSwKLSAgICAgICAgeyAidG9waWMyIiwgUHVzaFdha2VTdGF0ZTo6V2FraW5nIH0sCi0gICAg
ICAgIHsgInRvcGljMyIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfQotICAgIH07Ci0g
ICAgSGFzaE1hcDxTdHJpbmcsIFB1c2hXYWtlU3RhdGU+IGFjdHVhbDsKLQotICAgIGZvciAoY29u
c3QgYXV0byYgW3dha2VTdGF0ZSwgdG9waWNzXSA6IGdldFRvcGljc0J5V2FrZVN0YXRlKCkpIHsK
LSAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0b3BpYyA6IHRvcGljcykKLSAgICAgICAgICAgIGFj
dHVhbC5hZGQodG9waWMsIHdha2VTdGF0ZSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKGV4cGVj
dGVkLCBhY3R1YWwpOworICAgIFZlY3RvcjxTdHJpbmc+IGV4cGVjdGVkIHsgInRvcGljMSJfcywg
InRvcGljMiJfcywgInRvcGljMyJfcyB9OworICAgIEVYUEVDVF9FUShnZXRUb3BpY3MoKSwgZXhw
ZWN0ZWQpOwogfQogCi1zdGF0aWMgU3RyaW5nIG1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgoKQor
VEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluY3JlbWVudFNpbGVudFB1c2hDb3VudCkKIHsKLSAg
ICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gcGF0aCA9
IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIu
ZGIiKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICByZXR1cm4gcGF0
aDsKKyAgICBhdXRvIGNvdW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50KHJlY29yZDEuYnVu
ZGxlSUQsIHJlY29yZDEuc2VjdXJpdHlPcmlnaW4pOworICAgIEVYUEVDVF9FUShjb3VudCwgMSk7
CisKKyAgICAvLyByZWNvcmQyJ3MgYnVuZGxlSUQgYW5kIHNlY3VyaXR5T3JpZ2luIGFyZSBkaWZm
ZXJlbnQKKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQyLmJ1bmRs
ZUlELCByZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDEpOwor
CisgICAgLy8gcmVjb3JkMiBhbmQgcmVjb3JkMyBoYXZlIHRoZSBzYW1lIGJ1bmRsZUlEIGFuZCBz
ZWN1cml0eU9yaWdpbi4KKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNv
cmQzLmJ1bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291
bnQsIDIpOworCisgICAgY291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoIm5vbmV4aXN0
ZW50Il9zLCAibm9uZXhpc3RlbnQiX3MpOworICAgIEVYUEVDVF9FUShjb3VudCwgMCk7CiB9CiAK
IFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCkBAIC0zMTQsNyArMzY3LDYgQEAg
VEVTVChQdXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdodE9wcykKICAgICAgICAgICAgIHsgMiwgMyB9
LAogICAgICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgICAgICBjb252ZXJ0U2Vjb25kc1RvRXBv
Y2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAgICAgICAgICBQdXNoV2FrZVN0YXRlOjpXYWtp
bmcKICAgICAgICAgfTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjb3Jk
Q291bnQ7IGkrKykgewpAQCAtMzM5LDggKzM5MSw3IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55
SW5GbGlnaHRPcHMpCiAgICAgICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgICAgIEFTU0VSVF9U
UlVFKGNyZWF0ZVJlc3VsdCk7CiAKLSAgICAgICAgYXV0byBnZXRSZXN1bHQgPSBnZXRUb3BpY3NC
eVdha2VTdGF0ZVN5bmMoKmNyZWF0ZVJlc3VsdCk7Ci0gICAgICAgIGF1dG8gdG9waWNzID0gZ2V0
UmVzdWx0LnRha2UoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsKKyAgICAgICAgYXV0byB0b3BpY3Mg
PSBnZXRUb3BpY3NTeW5jKCpjcmVhdGVSZXN1bHQpOwogICAgICAgICBFWFBFQ1RfRVEodG9waWNz
LnNpemUoKSwgcmVjb3JkQ291bnQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCBiNjcyOTY3OGFmOTk4NTdkMmFm
ZjkwYzNjYWU0M2U2ZmIyNDdjYWI0Li44Y2Y1OGRlZjg2NDY5OTEyYjVhM2ZiMTlhZmZhZjI5M2E4
Y2JkYmM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
dXNoQVBJLm1tCkBAIC0yOSw3ICsyOSwxMCBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRl
c3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KQEAgLTg5LDYgKzky
LDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAg
cG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0pOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJw
dXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlv
bigibm90aWZpY2F0aW9uIik7CiAgICAgdHJ5IHsKICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7
CiAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CkBA
IC0xMzgsNiArMTQyLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQogCiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRp
b25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZp
Y2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlz
c2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9
IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9j
XSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAK
QEAgLTE4OCw2ICsxOTUsNyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZl
bnQpID0+IHsKICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICBpZiAoIWV2ZW50LmRhdGEpCiAg
ICAgICAgIHJldHVybjsKICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmRhdGEudGV4dCgpOwpAQCAt
MjI1LDYgKzIzMyw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzU3Vj
Y2Vzc2Z1bCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHBy
b2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOwor
ICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0
aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC0yNzAsNiArMjgxLDkgQEAgVEVTVChQdXNoQVBJLCBm
aXJlUHVzaEV2ZW50V2l0aE5vUGFnZXNGYWlsKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJX
ZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAg
IGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIo
eyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVz
dGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3Jp
Z2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNo
QVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRl
eCBiN2IzNGI2Y2FhNTQ3YmUzMmEzNzYyOGNjZjFhY2RlZWM2ZjVkNjU5Li5hY2RiODQzZWI2YzVh
YThjY2VlMGJmYjE1MjBiODRhMWRmNDlmNTFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yOSwxMCArMjks
MTIgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
aCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVu
Y2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQdXNoRGFlbW9u
Q29uc3RhbnRzLmg+CkBAIC00NDAsNiArNDQyLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAg
eyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0
IiB9IH0sIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJL
aXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKSk7CiAKKyAgICAgICAgbV9ub3RpZmlj
YXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8VGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyPihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiB7IFtbbV9jb25maWd1
cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05v
dGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdl
cigpIH0pOworICAgICAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5zZXRQZXJtaXNzaW9uKG1f
c2VydmVyLT5vcmlnaW4oKSwgdHJ1ZSk7CisKICAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBjb25maWd1cmF0aW9uOm1fY29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbbV93ZWJW
aWV3IGxvYWRSZXF1ZXN0Om1fc2VydmVyLT5yZXF1ZXN0KCldOwogICAgIH0KQEAgLTQ0OSwxMiAr
NDU0LDQzIEBAIHByb3RlY3RlZDoKICAgICAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRChtX3RlbXBE
aXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KIAorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGlu
amVjdFB1c2hNZXNzYWdlKE5TRGljdGlvbmFyeSAqcHVzaFVzZXJJbmZvKQorICAgIHsKKyAgICAg
ICAgU3RyaW5nIHNjb3BlID0gbV9zZXJ2ZXItPnJlcXVlc3QoKS5VUkwuYWJzb2x1dGVTdHJpbmc7
CisgICAgICAgIFN0cmluZyB0b3BpYyA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkg
Il9zdHIgKyBzY29wZTsKKyAgICAgICAgaWQgb2JqID0gQHsKKyAgICAgICAgICAgIEAidG9waWMi
OiAoTlNTdHJpbmcgKil0b3BpYywKKyAgICAgICAgICAgIEAidXNlckluZm8iOiBwdXNoVXNlcklu
Zm8KKyAgICAgICAgfTsKKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TSlNPTlNlcmlhbGl6YXRp
b24gZGF0YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CisKKyAg
ICAgICAgU3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEuYnl0
ZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YS5sZW5ndGgpIH07CisgICAgICAgIGF1dG8g
ZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7CisKKyAgICAg
ICAgYXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25U
b1NlcnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOworICAgICAg
ICBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdl
dCgpLCBNZXNzYWdlVHlwZTo6SW5qZWN0RW5jcnlwdGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBl
bmNvZGVkTWVzc2FnZSk7CisKKyAgICAgICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcworICAgICAg
ICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZXMgPSBmYWxzZTsKKyAgICAgICAgX19ibG9jayBSZXRh
aW5QdHI8TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4+IG1lc3NhZ2VzOworICAgICAgICBbbV9kYXRh
U3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAq
cmF3TWVzc2FnZXMpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAg
ICAgICAgICBnb3RNZXNzYWdlcyA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2VzKTsKKworICAgICAgICBFWFBFQ1RfRVEoW21l
c3NhZ2VzIGNvdW50XSwgMXUpOworCisgICAgICAgIHJldHVybiBbbWVzc2FnZXMgb2JqZWN0QXRJ
bmRleDowXTsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fdGVtcERpcmVjdG9yeTsK
ICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIFJldGFp
blB0cjxUZXN0TWVzc2FnZUhhbmRsZXI+IG1fdGVzdE1lc3NhZ2VIYW5kbGVyOwogICAgIFJldGFp
blB0cjxOb3RpZmljYXRpb25TY3JpcHRNZXNzYWdlSGFuZGxlcj4gbV9ub3RpZmljYXRpb25NZXNz
YWdlSGFuZGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZl
cj4gbV9zZXJ2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXZWJLaXRBUEk6OlRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlcj4gbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiBtX3dlYlZpZXc7CiB9OwogCkBAIC00OTcsNiArNTMzLDcgQEAgdm9pZCBXZWJQ
dXNoREluamVjdGVkUHVzaFRlc3Q6OnJ1blRlc3QoTlNTdHJpbmcgKmV4cGVjdGVkTWVzc2FnZSwg
TlNEaWN0aW9uYXJ5ICoKICAgICB9KTsKICAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2gi
LCAoZXZlbnQpID0+IHsKICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNlbGYucmVnaXN0cmF0
aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOwogICAgICAgICAgICAgaWYgKCFl
dmVudC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6
IG51bGwgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyMCw0MyArNTU3LDIw
IEBAIHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0OjpydW5UZXN0KE5TU3RyaW5nICpleHBl
Y3RlZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfV07CiAKICAgICBsb2FkUmVxdWVzdCho
dG1sU291cmNlLCBzZXJ2aWNlV29ya2VyU291cmNlKTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcmVhZHkpOwogCi0gICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIgPSAiY29tLmFw
cGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwotICAgIFN0cmluZyBzY29wZSA9IG1fc2VydmVy
LT5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5nOwotICAgIFN0cmluZyB0b3BpYyA9IGJ1bmRs
ZUlkZW50aWZpZXIgKyAiICJfcyArIHNjb3BlOwotCi0gICAgaWQgb2JqID0gQHsKLSAgICAgICAg
QCJ0b3BpYyI6IChOU1N0cmluZyAqKXRvcGljLAotICAgICAgICBAInVzZXJJbmZvIjogcHVzaFVz
ZXJJbmZvCi0gICAgfTsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBk
YXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKLQotICAgIFN0
cmluZyBtZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihkYXRhLmJ5dGVzKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGEubGVuZ3RoKSB9OwotICAgIGF1dG8gZW5jb2RlZE1lc3Nh
Z2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7Ci0KLSAgICBhdXRvIHV0aWxpdHlD
b25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndl
YmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7Ci0gICAgc2VuZE1lc3NhZ2VUb0RhZW1v
bldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29ubmVjdGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6Oklu
amVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9yVGVzdGluZywgZW5jb2RlZE1lc3NhZ2UpOwotCi0g
ICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcwotICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9
IGZhbHNlOwotICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBt
ZXNzYWdlczsKLSAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0Fy
cmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKLSAgICAgICAgbWVzc2FnZXMgPSBy
YXdNZXNzYWdlczsKLSAgICAgICAgZ290TWVzc2FnZXMgPSB0cnVlOwotICAgIH1dOwotICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZXMpOwotCi0gICAgRVhQRUNUX0VRKFtt
ZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBpbmplY3RQdXNoTWVzc2Fn
ZShwdXNoVXNlckluZm8pOwogCi0gICAgLy8gSGFuZGxlIHB1c2ggbWVzc2FnZQogICAgIF9fYmxv
Y2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwotICAgIFttX2RhdGFTdG9yZSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRs
ZXI6Xihib29sIHJlc3VsdCkgeworICAgIF9fYmxvY2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3Nl
ZFJlc3VsdCA9IGZhbHNlOworICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBw
dXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
Z290RXhwZWN0ZWRNZXNzYWdlKTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hN
ZXNzYWdlUHJvY2Vzc2VkKTsKKworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlUHJvY2Vzc2Vk
UmVzdWx0KTsKIH0KIAogVEVTVF9GKFdlYlB1c2hESW5qZWN0ZWRQdXNoVGVzdCwgSGFuZGxlSW5q
ZWN0ZWRFbXB0eVB1c2gpCkBAIC03MDcsNiArNzIxLDc3IEBAIFRFU1RfRihXZWJQdXNoRFRlc3Qs
IFVuc3Vic2NyaWJlVGVzdCkKICAgICBBU1NFUlRfVFJVRShbb2JqIGlzRXF1YWw6ZXhwZWN0ZWRd
KTsKIH0KIAorVEVTVF9GKFdlYlB1c2hEVGVzdCwgVG9vTWFueVNpbGVudFB1c2hlc0NhdXNlc1Vu
c3Vic2NyaWJlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sU291cmNlID0gUiJIVE1M
KAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIGxldCBwdXNoTWFuYWdlciA9IG51bGw7CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdv
cmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0
IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAg
ICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHB1c2hN
YW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyOworICAgICAgICAgICAgbGV0IHN1YnNj
cmlwdGlvbiA9IGF3YWl0IHB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAg
dXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVy
S2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3Vs
dCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVz
dWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7CisKKyAgICBm
dW5jdGlvbiBnZXRQdXNoU3Vic2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIHB1c2hNYW5hZ2Vy
LmdldFN1YnNjcmlwdGlvbigpLnRoZW4oKHN1YnNjcmlwdGlvbikgPT4geworICAgICAgICAgICAg
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShzdWJzY3JpcHRp
b24gPyAiU3Vic2NyaWJlZCIgOiAiVW5zdWJzY3JpYmVkIik7CisgICAgICAgIH0pOworICAgIH0K
KyAgICA8L3NjcmlwdD4KKyAgICApSFRNTCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcnZp
Y2VXb3JrZXJTY3JpcHRTb3VyY2UgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdwdXNoJywgKGV2
ZW50KSA9PiB7IH0pOyI7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxpZD4gbWVzc2FnZSA9IG5p
bDsKKyAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNh
dGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgcmVjZWl2ZWRNZXNzYWdl
KSB7CisgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlZE1lc3NhZ2U7CisgICAgICAgIGdvdE1lc3Nh
Z2UgPSB0cnVlOworICAgIH1dOworCisgICAgbG9hZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2Vydmlj
ZVdvcmtlclNjcmlwdFNvdXJjZSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdv
dE1lc3NhZ2UpOworICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlN1
YnNjcmliZWQiXSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFdlYktpdDo6V2ViUHVzaEQ6
Om1heFNpbGVudFB1c2hDb3VudDsgaSsrKSB7CisgICAgICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsK
KyAgICAgICAgW21fd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2NyaXB0
aW9uKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IqKSB7IH1dOworICAgICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgICAgICBBU1NFUlRfVFJV
RShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJTdWJzY3JpYmVkIl0pOworCisgICAgICAgIF9f
YmxvY2sgYm9vbCBwcm9jZXNzZWRQdXNoID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCBw
dXNoUmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGluamVjdFB1c2hNZXNz
YWdlKEB7IH0pOworCisgICAgICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1l
c3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICAg
ICAgcHVzaFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAgIHByb2Nlc3NlZFB1c2ggPSB0cnVl
OworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwcm9jZXNz
ZWRQdXNoKTsKKworICAgICAgICAvLyBXZWJDb250ZW50IHNob3VsZCBmYWlsIHByb2Nlc3Npbmcg
dGhlIHB1c2ggc2luY2Ugbm8gbm90aWZpY2F0aW9uIHdhcyBzaG93bi4KKyAgICAgICAgRVhQRUNU
X0ZBTFNFKHB1c2hSZXN1bHQpOworICAgIH0KKworICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAg
ICBbbV93ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFB1c2hTdWJzY3JpcHRpb24oKSIg
Y29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciopIHsgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0Vx
dWFsVG9TdHJpbmc6QCJVbnN1YnNjcmliZWQiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRleCA3NWQyODJlYTllNDBkMjExNWFm
MTk0OGFkM2Y4ZWI4ZmM2MzdjY2Q0Li5jNTNiNDM5ZWEzODExMDEyNTZiNWMyOGI1MjFhZjgzMDRk
MjljZDM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApAQCAtNTAsNiAr
NTAsNyBAQCBwdWJsaWM6CiAgICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24p
PiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwogICAg
IHVpbnQxNl90IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAgICAg
TlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0
OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhMb2NhbGhvc3QoY29uc3QgU3RyaW5nJiBw
YXRoID0gIi8iX3N0cikgY29uc3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQppbmRleCA4OGQ4NmJmMWQwYzE5
ZjBjY2YzMDVmZDA4NWRhYTRkNzg3MzRkNDkwLi42YzYxODQ4YmEyZDYxNGM5YTc3NmU5M2U3MWM5
MDdmNzlmYWI5Yzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBA
IC0zNzYsNiArMzc2LDExIEBAIGNvbnN0IGNoYXIqIEhUVFBTZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHNjaGVtZTsKIH0KIAorU3RyaW5nIEhUVFBTZXJ2ZXI6Om9yaWdpbigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXM6Ly8xMjcu
MC4wLjE6JWQiLCBzY2hlbWUoKSwgcG9ydCgpXTsKK30KKwogTlNVUkxSZXF1ZXN0ICpIVFRQU2Vy
dmVyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICByZXR1cm4gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVzOi8vMTI3LjAuMC4xOiVkJUAiLCBzY2hlbWUoKSwgcG9ydCgp
LCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452602</attachid>
            <date>2022-02-18 16:21:21 -0800</date>
            <delta_ts>2022-02-18 19:57:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236863-20220218162120.patch</filename>
            <type>text/plain</type>
            <size>77746</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZWRkMzA4NzY2Y2Rj
YTQ0ZTk5ZTgzMzNkNDY1NGUyYTg1MTYwNC4uYjVhNzEyMzQ5YWRjNTczZDVhNjBmMDI4OWU0Y2Vm
NmNiY2I0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAyLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBQ
dXNoU3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHRoZSB1c2VyVmlzaWJsZU9ubHkgZmxh
ZyBzZXQuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgICAgcHVzaCBldmVudHMgc2hvdWxkIHJl
c3VsdCBpbiBhIHVzZXItZmFjaW5nIG5vdGlmaWNhdGlvbi4KKworICAgICAgICBUbyBlbmZvcmNl
IHRoaXMsIHdlIHVzZSBhIHF1b3RhIHN5c3RlbS4gQSBwdXNoIHN1YnNjcmlwdGlvbiBjYW4gcHJv
Y2VzcyB1cCB0byB0aHJlZSBzaWxlbnQKKyAgICAgICAgcHVzaGVzLiBBZnRlciB0aHJlZSBzaWxl
bnQgcHVzaGVzLCB3ZSByZW1vdmUgdGhlIHB1c2ggc3Vic2NyaXB0aW9uLiBUbyBjb250aW51ZSB0
byByZWNlaXZlCisgICAgICAgIHB1c2hlcywgdGhlIHVzZXIgbXVzdCBuYXZpZ2F0ZSBiYWNrIHRv
IHRoZSB3ZWJzaXRlIGFuZCB0aGUgc2l0ZSBtdXN0IHJlcXVlc3QgcGVybWlzc2lvbiB0bworICAg
ICAgICBzZW5kIHB1c2hlcyBhZ2Fpbi4KKworICAgICAgICBPcmlnaW5hbGx5IHdlIHdlcmUgZ29p
bmcgdG8gdXNlIGEgbW9yZSBjb21wbGljYXRlZCBxdW90YSBzeXN0ZW0gdGhhdCBtb3ZlZCBzdWJz
Y3JpcHRpb25zCisgICAgICAgIGZyb20gd2FraW5nIHRvIG5vbi13YWtpbmcgYmVmb3JlIGZpbmFs
bHkgdW5zdWJzY3JpYmluZywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgaXQgY291bGQgbGVhZAorICAg
ICAgICB0byBzdWJzY3JpcHRpb25zIGJlaW5nIGluIGEgcGFydGlhbGx5LXdvcmtpbmcgc3RhdGUg
dGhhdCB3b3VsZCBiZSBoYXJkIHRvIGV4cGxhaW4gYW5kIHJlYXNvbgorICAgICAgICBhYm91dC4g
QXMgYSByZXN1bHQsIEkndmUgcmVtb3ZlZCB0aGUgd2FrZVN0YXRlIGNvbHVtbiBmcm9tIFB1c2hE
YXRhYmFzZSBhbmQgcmVwbGFjZWQgaXQKKyAgICAgICAgYSBzaWxlbnRQdXNoQ291bnQgY29sdW1u
LgorCisgICAgICAgIFRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgc2VydmljZSB3b3JrZXIgaGFz
IHNob3duIGEgbm90aWZpY2F0aW9uIHdoaWxlIHByb2Nlc3NpbmcgYSBwdXNoCisgICAgICAgIGV2
ZW50LCB3ZSB1c2UgYSBib29sZWFuIGZsYWcgb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBU
aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGJlY2F1c2UKKyAgICAgICAgd2UgY3VycmVudGx5IG9u
bHkgcHJvY2VzcyBvbmUgcHVzaCBldmVudCBhdCBhIHRpbWUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudCk6CisKIDIwMjItMDItMTcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5n
IHdpdGggQU5HTEUgZW5hYmxlZCBzaW5jZSByMjg5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMGVmMzhjZDI3
NDdlNTc1NzgyZGYyNzA3NzNlY2ZjN2M3NzMyYmQuLjVkMzA2M2RiMWRiYTE5ZDA0OGVlNjJjMjg5
ODExNjNiMjg4ZmMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMTggIEJl
biBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBx
dW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0g
SWYgYSBwdXNoIGV2ZW50IGRvZXNuJ3QgcmVzdWx0IGluIGEgbm90aWZpY2F0aW9uIG9yIGlmIHRo
ZSBhc3NvY2lhdGVkIHByb21pc2UgcmVqZWN0cywKKyAgICAgICAgICAgdGhlbiB3ZSBub3QgaW5j
cmVtZW50IHRoZSBzaWxlbnQgcHVzaCBjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhhdCBvcmlnaW4u
CisgICAgICAgICAtIFB1c2hTZXJ2aWNlIG5vdyByZW1vdmVzIGEgc3Vic2NyaXB0aW9uIGlmIHRo
ZSBvcmlnaW4gaGFzIHJlYWNoZWQgaXRzIHF1b3RhIG9mIHNpbGVudAorICAgICAgICAgICBwdXNo
ZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxpbnQ+OjpjYWxs
UmVwbHkpOgorICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddKToKKyAgICAgICAgKiB3ZWJw
dXNoZC9QdXNoU2VydmljZS5tbToKKyAgICAgICAgKFdlYlB1c2hEOjp1cGRhdGVUb3BpY0xpc3Rz
KToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6Ok1lc3NhZ2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6OmVuY29kZVJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKwog
MjAyMi0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENyYXNoIHdoaWxlIGRlc3Ryb3lpbmcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcAppbmRl
eCA4YTFmNTNhYjQ4MGFlMGI0MDU5NjI2YmNhMGM0NmVlMDdjMzkyNWM1Li5mZDU3NDdiOWFjMTQx
OWVlYjJlZjg3NDE3ZTk2NTI0ZTRmNTgyZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwCkBAIC00MywxOSArNDMsMjQgQEAKICNkZWZp
bmUgUFVTSERCX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihQ
dXNoLCAiJXAgLSBQdXNoRGF0YWJhc2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpIFBVU0hEQl9SRUxFQVNFX0xPR19F
UlJPUigiRmFpbGVkIHRvIGJpbmQgc3RhdGVtZW50ICglZCk6ICVzIiwgbV9kYi0+bGFzdEVycm9y
KCksIG1fZGItPmxhc3RFcnJvck1zZygpKQogCisjZGVmaW5lIGtQdXNoUmVjb3JkQ29sdW1ucyAi
IHN1Yi5yb3dJRCwgc3MuYnVuZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1
Yi5lbmRwb2ludCwgc3ViLnRvcGljLCBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCBzdWIuc2hhcmVkQXV0aFNlY3JldCwg
c3ViLmV4cGlyYXRpb25UaW1lICIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3RleHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDE7CitzdGF0aWMgY29uc3Rl
eHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDI7CisjZGVmaW5lIGtDdXJyZW50
UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiMiIKIAogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAiUFJBR01BIGF1dG9f
dmFjdXVtPUlOQ1JFTUVOVEFMIl9zLAogICAgICJDUkVBVEUgVEFCTEUgU3Vic2NyaXB0aW9uU2V0
cygiCisgICAgIiAgcm93SUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCIKICAg
ICAiICBjcmVhdGlvblRpbWUgSU5UIE5PVCBOVUxMLCIKICAgICAiICBidW5kbGVJRCBURVhUIE5P
VCBOVUxMLCIKICAgICAiICBzZWN1cml0eU9yaWdpbiBURVhUIE5PVCBOVUxMLCIKLSAgICAiICB3
YWtlU3RhdGUgSU5UIE5PVCBOVUxMLCIKKyAgICAiICBzaWxlbnRQdXNoQ291bnQgSU5UIE5PVCBO
VUxMLCIKICAgICAiICBVTklRVUUoYnVuZGxlSUQsIHNlY3VyaXR5T3JpZ2luKSkiX3MsCiAgICAg
IkNSRUFURSBUQUJMRSBTdWJzY3JpcHRpb25zKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIgogICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEws
IgogICAgICIgIHN1YnNjcmlwdGlvblNldElEIElOVCBOT1QgTlVMTCwiCiAgICAgIiAgc2NvcGUg
VEVYVCBOT1QgTlVMTCwiCkBAIC02OCw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVy
YWwgcHVzaERhdGFiYXNlU2NoZW1hVjFTdGF0ZW1lbnRzW10gPSB7CiAgICAgIiAgZXhwaXJhdGlv
blRpbWUgSU5ULCIKICAgICAiICBVTklRVUUoc2NvcGUsIHN1YnNjcmlwdGlvblNldElEKSkiX3Ms
CiAgICAgIkNSRUFURSBJTkRFWCBTdWJzY3JpcHRpb25zX1N1YnNjcmlwdGlvblNldElEX0luZGV4
IE9OIFN1YnNjcmlwdGlvbnMoc3Vic2NyaXB0aW9uU2V0SUQpIl9zLAotICAgICJQUkFHTUEgdXNl
cl92ZXJzaW9uID0gMSJfcworICAgICJQUkFHTUEgdXNlcl92ZXJzaW9uID0gIiBrQ3VycmVudFB1
c2hEYXRhYmFzZVZlcnNpb25TdHJpbmcgIiJfcwogfTsKIAogUHVzaFJlY29yZCBQdXNoUmVjb3Jk
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCkBAIC04NCw4ICs4OSw3IEBAIFB1c2hSZWNvcmQgUHVz
aFJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogICAgICAgICBjbGllbnRQdWJsaWNLZXks
CiAgICAgICAgIGNsaWVudFByaXZhdGVLZXksCiAgICAgICAgIHNoYXJlZEF1dGhTZWNyZXQsCi0g
ICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtlU3RhdGUKKyAgICAgICAgZXhwaXJh
dGlvblRpbWUKICAgICB9OwogfQogCkBAIC0xMDIsOCArMTA2LDcgQEAgUHVzaFJlY29yZCBQdXNo
UmVjb3JkOjppc29sYXRlZENvcHkoKSAmJgogICAgICAgICBXVEZNb3ZlKGNsaWVudFB1YmxpY0tl
eSksCiAgICAgICAgIFdURk1vdmUoY2xpZW50UHJpdmF0ZUtleSksCiAgICAgICAgIFdURk1vdmUo
c2hhcmVkQXV0aFNlY3JldCksCi0gICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtl
U3RhdGUKKyAgICAgICAgZXhwaXJhdGlvblRpbWUKICAgICB9OwogfQogCkBAIC0yODAsNyArMjgz
LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiBy
ZWNvcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgaW50NjRfdCBzdWJzY3JpcHRp
b25TZXRJRCA9IDA7CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93aWQsIHdha2VTdGF0ZSBGUk9NIFN1YnNjcmlwdGlv
blNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAg
ICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93SUQg
RlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmln
aW4gPSA/Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3Fs
LT5iaW5kVGV4dCgxLCByZWNvcmQuYnVuZGxlSUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
ICAgIHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLnNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVf
T0spIHsKQEAgLTI4OSwxOSArMjkyLDE2IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNv
cmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09
IFNRTElURV9ST1cpCiAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNv
bHVtbkludDY0KDApOwotICAgICAgICAgICAgICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0aWNf
Y2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxKSk7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIXN1YnNjcmlwdGlvblNldElEKSB7Ci0gICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlw
dGlvblNldHMgVkFMVUVTKD8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxV
RVMoTlVMTCwgPywgPywgPywgMCkiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5idW5kbGVJRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2Vj
dXJpdHlPcmlnaW4pICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZElu
dCg0LCBzdGF0aWNfY2FzdDxpbnQ+KHJlY29yZC53YWtlU3RhdGUpKSAhPSBTUUxJVEVfT0spIHsK
KyAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMsIHJlY29yZC5zZWN1cml0eU9yaWdp
bikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJ
TkRfRVJST1IoKTsKICAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+IHsgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgUHVzaERhdGFiYXNl
OjppbnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFMVUVTKD8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9ucyBWQUxVRVMo
TlVMTCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgICAgICAgICAgaWYg
KCFzcWwKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIp
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgyLCBzdWJz
Y3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LCkBAIC00MjMsMjEgKzQyMywyMCBAQCB2b2lkIFB1
c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKFB1c2hTdWJzY3JpcHRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZQogICAgIH0pOwogfQogCi1zdGF0aWMgUHVzaFJlY29yZCBtYWtlUHVz
aFJlY29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHNxbCkKK3N0YXRp
YyBQdXNoUmVjb3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZSYgc3FsLCBpbnQgY29sdW1uSW5kZXgpCiB7CiAgICAgUHVzaFJlY29yZCByZWNvcmQ7
Ci0gICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoMCkpOwotICAgIHJlY29yZC5i
dW5kbGVJRCA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICByZWNvcmQuc2VjdXJpdHlPcmlnaW4g
PSBzcWwtPmNvbHVtblRleHQoMik7Ci0gICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0
KDMpOwotICAgIHJlY29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dCg0KTsKLSAgICByZWNv
cmQudG9waWMgPSBzcWwtPmNvbHVtblRleHQoNSk7Ci0gICAgcmVjb3JkLnNlcnZlclZBUElEUHVi
bGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKDYpOwotICAgIHJlY29yZC5jbGllbnRQdWJsaWNLZXkg
PSBzcWwtPmNvbHVtbkJsb2IoNyk7Ci0gICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwt
PmNvbHVtbkJsb2IoOCk7Ci0gICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVt
bkJsb2IoOSk7Ci0gICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9t
VmFsdWUoc3FsLT5jb2x1bW5WYWx1ZSgxMCkpOwotICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0
aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxMSkpOworICAgIHJlY29yZC5p
ZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZp
ZXJUeXBlPihzcWwtPmNvbHVtbkludDY0KGNvbHVtbkluZGV4KyspKTsKKyAgICByZWNvcmQuYnVu
ZGxlSUQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNlY3Vy
aXR5T3JpZ2luID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5z
Y29wZSA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuZW5kcG9p
bnQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnRvcGljID0g
c3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zZXJ2ZXJWQVBJRFB1
YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuY2xp
ZW50UHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAgIHJlY29y
ZC5jbGllbnRQcml2YXRlS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAg
IHJlY29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4Kysp
OworICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbVZhbHVlKHNx
bC0+Y29sdW1uVmFsdWUoY29sdW1uSW5kZXgrKykpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0K
QEAgLTQ0NywxMCArNDQ2LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5VG9waWMo
Y29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBkaXNwYXRj
aE9uV29ya1F1ZXVlKFt0aGlzLCB0b3BpYyA9IGNyb3NzVGhyZWFkQ29weSh0b3BpYyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIC8vIEZvcmNlIFNRTGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3Bl
KSBpbmRleCBmaXJzdCB2aWEgQ1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBz
dWIucm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIu
ZW5kcG9pbnQsIHN1Yi50b3BpYywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVi
bGljS2V5LCBzdWIuY2xpZW50UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAg
ICAgICAgICAgIiAgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mu
d2FrZVN0YXRlICIKKyAgICAgICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAg
ICAgICAgICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBK
T0lOIFN1YnNjcmlwdGlvblNldHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRp
b25TZXRJRCA9IHNzLnJvd2lkICIKQEAgLTQ2Nyw3ICs0NjMsNyBAQCB2b2lkIFB1c2hEYXRhYmFz
ZTo6Z2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRG
cm9tUm93KHNxbCkpOworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTQ3NiwxMCArNDcyLDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5QnVu
ZGxlSWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGMKICAgICBkaXNw
YXRjaE9uV29ya1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJ
RCksIHNjb3BlID0gY3Jvc3NUaHJlYWRDb3B5KHNjb3BlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2Ug
U1FMaXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlwdGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZp
YSBDUk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
Ci0gICAgICAgICAgICAiU0VMRUNUICIKLSAgICAgICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVu
ZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRv
cGljLCAiCi0gICAgICAgICAgICAiICBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCAiCi0gICAgICAgICAgICAiICBzdWIu
c2hhcmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRpb25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAg
ICAgICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3JkQ29sdW1ucwogICAgICAgICAgICAgIkZST00g
U3Vic2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAgICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9u
U2V0cyBzcyAiCiAgICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93
aWQgIgpAQCAtNDk2LDcgKzQ4OSw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeUJ1
bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsKSk7Cisg
ICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1h
a2VQdXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsKICAgICB9KTsKIH0KIApAQCAtNTEyLDE3ICs1
MDUsMTEgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSGFzaFNldDxQdXNoU3Vic2NyaXB0aW8KICAgICB9KTsKIH0KIAotdm9pZCBQdXNo
RGF0YWJhc2U6OmdldFRvcGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVz
aFdha2VTdGF0ZVRvVG9waWNNYXAmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFB1c2hE
YXRhYmFzZTo6Z2V0VG9waWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgY29uc3RleHByIGludCBudW1iZXJPZldha2VTdGF0ZXMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsKLSAgICAgICAgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+LCBudW1iZXJPZldha2VTdGF0ZXM+IHRvcGljc0J5V2FrZVN0YXRlKG51
bWJlck9mV2FrZVN0YXRlcyk7IC8vIHVzZWQgYmVjYXVzZSBIYXNoTWFwOjppc29sYXRlZENvcHkg
ZG9lc24ndCBleGlzdAotCi0gICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1
ZSgKLSAgICAgICAgICAgICJTRUxFQ1Qgc3Mud2FrZVN0YXRlLCBzdWIudG9waWMgIgotICAgICAg
ICAgICAgIkZST00gU3Vic2NyaXB0aW9ucyBzdWIgIgotICAgICAgICAgICAgIkpPSU4gU3Vic2Ny
aXB0aW9uU2V0cyBzcyAiCi0gICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0g
c3Mucm93aWQiX3MpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CisgICAgICAgIGF1
dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHRvcGljIEZST00gU3Vic2Ny
aXB0aW9ucyJfcyk7CiAgICAgICAgIGlmICghc3FsKSB7CiAgICAgICAgICAgICBQVVNIREJfUkVM
RUFTRV9MT0dfQklORF9FUlJPUigpOwogICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC01MzEsMjIgKzUxOCwxMTggQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFRv
cGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVzaFdha2VTdGF0ZVRvVG8K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdoaWxlIChzcWwtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBhdXRvIHB1c2hXYWtlU3RhdGUgPSBz
cWwtPmNvbHVtbkludCgwKTsKLSAgICAgICAgICAgIGF1dG8gdG9waWMgPSBzcWwtPmNvbHVtblRl
eHQoMSk7Ci0gICAgICAgICAgICBpZiAocHVzaFdha2VTdGF0ZSA+PSAwICYmIHB1c2hXYWtlU3Rh
dGUgPCBudW1iZXJPZldha2VTdGF0ZXMpCi0gICAgICAgICAgICAgICAgdG9waWNzQnlXYWtlU3Rh
dGVbcHVzaFdha2VTdGF0ZV0uYXBwZW5kKFdURk1vdmUodG9waWMpKTsKLSAgICAgICAgfQorICAg
ICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgICAgIHRvcGlj
cy5hcHBlbmQoc3FsLT5jb2x1bW5UZXh0KDApKTsKIAotICAgICAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgdG9waWNzQnlXYWtlU3RhdGUgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BpY3NCeVdh
a2VTdGF0ZSkpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUHVzaFdha2VTdGF0ZVRvVG9waWNN
YXAgcmVzdWx0OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxp
bnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsgKytpKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3RhdGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oaSksIFdURk1vdmUodG9waWNz
QnlXYWtlU3RhdGVbaV0pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0b3BpY3MgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZSh0b3BpY3MpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUodG9waWNzKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCit2
b2lkIFB1c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYg
YnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29ya1F1
ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3VyaXR5
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaW50
IHNpbGVudFB1c2hDb3VudCA9IDA7CisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiVVBEQVRFIFN1YnNj
cmlwdGlvblNldHMgU0VUIHNpbGVudFB1c2hDb3VudCA9IHNpbGVudFB1c2hDb3VudCArIDEgV0hF
UkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAg
ICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwg
c3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
ICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChz
cWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25N
YWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHNpbGVudFB1c2hD
b3VudCBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0
eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0
KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwgc3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9y
aWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9H
X0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQor
ICAgICAgICAgICAgICAgIHNpbGVudFB1c2hDb3VudCA9IHNxbC0+Y29sdW1uSW50KDApOworICAg
ICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2lsZW50UHVzaENvdW50
KTsKKyAgICB9KTsKK30KKwordm9pZCBQdXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25z
dCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQ
dXNoUmVjb3JkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29y
a1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3Vy
aXR5T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
VmVjdG9yPFB1c2hSZWNvcmQ+IHJlbW92ZWRSZWNvcmRzOworICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKwor
ICAgICAgICBpbnQ2NF90IHN1YnNjcmlwdGlvblNldElEID0gMDsKKworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCisgICAgICAgICAgICAg
ICAgIlNFTEVDVCBzdWIuc3Vic2NyaXB0aW9uU2V0SUQsICIga1B1c2hSZWNvcmRDb2x1bW5zCisg
ICAgICAgICAgICAgICAgIkZST00gU3Vic2NyaXB0aW9uU2V0cyBzcyAiCisgICAgICAgICAgICAg
ICAgIkpPSU4gU3Vic2NyaXB0aW9ucyBzdWIgIgorICAgICAgICAgICAgICAgICJPTiBzcy5yb3dp
ZCA9IHN1Yi5zdWJzY3JpcHRpb25TZXRJRCAiCisgICAgICAgICAgICAgICAgIldIRVJFIHNzLmJ1
bmRsZUlEID0gPyBBTkQgc3Muc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKyAgICAgICAgICAgIGlm
ICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwt
PmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAg
ICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNv
bXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNo
UmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgICAgICBzdWJzY3JpcHRpb25TZXRJRCA9IHNxbC0+Y29sdW1uSW50KDApOworICAgICAgICAg
ICAgICAgIHJlbW92ZWRSZWNvcmRzLmFwcGVuZChtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAx
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBh
dXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIkRFTEVURSBGUk9NIFN1YnNjcmlwdGlv
bnMgV0hFUkUgc3Vic2NyaXB0aW9uU2V0SUQgPSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3Fs
IHx8IHNxbC0+YmluZEludCgxLCBzdWJzY3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBW
ZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIFZlY3RvcjxQdXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00gU3Vic2NyaXB0aW9uU2V0
cyBXSEVSRSByb3dpZCA9ID8iX3MpOworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5k
SW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAg
ICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNoUmVj
b3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVjdG9y
PFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShy
ZW1vdmVkUmVjb3JkcykpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaAppbmRleCA4M2Q4OTgxZTAzMzM2YWMyNzY2OTZj
NmU1M2QxODkxYzViNTIwNjc3Li5hNmNlODc2NGZhYWZlYmU0ZmY2MTgxMjhkYjFhMDY5ZDY5YzVl
OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNl
LmgKQEAgLTQyLDE0ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2FrZSBz
dGF0ZSB0aGF0IGFwcGxpZXMgZm9yIGRldmljZXMgdGhhdCByYWNlLXRvLXNsZWVwLgotZW51bSBj
bGFzcyBQdXNoV2FrZVN0YXRlIDogdWludDhfdCB7Ci0gICAgV2FraW5nLCAvLyBBbGwgcHVzaGVz
IHdpbGwgd2FrZSBkZXZpY2UuCi0gICAgT3Bwb3J0dW5pc3RpYywgLy8gTG93IHByaW9yaXR5IHB1
c2hlcyBtYXkgbm90IHdha2UgZGV2aWNlLgotICAgIE5vbldha2luZywgLy8gTm8gcHVzaGVzIHdp
bGwgd2FrZSBkZXZpY2UuCi0gICAgTnVtYmVyT2ZTdGF0ZXMKLX07Ci0KIHN0cnVjdCBQdXNoUmVj
b3JkIHsKICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFN0
cmluZyBidW5kbGVJRDsKQEAgLTYyLDcgKzU0LDYgQEAgc3RydWN0IFB1c2hSZWNvcmQgewogICAg
IFZlY3Rvcjx1aW50OF90PiBjbGllbnRQcml2YXRlS2V5OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
aGFyZWRBdXRoU2VjcmV0OwogICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGly
YXRpb25UaW1lIHsgfTsKLSAgICBQdXNoV2FrZVN0YXRlIHdha2VTdGF0ZSB7IFB1c2hXYWtlU3Rh
dGU6Oldha2luZyB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBpc29sYXRlZENv
cHkoKSBjb25zdCAmOwogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5
KCkgJiY7CkBAIC04MSw5ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRSZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcm
IGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUb3Bp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB1
c2luZyBQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCA9IEhhc2hNYXA8UHVzaFdha2VTdGF0ZSwgVmVj
dG9yPFN0cmluZz4sIFdURjo6SW50SGFzaDxQdXNoV2FrZVN0YXRlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxQdXNoV2FrZVN0YXRlPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
b3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hXYWtlU3RhdGVUb1Rv
cGljTWFwJiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY3JlbWVudFNpbGVudFB1
c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGNv
bnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFB1c2hSZWNvcmQ+JiYpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBQdXNoRGF0YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiwgVW5pcXVlUmVmPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA1MTBjMWIwNzJiODk3ZDc5
MDBhYTZlNmVhMDJkOGYwMDYzOGZiM2RkLi44NDY4MjQ0YjlmYzJmOWNjNjVhOWQ2ZDdkZGZhZTFk
NDg5M2JjYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04OCw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNr
VG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mLCBjb25zdCBTdHJpbmcmIGFjdGlvbik7CiAjZW5kaWYKIAorICAgIGJvb2wgaGFzUGVuZGlu
Z1NpbGVudFB1c2hFdmVudCgpIHsgcmV0dXJuIG1faGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudDsg
fQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudChib29sIHZhbHVlKSB7IG1f
aGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCA9IHZhbHVlOyB9CisKIHByaXZhdGU6CiAgICAgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNl
V29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6
dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CkBAIC05
Niw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0
IHsgcmV0dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCiAgICAgTm90aWZpY2F0
aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBtX25vdGlmaWNh
dGlvbkNsaWVudC5nZXQoKTsgfQorCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4g
c2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAogICAgIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwpAQCAtMTA5LDYgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4+
IG1fcGVuZGluZ1NraXBXYWl0aW5nUHJvbWlzZXM7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmlj
YXRpb25DbGllbnQ7CisgICAgYm9vbCBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZDg4
NDVhYjI0YzM4MDYyYzA3MjgwMTU2NDBmZmIwYTRmM2RmYmFmNy4uZjdhNDQ1ZDE2NWZhYWNhYWY3
YzJjODRmZDMyZTA1OTdiNGI1ZWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJUeXBlcy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTI4Niw2ICsyODcsOSBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGNvbnRleHQuaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGZhbHNl
KTsKKwogICAgIC8vIFRoZSBOb3RpZmljYXRpb24gaXMga2VwdCBhbGl2ZSBieSB2aXJ0dWUgb2Yg
YmVpbmcgc2hvdygpJ24gc29vbi4KICAgICAvLyBGSVhNRTogV2hlbiBpbXBsZW1lbnRpbmcgZ2V0
Tm90aWZpY2F0aW9ucygpLCBzdG9yZSB0aGlzIE5vdGlmaWNhdGlvbiBpbiB0aGUgcmVnaXN0cmF0
aW9uJ3Mgbm90aWZpY2F0aW9uIGxpc3QuCiAgICAgYXV0byBub3RpZmljYXRpb24gPSBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb250ZXh0LCB0aXRsZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGUyZTQwOGIxMDkxNTQ3ZmQwMGI3ZmE1MDI3Zjg0MWVlYzdiZTU2OGIu
LmMyODQ1NWIwNDEyN2E1NDc0MTlkNzQxNmRjNjUyZTgwNmQ3NzlkN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCkBAIC0yMjQsMTAgKzIyNCwxMiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90PgogICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gUmVmIHsgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vydmlj
ZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50IGZpcmluZyBldmVudCBmb3Ig
d29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KHRydWUpOworCiAgICAgICAgIGF1dG8gcHVz
aEV2ZW50ID0gUHVzaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnB1c2hFdmVudCwgeyB9LCBX
VEZNb3ZlKGRhdGEpLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKICAgICAgICAg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hFdmVudCk7CiAKLSAg
ICAgICAgcHVzaEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQo
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgcHVz
aEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgZXZlbnRDcmVh
dGlvblRpbWUgPSBwdXNoRXZlbnQtPnRpbWVTdGFtcCgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAg
ICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVk
KSB7CkBAIC0yMzUsNyArMjM3LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhbGxiYWNrKCFoYXNSZWplY3RlZEFueVByb21pc2UpOworCisgICAgICAgICAg
ICBib29sIHNob3dlZE5vdGlmaWNhdGlvbiA9ICFzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmhh
c1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQoKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9ICFo
YXNSZWplY3RlZEFueVByb21pc2UgJiYgc2hvd2VkTm90aWZpY2F0aW9uOworCisgICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBmYWlsZWQg
dG8gcHJvY2VzcyBwdXNoIGV2ZW50IChyZWplY3RlZFByb21pc2UgPSAlZCwgc2hvd2VkTm90aWZp
Y2F0aW9uID0gJWQpIiwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlLCBzaG93ZWROb3RpZmljYXRpb24p
OworCisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDEyZjhlOGE1YjU5ZjAwZGQ3YjdlZmQzYjJhZDEzNTdmYTI1MTY5MzMuLjE2NmVlZGJl
ZmY1ZmZhODQ2ZTRjZGQ4ZWNiNWI2NjRjNGEzOGJjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjUwLDI5ICsyMjUwLDUyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIG1hbmFnZXItPm1vdmVEYXRhKG9sZE9y
aWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpICYmIEVOQUJMRShCVUlMVF9J
Tl9OT1RJRklDQVRJT05TKQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0jaWYgRU5BQkxF
KEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiTmV0d29y
a1Byb2Nlc3MgZ2V0dGluZyBwZW5kaW5nIHB1c2ggbWVzc2FnZXMgZm9yIHNlc3Npb24gSUQgJSIg
UFJJdTY0LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNh
dGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQogICAgICAgICBMT0coTm90aWZpY2F0aW9ucywg
Ik5ldHdvcmtQcm9jZXNzIGNvdWxkIG5vdCBmaW5kIHNlc3Npb24gZm9yIElEICVsbHUgdG8gZ2V0
IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSNlbmRpZgot
ICAgIGNhbGxiYWNrKHsgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNo
TWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
IExPRyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZy
b20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0g
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1v
dmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlv
blVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKTsKKyAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShw
dXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJM
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdp
biA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb247Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiAoc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpKSB7CisgICAgICAgICAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigp
CisgICAgICAgICAgICAgICAgICAgIC5pbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoV1RGTW92ZShv
cmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0XShpbnQpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICB9KTsKICAgICB9IGVsc2UK
ICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEg
cHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNl
c3Npb24gZG9lc24ndCBleGlzdCIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KLSNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNlbHNlCisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNhbGxiYWNrKQoreworICAg
IGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVz
c2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayhmYWxzZSk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpICYmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCA0ODZjYjViM2RmNjcwMGU4ODAzZjYwMDk5Y2EzNTdlZjBkMmJhODQxLi44OTk1
ODZlNzBjMGNmNWNhYzEyZDQ4MzQwMjg5NmNjOTY5YzhmN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE3NCw2ICsxNzQsMTYgQEAgdm9p
ZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShVUkwm
JiBzY29wZVVSTCwgQ29tcGxldGkKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6
TWVzc2FnZVR5cGU6OkdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBXVEZNb3ZlKHNjb3BlVVJMKSk7CiB9CiAKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXI6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRNZXNzYWdlV2l0
aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6SW5jcmVtZW50U2lsZW50UHVzaENvdW50PihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShvcmlnaW4pKTsKK30KKwogdGVtcGxh
dGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgog
dm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFy
Z3MpIGNvbnN0CiB7CkBAIC0yMjcsNiArMjM3LDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5
Q2FsbGVyPGJvb2w+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxl
cjxpbnQ+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB2YWx1ZTsKKyAgICAgICAgZGVjb2Rl
ciA+PiB2YWx1ZTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKnZhbHVlKTsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYm
PiB7CiAgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aAppbmRleCA1MmE2Mzg0YmFiMTBlMGFlOTE2YmFhMjNmOTE0YTkyNWZlZTMwOGRkLi4wNmU2MTU3
ZmE4NjU0NTI1NTU5YmNiNTg0MDMyMjlmYzJhYzMyYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVz
aFN1YnNjcmlwdGlvbihVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0
ZShVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50OF90
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBpbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50KT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0
YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmlu
ZGV4IGYzZjdiYmU2M2Y0ZWQzNWVkY2YzZTJhYWFkOTNmYjNlNDkyOWZmOTkuLjI2NTYwYzA2Yzlk
MjNmYzYwNTIzNzI5NTVmZTA4OTg4OTc4MWYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViUHVzaEQgewogCisvLyBJZiBhbiBvcmlnaW4gcHJvY2Vzc2VzIG1vcmUgdGhh
biB0aGlzIG1hbnkgc2lsZW50IHB1c2hlcywgdGhlbiBpdCB3aWxsIGJlIHVuc3Vic2NyaWJlZCBm
cm9tIHB1c2guCitzdGF0aWMgY29uc3RleHByIGludCBtYXhTaWxlbnRQdXNoQ291bnQgPSAzOwor
CiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5ID0gInByb3RvY29sIHZl
cnNpb24iOwogY29uc3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlID0gMTsKIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQg
bWVzc2FnZSI7CkBAIC00OCw3ICs1MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50
OF90IHsKICAgICBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlLAogICAgIFVuc3Vic2NyaWJlRnJvbVB1
c2hTZXJ2aWNlLAogICAgIEdldFB1c2hTdWJzY3JpcHRpb24sCi0gICAgR2V0UHVzaFBlcm1pc3Np
b25TdGF0ZQorICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUsCisgICAgSW5jcmVtZW50U2lsZW50
UHVzaENvdW50LAogfTsKIAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3Nh
Z2VUeXBlIG1lc3NhZ2VUeXBlKQpAQCAtNjUsNiArNjksNyBAQCBpbmxpbmUgYm9vbCBtZXNzYWdl
VHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAgICAgY2FzZSBNZXNzYWdl
VHlwZTo6VW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2U6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6
R2V0UHVzaFN1YnNjcmlwdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlz
c2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdN
b2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25m
aWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCBhN2E4YmI2MDg3NWE5OTUyZTk5MGE1MmFkODlkMzM0YzZkNmZm
OGZhLi4zYzgxOGZiMjE4MzkzMmMyMTBmNTdhYWU2MDAwMzIzN2U0YWQ0MmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLQVBJQ2Fz
dC5oIgogI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbXBv
cnQgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5o
IgogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW1wb3J0ICJXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDYWNoZS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgpAQCAt
NjEyLDQgKzYxNCw5IEBAIC0gKHZvaWQpX3Rlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMK
ICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMoKTsKIH0K
IAorLSAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKV9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVz
dGluZworeworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7Cit9CisKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKaW5kZXggZTFmZDk5MWRmYjJiNzg0OTQ0NTAzNmNkODI5ZTY0ZDdjYzVkZGI2
MS4uNmUxNTU3YWM1YjFkZTk2ODIwMjI5NzdkZDdkY2YzMzY0Yjg2MTZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAt
MTM3LDYgKzEzOCw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQ29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCBX
S19BUElfREVQUkVDQVRFRCgiUGFydGl0aW9uZWQgY29va2llcyBhcmUgbm8gbG9uZ2VyIHN1cHBv
cnRlZCIsIG1hY29zKDEwLjEyLjMsIDEwLjE0LjQpLCBpb3MoMTAuMywgMTIuMikpOwogCistIChX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nOwor
CiAvLyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRl
c3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5T
VVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEz
LjQpKTsKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNGb3JUZXN0aW5n
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hTZXJ2aWNlLmgKaW5kZXggZmU0MTVlMDA4ZGQ2MzA1MTA1ODI0ZjhjZmIwMjY5NWFm
YzMyM2ZlYi4uZjdkZDQzYTgxMTQwZGNlZjZmOTMxNDEzMjUwNzNkNjc0YjlkMjdhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNjb3BlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhcGlkUHVibGljS2V5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKICAgICB2b2lkIHVuc3Vic2Ny
aWJlKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwg
V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CiAK
KyAgICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50KT4mJik7CisKICAgICB2b2lkIGRpZENvbXBsZXRlR2V0U3Vic2NyaXB0aW9uUmVx
dWVzdChHZXRTdWJzY3JpcHRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN1YnNj
cmliZVJlcXVlc3QoU3Vic2NyaWJlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVVbnN1
YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoU2VydmljZS5tbQppbmRleCAwNThhNzY5ZTY5NmNhZWNlNjY0NTQyZDBjYTcwMDhjODc0Yjhh
N2YwLi5lN2QyZjdjYmNhYmMyYmNkMWIyMWI0Y2IxZDM3NjJhYzc4MTZmYTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFw
cGxlUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJNb2NrUHVzaFNlcnZpY2VDb25u
ZWN0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29u
c3RhbnRzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KQEAgLTQ0LDE5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2
b2lkIHVwZGF0ZVRvcGljTGlzdHMoUHVzaFNlcnZpY2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQ
dXNoRGF0YWJhc2UmIGRhdGFiYXNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGRhdGFiYXNlLmdldFRvcGljc0J5V2FrZVN0YXRlKFsmY29ubmVj
dGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIHRvcGljTWFwKSBtdXRhYmxlIHsKKyAgICBkYXRhYmFzZS5nZXRUb3BpY3MoWyZjb25uZWN0
aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgdG9waWNzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG9waWNzIHRvIGln
bm9yZWQgbGlzdCBiYXNlZCBvbiB1c2VyIHByZWZlcmVuY2VzLgotICAgICAgICBQdXNoU2Vydmlj
ZUNvbm5lY3Rpb246OlRvcGljTGlzdHMgdG9waWNMaXN0czsKLQotICAgICAgICBpZiAoYXV0byBp
dCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsgaXQgIT0gdG9waWNNYXAu
ZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAodG9waWNMaXN0cy5lbmFibGVkVG9waWNzLCBp
dC0+dmFsdWUpOwotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VT
dGF0ZTo6T3Bwb3J0dW5pc3RpYyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAg
c3RkOjpzd2FwKHRvcGljTGlzdHMub3Bwb3J0dW5pc3RpY1RvcGljcywgaXQtPnZhbHVlKTsKLSAg
ICAgICAgaWYgKGF1dG8gaXQgPSB0b3BpY01hcC5maW5kKFB1c2hXYWtlU3RhdGU6Ok5vbldha2lu
Zyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlz
dHMubm9uV2FraW5nVG9waWNzLCBpdC0+dmFsdWUpOwotCi0gICAgICAgIGNvbm5lY3Rpb24uc2V0
VG9waWNMaXN0cyhXVEZNb3ZlKHRvcGljTGlzdHMpKTsKLQorICAgICAgICBjb25uZWN0aW9uLnNl
dEVuYWJsZWRUb3BpY3MoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KQEAgLTQ4Miw2ICs0NzMsMzIgQEAgdm9pZCBQdXNoU2VydmljZTo6
ZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIGZpbmlzaGVkUHVzaFNlcnZpY2VSZXF1ZXN0KG1fdW5zdWJzY3JpYmVSZXF1ZXN0cywg
cmVxdWVzdCk7CiB9CiAKK3ZvaWQgUHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlP
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBoYW5kbGVyKQoreworICAgIG1f
ZGF0YWJhc2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5kbGVJZGVudGlmaWVyLCBzZWN1
cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBoYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaW50IHNpbGVudFB1c2hDb3VudCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChzaWxlbnRQdXNoQ291bnQgPCBXZWJLaXQ6OldlYlB1c2hEOjptYXhTaWxlbnRQ
dXNoQ291bnQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJS
ZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdpdGggJXtwdWJsaWN9cyAle3Nl
bnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAlZCBzaWxlbnQgcHVzaGVzIiwgYnVuZGxlSWRl
bnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51dGY4KCkuZGF0YSgpLCBzaWxl
bnRQdXNoQ291bnQpOworCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9y
aWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBzaWxlbnRQdXNo
Q291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRvJiYgcmVtb3ZlZFJlY29yZHMp
IG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZW1vdmVkUmVjb3Jk
cykgeworICAgICAgICAgICAgICAgIGF1dG8gdG9waWMgPSBtYWtlUHVzaFRvcGljKHJlY29yZC5i
dW5kbGVJRCwgcmVjb3JkLnNjb3BlKTsKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVu
c3Vic2NyaWJlKHRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJsaWNLZXksIFt0b3BpY10oYm9v
bCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVz
aCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0IGNvdWxkbid0IHJlbW92ZSBzdWJzY3JpcHRp
b24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7cHVibGljfXMgY29kZTogJWxsZCkiLCB0b3Bp
Yy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4uVVRGOFN0cmluZyA/OiAibm9uZSIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlVG9waWNMaXN0cyhtX2Nvbm5lY3Rpb24sIG1f
ZGF0YWJhc2UsIFtzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogZW51bSBjbGFzcyBDb250
ZW50RW5jb2RpbmcgewogICAgIEVtcHR5LAogICAgIEFFU0dDTSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMDI4MDg0ZTUyYjRhMGRiYjNjMTQ5YmU2Yzk3MzZmNzU3
NWU3ODdiMy4uMmNkMTgzZDMyNGJlOTE3MDZkOWMwNGViODFiNzBhYmZkMWY4OGY5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTgwLDYg
KzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xp
ZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJv
b2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQg
Z2V0UHVzaFN1YnNjcmlwdGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4m
JiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKENsaWVudENv
bm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlT
ZW5kZXIpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rp
b24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludCk+JiYpOwogCiAgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVj
dGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpp
bmRleCBhZGQ2ZTNkOGFkZmVhODk5ODg4ZjRiYWY2MWFjYzA1MzEzNjNkY2M1Li41NjRkOGE2OTU4
ZDlhNWM3NWFkMmQ3YzQ5MWU2MTY1Yzk1MDk3N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLm1tCkBAIC0xMTcsNiArMTE3LDExIEBAIEFSR1VNRU5UUyhVUkwpCiBSRVBM
WShjb25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpCiBFTkQK
IAorRlVOQ1RJT04oaW5jcmVtZW50U2lsZW50UHVzaENvdW50KQorQVJHVU1FTlRTKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKGludCkKK0VORAorCiAjdW5kZWYgRlVOQ1RJT04K
ICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTk5LDYgKzIwNCwxMyBAQCBXZWJQ
dXNoRDo6RW5jb2RlZE1lc3NhZ2UgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZTo6ZW5jb2RlUmVwbHko
Y29uc3QgRXhwZWN0ZWQ8dWludAogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0K
IAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluY3JlbWVudFNpbGVudFB1c2hDb3VudDo6ZW5j
b2RlUmVwbHkoaW50IHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29k
ZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVy
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEluZm8+CkBAIC00MDEsNiArNDEzLDkgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1l
c3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgogICAgICAgICBoYW5kbGVX
ZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGU+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVy
KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVu
dFB1c2hDb3VudDoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3Nh
Z2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ+KGNsaWVudENvbm5lY3Rpb24sIGVuY29k
ZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIApAQCAtNjI2LDYgKzY0MSwxOCBAQCB2b2lkIERhZW1vbjo6Z2V0UHVzaFBlcm1pc3Npb25T
dGF0ZShDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjbwogI2VuZGlm
CiB9CiAKK3ZvaWQgRGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoQ2xpZW50Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIHJlcGx5U2VuZGVyKQor
eworICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShbdGhpcywgYnVuZGxlSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKSwgc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCByZXBseVNlbmRlciA9IFdURk1vdmUo
cmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fcHVzaFNlcnZpY2UpIHsK
KyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1
bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgfSk7Cit9CisKIENsaWVudENvbm5lY3Rpb24qIERhZW1vbjo6dG9DbGllbnRDb25uZWN0aW9u
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBhdXRvIGNsaWVudENvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NmIwNGZjMWFhNDhjY2Q3YWY0YjYy
MDE0MmQ0Zjg3MTEzYzk1OTIuLmJlNWZhZjkxYzc5NDE2MTQ5MmVlMTI3NmViMzU0YjI2Y2ZjY2Y5
NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAyMi0wMi0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyBwdXNoIHRlc3RzIHRv
IHNob3cgYSBub3RpZmljYXRpb24uIEFkZGVkIGEgbmV3IHRlc3QgY2FzZSB0byBtYWtlIHN1cmUg
dGhhdAorICAgICAgICBzdWJzY3JpcHRpb25zIGFyZSByZW1vdmVkIHdoZW4gYW4gb3JpZ2luIHJl
YWNoZXMgaXRzIHF1b3RhIG9mIHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6bWFrZVRlbXBvcmFyeURhdGFiYXNlUGF0aCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpnZXRUb3BpY3NTeW5jKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRh
YmFzZVRlc3Q6OmdldFRvcGljcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJh
c2VUZXN0OjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNlVGVzdDo6aW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6Om9yaWdpbiBjb25zdCk6CisKIDIwMjItMDIt
MTcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSW5jcmVhc2UgdGltZW91dCB0byBhY2NvdW50IGZvciBNSVBTIHNsb3duZXNzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0IGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzLnR4dAppbmRleCA5MjZkNTZlODhhNDJiOTYyMDQ1ODQwYmViMmUzY2Vj
ODgxNTMyYzAzLi40YWM3Y2I4MDFmYjQ1YTFmMWIyNGY1YWNjNDk5ODU3NjIyNGRkYmRiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlcy50eHQKQEAgLTI1LDUgKzI1LDYgQEAgRGVwcmVjYXRlZEdsb2JhbFZh
bHVlcy5jcHAKIEphdmFTY3JpcHRUZXN0LmNwcAogUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiBUZXN0
c0NvbnRyb2xsZXIuY3BwCitUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiBUZXN0VXRpbGl0
aWVzLmNwcAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1YzY0ZDE2MGNjMTU1NjNhNmE0ZDhmNDg2ZjNhYTI5Mzkz
ZGM0MwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgorCisjaW5j
bHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFdLRGljdGlvbmFyeVJl
ZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSktPm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7Cit9CisKK1Rl
c3ROb3RpZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKFZlY3RvcjxX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+JiYgbWFuYWdlcnMpCisgICAgOiBtX21hbmFnZXJzKFdU
Rk1vdmUobWFuYWdlcnMpKQorICAgICwgbV9wZXJtaXNzaW9ucyhhZG9wdFdLKFdLTXV0YWJsZURp
Y3Rpb25hcnlDcmVhdGUoKSkpCit7CisgICAgbV9wcm92aWRlciA9IHsKKyAgICAgICAgeyAwLCB0
aGlzIH0sCisgICAgICAgIDAsIC8vIHNob3dXZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8g
Y2xvc2VXZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8gZGlkRGVzdHJveU5vdGlmaWNhdGlv
bgorICAgICAgICAwLCAvLyBhZGROb3RpZmljYXRpb25NYW5hZ2VyCisgICAgICAgIDAsIC8vIHJl
bW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgJlRlc3RXZWJLaXRBUEk6Om5vdGlmaWNh
dGlvblBlcm1pc3Npb25zLAorICAgICAgICAwLCAvLyBjbGVhck5vdGlmaWNhdGlvbnMKKyAgICB9
OworCisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgJm1fcHJvdmlkZXIuYmFzZSk7Cit9
CisKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigp
Cit7CisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgbnVsbHB0cik7Cit9CisKK1dLRGlj
dGlvbmFyeVJlZiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCkKK3sKKyAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsKKyAgICByZXR1cm4g
bV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwordm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyAg
ICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKKyAg
ICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOworICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9w
ZXJtaXNzaW9ucy5nZXQoKSwgd2tPcmlnaW5TdHJpbmcuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7
CisKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJv
bVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQoKSkpOworICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBk
YXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFnZXIsIHdrT3JpZ2luLmdldCgpLCBhbGxvd2VkKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIwMWQ2ODFjMmE3NDg3
YzBiY2Q2MWFmY2FmM2FkOWI0M2ZjZTI3YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rp
b25hcnkuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmPiYmKTsKKyAgICB+VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CisK
KyAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICB2b2lk
IHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CisKK3By
aXZhdGU6CisgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9tYW5hZ2VyczsK
KyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25zOwor
ICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOworfTsKKworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA5YzM5ZDI0OTc0MzI5Mjc4NGFkOWM4NTNkMDI3YTc1OWNiN2I0
NDdkLi5lYWNhOTJlZjE4MTY4N2Q2N2M5MmEwYTVhNzM0OGY0MDRiYTUzZDYzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMjk4MCw2ICsyOTgwLDggQEAKIAkJRTVBQThEMUMyNTE1MUNDNjAw
NTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0ZUlu
cHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNEMjQ1RTcy
MkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCQ2hlY2twb2ludFdBTC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUI0RDMyMDcyN0MwNDU0MzAwODFBOEU0IC8q
IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjRE
MzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFQjlBRDhDNjI3NjQ2RTczMDBEODkzQTQgLyogUHVzaERhdGFiYXNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hEYXRhYmFzZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQ
dXNoTWVzc2FnZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0
by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5RTQx
N0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjY2LDYgKzMy
NjgsOCBAQAogCQkJCUJDMTMxODgzMTE3MTE0QTgwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGll
cy5oICovLAogCQkJCUJDOTA5NTFCMTI1NTMzRDcwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXcu
aCAqLywKIAkJCQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAgLyogVGVzdC5oICovLAorCQkJCUVC
NEQzMjA3MjdDMDQ1NDMwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICov
LAorCQkJCUVCNEQzMjA4MjdDMDQ1NDQwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuaCAqLywKIAkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVy
LmNwcCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVy
LmggKi8sCiAJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuY3Bw
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hE
YXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFi
YXNlLmNwcAppbmRleCA3MGJjZTM5N2MyMDUyMTBlM2E1Njc3NThhNmI3N2EzYjJkMzAyOWMyLi4x
MDZiZWQzNjcxM2FlYzE3ZDZlZDQ3OWIyZjRlZGZiZThjMmIxYjVhIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcApAQCAtMzUsMTgg
KzM1LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAKLXN0YXRpYyBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdl
dFRvcGljc0J5V2FrZVN0YXRlU3luYyhQdXNoRGF0YWJhc2UmIGRhdGFiYXNlKQorc3RhdGljIFN0
cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCkKK3sKKyAgICBGaWxlU3lzdGVtOjpQbGF0
Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5U
ZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworc3RhdGljIFZl
Y3RvcjxTdHJpbmc+IGdldFRvcGljc1N5bmMoUHVzaERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAg
ICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1Rv
cGljTWFwIGdldFJlc3VsdDsKKyAgICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CiAKLSAgICBkYXRh
YmFzZS5nZXRUb3BpY3NCeVdha2VTdGF0ZShbJmRvbmUsICZnZXRSZXN1bHRdKFB1c2hEYXRhYmFz
ZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAmJiByZXN1bHQpIHsKLSAgICAgICAgZ2V0UmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpOworICAgIGRhdGFiYXNlLmdldFRvcGljcyhbJmRvbmUsICZ0b3Bp
Y3NdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgdG9waWNzID0gV1RGTW92ZShyZXN1bHQpOwog
ICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9KTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogCi0g
ICAgcmV0dXJuIGdldFJlc3VsdDsKKyAgICByZXR1cm4gdG9waWNzOwogfQogCiBjbGFzcyBQdXNo
RGF0YWJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewpAQCAtNTQsMzAgKzYyLDI5IEBA
IHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaERhdGFiYXNlPiBkYjsKIAogICAgIFB1
c2hSZWNvcmQgcmVjb3JkMSB7CisgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCks
CisgICAgICAgICJjb20uYXBwbGUud2ViYXBwIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBw
bGUuY29tIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL2lwaG9uZSJfcywKKyAg
ICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MiJfcywKKyAgICAgICAgInRvcGljMSJfcywKKyAg
ICAgICAgeyA1LCA2IH0sCisgICAgICAgIHsgNiwgNyB9LAorICAgICAgICB7IDcsIDggfSwKKyAg
ICAgICAgeyA4LCA5IH0KKyAgICB9OworICAgIFB1c2hSZWNvcmQgcmVjb3JkMiB7CiAgICAgICAg
IFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCiAgICAgICAgICJjb20uYXBwbGUuU2FmYXJp
Il9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAogICAgICAgICAiaHR0cHM6
Ly93d3cuYXBwbGUuY29tL21hYyJfcywKICAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MSJf
cywKLSAgICAgICAgInRvcGljMSJfcywKKyAgICAgICAgInRvcGljMiJfcywKICAgICAgICAgeyAw
LCAxIH0sCiAgICAgICAgIHsgMSwgMiB9LAogICAgICAgICB7IDIsIDMgfSwKICAgICAgICAgeyA0
LCA1IH0sCiAgICAgICAgIGNvbnZlcnRTZWNvbmRzVG9FcG9jaFRpbWVTdGFtcCgxNjQzMzUwMDAw
KSwKLSAgICAgICAgUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYwotICAgIH07Ci0gICAgUHVz
aFJlY29yZCByZWNvcmQyIHsKLSAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwK
LSAgICAgICAgImNvbS5hcHBsZS53ZWJhcHAiX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBs
ZS5jb20iX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20vaXBob25lIl9zLAotICAg
ICAgICAiaHR0cHM6Ly9wdXNoRW5kcG9pbnQyIl9zLAotICAgICAgICAidG9waWMyIl9zLAotICAg
ICAgICB7IDUsIDYgfSwKLSAgICAgICAgeyA2LCA3IH0sCi0gICAgICAgIHsgNywgOCB9LAotICAg
ICAgICB7IDgsIDkgfQogICAgIH07CiAgICAgUHVzaFJlY29yZCByZWNvcmQzIHsKICAgICAgICAg
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKQEAgLTE2NywxNSArMTc0LDQzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJvd0lkZW50aWZpZXJzOwogICAgIH0KIAotICAgIFB1c2hEYXRh
YmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0VG9waWNzQnlXYWtlU3RhdGUoKQorICAg
IFZlY3RvcjxTdHJpbmc+IGdldFRvcGljcygpCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0VG9w
aWNzQnlXYWtlU3RhdGVTeW5jKCpkYik7CisgICAgICAgIHJldHVybiBnZXRUb3BpY3NTeW5jKCpk
Yik7CisgICAgfQorCisgICAgVmVjdG9yPFB1c2hSZWNvcmQ+IHJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25z
dCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFs
c2U7CisgICAgICAgIFZlY3RvcjxQdXNoUmVjb3JkPiByZW1vdmVkUmVjb3JkczsKKworICAgICAg
ICBkYi0+cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGJ1
bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmcmVtb3ZlZFJlY29yZHNdKGF1dG8mJiBy
ZXN1bHQpIHsKKyAgICAgICAgICAgIHJlbW92ZWRSZWNvcmRzID0gV1RGTW92ZShyZXN1bHQpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4o
JmRvbmUpOworCisgICAgICAgIHJldHVybiByZW1vdmVkUmVjb3JkczsKKyAgICB9CisKKyAgICBp
bnQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAgICAgICBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgICBkYi0+aW5jcmVtZW50U2lsZW50
UHVzaENvdW50KGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmY291bnRdKGludCBy
ZXN1bHQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0OworICAgICAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAg
IHJldHVybiBjb3VudDsKICAgICB9CiAKICAgICB2b2lkIFNldFVwKCkgZmluYWwKICAgICB7CiAg
ICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShT
UUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVf
cHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeworICAgICAgICBQdXNoRGF0YWJhc2U6OmNy
ZWF0ZShtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlx
dWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgewogICAgICAgICAgICAgZGIgPSBXVEZN
b3ZlKGRhdGFiYXNlKTsKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9KTsKQEAg
LTIwMCw4ICsyMzUsNyBAQCBzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB1c2hSZWNvcmQm
IGEsIGNvbnN0IFB1c2hSZWNvcmQmIGIpCiAgICAgICAgICYmIGEuY2xpZW50UHVibGljS2V5ID09
IGIuY2xpZW50UHVibGljS2V5CiAgICAgICAgICYmIGEuY2xpZW50UHJpdmF0ZUtleSA9PSBiLmNs
aWVudFByaXZhdGVLZXkKICAgICAgICAgJiYgYS5zaGFyZWRBdXRoU2VjcmV0ID09IGIuc2hhcmVk
QXV0aFNlY3JldAotICAgICAgICAmJiBhLmV4cGlyYXRpb25UaW1lID09IGIuZXhwaXJhdGlvblRp
bWUKLSAgICAgICAgJiYgYS53YWtlU3RhdGUgPT0gYi53YWtlU3RhdGU7CisgICAgICAgICYmIGEu
ZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0aW9uVGltZTsKIH0KIAogVEVTVF9GKFB1c2hEYXRh
YmFzZVRlc3QsIEluc2VydFJlY29yZCkKQEAgLTIxNCwxMSArMjQ4LDggQEAgVEVTVF9GKFB1c2hE
YXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKICAgICBleHBlY3RlZFJlY29yZDIuaWRlbnRpZmll
ciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4o
Mik7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQyID09ICppbnNlcnRSZXN1bHQyKTsK
IAotICAgIC8vIFNpbmNlIHJlY29yZDMgaXMgaW4gdGhlIHNhbWUgU3Vic2NyaXB0aW9uU2V0IGFz
IHJlY29yZDEsIGl0IHNob3VsZAotICAgIC8vIGluaGVyaXQgcmVjb3JkMSdzIHdha2Ugc3RhdGUu
CiAgICAgYXV0byBleHBlY3RlZFJlY29yZDMgPSByZWNvcmQzOwogICAgIGV4cGVjdGVkUmVjb3Jk
My5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50
aWZpZXJUeXBlPigzKTsKLSAgICBleHBlY3RlZFJlY29yZDMud2FrZVN0YXRlID0gZXhwZWN0ZWRS
ZWNvcmQxLndha2VTdGF0ZTsKICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZFJlY29yZDMgPT0gKmlu
c2VydFJlc3VsdDMpOwogCiAgICAgLy8gSW5zZXJ0aW5nIGEgcmVjb3JkIHdpdGggdGhlIHNhbWUg
KGJ1bmRsZUlELCBzY29wZSkgYXMgcmVjb3JkIDEgc2hvdWxkIGZhaWwuCkBAIC0yMzYsNiArMjY3
LDMwIEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBSZW1vdmVSZWNvcmQpCiAgICAgRVhQRUNU
X0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDIsIDMgfSkpOwog
fQogCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgUmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRp
ZmllckFuZFNlY3VyaXR5T3JpZ2luKQoreworICAgIC8vIHJlY29yZDIgYW5kIHJlY29yZDMgaGF2
ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2VjdXJpdHlPcmlnaW4uCisgICAgYXV0byByZW1vdmVk
UmVjb3JkcyA9IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdp
bihyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBib29sIGNv
bnRhaW5zUmVjb3JkMiA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQyLnRv
cGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3Bp
YzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMyA9IHJlbW92
ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQzLnRvcGljXShhdXRvJiByZWNvcmQpIHsK
KyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3Vu
ZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkMik7CisgICAgRVhQRUNUX1RSVUUo
Y29udGFpbnNSZWNvcmQzKTsKKyAgICBFWFBFQ1RfRVEocmVtb3ZlZFJlY29yZHMuc2l6ZSgpLCAy
dSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90
PiB7IDEgfSkpOworCisgICAgLy8gSW5zZXJ0aW5nIGEgbmV3IHJlY29yZCBzaG91bGQgZ2V0IGEg
bmV3IHJvd2lkLgorICAgIFB1c2hSZWNvcmQgcmVjb3JkNCA9IHJlY29yZDI7CisgICAgYXV0byBp
bnNlcnRSZXN1bHQgPSBpbnNlcnRSZWNvcmQoV1RGTW92ZShyZWNvcmQ0KSk7CisgICAgRVhQRUNU
X1RSVUUoaW5zZXJ0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoaW5zZXJ0UmVzdWx0LT5pZGVudGlm
aWVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllclR5cGU+
KDQpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWludDY0
X3Q+IHsgMSwgNCB9KSk7Cit9CisKIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBHZXRSZWNvcmRC
eVRvcGljKQogewogICAgIGF1dG8gcmVzdWx0MSA9IGdldFJlY29yZEJ5VG9waWMocmVjb3JkMS50
b3BpYyk7CkBAIC0yNTksMjkgKzMxNCwyNyBAQCBURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0
UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUpCiAgICAgRVhQRUNUX0ZBTFNFKHJlc3Vs
dDMpOwogfQogCi1URVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0VG9waWNzQnlXYWtlU3RhdGUp
CitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0VG9waWNzKQogewotICAgIEhhc2hNYXA8U3Ry
aW5nLCBQdXNoV2FrZVN0YXRlPiBleHBlY3RlZCB7Ci0gICAgICAgIHsgInRvcGljMSIsIFB1c2hX
YWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfSwKLSAgICAgICAgeyAidG9waWMyIiwgUHVzaFdha2VT
dGF0ZTo6V2FraW5nIH0sCi0gICAgICAgIHsgInRvcGljMyIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9y
dHVuaXN0aWMgfQotICAgIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFB1c2hXYWtlU3RhdGU+IGFj
dHVhbDsKLQotICAgIGZvciAoY29uc3QgYXV0byYgW3dha2VTdGF0ZSwgdG9waWNzXSA6IGdldFRv
cGljc0J5V2FrZVN0YXRlKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0b3BpYyA6IHRv
cGljcykKLSAgICAgICAgICAgIGFjdHVhbC5hZGQodG9waWMsIHdha2VTdGF0ZSk7Ci0gICAgfQot
Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpOworICAgIFZlY3RvcjxTdHJpbmc+IGV4
cGVjdGVkIHsgInRvcGljMSJfcywgInRvcGljMiJfcywgInRvcGljMyJfcyB9OworICAgIEVYUEVD
VF9FUShnZXRUb3BpY3MoKSwgZXhwZWN0ZWQpOwogfQogCi1zdGF0aWMgU3RyaW5nIG1ha2VUZW1w
b3JhcnlEYXRhYmFzZVBhdGgoKQorVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluY3JlbWVudFNp
bGVudFB1c2hDb3VudCkKIHsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFu
ZGxlOwotICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNo
RGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKLSAgICByZXR1cm4gcGF0aDsKKyAgICBhdXRvIGNvdW50ID0gaW5jcmVtZW50U2lsZW50
UHVzaENvdW50KHJlY29yZDEuYnVuZGxlSUQsIHJlY29yZDEuc2VjdXJpdHlPcmlnaW4pOworICAg
IEVYUEVDVF9FUShjb3VudCwgMSk7CisKKyAgICAvLyByZWNvcmQyJ3MgYnVuZGxlSUQgYW5kIHNl
Y3VyaXR5T3JpZ2luIGFyZSBkaWZmZXJlbnQKKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1
c2hDb3VudChyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBF
WFBFQ1RfRVEoY291bnQsIDEpOworCisgICAgLy8gcmVjb3JkMiBhbmQgcmVjb3JkMyBoYXZlIHRo
ZSBzYW1lIGJ1bmRsZUlEIGFuZCBzZWN1cml0eU9yaWdpbi4KKyAgICBjb3VudCA9IGluY3JlbWVu
dFNpbGVudFB1c2hDb3VudChyZWNvcmQzLmJ1bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5T3JpZ2lu
KTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDIpOworCisgICAgY291bnQgPSBpbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQoIm5vbmV4aXN0ZW50Il9zLCAibm9uZXhpc3RlbnQiX3MpOworICAgIEVYUEVD
VF9FUShjb3VudCwgMCk7CiB9CiAKIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMp
CkBAIC0zMTQsNyArMzY3LDYgQEAgVEVTVChQdXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdodE9wcykK
ICAgICAgICAgICAgIHsgMiwgMyB9LAogICAgICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgICAg
ICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAgICAgICAg
ICBQdXNoV2FrZVN0YXRlOjpXYWtpbmcKICAgICAgICAgfTsKIAogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykgewpAQCAtMzM5LDggKzM5MSw3IEBAIFRF
U1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCiAgICAgICAgIFV0aWw6OnJ1bigmZG9u
ZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNyZWF0ZVJlc3VsdCk7CiAKLSAgICAgICAgYXV0byBn
ZXRSZXN1bHQgPSBnZXRUb3BpY3NCeVdha2VTdGF0ZVN5bmMoKmNyZWF0ZVJlc3VsdCk7Ci0gICAg
ICAgIGF1dG8gdG9waWNzID0gZ2V0UmVzdWx0LnRha2UoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsK
KyAgICAgICAgYXV0byB0b3BpY3MgPSBnZXRUb3BpY3NTeW5jKCpjcmVhdGVSZXN1bHQpOwogICAg
ICAgICBFWFBFQ1RfRVEodG9waWNzLnNpemUoKSwgcmVjb3JkQ291bnQpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRl
eCBiNjcyOTY3OGFmOTk4NTdkMmFmZjkwYzNjYWU0M2U2ZmIyNDdjYWI0Li44Y2Y1OGRlZjg2NDY5
OTEyYjVhM2ZiMTlhZmZhZjI5M2E4Y2JkYmM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0yOSw3ICsyOSwxMCBAQAogI2ltcG9y
dCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQg
IlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uaD4KQEAgLTg5LDYgKzkyLDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0pOwogc2Vs
Zi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdpc3Ry
YXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CiAgICAgdHJ5IHsKICAgICAg
ICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWNl
aXZlZDogbnVsbCBkYXRhIik7CkBAIC0xMzgsNiArMTQyLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJl
UHVzaEV2ZW50KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0
V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJv
Y2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9u
TWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7Cisg
ICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAg
YXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRo
RXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIu
Z2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTE4OCw2ICsxOTUsNyBAQCBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWFk
eSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKKyAg
ICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAg
ICBpZiAoIWV2ZW50LmRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCB2YWx1ZSA9IGV2
ZW50LmRhdGEudGV4dCgpOwpAQCAtMjI1LDYgKzIzMyw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1
c2hFdmVudFdpdGhOb1BhZ2VzU3VjY2Vzc2Z1bCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNsZWFy
V2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAg
ICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
KHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRl
c3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZp
Y2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9y
aWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVz
aEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC0yNzAsNiArMjgx
LDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0aE5vUGFnZXNGYWlsKQogICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdlYnNp
dGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3Rp
ZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJl
ZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0
UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFu
ZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdl
IGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3
Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2ViUHVzaERhZW1vbi5tbQppbmRleCBiN2IzNGI2Y2FhNTQ3YmUzMmEzNzYyOGNjZjFhY2RlZWM2
ZjVkNjU5Li5hY2RiODQzZWI2YzVhYThjY2VlMGJmYjE1MjBiODRhMWRmNDlmNTFjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24u
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFl
bW9uLm1tCkBAIC0yOSwxMCArMjksMTIgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgi
CiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
PgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg+CkBAIC00NDAsNiArNDQyLDkgQEAgcHJv
dGVjdGVkOgogICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgfSB9
CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKSk7
CiAKKyAgICAgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8VGVzdFdlYktp
dEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyPihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5h
Z2VyUmVmPiB7IFtbbV9jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFu
YWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29y
a2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgICAgICBtX25vdGlmaWNhdGlvblByb3Zp
ZGVyLT5zZXRQZXJtaXNzaW9uKG1fc2VydmVyLT5vcmlnaW4oKSwgdHJ1ZSk7CisKICAgICAgICAg
bV93ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm1fY29uZmlndXJhdGlvbi5nZXQo
KV0pOwogICAgICAgICBbbV93ZWJWaWV3IGxvYWRSZXF1ZXN0Om1fc2VydmVyLT5yZXF1ZXN0KCld
OwogICAgIH0KQEAgLTQ0OSwxMiArNDU0LDQzIEBAIHByb3RlY3RlZDoKICAgICAgICAgY2xlYW5V
cFRlc3RXZWJQdXNoRChtX3RlbXBEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KIAorICAgIFJldGFp
blB0cjxOU0RpY3Rpb25hcnk+IGluamVjdFB1c2hNZXNzYWdlKE5TRGljdGlvbmFyeSAqcHVzaFVz
ZXJJbmZvKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNjb3BlID0gbV9zZXJ2ZXItPnJlcXVlc3Qo
KS5VUkwuYWJzb2x1dGVTdHJpbmc7CisgICAgICAgIFN0cmluZyB0b3BpYyA9ICJjb20uYXBwbGUu
V2ViS2l0LlRlc3RXZWJLaXRBUEkgIl9zdHIgKyBzY29wZTsKKyAgICAgICAgaWQgb2JqID0gQHsK
KyAgICAgICAgICAgIEAidG9waWMiOiAoTlNTdHJpbmcgKil0b3BpYywKKyAgICAgICAgICAgIEAi
dXNlckluZm8iOiBwdXNoVXNlckluZm8KKyAgICAgICAgfTsKKyAgICAgICAgTlNEYXRhICpkYXRh
ID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRpb25zOjAg
ZXJyb3I6bnVsbHB0cl07CisKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxj
b25zdCBjaGFyICo+KGRhdGEuYnl0ZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YS5sZW5n
dGgpIH07CisgICAgICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92
ZShtZXNzYWdlKSk7CisKKyAgICAgICAgYXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFu
ZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVt
b24uc2VydmljZSIpOworICAgICAgICBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5
KHV0aWxpdHlDb25uZWN0aW9uLmdldCgpLCBNZXNzYWdlVHlwZTo6SW5qZWN0RW5jcnlwdGVkUHVz
aE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVkTWVzc2FnZSk7CisKKyAgICAgICAgLy8gRmV0Y2gg
cHVzaCBtZXNzYWdlcworICAgICAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZXMgPSBmYWxzZTsK
KyAgICAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4+IG1lc3Nh
Z2VzOworICAgICAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0Fy
cmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKKyAgICAgICAgICAgIG1lc3NhZ2Vz
ID0gcmF3TWVzc2FnZXM7CisgICAgICAgICAgICBnb3RNZXNzYWdlcyA9IHRydWU7CisgICAgICAg
IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2VzKTsKKwor
ICAgICAgICBFWFBFQ1RfRVEoW21lc3NhZ2VzIGNvdW50XSwgMXUpOworCisgICAgICAgIHJldHVy
biBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDowXTsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNV
Ukw+IG1fdGVtcERpcmVjdG9yeTsKICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBt
X2RhdGFTdG9yZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gbV9jb25m
aWd1cmF0aW9uOwogICAgIFJldGFpblB0cjxUZXN0TWVzc2FnZUhhbmRsZXI+IG1fdGVzdE1lc3Nh
Z2VIYW5kbGVyOwogICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25TY3JpcHRNZXNzYWdlSGFuZGxl
cj4gbV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dFdlYktpdEFQSTo6SFRUUFNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRl
c3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcj4gbV9ub3RpZmljYXRpb25Qcm92
aWRlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtX3dlYlZpZXc7CiB9OwogCkBAIC00OTcs
NiArNTMzLDcgQEAgdm9pZCBXZWJQdXNoREluamVjdGVkUHVzaFRlc3Q6OnJ1blRlc3QoTlNTdHJp
bmcgKmV4cGVjdGVkTWVzc2FnZSwgTlNEaWN0aW9uYXJ5ICoKICAgICB9KTsKICAgICBzZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKICAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHNlbGYucmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIp
OwogICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgcG9ydC5w
b3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTUyMCw0MyArNTU3LDIwIEBAIHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0Ojpy
dW5UZXN0KE5TU3RyaW5nICpleHBlY3RlZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfV07
CiAKICAgICBsb2FkUmVxdWVzdChodG1sU291cmNlLCBzZXJ2aWNlV29ya2VyU291cmNlKTsKLQog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHkpOwogCi0gICAgU3RyaW5nIGJ1bmRs
ZUlkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwotICAgIFN0
cmluZyBzY29wZSA9IG1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5nOwotICAg
IFN0cmluZyB0b3BpYyA9IGJ1bmRsZUlkZW50aWZpZXIgKyAiICJfcyArIHNjb3BlOwotCi0gICAg
aWQgb2JqID0gQHsKLSAgICAgICAgQCJ0b3BpYyI6IChOU1N0cmluZyAqKXRvcGljLAotICAgICAg
ICBAInVzZXJJbmZvIjogcHVzaFVzZXJJbmZvCi0gICAgfTsKLSAgICBOU0RhdGEgKmRhdGEgPSBb
TlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJv
cjpudWxscHRyXTsKLQotICAgIFN0cmluZyBtZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgY2hh
ciAqPihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGEubGVuZ3RoKSB9Owot
ICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7
Ci0KLSAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVj
dGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7Ci0g
ICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29ubmVjdGlvbi5n
ZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9yVGVzdGluZywg
ZW5jb2RlZE1lc3NhZ2UpOwotCi0gICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcwotICAgIF9fYmxv
Y2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNlOwotICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJy
YXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKLSAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRp
bmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsK
LSAgICAgICAgbWVzc2FnZXMgPSByYXdNZXNzYWdlczsKLSAgICAgICAgZ290TWVzc2FnZXMgPSB0
cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZXMp
OwotCi0gICAgRVhQRUNUX0VRKFttZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBhdXRvIG1lc3Nh
Z2UgPSBpbmplY3RQdXNoTWVzc2FnZShwdXNoVXNlckluZm8pOwogCi0gICAgLy8gSGFuZGxlIHB1
c2ggbWVzc2FnZQogICAgIF9fYmxvY2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNl
OwotICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9i
amVjdF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIF9fYmxvY2sgYm9v
bCBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IGZhbHNlOworICAgIFttX2RhdGFTdG9yZSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29s
IHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IHJlc3VsdDsK
ICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RXhwZWN0ZWRNZXNzYWdlKTsKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKworICAgIEVYUEVDVF9UUlVF
KHB1c2hNZXNzYWdlUHJvY2Vzc2VkUmVzdWx0KTsKIH0KIAogVEVTVF9GKFdlYlB1c2hESW5qZWN0
ZWRQdXNoVGVzdCwgSGFuZGxlSW5qZWN0ZWRFbXB0eVB1c2gpCkBAIC03MDcsNiArNzIxLDc3IEBA
IFRFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlVGVzdCkKICAgICBBU1NFUlRfVFJVRShb
b2JqIGlzRXF1YWw6ZXhwZWN0ZWRdKTsKIH0KIAorVEVTVF9GKFdlYlB1c2hEVGVzdCwgVG9vTWFu
eVNpbGVudFB1c2hlc0NhdXNlc1Vuc3Vic2NyaWJlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBodG1sU291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGxldCBwdXNoTWFuYWdlciA9IG51bGw7CisKKyAg
ICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihhc3luYyAo
KSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLnJlYWR5OworICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyOwor
ICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHB1c2hNYW5hZ2VyLnN1YnNjcmli
ZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAg
ICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAo
ZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3Vs
dCk7CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBnZXRQdXNoU3Vic2NyaXB0aW9uKCkKKyAgICB7
CisgICAgICAgIHB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpLnRoZW4oKHN1YnNjcmlwdGlv
bikgPT4geworICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5w
b3N0TWVzc2FnZShzdWJzY3JpcHRpb24gPyAiU3Vic2NyaWJlZCIgOiAiVW5zdWJzY3JpYmVkIik7
CisgICAgICAgIH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICApSFRNTCI7CisgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgPSAic2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdwdXNoJywgKGV2ZW50KSA9PiB7IH0pOyI7CisKKyAgICBfX2Jsb2NrIFJldGFp
blB0cjxpZD4gbWVzc2FnZSA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZSA9IGZh
bHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVy
Ol4oaWQgcmVjZWl2ZWRNZXNzYWdlKSB7CisgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlZE1lc3Nh
Z2U7CisgICAgICAgIGdvdE1lc3NhZ2UgPSB0cnVlOworICAgIH1dOworCisgICAgbG9hZFJlcXVl
c3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtlclNjcmlwdFNvdXJjZSk7CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIEFTU0VSVF9UUlVFKFttZXNzYWdl
IGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IFdlYktpdDo6V2ViUHVzaEQ6Om1heFNpbGVudFB1c2hDb3VudDsgaSsrKSB7CisgICAgICAg
IGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgW21fd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJnZXRQdXNoU3Vic2NyaXB0aW9uKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJy
b3IqKSB7IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2Up
OworICAgICAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJTdWJzY3Jp
YmVkIl0pOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBwcm9jZXNzZWRQdXNoID0gZmFsc2U7Cisg
ICAgICAgIF9fYmxvY2sgYm9vbCBwdXNoUmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGF1dG8gbWVz
c2FnZSA9IGluamVjdFB1c2hNZXNzYWdlKEB7IH0pOworCisgICAgICAgIFttX2RhdGFTdG9yZSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29s
IHJlc3VsdCkgeworICAgICAgICAgICAgcHVzaFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAg
IHByb2Nlc3NlZFB1c2ggPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwcm9jZXNzZWRQdXNoKTsKKworICAgICAgICAvLyBXZWJDb250ZW50IHNo
b3VsZCBmYWlsIHByb2Nlc3NpbmcgdGhlIHB1c2ggc2luY2Ugbm8gbm90aWZpY2F0aW9uIHdhcyBz
aG93bi4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHB1c2hSZXN1bHQpOworICAgIH0KKworICAgIGdv
dE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbbV93ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImdl
dFB1c2hTdWJzY3JpcHRpb24oKSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciopIHsg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICBBU1NF
UlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJVbnN1YnNjcmliZWQiXSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykg
fHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRl
eCA3NWQyODJlYTllNDBkMjExNWFmMTk0OGFkM2Y4ZWI4ZmM2MzdjY2Q0Li5jNTNiNDM5ZWEzODEx
MDEyNTZiNWMyOGI1MjFhZjgzMDRkMjljZDM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgSFRUUFNlcnZlcihGdW5j
dGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAg
ICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcg
b3JpZ2luKCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KGNvbnN0IFN0cmluZyYg
cGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhMb2Nh
bGhvc3QoY29uc3QgU3RyaW5nJiBwYXRoID0gIi8iX3N0cikgY29uc3Q7CiAgICAgc2l6ZV90IHRv
dGFsUmVxdWVzdHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5t
bQppbmRleCA4OGQ4NmJmMWQwYzE5ZjBjY2YzMDVmZDA4NWRhYTRkNzg3MzRkNDkwLi42YzYxODQ4
YmEyZDYxNGM5YTc3NmU5M2U3MWM5MDdmNzlmYWI5Yzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zNzYsNiArMzc2LDExIEBAIGNvbnN0IGNoYXIqIEhUVFBT
ZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjaGVtZTsKIH0KIAorU3RyaW5nIEhU
VFBTZXJ2ZXI6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJXM6Ly8xMjcuMC4wLjE6JWQiLCBzY2hlbWUoKSwgcG9ydCgpXTsKK30KKwog
TlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29u
c3QKIHsKICAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzOi8vMTI3LjAuMC4xOiVk
JUAiLCBzY2hlbWUoKSwgcG9ydCgpLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXV07Cg==
</data>
<flag name="commit-queue"
          id="479705"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452616</attachid>
            <date>2022-02-18 19:43:27 -0800</date>
            <delta_ts>2022-02-18 20:23:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236863-20220218194326.patch</filename>
            <type>text/plain</type>
            <size>77776</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZWRkMzA4NzY2Y2Rj
YTQ0ZTk5ZTgzMzNkNDY1NGUyYTg1MTYwNC4uYjVhNzEyMzQ5YWRjNTczZDVhNjBmMDI4OWU0Y2Vm
NmNiY2I0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAyLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBQ
dXNoU3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHRoZSB1c2VyVmlzaWJsZU9ubHkgZmxh
ZyBzZXQuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgICAgcHVzaCBldmVudHMgc2hvdWxkIHJl
c3VsdCBpbiBhIHVzZXItZmFjaW5nIG5vdGlmaWNhdGlvbi4KKworICAgICAgICBUbyBlbmZvcmNl
IHRoaXMsIHdlIHVzZSBhIHF1b3RhIHN5c3RlbS4gQSBwdXNoIHN1YnNjcmlwdGlvbiBjYW4gcHJv
Y2VzcyB1cCB0byB0aHJlZSBzaWxlbnQKKyAgICAgICAgcHVzaGVzLiBBZnRlciB0aHJlZSBzaWxl
bnQgcHVzaGVzLCB3ZSByZW1vdmUgdGhlIHB1c2ggc3Vic2NyaXB0aW9uLiBUbyBjb250aW51ZSB0
byByZWNlaXZlCisgICAgICAgIHB1c2hlcywgdGhlIHVzZXIgbXVzdCBuYXZpZ2F0ZSBiYWNrIHRv
IHRoZSB3ZWJzaXRlIGFuZCB0aGUgc2l0ZSBtdXN0IHJlcXVlc3QgcGVybWlzc2lvbiB0bworICAg
ICAgICBzZW5kIHB1c2hlcyBhZ2Fpbi4KKworICAgICAgICBPcmlnaW5hbGx5IHdlIHdlcmUgZ29p
bmcgdG8gdXNlIGEgbW9yZSBjb21wbGljYXRlZCBxdW90YSBzeXN0ZW0gdGhhdCBtb3ZlZCBzdWJz
Y3JpcHRpb25zCisgICAgICAgIGZyb20gd2FraW5nIHRvIG5vbi13YWtpbmcgYmVmb3JlIGZpbmFs
bHkgdW5zdWJzY3JpYmluZywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgaXQgY291bGQgbGVhZAorICAg
ICAgICB0byBzdWJzY3JpcHRpb25zIGJlaW5nIGluIGEgcGFydGlhbGx5LXdvcmtpbmcgc3RhdGUg
dGhhdCB3b3VsZCBiZSBoYXJkIHRvIGV4cGxhaW4gYW5kIHJlYXNvbgorICAgICAgICBhYm91dC4g
QXMgYSByZXN1bHQsIEkndmUgcmVtb3ZlZCB0aGUgd2FrZVN0YXRlIGNvbHVtbiBmcm9tIFB1c2hE
YXRhYmFzZSBhbmQgcmVwbGFjZWQgaXQKKyAgICAgICAgYSBzaWxlbnRQdXNoQ291bnQgY29sdW1u
LgorCisgICAgICAgIFRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgc2VydmljZSB3b3JrZXIgaGFz
IHNob3duIGEgbm90aWZpY2F0aW9uIHdoaWxlIHByb2Nlc3NpbmcgYSBwdXNoCisgICAgICAgIGV2
ZW50LCB3ZSB1c2UgYSBib29sZWFuIGZsYWcgb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBU
aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGJlY2F1c2UKKyAgICAgICAgd2UgY3VycmVudGx5IG9u
bHkgcHJvY2VzcyBvbmUgcHVzaCBldmVudCBhdCBhIHRpbWUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudCk6CisKIDIwMjItMDItMTcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5n
IHdpdGggQU5HTEUgZW5hYmxlZCBzaW5jZSByMjg5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMGVmMzhjZDI3
NDdlNTc1NzgyZGYyNzA3NzNlY2ZjN2M3NzMyYmQuLjVkMzA2M2RiMWRiYTE5ZDA0OGVlNjJjMjg5
ODExNjNiMjg4ZmMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMTggIEJl
biBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBx
dW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0g
SWYgYSBwdXNoIGV2ZW50IGRvZXNuJ3QgcmVzdWx0IGluIGEgbm90aWZpY2F0aW9uIG9yIGlmIHRo
ZSBhc3NvY2lhdGVkIHByb21pc2UgcmVqZWN0cywKKyAgICAgICAgICAgdGhlbiB3ZSBub3QgaW5j
cmVtZW50IHRoZSBzaWxlbnQgcHVzaCBjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhhdCBvcmlnaW4u
CisgICAgICAgICAtIFB1c2hTZXJ2aWNlIG5vdyByZW1vdmVzIGEgc3Vic2NyaXB0aW9uIGlmIHRo
ZSBvcmlnaW4gaGFzIHJlYWNoZWQgaXRzIHF1b3RhIG9mIHNpbGVudAorICAgICAgICAgICBwdXNo
ZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxpbnQ+OjpjYWxs
UmVwbHkpOgorICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddKToKKyAgICAgICAgKiB3ZWJw
dXNoZC9QdXNoU2VydmljZS5tbToKKyAgICAgICAgKFdlYlB1c2hEOjp1cGRhdGVUb3BpY0xpc3Rz
KToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6Ok1lc3NhZ2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6OmVuY29kZVJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKwog
MjAyMi0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENyYXNoIHdoaWxlIGRlc3Ryb3lpbmcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcAppbmRl
eCA4YTFmNTNhYjQ4MGFlMGI0MDU5NjI2YmNhMGM0NmVlMDdjMzkyNWM1Li5mZDU3NDdiOWFjMTQx
OWVlYjJlZjg3NDE3ZTk2NTI0ZTRmNTgyZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwCkBAIC00MywxOSArNDMsMjQgQEAKICNkZWZp
bmUgUFVTSERCX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihQ
dXNoLCAiJXAgLSBQdXNoRGF0YWJhc2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpIFBVU0hEQl9SRUxFQVNFX0xPR19F
UlJPUigiRmFpbGVkIHRvIGJpbmQgc3RhdGVtZW50ICglZCk6ICVzIiwgbV9kYi0+bGFzdEVycm9y
KCksIG1fZGItPmxhc3RFcnJvck1zZygpKQogCisjZGVmaW5lIGtQdXNoUmVjb3JkQ29sdW1ucyAi
IHN1Yi5yb3dJRCwgc3MuYnVuZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1
Yi5lbmRwb2ludCwgc3ViLnRvcGljLCBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCBzdWIuc2hhcmVkQXV0aFNlY3JldCwg
c3ViLmV4cGlyYXRpb25UaW1lICIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3RleHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDE7CitzdGF0aWMgY29uc3Rl
eHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDI7CisjZGVmaW5lIGtDdXJyZW50
UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiMiIKIAogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAiUFJBR01BIGF1dG9f
dmFjdXVtPUlOQ1JFTUVOVEFMIl9zLAogICAgICJDUkVBVEUgVEFCTEUgU3Vic2NyaXB0aW9uU2V0
cygiCisgICAgIiAgcm93SUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCIKICAg
ICAiICBjcmVhdGlvblRpbWUgSU5UIE5PVCBOVUxMLCIKICAgICAiICBidW5kbGVJRCBURVhUIE5P
VCBOVUxMLCIKICAgICAiICBzZWN1cml0eU9yaWdpbiBURVhUIE5PVCBOVUxMLCIKLSAgICAiICB3
YWtlU3RhdGUgSU5UIE5PVCBOVUxMLCIKKyAgICAiICBzaWxlbnRQdXNoQ291bnQgSU5UIE5PVCBO
VUxMLCIKICAgICAiICBVTklRVUUoYnVuZGxlSUQsIHNlY3VyaXR5T3JpZ2luKSkiX3MsCiAgICAg
IkNSRUFURSBUQUJMRSBTdWJzY3JpcHRpb25zKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIgogICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEws
IgogICAgICIgIHN1YnNjcmlwdGlvblNldElEIElOVCBOT1QgTlVMTCwiCiAgICAgIiAgc2NvcGUg
VEVYVCBOT1QgTlVMTCwiCkBAIC02OCw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVy
YWwgcHVzaERhdGFiYXNlU2NoZW1hVjFTdGF0ZW1lbnRzW10gPSB7CiAgICAgIiAgZXhwaXJhdGlv
blRpbWUgSU5ULCIKICAgICAiICBVTklRVUUoc2NvcGUsIHN1YnNjcmlwdGlvblNldElEKSkiX3Ms
CiAgICAgIkNSRUFURSBJTkRFWCBTdWJzY3JpcHRpb25zX1N1YnNjcmlwdGlvblNldElEX0luZGV4
IE9OIFN1YnNjcmlwdGlvbnMoc3Vic2NyaXB0aW9uU2V0SUQpIl9zLAotICAgICJQUkFHTUEgdXNl
cl92ZXJzaW9uID0gMSJfcworICAgICJQUkFHTUEgdXNlcl92ZXJzaW9uID0gIiBrQ3VycmVudFB1
c2hEYXRhYmFzZVZlcnNpb25TdHJpbmcgIiJfcwogfTsKIAogUHVzaFJlY29yZCBQdXNoUmVjb3Jk
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCkBAIC04NCw4ICs4OSw3IEBAIFB1c2hSZWNvcmQgUHVz
aFJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogICAgICAgICBjbGllbnRQdWJsaWNLZXks
CiAgICAgICAgIGNsaWVudFByaXZhdGVLZXksCiAgICAgICAgIHNoYXJlZEF1dGhTZWNyZXQsCi0g
ICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtlU3RhdGUKKyAgICAgICAgZXhwaXJh
dGlvblRpbWUKICAgICB9OwogfQogCkBAIC0xMDIsOCArMTA2LDcgQEAgUHVzaFJlY29yZCBQdXNo
UmVjb3JkOjppc29sYXRlZENvcHkoKSAmJgogICAgICAgICBXVEZNb3ZlKGNsaWVudFB1YmxpY0tl
eSksCiAgICAgICAgIFdURk1vdmUoY2xpZW50UHJpdmF0ZUtleSksCiAgICAgICAgIFdURk1vdmUo
c2hhcmVkQXV0aFNlY3JldCksCi0gICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtl
U3RhdGUKKyAgICAgICAgZXhwaXJhdGlvblRpbWUKICAgICB9OwogfQogCkBAIC0yODAsNyArMjgz
LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiBy
ZWNvcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgaW50NjRfdCBzdWJzY3JpcHRp
b25TZXRJRCA9IDA7CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93aWQsIHdha2VTdGF0ZSBGUk9NIFN1YnNjcmlwdGlv
blNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAg
ICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93SUQg
RlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmln
aW4gPSA/Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3Fs
LT5iaW5kVGV4dCgxLCByZWNvcmQuYnVuZGxlSUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
ICAgIHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLnNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVf
T0spIHsKQEAgLTI4OSwxOSArMjkyLDE2IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNv
cmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09
IFNRTElURV9ST1cpCiAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNv
bHVtbkludDY0KDApOwotICAgICAgICAgICAgICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0aWNf
Y2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxKSk7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIXN1YnNjcmlwdGlvblNldElEKSB7Ci0gICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlw
dGlvblNldHMgVkFMVUVTKD8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxV
RVMoTlVMTCwgPywgPywgPywgMCkiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5idW5kbGVJRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2Vj
dXJpdHlPcmlnaW4pICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZElu
dCg0LCBzdGF0aWNfY2FzdDxpbnQ+KHJlY29yZC53YWtlU3RhdGUpKSAhPSBTUUxJVEVfT0spIHsK
KyAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMsIHJlY29yZC5zZWN1cml0eU9yaWdp
bikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJ
TkRfRVJST1IoKTsKICAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+IHsgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgUHVzaERhdGFiYXNl
OjppbnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFMVUVTKD8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9ucyBWQUxVRVMo
TlVMTCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgICAgICAgICAgaWYg
KCFzcWwKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIp
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgyLCBzdWJz
Y3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LCkBAIC00MjMsMjEgKzQyMywyMCBAQCB2b2lkIFB1
c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKFB1c2hTdWJzY3JpcHRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZQogICAgIH0pOwogfQogCi1zdGF0aWMgUHVzaFJlY29yZCBtYWtlUHVz
aFJlY29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHNxbCkKK3N0YXRp
YyBQdXNoUmVjb3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZSYgc3FsLCBpbnQgY29sdW1uSW5kZXgpCiB7CiAgICAgUHVzaFJlY29yZCByZWNvcmQ7
Ci0gICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoMCkpOwotICAgIHJlY29yZC5i
dW5kbGVJRCA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICByZWNvcmQuc2VjdXJpdHlPcmlnaW4g
PSBzcWwtPmNvbHVtblRleHQoMik7Ci0gICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0
KDMpOwotICAgIHJlY29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dCg0KTsKLSAgICByZWNv
cmQudG9waWMgPSBzcWwtPmNvbHVtblRleHQoNSk7Ci0gICAgcmVjb3JkLnNlcnZlclZBUElEUHVi
bGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKDYpOwotICAgIHJlY29yZC5jbGllbnRQdWJsaWNLZXkg
PSBzcWwtPmNvbHVtbkJsb2IoNyk7Ci0gICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwt
PmNvbHVtbkJsb2IoOCk7Ci0gICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVt
bkJsb2IoOSk7Ci0gICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9t
VmFsdWUoc3FsLT5jb2x1bW5WYWx1ZSgxMCkpOwotICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0
aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxMSkpOworICAgIHJlY29yZC5p
ZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZp
ZXJUeXBlPihzcWwtPmNvbHVtbkludDY0KGNvbHVtbkluZGV4KyspKTsKKyAgICByZWNvcmQuYnVu
ZGxlSUQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNlY3Vy
aXR5T3JpZ2luID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5z
Y29wZSA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuZW5kcG9p
bnQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnRvcGljID0g
c3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zZXJ2ZXJWQVBJRFB1
YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuY2xp
ZW50UHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAgIHJlY29y
ZC5jbGllbnRQcml2YXRlS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAg
IHJlY29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4Kysp
OworICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbVZhbHVlKHNx
bC0+Y29sdW1uVmFsdWUoY29sdW1uSW5kZXgrKykpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0K
QEAgLTQ0NywxMCArNDQ2LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5VG9waWMo
Y29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBkaXNwYXRj
aE9uV29ya1F1ZXVlKFt0aGlzLCB0b3BpYyA9IGNyb3NzVGhyZWFkQ29weSh0b3BpYyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIC8vIEZvcmNlIFNRTGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3Bl
KSBpbmRleCBmaXJzdCB2aWEgQ1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBz
dWIucm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIu
ZW5kcG9pbnQsIHN1Yi50b3BpYywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVi
bGljS2V5LCBzdWIuY2xpZW50UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAg
ICAgICAgICAgIiAgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mu
d2FrZVN0YXRlICIKKyAgICAgICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAg
ICAgICAgICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBK
T0lOIFN1YnNjcmlwdGlvblNldHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRp
b25TZXRJRCA9IHNzLnJvd2lkICIKQEAgLTQ2Nyw3ICs0NjMsNyBAQCB2b2lkIFB1c2hEYXRhYmFz
ZTo6Z2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRG
cm9tUm93KHNxbCkpOworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTQ3NiwxMCArNDcyLDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5QnVu
ZGxlSWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGMKICAgICBkaXNw
YXRjaE9uV29ya1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJ
RCksIHNjb3BlID0gY3Jvc3NUaHJlYWRDb3B5KHNjb3BlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2Ug
U1FMaXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlwdGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZp
YSBDUk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
Ci0gICAgICAgICAgICAiU0VMRUNUICIKLSAgICAgICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVu
ZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRv
cGljLCAiCi0gICAgICAgICAgICAiICBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCAiCi0gICAgICAgICAgICAiICBzdWIu
c2hhcmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRpb25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAg
ICAgICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3JkQ29sdW1ucwogICAgICAgICAgICAgIkZST00g
U3Vic2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAgICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9u
U2V0cyBzcyAiCiAgICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93
aWQgIgpAQCAtNDk2LDcgKzQ4OSw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeUJ1
bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsKSk7Cisg
ICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1h
a2VQdXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsKICAgICB9KTsKIH0KIApAQCAtNTEyLDE3ICs1
MDUsMTEgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSGFzaFNldDxQdXNoU3Vic2NyaXB0aW8KICAgICB9KTsKIH0KIAotdm9pZCBQdXNo
RGF0YWJhc2U6OmdldFRvcGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVz
aFdha2VTdGF0ZVRvVG9waWNNYXAmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFB1c2hE
YXRhYmFzZTo6Z2V0VG9waWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgY29uc3RleHByIGludCBudW1iZXJPZldha2VTdGF0ZXMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsKLSAgICAgICAgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+LCBudW1iZXJPZldha2VTdGF0ZXM+IHRvcGljc0J5V2FrZVN0YXRlKG51
bWJlck9mV2FrZVN0YXRlcyk7IC8vIHVzZWQgYmVjYXVzZSBIYXNoTWFwOjppc29sYXRlZENvcHkg
ZG9lc24ndCBleGlzdAotCi0gICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1
ZSgKLSAgICAgICAgICAgICJTRUxFQ1Qgc3Mud2FrZVN0YXRlLCBzdWIudG9waWMgIgotICAgICAg
ICAgICAgIkZST00gU3Vic2NyaXB0aW9ucyBzdWIgIgotICAgICAgICAgICAgIkpPSU4gU3Vic2Ny
aXB0aW9uU2V0cyBzcyAiCi0gICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0g
c3Mucm93aWQiX3MpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CisgICAgICAgIGF1
dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHRvcGljIEZST00gU3Vic2Ny
aXB0aW9ucyJfcyk7CiAgICAgICAgIGlmICghc3FsKSB7CiAgICAgICAgICAgICBQVVNIREJfUkVM
RUFTRV9MT0dfQklORF9FUlJPUigpOwogICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC01MzEsMjIgKzUxOCwxMTggQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFRv
cGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVzaFdha2VTdGF0ZVRvVG8K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdoaWxlIChzcWwtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBhdXRvIHB1c2hXYWtlU3RhdGUgPSBz
cWwtPmNvbHVtbkludCgwKTsKLSAgICAgICAgICAgIGF1dG8gdG9waWMgPSBzcWwtPmNvbHVtblRl
eHQoMSk7Ci0gICAgICAgICAgICBpZiAocHVzaFdha2VTdGF0ZSA+PSAwICYmIHB1c2hXYWtlU3Rh
dGUgPCBudW1iZXJPZldha2VTdGF0ZXMpCi0gICAgICAgICAgICAgICAgdG9waWNzQnlXYWtlU3Rh
dGVbcHVzaFdha2VTdGF0ZV0uYXBwZW5kKFdURk1vdmUodG9waWMpKTsKLSAgICAgICAgfQorICAg
ICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgICAgIHRvcGlj
cy5hcHBlbmQoc3FsLT5jb2x1bW5UZXh0KDApKTsKIAotICAgICAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgdG9waWNzQnlXYWtlU3RhdGUgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BpY3NCeVdh
a2VTdGF0ZSkpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUHVzaFdha2VTdGF0ZVRvVG9waWNN
YXAgcmVzdWx0OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxp
bnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsgKytpKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3RhdGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oaSksIFdURk1vdmUodG9waWNz
QnlXYWtlU3RhdGVbaV0pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0b3BpY3MgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZSh0b3BpY3MpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUodG9waWNzKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCit2
b2lkIFB1c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYg
YnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29ya1F1
ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3VyaXR5
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaW50
IHNpbGVudFB1c2hDb3VudCA9IDA7CisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiVVBEQVRFIFN1YnNj
cmlwdGlvblNldHMgU0VUIHNpbGVudFB1c2hDb3VudCA9IHNpbGVudFB1c2hDb3VudCArIDEgV0hF
UkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAg
ICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwg
c3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
ICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChz
cWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25N
YWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHNpbGVudFB1c2hD
b3VudCBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0
eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0
KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwgc3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9y
aWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9H
X0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQor
ICAgICAgICAgICAgICAgIHNpbGVudFB1c2hDb3VudCA9IHNxbC0+Y29sdW1uSW50KDApOworICAg
ICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2lsZW50UHVzaENvdW50
KTsKKyAgICB9KTsKK30KKwordm9pZCBQdXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25z
dCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQ
dXNoUmVjb3JkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29y
a1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3Vy
aXR5T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
VmVjdG9yPFB1c2hSZWNvcmQ+IHJlbW92ZWRSZWNvcmRzOworICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKwor
ICAgICAgICBpbnQ2NF90IHN1YnNjcmlwdGlvblNldElEID0gMDsKKworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCisgICAgICAgICAgICAg
ICAgIlNFTEVDVCBzdWIuc3Vic2NyaXB0aW9uU2V0SUQsICIga1B1c2hSZWNvcmRDb2x1bW5zCisg
ICAgICAgICAgICAgICAgIkZST00gU3Vic2NyaXB0aW9uU2V0cyBzcyAiCisgICAgICAgICAgICAg
ICAgIkpPSU4gU3Vic2NyaXB0aW9ucyBzdWIgIgorICAgICAgICAgICAgICAgICJPTiBzcy5yb3dp
ZCA9IHN1Yi5zdWJzY3JpcHRpb25TZXRJRCAiCisgICAgICAgICAgICAgICAgIldIRVJFIHNzLmJ1
bmRsZUlEID0gPyBBTkQgc3Muc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKyAgICAgICAgICAgIGlm
ICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwt
PmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAg
ICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNv
bXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNo
UmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgICAgICBzdWJzY3JpcHRpb25TZXRJRCA9IHNxbC0+Y29sdW1uSW50KDApOworICAgICAgICAg
ICAgICAgIHJlbW92ZWRSZWNvcmRzLmFwcGVuZChtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAx
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBh
dXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIkRFTEVURSBGUk9NIFN1YnNjcmlwdGlv
bnMgV0hFUkUgc3Vic2NyaXB0aW9uU2V0SUQgPSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3Fs
IHx8IHNxbC0+YmluZEludCgxLCBzdWJzY3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBW
ZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIFZlY3RvcjxQdXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00gU3Vic2NyaXB0aW9uU2V0
cyBXSEVSRSByb3dpZCA9ID8iX3MpOworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5k
SW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAg
ICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNoUmVj
b3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVjdG9y
PFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShy
ZW1vdmVkUmVjb3JkcykpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaAppbmRleCA4M2Q4OTgxZTAzMzM2YWMyNzY2OTZj
NmU1M2QxODkxYzViNTIwNjc3Li5hNmNlODc2NGZhYWZlYmU0ZmY2MTgxMjhkYjFhMDY5ZDY5YzVl
OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNl
LmgKQEAgLTQyLDE0ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2FrZSBz
dGF0ZSB0aGF0IGFwcGxpZXMgZm9yIGRldmljZXMgdGhhdCByYWNlLXRvLXNsZWVwLgotZW51bSBj
bGFzcyBQdXNoV2FrZVN0YXRlIDogdWludDhfdCB7Ci0gICAgV2FraW5nLCAvLyBBbGwgcHVzaGVz
IHdpbGwgd2FrZSBkZXZpY2UuCi0gICAgT3Bwb3J0dW5pc3RpYywgLy8gTG93IHByaW9yaXR5IHB1
c2hlcyBtYXkgbm90IHdha2UgZGV2aWNlLgotICAgIE5vbldha2luZywgLy8gTm8gcHVzaGVzIHdp
bGwgd2FrZSBkZXZpY2UuCi0gICAgTnVtYmVyT2ZTdGF0ZXMKLX07Ci0KIHN0cnVjdCBQdXNoUmVj
b3JkIHsKICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFN0
cmluZyBidW5kbGVJRDsKQEAgLTYyLDcgKzU0LDYgQEAgc3RydWN0IFB1c2hSZWNvcmQgewogICAg
IFZlY3Rvcjx1aW50OF90PiBjbGllbnRQcml2YXRlS2V5OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
aGFyZWRBdXRoU2VjcmV0OwogICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGly
YXRpb25UaW1lIHsgfTsKLSAgICBQdXNoV2FrZVN0YXRlIHdha2VTdGF0ZSB7IFB1c2hXYWtlU3Rh
dGU6Oldha2luZyB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBpc29sYXRlZENv
cHkoKSBjb25zdCAmOwogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5
KCkgJiY7CkBAIC04MSw5ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRSZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcm
IGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUb3Bp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB1
c2luZyBQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCA9IEhhc2hNYXA8UHVzaFdha2VTdGF0ZSwgVmVj
dG9yPFN0cmluZz4sIFdURjo6SW50SGFzaDxQdXNoV2FrZVN0YXRlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxQdXNoV2FrZVN0YXRlPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
b3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hXYWtlU3RhdGVUb1Rv
cGljTWFwJiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY3JlbWVudFNpbGVudFB1
c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGNv
bnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFB1c2hSZWNvcmQ+JiYpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBQdXNoRGF0YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiwgVW5pcXVlUmVmPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA1MTBjMWIwNzJiODk3ZDc5
MDBhYTZlNmVhMDJkOGYwMDYzOGZiM2RkLi44NDY4MjQ0YjlmYzJmOWNjNjVhOWQ2ZDdkZGZhZTFk
NDg5M2JjYjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04OCw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNr
VG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mLCBjb25zdCBTdHJpbmcmIGFjdGlvbik7CiAjZW5kaWYKIAorICAgIGJvb2wgaGFzUGVuZGlu
Z1NpbGVudFB1c2hFdmVudCgpIHsgcmV0dXJuIG1faGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudDsg
fQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudChib29sIHZhbHVlKSB7IG1f
aGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCA9IHZhbHVlOyB9CisKIHByaXZhdGU6CiAgICAgU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNl
V29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2lu
PiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdp
biwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6
dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2
b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CkBAIC05
Niw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0
IHsgcmV0dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCiAgICAgTm90aWZpY2F0
aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBtX25vdGlmaWNh
dGlvbkNsaWVudC5nZXQoKTsgfQorCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4g
c2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAogICAgIFNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwpAQCAtMTA5LDYgKzExNCw3IEBA
IHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4+
IG1fcGVuZGluZ1NraXBXYWl0aW5nUHJvbWlzZXM7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNz
aW9uSUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmlj
YXRpb25DbGllbnQ7CisgICAgYm9vbCBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZDg4
NDVhYjI0YzM4MDYyYzA3MjgwMTU2NDBmZmIwYTRmM2RmYmFmNy4uZjdhNDQ1ZDE2NWZhYWNhYWY3
YzJjODRmZDMyZTA1OTdiNGI1ZWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRl
ICJTZXJ2aWNlV29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJUeXBlcy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KQEAgLTI4Niw2ICsyODcsOSBAQCB2b2lkIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGNvbnRleHQuaXNT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlPihjb250ZXh0KS5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGZhbHNl
KTsKKwogICAgIC8vIFRoZSBOb3RpZmljYXRpb24gaXMga2VwdCBhbGl2ZSBieSB2aXJ0dWUgb2Yg
YmVpbmcgc2hvdygpJ24gc29vbi4KICAgICAvLyBGSVhNRTogV2hlbiBpbXBsZW1lbnRpbmcgZ2V0
Tm90aWZpY2F0aW9ucygpLCBzdG9yZSB0aGlzIE5vdGlmaWNhdGlvbiBpbiB0aGUgcmVnaXN0cmF0
aW9uJ3Mgbm90aWZpY2F0aW9uIGxpc3QuCiAgICAgYXV0byBub3RpZmljYXRpb24gPSBOb3RpZmlj
YXRpb246OmNyZWF0ZShjb250ZXh0LCB0aXRsZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCmluZGV4IGUyZTQwOGIxMDkxNTQ3ZmQwMGI3ZmE1MDI3Zjg0MWVlYzdiZTU2OGIu
LmMyODQ1NWIwNDEyN2E1NDc0MTlkNzQxNmRjNjUyZTgwNmQ3NzlkN2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwCkBAIC0yMjQsMTAgKzIyNCwxMiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50
OF90PgogICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2so
VGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMg
fSwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gUmVmIHsgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlIH0sIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSgpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2Vydmlj
ZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50IGZpcmluZyBldmVudCBmb3Ig
d29ya2VyICUiIFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CiAKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
LT5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KHRydWUpOworCiAgICAgICAgIGF1dG8gcHVz
aEV2ZW50ID0gUHVzaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnB1c2hFdmVudCwgeyB9LCBX
VEZNb3ZlKGRhdGEpLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKICAgICAgICAg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hFdmVudCk7CiAKLSAg
ICAgICAgcHVzaEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQo
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgcHVz
aEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgZXZlbnRDcmVh
dGlvblRpbWUgPSBwdXNoRXZlbnQtPnRpbWVTdGFtcCgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShhdXRvJiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAg
ICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVk
KSB7CkBAIC0yMzUsNyArMjM3LDE0IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVU
YXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGNhbGxiYWNrKCFoYXNSZWplY3RlZEFueVByb21pc2UpOworCisgICAgICAgICAg
ICBib29sIHNob3dlZE5vdGlmaWNhdGlvbiA9ICFzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmhh
c1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQoKTsKKyAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9ICFo
YXNSZWplY3RlZEFueVByb21pc2UgJiYgc2hvd2VkTm90aWZpY2F0aW9uOworCisgICAgICAgICAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtl
ciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBmYWlsZWQg
dG8gcHJvY2VzcyBwdXNoIGV2ZW50IChyZWplY3RlZFByb21pc2UgPSAlZCwgc2hvd2VkTm90aWZp
Y2F0aW9uID0gJWQpIiwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlLCBzaG93ZWROb3RpZmljYXRpb24p
OworCisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDEyZjhlOGE1YjU5ZjAwZGQ3YjdlZmQzYjJhZDEzNTdmYTI1MTY5MzMuLjE2NmVlZGJl
ZmY1ZmZhODQ2ZTRjZGQ4ZWNiNWI2NjRjNGEzOGJjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjUwLDI5ICsyMjUwLDUyIEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIG1hbmFnZXItPm1vdmVEYXRhKG9sZE9y
aWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9KTsKIH0KIAotI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpICYmIEVOQUJMRShCVUlMVF9J
Tl9OT1RJRklDQVRJT05TKQorCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0jaWYgRU5BQkxF
KEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIExPRyhOb3RpZmljYXRpb25zLCAiTmV0d29y
a1Byb2Nlc3MgZ2V0dGluZyBwZW5kaW5nIHB1c2ggbWVzc2FnZXMgZm9yIHNlc3Npb24gSUQgJSIg
UFJJdTY0LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHNlc3Npb24tPm5vdGlmaWNh
dGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQogICAgICAgICBMT0coTm90aWZpY2F0aW9ucywg
Ik5ldHdvcmtQcm9jZXNzIGNvdWxkIG5vdCBmaW5kIHNlc3Npb24gZm9yIElEICVsbHUgdG8gZ2V0
IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKLSNlbmRpZgot
ICAgIGNhbGxiYWNrKHsgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNo
TWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAg
aWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAg
IExPRyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhhbmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZy
b20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBzZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0g
ICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1v
dmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlv
blVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0
eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKTsKKyAgICAg
ICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShw
dXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJM
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdp
biA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCBy
ZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgTmV0d29ya1Nlc3Npb24qIHNlc3Npb247Cisg
ICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiAoc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpKSB7CisgICAgICAgICAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigp
CisgICAgICAgICAgICAgICAgICAgIC5pbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoV1RGTW92ZShv
cmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0XShpbnQpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICB9KTsKICAgICB9IGVsc2UK
ICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8gaGFuZGxlIGEg
cHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1dCB0aGF0IHNl
c3Npb24gZG9lc24ndCBleGlzdCIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0KLSNlbmRpZiAv
LyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNlbHNlCisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNhbGxiYWNrKQoreworICAg
IGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVz
c2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayhmYWxzZSk7Cit9CisKKyNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpICYmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYg
Y2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcAppbmRleCA0ODZjYjViM2RmNjcwMGU4ODAzZjYwMDk5Y2EzNTdlZjBkMmJhODQxLi44OTk1
ODZlNzBjMGNmNWNhYzEyZDQ4MzQwMjg5NmNjOTY5YzhmN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE3NCw2ICsxNzQsMTYgQEAgdm9p
ZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShVUkwm
JiBzY29wZVVSTCwgQ29tcGxldGkKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6
TWVzc2FnZVR5cGU6OkdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBXVEZNb3ZlKHNjb3BlVVJMKSk7CiB9CiAKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXI6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIW1fY29ubmVjdGlvbikgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNlbmRNZXNzYWdlV2l0
aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6SW5jcmVtZW50U2lsZW50UHVzaENvdW50PihX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShvcmlnaW4pKTsKK30KKwogdGVtcGxh
dGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgog
dm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFy
Z3MpIGNvbnN0CiB7CkBAIC0yMjcsNiArMjM3LDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5
Q2FsbGVyPGJvb2w+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxl
cjxpbnQ+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVj
b2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8aW50PiB2YWx1ZTsKKyAgICAgICAgZGVjb2Rl
ciA+PiB2YWx1ZTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcigwKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKnZhbHVlKTsKKyAg
ICB9Cit9OworCiB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYm
PiB7CiAgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aAppbmRleCA1MmE2Mzg0YmFiMTBlMGFlOTE2YmFhMjNmOTE0YTkyNWZlZTMwOGRkLi4wNmU2MTU3
ZmE4NjU0NTI1NTU5YmNiNTg0MDMyMjlmYzJhYzMyYzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB1bnN1YnNjcmliZUZyb21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgV2ViQ29yZTo6
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVz
aFN1YnNjcmlwdGlvbihVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0
ZShVUkwmJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50OF90
LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBpbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50KT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0
YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmlu
ZGV4IGYzZjdiYmU2M2Y0ZWQzNWVkY2YzZTJhYWFkOTNmYjNlNDkyOWZmOTkuLjI2NTYwYzA2Yzlk
MjNmYzYwNTIzNzI5NTVmZTA4OTg4OTc4MWYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTI3LDYgKzI3LDkgQEAKIAogbmFtZXNwYWNl
IFdlYktpdDo6V2ViUHVzaEQgewogCisvLyBJZiBhbiBvcmlnaW4gcHJvY2Vzc2VzIG1vcmUgdGhh
biB0aGlzIG1hbnkgc2lsZW50IHB1c2hlcywgdGhlbiBpdCB3aWxsIGJlIHVuc3Vic2NyaWJlZCBm
cm9tIHB1c2guCitzdGF0aWMgY29uc3RleHByIGludCBtYXhTaWxlbnRQdXNoQ291bnQgPSAzOwor
CiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5ID0gInByb3RvY29sIHZl
cnNpb24iOwogY29uc3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlID0gMTsKIGNv
bnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQg
bWVzc2FnZSI7CkBAIC00OCw3ICs1MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50
OF90IHsKICAgICBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlLAogICAgIFVuc3Vic2NyaWJlRnJvbVB1
c2hTZXJ2aWNlLAogICAgIEdldFB1c2hTdWJzY3JpcHRpb24sCi0gICAgR2V0UHVzaFBlcm1pc3Np
b25TdGF0ZQorICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUsCisgICAgSW5jcmVtZW50U2lsZW50
UHVzaENvdW50LAogfTsKIAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3Nh
Z2VUeXBlIG1lc3NhZ2VUeXBlKQpAQCAtNjUsNiArNjksNyBAQCBpbmxpbmUgYm9vbCBtZXNzYWdl
VHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAgICAgY2FzZSBNZXNzYWdl
VHlwZTo6VW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2U6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6
R2V0UHVzaFN1YnNjcmlwdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlz
c2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdN
b2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25m
aWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbQppbmRleCBhN2E4YmI2MDg3NWE5OTUyZTk5MGE1MmFkODlkMzM0YzZkNmZm
OGZhLi4zYzgxOGZiMjE4MzkzMmMyMTBmNTdhYWU2MDAwMzIzN2U0YWQ0MmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLQVBJQ2Fz
dC5oIgogI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbXBv
cnQgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5o
IgogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW1wb3J0ICJXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDYWNoZS5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgpAQCAt
NjEyLDQgKzYxNCw5IEBAIC0gKHZvaWQpX3Rlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMK
ICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMoKTsKIH0K
IAorLSAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKV9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVz
dGluZworeworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVu
dDxXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7Cit9CisKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29s
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKaW5kZXggZTFmZDk5MWRmYjJiNzg0OTQ0NTAzNmNkODI5ZTY0ZDdjYzVkZGI2
MS4uNmUxNTU3YWM1YjFkZTk2ODIwMjI5NzdkZDdkY2YzMzY0Yjg2MTZmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCisjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQ
cm9jZXNzUG9vbC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAt
MTM3LDYgKzEzOCw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQ29va2ll
U3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZVBhcnRp
dGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCBX
S19BUElfREVQUkVDQVRFRCgiUGFydGl0aW9uZWQgY29va2llcyBhcmUgbm8gbG9uZ2VyIHN1cHBv
cnRlZCIsIG1hY29zKDEwLjEyLjMsIDEwLjE0LjQpLCBpb3MoMTAuMywgMTIuMikpOwogCistIChX
S05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nOwor
CiAvLyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRl
c3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5T
VVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91
bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSlj
b21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEz
LjQpKTsKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNGb3JUZXN0aW5n
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hTZXJ2aWNlLmgKaW5kZXggZmU0MTVlMDA4ZGQ2MzA1MTA1ODI0ZjhjZmIwMjY5NWFm
YzMyM2ZlYi4uZjdkZDQzYTgxMTQwZGNlZjZmOTMxNDEzMjUwNzNkNjc0YjlkMjdhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHNjb3BlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhcGlkUHVibGljS2V5LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKICAgICB2b2lkIHVuc3Vic2Ny
aWJlKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwg
V2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CiAK
KyAgICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50KT4mJik7CisKICAgICB2b2lkIGRpZENvbXBsZXRlR2V0U3Vic2NyaXB0aW9uUmVx
dWVzdChHZXRTdWJzY3JpcHRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN1YnNj
cmliZVJlcXVlc3QoU3Vic2NyaWJlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVVbnN1
YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoU2VydmljZS5tbQppbmRleCAwNThhNzY5ZTY5NmNhZWNlNjY0NTQyZDBjYTcwMDhjODc0Yjhh
N2YwLi5lN2QyZjdjYmNhYmMyYmNkMWIyMWI0Y2IxZDM3NjJhYzc4MTZmYTU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFw
cGxlUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJNb2NrUHVzaFNlcnZpY2VDb25u
ZWN0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29u
c3RhbnRzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdl
YkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KQEAgLTQ0LDE5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2
b2lkIHVwZGF0ZVRvcGljTGlzdHMoUHVzaFNlcnZpY2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQ
dXNoRGF0YWJhc2UmIGRhdGFiYXNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGRhdGFiYXNlLmdldFRvcGljc0J5V2FrZVN0YXRlKFsmY29ubmVj
dGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0
byYmIHRvcGljTWFwKSBtdXRhYmxlIHsKKyAgICBkYXRhYmFzZS5nZXRUb3BpY3MoWyZjb25uZWN0
aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRv
JiYgdG9waWNzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG9waWNzIHRvIGln
bm9yZWQgbGlzdCBiYXNlZCBvbiB1c2VyIHByZWZlcmVuY2VzLgotICAgICAgICBQdXNoU2Vydmlj
ZUNvbm5lY3Rpb246OlRvcGljTGlzdHMgdG9waWNMaXN0czsKLQotICAgICAgICBpZiAoYXV0byBp
dCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsgaXQgIT0gdG9waWNNYXAu
ZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAodG9waWNMaXN0cy5lbmFibGVkVG9waWNzLCBp
dC0+dmFsdWUpOwotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VT
dGF0ZTo6T3Bwb3J0dW5pc3RpYyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAg
c3RkOjpzd2FwKHRvcGljTGlzdHMub3Bwb3J0dW5pc3RpY1RvcGljcywgaXQtPnZhbHVlKTsKLSAg
ICAgICAgaWYgKGF1dG8gaXQgPSB0b3BpY01hcC5maW5kKFB1c2hXYWtlU3RhdGU6Ok5vbldha2lu
Zyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlz
dHMubm9uV2FraW5nVG9waWNzLCBpdC0+dmFsdWUpOwotCi0gICAgICAgIGNvbm5lY3Rpb24uc2V0
VG9waWNMaXN0cyhXVEZNb3ZlKHRvcGljTGlzdHMpKTsKLQorICAgICAgICBjb25uZWN0aW9uLnNl
dEVuYWJsZWRUb3BpY3MoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KQEAgLTQ4Miw2ICs0NzMsMzIgQEAgdm9pZCBQdXNoU2VydmljZTo6
ZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0JiByZXF1ZXN0
KQogICAgIGZpbmlzaGVkUHVzaFNlcnZpY2VSZXF1ZXN0KG1fdW5zdWJzY3JpYmVSZXF1ZXN0cywg
cmVxdWVzdCk7CiB9CiAKK3ZvaWQgUHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlP
cmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBoYW5kbGVyKQoreworICAgIG1f
ZGF0YWJhc2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5kbGVJZGVudGlmaWVyLCBzZWN1
cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBoYW5k
bGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaW50IHNpbGVudFB1c2hDb3VudCkgbXV0YWJsZSB7Cisg
ICAgICAgIGlmIChzaWxlbnRQdXNoQ291bnQgPCBXZWJLaXQ6OldlYlB1c2hEOjptYXhTaWxlbnRQ
dXNoQ291bnQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJS
ZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdpdGggJXtwdWJsaWN9cyAle3Nl
bnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAlZCBzaWxlbnQgcHVzaGVzIiwgYnVuZGxlSWRl
bnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51dGY4KCkuZGF0YSgpLCBzaWxl
bnRQdXNoQ291bnQpOworCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9y
aWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBzaWxlbnRQdXNo
Q291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRvJiYgcmVtb3ZlZFJlY29yZHMp
IG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiByZW1vdmVkUmVjb3Jk
cykgeworICAgICAgICAgICAgICAgIGF1dG8gdG9waWMgPSBtYWtlUHVzaFRvcGljKHJlY29yZC5i
dW5kbGVJRCwgcmVjb3JkLnNjb3BlKTsKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVu
c3Vic2NyaWJlKHRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJsaWNLZXksIFt0b3BpY10oYm9v
bCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
ICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0coUHVz
aCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0IGNvdWxkbid0IHJlbW92ZSBzdWJzY3JpcHRp
b24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7cHVibGljfXMgY29kZTogJWxsZCkiLCB0b3Bp
Yy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4uVVRGOFN0cmluZyA/OiAibm9uZSIsIHN0YXRp
Y19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlVG9waWNMaXN0cyhtX2Nvbm5lY3Rpb24sIG1f
ZGF0YWJhc2UsIFtzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogZW51bSBjbGFzcyBDb250
ZW50RW5jb2RpbmcgewogICAgIEVtcHR5LAogICAgIEFFU0dDTSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMDI4MDg0ZTUyYjRhMGRiYjNjMTQ5YmU2Yzk3MzZmNzU3
NWU3ODdiMy4uMmNkMTgzZDMyNGJlOTE3MDZkOWMwNGViODFiNzBhYmZkMWY4OGY5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTgwLDYg
KzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xp
ZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJv
b2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQg
Z2V0UHVzaFN1YnNjcmlwdGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4m
JiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKENsaWVudENv
bm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlT
ZW5kZXIpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rp
b24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGludCk+JiYpOwogCiAgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVj
dGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpp
bmRleCBhZGQ2ZTNkOGFkZmVhODk5ODg4ZjRiYWY2MWFjYzA1MzEzNjNkY2M1Li41NjRkOGE2OTU4
ZDlhNWM3NWFkMmQ3YzQ5MWU2MTY1Yzk1MDk3N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLm1tCkBAIC0xMTcsNiArMTE3LDExIEBAIEFSR1VNRU5UUyhVUkwpCiBSRVBM
WShjb25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpCiBFTkQK
IAorRlVOQ1RJT04oaW5jcmVtZW50U2lsZW50UHVzaENvdW50KQorQVJHVU1FTlRTKFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKGludCkKK0VORAorCiAjdW5kZWYgRlVOQ1RJT04K
ICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTk5LDYgKzIwNCwxMyBAQCBXZWJQ
dXNoRDo6RW5jb2RlZE1lc3NhZ2UgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZTo6ZW5jb2RlUmVwbHko
Y29uc3QgRXhwZWN0ZWQ8dWludAogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0K
IAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluY3JlbWVudFNpbGVudFB1c2hDb3VudDo6ZW5j
b2RlUmVwbHkoaW50IHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29k
ZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVy
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1l
IEluZm8+CkBAIC00MDEsNiArNDEzLDkgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1l
c3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgogICAgICAgICBoYW5kbGVX
ZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFB1c2hQZXJtaXNzaW9uU3Rh
dGU+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVy
KSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVu
dFB1c2hDb3VudDoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3Nh
Z2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ+KGNsaWVudENvbm5lY3Rpb24sIGVuY29k
ZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
IH0KIApAQCAtNjI2LDYgKzY0MSwxOCBAQCB2b2lkIERhZW1vbjo6Z2V0UHVzaFBlcm1pc3Npb25T
dGF0ZShDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjbwogI2VuZGlm
CiB9CiAKK3ZvaWQgRGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoQ2xpZW50Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBzZWN1
cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmIHJlcGx5U2VuZGVyKQor
eworICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShbdGhpcywgYnVuZGxlSWRlbnRpZmll
ciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKSwgc2VjdXJpdHlP
cmlnaW4gPSBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCByZXBseVNlbmRlciA9IFdURk1vdmUo
cmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fcHVzaFNlcnZpY2UpIHsK
KyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1
bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgfSk7Cit9CisKIENsaWVudENvbm5lY3Rpb24qIERhZW1vbjo6dG9DbGllbnRDb25uZWN0aW9u
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBhdXRvIGNsaWVudENvbm5lY3Rp
b24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2NmIwNGZjMWFhNDhjY2Q3YWY0YjYy
MDE0MmQ0Zjg3MTEzYzk1OTIuLmJlNWZhZjkxYzc5NDE2MTQ5MmVlMTI3NmViMzU0YjI2Y2ZjY2Y5
NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMSBAQAorMjAyMi0wMi0xOCAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyBwdXNoIHRlc3RzIHRv
IHNob3cgYSBub3RpZmljYXRpb24uIEFkZGVkIGEgbmV3IHRlc3QgY2FzZSB0byBtYWtlIHN1cmUg
dGhhdAorICAgICAgICBzdWJzY3JpcHRpb25zIGFyZSByZW1vdmVkIHdoZW4gYW4gb3JpZ2luIHJl
YWNoZXMgaXRzIHF1b3RhIG9mIHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0
aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24pOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6bWFrZVRlbXBvcmFyeURhdGFiYXNlUGF0aCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpnZXRUb3BpY3NTeW5jKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRh
YmFzZVRlc3Q6OmdldFRvcGljcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJh
c2VUZXN0OjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNlVGVzdDo6aW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om9wZXJhdG9yPT0pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6Om9yaWdpbiBjb25zdCk6CisKIDIwMjItMDIt
MTcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0pTQ10gSW5jcmVhc2UgdGltZW91dCB0byBhY2NvdW50IGZvciBNSVBTIHNsb3duZXNzCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0IGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzLnR4dAppbmRleCA5MjZkNTZlODhhNDJiOTYyMDQ1ODQwYmViMmUzY2Vj
ODgxNTMyYzAzLi40YWM3Y2I4MDFmYjQ1YTFmMWIyNGY1YWNjNDk5ODU3NjIyNGRkYmRiIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvU291cmNlcy50eHQKQEAgLTI1LDUgKzI1LDYgQEAgRGVwcmVjYXRlZEdsb2JhbFZh
bHVlcy5jcHAKIEphdmFTY3JpcHRUZXN0LmNwcAogUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiBUZXN0
c0NvbnRyb2xsZXIuY3BwCitUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiBUZXN0VXRpbGl0
aWVzLmNwcAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92
aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZmM2Q3M2ZiOWY5NzQ1MmFkZjRjOWViNzIyNjc0Mjg2MjEz
OWY3YQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgorCisjaW5j
bHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0
aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS1N0cmluZy5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIFdLRGljdGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPm5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKCk7Cit9CisKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6VGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyKFZlY3RvcjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+JiYg
bWFuYWdlcnMpCisgICAgOiBtX21hbmFnZXJzKFdURk1vdmUobWFuYWdlcnMpKQorICAgICwgbV9w
ZXJtaXNzaW9ucyhhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSkpCit7CisgICAg
bV9wcm92aWRlciA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0sCisgICAgICAgIDAsIC8vIHNob3dX
ZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8gY2xvc2VXZWJOb3RpZmljYXRpb24KKyAgICAg
ICAgMCwgLy8gZGlkRGVzdHJveU5vdGlmaWNhdGlvbgorICAgICAgICAwLCAvLyBhZGROb3RpZmlj
YXRpb25NYW5hZ2VyCisgICAgICAgIDAsIC8vIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIKKyAg
ICAgICAgJlRlc3RXZWJLaXRBUEk6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zLAorICAgICAgICAw
LCAvLyBjbGVhck5vdGlmaWNhdGlvbnMKKyAgICB9OworCisgICAgZm9yIChhdXRvJiBtYW5hZ2Vy
IDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIo
bWFuYWdlciwgJm1fcHJvdmlkZXIuYmFzZSk7Cit9CisKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRl
cjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigpCit7CisgICAgZm9yIChhdXRvJiBtYW5hZ2Vy
IDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIo
bWFuYWdlciwgbnVsbHB0cik7Cit9CisKK1dLRGljdGlvbmFyeVJlZiBUZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkKK3sKKyAgICBXS1JldGFpbihtX3Bl
cm1pc3Npb25zLmdldCgpKTsKKyAgICByZXR1cm4gbV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwor
dm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0so
V0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKKyAgICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRv
cHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkp
OworICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9wZXJtaXNzaW9ucy5nZXQoKSwgd2tPcmlnaW5T
dHJpbmcuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7CisKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRv
cHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQo
KSkpOworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90
aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFn
ZXIsIHdrT3JpZ2luLmdldCgpLCBhbGxvd2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDIwMWQ2ODFjMmE3NDg3YzBiY2Q2MWFmY2FmM2FkOWI0M2ZjZTI3YQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9u
UHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworCitjbGFzcyBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFRlc3ROb3RpZmlj
YXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYmKTsKKyAgICB+
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CisKKyAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICB2b2lkIHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4gbV9tYW5hZ2VyczsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVE
aWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Npb25zOworICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJW
MCBtX3Byb3ZpZGVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YzM5ZDI0
OTc0MzI5Mjc4NGFkOWM4NTNkMDI3YTc1OWNiN2I0NDdkLi5lYWNhOTJlZjE4MTY4N2Q2N2M5MmEw
YTVhNzM0OGY0MDRiYTUzZDYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk4MCw2ICsy
OTgwLDggQEAKIAkJRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50
V0FMLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFE
MSAvKiBJREJDaGVja3BvaW50V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gSURCQ2hlY2twb2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRUI0RDMyMDcyN0MwNDU0MzAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjREMzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3ROb3RpZmljYXRpb25Q
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjlBRDhDNjI3NjQ2RTcz
MDBEODkzQTQgLyogUHVzaERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFB1c2hEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zMjY2LDYgKzMyNjgsOCBAQAogCQkJCUJDMTMxODgzMTE3MTE0
QTgwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5oICovLAogCQkJCUJDOTA5NTFCMTI1NTMz
RDcwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAqLywKIAkJCQlCQ0I5RTdGQTExMjM1OUEz
MDBBMTM3RTAgLyogVGVzdC5oICovLAorCQkJCUVCNEQzMjA3MjdDMDQ1NDMwMDgxQThFNCAvKiBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICovLAorCQkJCUVCNEQzMjA4MjdDMDQ1NDQwMDgx
QThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQlCQzEzMUFBODExNzEz
MUZDMDBCNjk3MjcgLyogVGVzdHNDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0
RTNBMDBBMTM3RTAgLyogVGVzdHNDb250cm9sbGVyLmggKi8sCiAJCQkJN0JCNzU0QjAyNzRFMzlB
MTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRpZXMuY3BwICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAppbmRleCA3MGJjZTM5N2MyMDUy
MTBlM2E1Njc3NThhNmI3N2EzYjJkMzAyOWMyLi4xMDZiZWQzNjcxM2FlYzE3ZDZlZDQ3OWIyZjRl
ZGZiZThjMmIxYjVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvUHVzaERhdGFiYXNlLmNwcApAQCAtMzUsMTggKzM1LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBQdXNoRGF0YWJh
c2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdldFRvcGljc0J5V2FrZVN0YXRlU3luYyhQdXNo
RGF0YWJhc2UmIGRhdGFiYXNlKQorc3RhdGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQ
YXRoKCkKK3sKKyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAg
IGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2Ui
LCBoYW5kbGUsICIuZGIiKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAg
ICByZXR1cm4gcGF0aDsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljc1N5bmMo
UHVzaERhdGFiYXNlJiBkYXRhYmFzZSkKIHsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBQ
dXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdldFJlc3VsdDsKKyAgICBWZWN0
b3I8U3RyaW5nPiB0b3BpY3M7CiAKLSAgICBkYXRhYmFzZS5nZXRUb3BpY3NCeVdha2VTdGF0ZShb
JmRvbmUsICZnZXRSZXN1bHRdKFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAm
JiByZXN1bHQpIHsKLSAgICAgICAgZ2V0UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpOworICAgIGRh
dGFiYXNlLmdldFRvcGljcyhbJmRvbmUsICZ0b3BpY3NdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAg
ICAgdG9waWNzID0gV1RGTW92ZShyZXN1bHQpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9
KTsKICAgICBVdGlsOjpydW4oJmRvbmUpOwogCi0gICAgcmV0dXJuIGdldFJlc3VsdDsKKyAgICBy
ZXR1cm4gdG9waWNzOwogfQogCiBjbGFzcyBQdXNoRGF0YWJhc2VUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QgewpAQCAtNTQsMzAgKzYyLDI5IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8UHVzaERhdGFiYXNlPiBkYjsKIAogICAgIFB1c2hSZWNvcmQgcmVjb3JkMSB7CisgICAgICAg
IFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCisgICAgICAgICJjb20uYXBwbGUud2ViYXBw
Il9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAorICAgICAgICAiaHR0cHM6
Ly93d3cuYXBwbGUuY29tL2lwaG9uZSJfcywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50
MiJfcywKKyAgICAgICAgInRvcGljMSJfcywKKyAgICAgICAgeyA1LCA2IH0sCisgICAgICAgIHsg
NiwgNyB9LAorICAgICAgICB7IDcsIDggfSwKKyAgICAgICAgeyA4LCA5IH0KKyAgICB9OworICAg
IFB1c2hSZWNvcmQgcmVjb3JkMiB7CiAgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
KCksCiAgICAgICAgICJjb20uYXBwbGUuU2FmYXJpIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cu
YXBwbGUuY29tIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL21hYyJfcywKICAg
ICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MSJfcywKLSAgICAgICAgInRvcGljMSJfcywKKyAg
ICAgICAgInRvcGljMiJfcywKICAgICAgICAgeyAwLCAxIH0sCiAgICAgICAgIHsgMSwgMiB9LAog
ICAgICAgICB7IDIsIDMgfSwKICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgIGNvbnZlcnRTZWNv
bmRzVG9FcG9jaFRpbWVTdGFtcCgxNjQzMzUwMDAwKSwKLSAgICAgICAgUHVzaFdha2VTdGF0ZTo6
T3Bwb3J0dW5pc3RpYwotICAgIH07Ci0gICAgUHVzaFJlY29yZCByZWNvcmQyIHsKLSAgICAgICAg
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgImNvbS5hcHBsZS53ZWJhcHAi
X3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20iX3MsCi0gICAgICAgICJodHRwczov
L3d3dy5hcHBsZS5jb20vaXBob25lIl9zLAotICAgICAgICAiaHR0cHM6Ly9wdXNoRW5kcG9pbnQy
Il9zLAotICAgICAgICAidG9waWMyIl9zLAotICAgICAgICB7IDUsIDYgfSwKLSAgICAgICAgeyA2
LCA3IH0sCi0gICAgICAgIHsgNywgOCB9LAotICAgICAgICB7IDgsIDkgfQogICAgIH07CiAgICAg
UHVzaFJlY29yZCByZWNvcmQzIHsKICAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIo
KSwKQEAgLTE2NywxNSArMTc0LDQzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJvd0lkZW50
aWZpZXJzOwogICAgIH0KIAotICAgIFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNN
YXAgZ2V0VG9waWNzQnlXYWtlU3RhdGUoKQorICAgIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljcygp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpkYik7Cisg
ICAgICAgIHJldHVybiBnZXRUb3BpY3NTeW5jKCpkYik7CisgICAgfQorCisgICAgVmVjdG9yPFB1
c2hSZWNvcmQ+IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdp
bihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQor
ICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFZlY3RvcjxQdXNoUmVj
b3JkPiByZW1vdmVkUmVjb3JkczsKKworICAgICAgICBkYi0+cmVtb3ZlUmVjb3Jkc0J5QnVuZGxl
SWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZk
b25lLCAmcmVtb3ZlZFJlY29yZHNdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHJlbW92
ZWRSZWNvcmRzID0gV1RGTW92ZShyZXN1bHQpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiBy
ZW1vdmVkUmVjb3JkczsKKyAgICB9CisKKyAgICBpbnQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50
KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisg
ICAgeworICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsK
KworICAgICAgICBkYi0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlELCBzZWN1cml0
eU9yaWdpbiwgWyZkb25lLCAmY291bnRdKGludCByZXN1bHQpIHsKKyAgICAgICAgICAgIGNvdW50
ID0gcmVzdWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAg
ICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiAKICAg
ICB2b2lkIFNldFVwKCkgZmluYWwKICAgICB7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwot
ICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRo
KCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFz
ZSkgeworICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQ
YXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRh
YmFzZSkgewogICAgICAgICAgICAgZGIgPSBXVEZNb3ZlKGRhdGFiYXNlKTsKICAgICAgICAgICAg
IGRvbmUgPSB0cnVlOwogICAgICAgICB9KTsKQEAgLTIwMCw4ICsyMzUsNyBAQCBzdGF0aWMgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFB1c2hSZWNvcmQmIGEsIGNvbnN0IFB1c2hSZWNvcmQmIGIpCiAg
ICAgICAgICYmIGEuY2xpZW50UHVibGljS2V5ID09IGIuY2xpZW50UHVibGljS2V5CiAgICAgICAg
ICYmIGEuY2xpZW50UHJpdmF0ZUtleSA9PSBiLmNsaWVudFByaXZhdGVLZXkKICAgICAgICAgJiYg
YS5zaGFyZWRBdXRoU2VjcmV0ID09IGIuc2hhcmVkQXV0aFNlY3JldAotICAgICAgICAmJiBhLmV4
cGlyYXRpb25UaW1lID09IGIuZXhwaXJhdGlvblRpbWUKLSAgICAgICAgJiYgYS53YWtlU3RhdGUg
PT0gYi53YWtlU3RhdGU7CisgICAgICAgICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0
aW9uVGltZTsKIH0KIAogVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKQEAg
LTIxNCwxMSArMjQ4LDggQEAgVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkK
ICAgICBleHBlY3RlZFJlY29yZDIuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1
c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oMik7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0
ZWRSZWNvcmQyID09ICppbnNlcnRSZXN1bHQyKTsKIAotICAgIC8vIFNpbmNlIHJlY29yZDMgaXMg
aW4gdGhlIHNhbWUgU3Vic2NyaXB0aW9uU2V0IGFzIHJlY29yZDEsIGl0IHNob3VsZAotICAgIC8v
IGluaGVyaXQgcmVjb3JkMSdzIHdha2Ugc3RhdGUuCiAgICAgYXV0byBleHBlY3RlZFJlY29yZDMg
PSByZWNvcmQzOwogICAgIGV4cGVjdGVkUmVjb3JkMy5pZGVudGlmaWVyID0gbWFrZU9iamVjdElk
ZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPigzKTsKLSAgICBleHBlY3Rl
ZFJlY29yZDMud2FrZVN0YXRlID0gZXhwZWN0ZWRSZWNvcmQxLndha2VTdGF0ZTsKICAgICBFWFBF
Q1RfVFJVRShleHBlY3RlZFJlY29yZDMgPT0gKmluc2VydFJlc3VsdDMpOwogCiAgICAgLy8gSW5z
ZXJ0aW5nIGEgcmVjb3JkIHdpdGggdGhlIHNhbWUgKGJ1bmRsZUlELCBzY29wZSkgYXMgcmVjb3Jk
IDEgc2hvdWxkIGZhaWwuCkBAIC0yMzYsNiArMjY3LDMwIEBAIFRFU1RfRihQdXNoRGF0YWJhc2VU
ZXN0LCBSZW1vdmVSZWNvcmQpCiAgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChI
YXNoU2V0PHVpbnQ2NF90PiB7IDIsIDMgfSkpOwogfQogCitURVNUX0YoUHVzaERhdGFiYXNlVGVz
dCwgUmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKQorewor
ICAgIC8vIHJlY29yZDIgYW5kIHJlY29yZDMgaGF2ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2Vj
dXJpdHlPcmlnaW4uCisgICAgYXV0byByZW1vdmVkUmVjb3JkcyA9IHJlbW92ZVJlY29yZHNCeUJ1
bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQy
LnNlY3VyaXR5T3JpZ2luKTsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMiA9IHJlbW92ZWRSZWNv
cmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQyLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAg
ICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAg
ICBib29sIGNvbnRhaW5zUmVjb3JkMyA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSBy
ZWNvcmQzLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJl
Y29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRh
aW5zUmVjb3JkMik7CisgICAgRVhQRUNUX1RSVUUoY29udGFpbnNSZWNvcmQzKTsKKyAgICBFWFBF
Q1RfRVEocmVtb3ZlZFJlY29yZHMuc2l6ZSgpLCAydSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lk
ZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEgfSkpOworCisgICAgLy8gSW5zZXJ0
aW5nIGEgbmV3IHJlY29yZCBzaG91bGQgZ2V0IGEgbmV3IHJvd2lkLgorICAgIFB1c2hSZWNvcmQg
cmVjb3JkNCA9IHJlY29yZDI7CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBpbnNlcnRSZWNvcmQo
V1RGTW92ZShyZWNvcmQ0KSk7CisgICAgRVhQRUNUX1RSVUUoaW5zZXJ0UmVzdWx0KTsKKyAgICBF
WFBFQ1RfRVEoaW5zZXJ0UmVzdWx0LT5pZGVudGlmaWVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQ
dXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllclR5cGU+KDQpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93
SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWludDY0X3Q+IHsgMSwgNCB9KSk7Cit9CisKIFRFU1Rf
RihQdXNoRGF0YWJhc2VUZXN0LCBHZXRSZWNvcmRCeVRvcGljKQogewogICAgIGF1dG8gcmVzdWx0
MSA9IGdldFJlY29yZEJ5VG9waWMocmVjb3JkMS50b3BpYyk7CkBAIC0yNTksMjkgKzMxNCwyNyBA
QCBURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5k
U2NvcGUpCiAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdDMpOwogfQogCi1URVNUX0YoUHVzaERhdGFi
YXNlVGVzdCwgR2V0VG9waWNzQnlXYWtlU3RhdGUpCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwg
R2V0VG9waWNzKQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBQdXNoV2FrZVN0YXRlPiBleHBlY3Rl
ZCB7Ci0gICAgICAgIHsgInRvcGljMSIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfSwK
LSAgICAgICAgeyAidG9waWMyIiwgUHVzaFdha2VTdGF0ZTo6V2FraW5nIH0sCi0gICAgICAgIHsg
InRvcGljMyIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfQotICAgIH07Ci0gICAgSGFz
aE1hcDxTdHJpbmcsIFB1c2hXYWtlU3RhdGU+IGFjdHVhbDsKLQotICAgIGZvciAoY29uc3QgYXV0
byYgW3dha2VTdGF0ZSwgdG9waWNzXSA6IGdldFRvcGljc0J5V2FrZVN0YXRlKCkpIHsKLSAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiB0b3BpYyA6IHRvcGljcykKLSAgICAgICAgICAgIGFjdHVhbC5h
ZGQodG9waWMsIHdha2VTdGF0ZSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBh
Y3R1YWwpOworICAgIFZlY3RvcjxTdHJpbmc+IGV4cGVjdGVkIHsgInRvcGljMSJfcywgInRvcGlj
MiJfcywgInRvcGljMyJfcyB9OworICAgIEVYUEVDVF9FUShnZXRUb3BpY3MoKSwgZXhwZWN0ZWQp
OwogfQogCi1zdGF0aWMgU3RyaW5nIG1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgoKQorVEVTVF9G
KFB1c2hEYXRhYmFzZVRlc3QsIEluY3JlbWVudFNpbGVudFB1c2hDb3VudCkKIHsKLSAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gcGF0aCA9IEZpbGVT
eXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsK
LSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICByZXR1cm4gcGF0aDsKKyAg
ICBhdXRvIGNvdW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50KHJlY29yZDEuYnVuZGxlSUQs
IHJlY29yZDEuc2VjdXJpdHlPcmlnaW4pOworICAgIEVYUEVDVF9FUShjb3VudCwgMSk7CisKKyAg
ICAvLyByZWNvcmQyJ3MgYnVuZGxlSUQgYW5kIHNlY3VyaXR5T3JpZ2luIGFyZSBkaWZmZXJlbnQK
KyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQyLmJ1bmRsZUlELCBy
ZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDEpOworCisgICAg
Ly8gcmVjb3JkMiBhbmQgcmVjb3JkMyBoYXZlIHRoZSBzYW1lIGJ1bmRsZUlEIGFuZCBzZWN1cml0
eU9yaWdpbi4KKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQzLmJ1
bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDIp
OworCisgICAgY291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoIm5vbmV4aXN0ZW50Il9z
LCAibm9uZXhpc3RlbnQiX3MpOworICAgIEVYUEVDVF9FUShjb3VudCwgMCk7CiB9CiAKIFRFU1Qo
UHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCkBAIC0zMTQsNyArMzY3LDYgQEAgVEVTVChQ
dXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdodE9wcykKICAgICAgICAgICAgIHsgMiwgMyB9LAogICAg
ICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgICAgICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1l
U3RhbXAoMTY0MzM1MDAwMCksCi0gICAgICAgICAgICBQdXNoV2FrZVN0YXRlOjpXYWtpbmcKICAg
ICAgICAgfTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7
IGkrKykgewpAQCAtMzM5LDggKzM5MSw3IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGln
aHRPcHMpCiAgICAgICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNy
ZWF0ZVJlc3VsdCk7CiAKLSAgICAgICAgYXV0byBnZXRSZXN1bHQgPSBnZXRUb3BpY3NCeVdha2VT
dGF0ZVN5bmMoKmNyZWF0ZVJlc3VsdCk7Ci0gICAgICAgIGF1dG8gdG9waWNzID0gZ2V0UmVzdWx0
LnRha2UoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsKKyAgICAgICAgYXV0byB0b3BpY3MgPSBnZXRU
b3BpY3NTeW5jKCpjcmVhdGVSZXN1bHQpOwogICAgICAgICBFWFBFQ1RfRVEodG9waWNzLnNpemUo
KSwgcmVjb3JkQ291bnQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCBiNjcyOTY3OGFmOTk4NTdkMmFmZjkwYzNj
YWU0M2U2ZmIyNDdjYWI0Li44Y2Y1OGRlZjg2NDY5OTEyYjVhM2ZiMTlhZmZhZjI5M2E4Y2JkYmM5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hB
UEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJ
Lm1tCkBAIC0yOSw3ICsyOSwxMCBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8
V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nl
c3NQb29sUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KQEAgLTg5LDYgKzkyLDcgQEAg
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5w
b3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0pOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwg
KGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90
aWZpY2F0aW9uIik7CiAgICAgdHJ5IHsKICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAg
ICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CkBAIC0xMzgs
NiArMTQyLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQogCiAgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5h
Z2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3Jr
ZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihz
ZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0
TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTE4
OCw2ICsxOTUsNyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+
IHsKICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90
aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICBpZiAoIWV2ZW50LmRhdGEpCiAgICAgICAg
IHJldHVybjsKICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmRhdGEudGV4dCgpOwpAQCAtMjI1LDYg
KzIzMyw5IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzU3VjY2Vzc2Z1
bCkKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJh
dGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktp
dEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQ
b29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFn
ZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHBy
b3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8g
bWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVj
dGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzdyJdOwogCkBAIC0yNzAsNiArMjgxLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVz
aEV2ZW50V2l0aE5vUGFnZXNGYWlsKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRl
RGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8g
cHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2Nv
bmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10s
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCks
IHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVz
c2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCBiN2Iz
NGI2Y2FhNTQ3YmUzMmEzNzYyOGNjZjFhY2RlZWM2ZjVkNjU5Li5hY2RiODQzZWI2YzVhYThjY2Vl
MGJmYjE1MjBiODRhMWRmNDlmNTFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yOSwxMCArMjksMTIgQEAK
ICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAj
aW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNp
bXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0
IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmg+CkBAIC00NDAsNiArNDQyLDkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgeyAiL3N3
LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0s
IHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6
OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKSk7CiAKKyAgICAgICAgbV9ub3RpZmljYXRpb25Q
cm92aWRlciA9IG1ha2VVbmlxdWU8VGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3Zp
ZGVyPihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiB7IFtbbV9jb25maWd1cmF0aW9u
IHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNh
dGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0p
OworICAgICAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5zZXRQZXJtaXNzaW9uKG1fc2VydmVy
LT5vcmlnaW4oKSwgdHJ1ZSk7CisKICAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOm1fY29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgICAgICBbbV93ZWJWaWV3IGxv
YWRSZXF1ZXN0Om1fc2VydmVyLT5yZXF1ZXN0KCldOwogICAgIH0KQEAgLTQ0OSwxMiArNDU0LDQz
IEBAIHByb3RlY3RlZDoKICAgICAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRChtX3RlbXBEaXJlY3Rv
cnkuZ2V0KCkpOwogICAgIH0KIAorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGluamVjdFB1
c2hNZXNzYWdlKE5TRGljdGlvbmFyeSAqcHVzaFVzZXJJbmZvKQorICAgIHsKKyAgICAgICAgU3Ry
aW5nIHNjb3BlID0gbV9zZXJ2ZXItPnJlcXVlc3QoKS5VUkwuYWJzb2x1dGVTdHJpbmc7CisgICAg
ICAgIFN0cmluZyB0b3BpYyA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkgIl9zdHIg
KyBzY29wZTsKKyAgICAgICAgaWQgb2JqID0gQHsKKyAgICAgICAgICAgIEAidG9waWMiOiAoTlNT
dHJpbmcgKil0b3BpYywKKyAgICAgICAgICAgIEAidXNlckluZm8iOiBwdXNoVXNlckluZm8KKyAg
ICAgICAgfTsKKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0
YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CisKKyAgICAgICAg
U3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEuYnl0ZXMpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YS5sZW5ndGgpIH07CisgICAgICAgIGF1dG8gZW5jb2Rl
ZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7CisKKyAgICAgICAgYXV0
byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZp
Y2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOworICAgICAgICBzZW5k
TWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdldCgpLCBN
ZXNzYWdlVHlwZTo6SW5qZWN0RW5jcnlwdGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVk
TWVzc2FnZSk7CisKKyAgICAgICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcworICAgICAgICBfX2Js
b2NrIGJvb2wgZ290TWVzc2FnZXMgPSBmYWxzZTsKKyAgICAgICAgX19ibG9jayBSZXRhaW5QdHI8
TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4+IG1lc3NhZ2VzOworICAgICAgICBbbV9kYXRhU3RvcmUg
X2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVz
c2FnZXMpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAgICAg
ICBnb3RNZXNzYWdlcyA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmdvdE1lc3NhZ2VzKTsKKworICAgICAgICBFWFBFQ1RfRVEoW21lc3NhZ2Vz
IGNvdW50XSwgMXUpOworCisgICAgICAgIHJldHVybiBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDow
XTsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fdGVtcERpcmVjdG9yeTsKICAgICBS
ZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIFJldGFpblB0cjxU
ZXN0TWVzc2FnZUhhbmRsZXI+IG1fdGVzdE1lc3NhZ2VIYW5kbGVyOwogICAgIFJldGFpblB0cjxO
b3RpZmljYXRpb25TY3JpcHRNZXNzYWdlSGFuZGxlcj4gbV9ub3RpZmljYXRpb25NZXNzYWdlSGFu
ZGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcj4gbV9z
ZXJ2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRp
b25Qcm92aWRlcj4gbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJW
aWV3PiBtX3dlYlZpZXc7CiB9OwogCkBAIC00OTcsNiArNTMzLDcgQEAgdm9pZCBXZWJQdXNoRElu
amVjdGVkUHVzaFRlc3Q6OnJ1blRlc3QoTlNTdHJpbmcgKmV4cGVjdGVkTWVzc2FnZSwgTlNEaWN0
aW9uYXJ5ICoKICAgICB9KTsKICAgICBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZl
bnQpID0+IHsKICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNlbGYucmVnaXN0cmF0aW9uLnNo
b3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOwogICAgICAgICAgICAgaWYgKCFldmVudC5k
YXRhKSB7CiAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwg
ZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyMCw0MyArNTU3LDIwIEBAIHZv
aWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0OjpydW5UZXN0KE5TU3RyaW5nICpleHBlY3RlZE1l
c3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfV07CiAKICAgICBsb2FkUmVxdWVzdChodG1sU291
cmNlLCBzZXJ2aWNlV29ya2VyU291cmNlKTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVhZHkpOwogCi0gICAgU3RyaW5nIGJ1bmRsZUlkZW50aWZpZXIgPSAiY29tLmFwcGxlLldl
YktpdC5UZXN0V2ViS2l0QVBJIl9zOwotICAgIFN0cmluZyBzY29wZSA9IG1fc2VydmVyLT5yZXF1
ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5nOwotICAgIFN0cmluZyB0b3BpYyA9IGJ1bmRsZUlkZW50
aWZpZXIgKyAiICJfcyArIHNjb3BlOwotCi0gICAgaWQgb2JqID0gQHsKLSAgICAgICAgQCJ0b3Bp
YyI6IChOU1N0cmluZyAqKXRvcGljLAotICAgICAgICBAInVzZXJJbmZvIjogcHVzaFVzZXJJbmZv
Ci0gICAgfTsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0
aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKLQotICAgIFN0cmluZyBt
ZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRhdGEubGVuZ3RoKSB9OwotICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBl
bmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7Ci0KLSAgICBhdXRvIHV0aWxpdHlDb25uZWN0
aW9uID0gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53
ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7Ci0gICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRp
bmdGb3JSZXBseSh1dGlsaXR5Q29ubmVjdGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVu
Y3J5cHRlZFB1c2hNZXNzYWdlRm9yVGVzdGluZywgZW5jb2RlZE1lc3NhZ2UpOwotCi0gICAgLy8g
RmV0Y2ggcHVzaCBtZXNzYWdlcwotICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNl
OwotICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdl
czsKLSAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5T
RGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKLSAgICAgICAgbWVzc2FnZXMgPSByYXdNZXNz
YWdlczsKLSAgICAgICAgZ290TWVzc2FnZXMgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZXMpOwotCi0gICAgRVhQRUNUX0VRKFttZXNzYWdl
cyBjb3VudF0sIDF1KTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBpbmplY3RQdXNoTWVzc2FnZShwdXNo
VXNlckluZm8pOwogCi0gICAgLy8gSGFuZGxlIHB1c2ggbWVzc2FnZQogICAgIF9fYmxvY2sgYm9v
bCBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwotICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vz
c1B1c2hNZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRsZXI6Xihi
b29sIHJlc3VsdCkgeworICAgIF9fYmxvY2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3Vs
dCA9IGZhbHNlOworICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVz
c2FnZVByb2Nlc3NlZFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNz
ZWQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RXhw
ZWN0ZWRNZXNzYWdlKTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdl
UHJvY2Vzc2VkKTsKKworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlUHJvY2Vzc2VkUmVzdWx0
KTsKIH0KIAogVEVTVF9GKFdlYlB1c2hESW5qZWN0ZWRQdXNoVGVzdCwgSGFuZGxlSW5qZWN0ZWRF
bXB0eVB1c2gpCkBAIC03MDcsNiArNzIxLDc3IEBAIFRFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vi
c2NyaWJlVGVzdCkKICAgICBBU1NFUlRfVFJVRShbb2JqIGlzRXF1YWw6ZXhwZWN0ZWRdKTsKIH0K
IAorVEVTVF9GKFdlYlB1c2hEVGVzdCwgVG9vTWFueVNpbGVudFB1c2hlc0NhdXNlc1Vuc3Vic2Ny
aWJlKQoreworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sU291cmNlID0gUiJIVE1MKAorICAg
IDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
IGxldCBwdXNoTWFuYWdlciA9IG51bGw7CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5y
ZWdpc3RlcignL3N3LmpzJykudGhlbihhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lz
dHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBs
ZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHB1c2hNYW5hZ2Vy
ID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyOworICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlv
biA9IGF3YWl0IHB1c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZp
c2libGVPbmx5OiB0cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBW
QUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJT
dWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0g
IkVycm9yOiAiICsgZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7CisKKyAgICBmdW5jdGlv
biBnZXRQdXNoU3Vic2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIHB1c2hNYW5hZ2VyLmdldFN1
YnNjcmlwdGlvbigpLnRoZW4oKHN1YnNjcmlwdGlvbikgPT4geworICAgICAgICAgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShzdWJzY3JpcHRpb24gPyAi
U3Vic2NyaWJlZCIgOiAiVW5zdWJzY3JpYmVkIik7CisgICAgICAgIH0pOworICAgIH0KKyAgICA8
L3NjcmlwdD4KKyAgICApSFRNTCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3Jr
ZXJTY3JpcHRTb3VyY2UgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdwdXNoJywgKGV2ZW50KSA9
PiB7IH0pOyI7CisKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxpZD4gbWVzc2FnZSA9IG5pbDsKKyAg
ICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1l
c3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgcmVjZWl2ZWRNZXNzYWdlKSB7Cisg
ICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlZE1lc3NhZ2U7CisgICAgICAgIGdvdE1lc3NhZ2UgPSB0
cnVlOworICAgIH1dOworCisgICAgbG9hZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtl
clNjcmlwdFNvdXJjZSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3Nh
Z2UpOworICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmli
ZWQiXSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFdlYktpdDo6V2ViUHVzaEQ6Om1heFNp
bGVudFB1c2hDb3VudDsgaSsrKSB7CisgICAgICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAg
ICAgW21fd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2NyaXB0aW9uKCki
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IqKSB7IH1dOworICAgICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgICAgICBBU1NFUlRfVFJVRShbbWVz
c2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJTdWJzY3JpYmVkIl0pOworCisgICAgICAgIF9fYmxvY2sg
Ym9vbCBwcm9jZXNzZWRQdXNoID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCBwdXNoUmVz
dWx0ID0gZmFsc2U7CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGluamVjdFB1c2hNZXNzYWdlKEB7
IH0pOworCisgICAgICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2Uu
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICAgICAgcHVz
aFJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAgIHByb2Nlc3NlZFB1c2ggPSB0cnVlOworICAg
ICAgICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwcm9jZXNzZWRQdXNo
KTsKKworICAgICAgICAvLyBXZWJDb250ZW50IHNob3VsZCBmYWlsIHByb2Nlc3NpbmcgdGhlIHB1
c2ggc2luY2Ugbm8gbm90aWZpY2F0aW9uIHdhcyBzaG93bi4KKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHB1c2hSZXN1bHQpOworICAgIH0KKworICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbbV93
ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFB1c2hTdWJzY3JpcHRpb24oKSIgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciopIHsgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9T
dHJpbmc6QCJVbnN1YnNjcmliZWQiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAppbmRleCA3NWQyODJlYTllNDBkMjExNWFmMTk0OGFk
M2Y4ZWI4ZmM2MzdjY2Q0Li5jNTNiNDM5ZWEzODExMDEyNTZiNWMyOGI1MjFhZjgzMDRkMjljZDM0
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApAQCAtNTAsNiArNTAsNyBA
QCBwdWJsaWM6CiAgICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQ
cm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQx
Nl90IHBvcnQoKSBjb25zdDsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAg
IE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdpdGhMb2NhbGhvc3QoY29uc3QgU3RyaW5nJiBwYXRoID0g
Ii8iX3N0cikgY29uc3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQppbmRleCA4OGQ4NmJmMWQwYzE5ZjBjY2Yz
MDVmZDA4NWRhYTRkNzg3MzRkNDkwLi42YzYxODQ4YmEyZDYxNGM5YTc3NmU5M2U3MWM5MDdmNzlm
YWI5Yzc3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zNzYs
NiArMzc2LDExIEBAIGNvbnN0IGNoYXIqIEhUVFBTZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIHNjaGVtZTsKIH0KIAorU3RyaW5nIEhUVFBTZXJ2ZXI6Om9yaWdpbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXM6Ly8xMjcuMC4wLjE6
JWQiLCBzY2hlbWUoKSwgcG9ydCgpXTsKK30KKwogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpy
ZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICByZXR1cm4gW05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAIiVzOi8vMTI3LjAuMC4xOiVkJUAiLCBzY2hlbWUoKSwgcG9ydCgpLCBwYXRo
LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452619</attachid>
            <date>2022-02-18 20:23:06 -0800</date>
            <delta_ts>2022-02-21 11:23:07 -0800</delta_ts>
            <desc>Patch feedback</desc>
            <filename>bug-236863-20220218202305.patch</filename>
            <type>text/plain</type>
            <size>77809</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDE4ZWRkMzA4NzY2Y2Rj
YTQ0ZTk5ZTgzMzNkNDY1NGUyYTg1MTYwNC4uYjVhNzEyMzQ5YWRjNTczZDVhNjBmMDI4OWU0Y2Vm
NmNiY2I0ODgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAyLTE4ICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBQ
dXNoU3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHRoZSB1c2VyVmlzaWJsZU9ubHkgZmxh
ZyBzZXQuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgICAgcHVzaCBldmVudHMgc2hvdWxkIHJl
c3VsdCBpbiBhIHVzZXItZmFjaW5nIG5vdGlmaWNhdGlvbi4KKworICAgICAgICBUbyBlbmZvcmNl
IHRoaXMsIHdlIHVzZSBhIHF1b3RhIHN5c3RlbS4gQSBwdXNoIHN1YnNjcmlwdGlvbiBjYW4gcHJv
Y2VzcyB1cCB0byB0aHJlZSBzaWxlbnQKKyAgICAgICAgcHVzaGVzLiBBZnRlciB0aHJlZSBzaWxl
bnQgcHVzaGVzLCB3ZSByZW1vdmUgdGhlIHB1c2ggc3Vic2NyaXB0aW9uLiBUbyBjb250aW51ZSB0
byByZWNlaXZlCisgICAgICAgIHB1c2hlcywgdGhlIHVzZXIgbXVzdCBuYXZpZ2F0ZSBiYWNrIHRv
IHRoZSB3ZWJzaXRlIGFuZCB0aGUgc2l0ZSBtdXN0IHJlcXVlc3QgcGVybWlzc2lvbiB0bworICAg
ICAgICBzZW5kIHB1c2hlcyBhZ2Fpbi4KKworICAgICAgICBPcmlnaW5hbGx5IHdlIHdlcmUgZ29p
bmcgdG8gdXNlIGEgbW9yZSBjb21wbGljYXRlZCBxdW90YSBzeXN0ZW0gdGhhdCBtb3ZlZCBzdWJz
Y3JpcHRpb25zCisgICAgICAgIGZyb20gd2FraW5nIHRvIG5vbi13YWtpbmcgYmVmb3JlIGZpbmFs
bHkgdW5zdWJzY3JpYmluZywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgaXQgY291bGQgbGVhZAorICAg
ICAgICB0byBzdWJzY3JpcHRpb25zIGJlaW5nIGluIGEgcGFydGlhbGx5LXdvcmtpbmcgc3RhdGUg
dGhhdCB3b3VsZCBiZSBoYXJkIHRvIGV4cGxhaW4gYW5kIHJlYXNvbgorICAgICAgICBhYm91dC4g
QXMgYSByZXN1bHQsIEkndmUgcmVtb3ZlZCB0aGUgd2FrZVN0YXRlIGNvbHVtbiBmcm9tIFB1c2hE
YXRhYmFzZSBhbmQgcmVwbGFjZWQgaXQKKyAgICAgICAgYSBzaWxlbnRQdXNoQ291bnQgY29sdW1u
LgorCisgICAgICAgIFRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgc2VydmljZSB3b3JrZXIgaGFz
IHNob3duIGEgbm90aWZpY2F0aW9uIHdoaWxlIHByb2Nlc3NpbmcgYSBwdXNoCisgICAgICAgIGV2
ZW50LCB3ZSB1c2UgYSBib29sZWFuIGZsYWcgb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBU
aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGJlY2F1c2UKKyAgICAgICAgd2UgY3VycmVudGx5IG9u
bHkgcHJvY2VzcyBvbmUgcHVzaCBldmVudCBhdCBhIHRpbWUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudCk6CisKIDIwMjItMDItMTcgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQnVpbGQgZmFpbHVyZSB3aGVuIGJ1aWxkaW5n
IHdpdGggQU5HTEUgZW5hYmxlZCBzaW5jZSByMjg5OTEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDZmMGVmMzhjZDI3
NDdlNTc1NzgyZGYyNzA3NzNlY2ZjN2M3NzMyYmQuLjVkMzA2M2RiMWRiYTE5ZDA0OGVlNjJjMjg5
ODExNjNiMjg4ZmMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDItMTggIEJl
biBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBx
dW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2
ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgIC0g
SWYgYSBwdXNoIGV2ZW50IGRvZXNuJ3QgcmVzdWx0IGluIGEgbm90aWZpY2F0aW9uIG9yIGlmIHRo
ZSBhc3NvY2lhdGVkIHByb21pc2UgcmVqZWN0cywKKyAgICAgICAgICAgdGhlbiB3ZSBub3QgaW5j
cmVtZW50IHRoZSBzaWxlbnQgcHVzaCBjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhhdCBvcmlnaW4u
CisgICAgICAgICAtIFB1c2hTZXJ2aWNlIG5vdyByZW1vdmVzIGEgc3Vic2NyaXB0aW9uIGlmIHRo
ZSBvcmlnaW4gaGFzIHJlYWNoZWQgaXRzIHF1b3RhIG9mIHNpbGVudAorICAgICAgICAgICBwdXNo
ZXMuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxpbnQ+OjpjYWxs
UmVwbHkpOgorICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9j
ZXNzUG9vbCBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddKToKKyAgICAgICAgKiB3ZWJw
dXNoZC9QdXNoU2VydmljZS5tbToKKyAgICAgICAgKFdlYlB1c2hEOjp1cGRhdGVUb3BpY0xpc3Rz
KToKKyAgICAgICAgKFdlYlB1c2hEOjpQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50KToKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2Vi
UHVzaEQ6Ok1lc3NhZ2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6OmVuY29kZVJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKwog
MjAyMi0wMi0xNyAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIENyYXNoIHdoaWxlIGRlc3Ryb3lpbmcgUmVtb3RlVmlkZW9GcmFtZU9iamVjdEhlYXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcAppbmRl
eCA4YTFmNTNhYjQ4MGFlMGI0MDU5NjI2YmNhMGM0NmVlMDdjMzkyNWM1Li5mZDU3NDdiOWFjMTQx
OWVlYjJlZjg3NDE3ZTk2NTI0ZTRmNTgyZTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwCkBAIC00MywxOSArNDMsMjQgQEAKICNkZWZp
bmUgUFVTSERCX1JFTEVBU0VfTE9HX0VSUk9SKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUihQ
dXNoLCAiJXAgLSBQdXNoRGF0YWJhc2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpIFBVU0hEQl9SRUxFQVNFX0xPR19F
UlJPUigiRmFpbGVkIHRvIGJpbmQgc3RhdGVtZW50ICglZCk6ICVzIiwgbV9kYi0+bGFzdEVycm9y
KCksIG1fZGItPmxhc3RFcnJvck1zZygpKQogCisjZGVmaW5lIGtQdXNoUmVjb3JkQ29sdW1ucyAi
IHN1Yi5yb3dJRCwgc3MuYnVuZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1
Yi5lbmRwb2ludCwgc3ViLnRvcGljLCBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCBzdWIuc2hhcmVkQXV0aFNlY3JldCwg
c3ViLmV4cGlyYXRpb25UaW1lICIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgY29u
c3RleHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDE7CitzdGF0aWMgY29uc3Rl
eHByIGludCBjdXJyZW50UHVzaERhdGFiYXNlVmVyc2lvbiA9IDI7CisjZGVmaW5lIGtDdXJyZW50
UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiMiIKIAogc3RhdGljIGNvbnN0IEFTQ0lJTGl0ZXJh
bCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAiUFJBR01BIGF1dG9f
dmFjdXVtPUlOQ1JFTUVOVEFMIl9zLAogICAgICJDUkVBVEUgVEFCTEUgU3Vic2NyaXB0aW9uU2V0
cygiCisgICAgIiAgcm93SUQgSU5URUdFUiBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5ULCIKICAg
ICAiICBjcmVhdGlvblRpbWUgSU5UIE5PVCBOVUxMLCIKICAgICAiICBidW5kbGVJRCBURVhUIE5P
VCBOVUxMLCIKICAgICAiICBzZWN1cml0eU9yaWdpbiBURVhUIE5PVCBOVUxMLCIKLSAgICAiICB3
YWtlU3RhdGUgSU5UIE5PVCBOVUxMLCIKKyAgICAiICBzaWxlbnRQdXNoQ291bnQgSU5UIE5PVCBO
VUxMLCIKICAgICAiICBVTklRVUUoYnVuZGxlSUQsIHNlY3VyaXR5T3JpZ2luKSkiX3MsCiAgICAg
IkNSRUFURSBUQUJMRSBTdWJzY3JpcHRpb25zKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1B
UlkgS0VZIEFVVE9JTkNSRU1FTlQsIgogICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEws
IgogICAgICIgIHN1YnNjcmlwdGlvblNldElEIElOVCBOT1QgTlVMTCwiCiAgICAgIiAgc2NvcGUg
VEVYVCBOT1QgTlVMTCwiCkBAIC02OCw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVy
YWwgcHVzaERhdGFiYXNlU2NoZW1hVjFTdGF0ZW1lbnRzW10gPSB7CiAgICAgIiAgZXhwaXJhdGlv
blRpbWUgSU5ULCIKICAgICAiICBVTklRVUUoc2NvcGUsIHN1YnNjcmlwdGlvblNldElEKSkiX3Ms
CiAgICAgIkNSRUFURSBJTkRFWCBTdWJzY3JpcHRpb25zX1N1YnNjcmlwdGlvblNldElEX0luZGV4
IE9OIFN1YnNjcmlwdGlvbnMoc3Vic2NyaXB0aW9uU2V0SUQpIl9zLAotICAgICJQUkFHTUEgdXNl
cl92ZXJzaW9uID0gMSJfcworICAgICJQUkFHTUEgdXNlcl92ZXJzaW9uID0gIiBrQ3VycmVudFB1
c2hEYXRhYmFzZVZlcnNpb25TdHJpbmcgIiJfcwogfTsKIAogUHVzaFJlY29yZCBQdXNoUmVjb3Jk
Ojppc29sYXRlZENvcHkoKSBjb25zdCAmCkBAIC04NCw4ICs4OSw3IEBAIFB1c2hSZWNvcmQgUHVz
aFJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgogICAgICAgICBjbGllbnRQdWJsaWNLZXks
CiAgICAgICAgIGNsaWVudFByaXZhdGVLZXksCiAgICAgICAgIHNoYXJlZEF1dGhTZWNyZXQsCi0g
ICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtlU3RhdGUKKyAgICAgICAgZXhwaXJh
dGlvblRpbWUKICAgICB9OwogfQogCkBAIC0xMDIsOCArMTA2LDcgQEAgUHVzaFJlY29yZCBQdXNo
UmVjb3JkOjppc29sYXRlZENvcHkoKSAmJgogICAgICAgICBXVEZNb3ZlKGNsaWVudFB1YmxpY0tl
eSksCiAgICAgICAgIFdURk1vdmUoY2xpZW50UHJpdmF0ZUtleSksCiAgICAgICAgIFdURk1vdmUo
c2hhcmVkQXV0aFNlY3JldCksCi0gICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtl
U3RhdGUKKyAgICAgICAgZXhwaXJhdGlvblRpbWUKICAgICB9OwogfQogCkBAIC0yODAsNyArMjgz
LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiBy
ZWNvcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgaW50NjRfdCBzdWJzY3JpcHRp
b25TZXRJRCA9IDA7CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93aWQsIHdha2VTdGF0ZSBGUk9NIFN1YnNjcmlwdGlv
blNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAg
ICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93SUQg
RlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmln
aW4gPSA/Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3Fs
LT5iaW5kVGV4dCgxLCByZWNvcmQuYnVuZGxlSUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAg
ICAgIHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLnNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVf
T0spIHsKQEAgLTI4OSwxOSArMjkyLDE2IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNv
cmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09
IFNRTElURV9ST1cpCiAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNv
bHVtbkludDY0KDApOwotICAgICAgICAgICAgICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0aWNf
Y2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxKSk7Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoIXN1YnNjcmlwdGlvblNldElEKSB7Ci0gICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlw
dGlvblNldHMgVkFMVUVTKD8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxV
RVMoTlVMTCwgPywgPywgPywgMCkiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIpKSAhPSBTUUxJVEVfT0sK
ICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5idW5kbGVJRCkgIT0g
U1FMSVRFX09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2Vj
dXJpdHlPcmlnaW4pICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZElu
dCg0LCBzdGF0aWNfY2FzdDxpbnQ+KHJlY29yZC53YWtlU3RhdGUpKSAhPSBTUUxJVEVfT0spIHsK
KyAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMsIHJlY29yZC5zZWN1cml0eU9yaWdp
bikgIT0gU1FMSVRFX09LKSB7CiAgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJ
TkRfRVJST1IoKTsKICAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+IHsgfSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgUHVzaERhdGFiYXNl
OjppbnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFMVUVTKD8s
ID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0g
Y2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9ucyBWQUxVRVMo
TlVMTCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgICAgICAgICAgaWYg
KCFzcWwKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIp
KSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgyLCBzdWJz
Y3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LCkBAIC00MjMsMjEgKzQyMywyMCBAQCB2b2lkIFB1
c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKFB1c2hTdWJzY3JpcHRpb25JZGVu
dGlmaWVyIGlkZW50aWZpZQogICAgIH0pOwogfQogCi1zdGF0aWMgUHVzaFJlY29yZCBtYWtlUHVz
aFJlY29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHNxbCkKK3N0YXRp
YyBQdXNoUmVjb3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVz
ZXRTY29wZSYgc3FsLCBpbnQgY29sdW1uSW5kZXgpCiB7CiAgICAgUHVzaFJlY29yZCByZWNvcmQ7
Ci0gICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoMCkpOwotICAgIHJlY29yZC5i
dW5kbGVJRCA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICByZWNvcmQuc2VjdXJpdHlPcmlnaW4g
PSBzcWwtPmNvbHVtblRleHQoMik7Ci0gICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0
KDMpOwotICAgIHJlY29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dCg0KTsKLSAgICByZWNv
cmQudG9waWMgPSBzcWwtPmNvbHVtblRleHQoNSk7Ci0gICAgcmVjb3JkLnNlcnZlclZBUElEUHVi
bGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKDYpOwotICAgIHJlY29yZC5jbGllbnRQdWJsaWNLZXkg
PSBzcWwtPmNvbHVtbkJsb2IoNyk7Ci0gICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwt
PmNvbHVtbkJsb2IoOCk7Ci0gICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVt
bkJsb2IoOSk7Ci0gICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9t
VmFsdWUoc3FsLT5jb2x1bW5WYWx1ZSgxMCkpOwotICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0
aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxMSkpOworICAgIHJlY29yZC5p
ZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZp
ZXJUeXBlPihzcWwtPmNvbHVtbkludDY0KGNvbHVtbkluZGV4KyspKTsKKyAgICByZWNvcmQuYnVu
ZGxlSUQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNlY3Vy
aXR5T3JpZ2luID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5z
Y29wZSA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuZW5kcG9p
bnQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnRvcGljID0g
c3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zZXJ2ZXJWQVBJRFB1
YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuY2xp
ZW50UHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAgIHJlY29y
ZC5jbGllbnRQcml2YXRlS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAg
IHJlY29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4Kysp
OworICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbVZhbHVlKHNx
bC0+Y29sdW1uVmFsdWUoY29sdW1uSW5kZXgrKykpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0K
QEAgLTQ0NywxMCArNDQ2LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5VG9waWMo
Y29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBkaXNwYXRj
aE9uV29ya1F1ZXVlKFt0aGlzLCB0b3BpYyA9IGNyb3NzVGhyZWFkQ29weSh0b3BpYyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAg
ICAgICAgIC8vIEZvcmNlIFNRTGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3Bl
KSBpbmRleCBmaXJzdCB2aWEgQ1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRT
dGF0ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBz
dWIucm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIu
ZW5kcG9pbnQsIHN1Yi50b3BpYywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVi
bGljS2V5LCBzdWIuY2xpZW50UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAg
ICAgICAgICAgIiAgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mu
d2FrZVN0YXRlICIKKyAgICAgICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAg
ICAgICAgICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBK
T0lOIFN1YnNjcmlwdGlvblNldHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRp
b25TZXRJRCA9IHNzLnJvd2lkICIKQEAgLTQ2Nyw3ICs0NjMsNyBAQCB2b2lkIFB1c2hEYXRhYmFz
ZTo6Z2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRG
cm9tUm93KHNxbCkpOworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9
CiAKQEAgLTQ3NiwxMCArNDcyLDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5QnVu
ZGxlSWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGMKICAgICBkaXNw
YXRjaE9uV29ya1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJ
RCksIHNjb3BlID0gY3Jvc3NUaHJlYWRDb3B5KHNjb3BlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2Ug
U1FMaXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlwdGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZp
YSBDUk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
Ci0gICAgICAgICAgICAiU0VMRUNUICIKLSAgICAgICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVu
ZGxlSUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRv
cGljLCAiCi0gICAgICAgICAgICAiICBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGll
bnRQdWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCAiCi0gICAgICAgICAgICAiICBzdWIu
c2hhcmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRpb25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAg
ICAgICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3JkQ29sdW1ucwogICAgICAgICAgICAgIkZST00g
U3Vic2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAgICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9u
U2V0cyBzcyAiCiAgICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93
aWQgIgpAQCAtNDk2LDcgKzQ4OSw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeUJ1
bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsKSk7Cisg
ICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1h
a2VQdXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsKICAgICB9KTsKIH0KIApAQCAtNTEyLDE3ICs1
MDUsMTEgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoSGFzaFNldDxQdXNoU3Vic2NyaXB0aW8KICAgICB9KTsKIH0KIAotdm9pZCBQdXNo
RGF0YWJhc2U6OmdldFRvcGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVz
aFdha2VTdGF0ZVRvVG9waWNNYXAmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFB1c2hE
YXRhYmFzZTo6Z2V0VG9waWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4m
Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhp
cywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKLSAgICAgICAgY29uc3RleHByIGludCBudW1iZXJPZldha2VTdGF0ZXMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsKLSAgICAgICAgVmVjdG9y
PFZlY3RvcjxTdHJpbmc+LCBudW1iZXJPZldha2VTdGF0ZXM+IHRvcGljc0J5V2FrZVN0YXRlKG51
bWJlck9mV2FrZVN0YXRlcyk7IC8vIHVzZWQgYmVjYXVzZSBIYXNoTWFwOjppc29sYXRlZENvcHkg
ZG9lc24ndCBleGlzdAotCi0gICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1
ZSgKLSAgICAgICAgICAgICJTRUxFQ1Qgc3Mud2FrZVN0YXRlLCBzdWIudG9waWMgIgotICAgICAg
ICAgICAgIkZST00gU3Vic2NyaXB0aW9ucyBzdWIgIgotICAgICAgICAgICAgIkpPSU4gU3Vic2Ny
aXB0aW9uU2V0cyBzcyAiCi0gICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0g
c3Mucm93aWQiX3MpOworICAgICAgICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CisgICAgICAgIGF1
dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHRvcGljIEZST00gU3Vic2Ny
aXB0aW9ucyJfcyk7CiAgICAgICAgIGlmICghc3FsKSB7CiAgICAgICAgICAgICBQVVNIREJfUkVM
RUFTRV9MT0dfQklORF9FUlJPUigpOwogICAgICAgICAgICAgV29ya1F1ZXVlOjptYWluKCkuZGlz
cGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC01MzEsMjIgKzUxOCwxMTggQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFRv
cGljc0J5V2FrZVN0YXRlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUHVzaFdha2VTdGF0ZVRvVG8K
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHdoaWxlIChzcWwtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgICAgICBhdXRvIHB1c2hXYWtlU3RhdGUgPSBz
cWwtPmNvbHVtbkludCgwKTsKLSAgICAgICAgICAgIGF1dG8gdG9waWMgPSBzcWwtPmNvbHVtblRl
eHQoMSk7Ci0gICAgICAgICAgICBpZiAocHVzaFdha2VTdGF0ZSA+PSAwICYmIHB1c2hXYWtlU3Rh
dGUgPCBudW1iZXJPZldha2VTdGF0ZXMpCi0gICAgICAgICAgICAgICAgdG9waWNzQnlXYWtlU3Rh
dGVbcHVzaFdha2VTdGF0ZV0uYXBwZW5kKFdURk1vdmUodG9waWMpKTsKLSAgICAgICAgfQorICAg
ICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAgICAgICAgICAgIHRvcGlj
cy5hcHBlbmQoc3FsLT5jb2x1bW5UZXh0KDApKTsKIAotICAgICAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgdG9waWNzQnlXYWtlU3RhdGUgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BpY3NCeVdh
a2VTdGF0ZSkpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUHVzaFdha2VTdGF0ZVRvVG9waWNN
YXAgcmVzdWx0OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxp
bnQ+KFB1c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsgKytpKQotICAgICAgICAgICAgICAg
IHJlc3VsdC5hZGQoc3RhdGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oaSksIFdURk1vdmUodG9waWNz
QnlXYWtlU3RhdGVbaV0pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVzdWx0KSk7CisgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0b3BpY3MgPSBjcm9zc1RocmVh
ZENvcHkoV1RGTW92ZSh0b3BpY3MpKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUodG9waWNzKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQogCit2
b2lkIFB1c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYg
YnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoaW50KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29ya1F1
ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3VyaXR5
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaW50
IHNpbGVudFB1c2hDb3VudCA9IDA7CisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRyYW5zYWN0
aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiVVBEQVRFIFN1YnNj
cmlwdGlvblNldHMgU0VUIHNpbGVudFB1c2hDb3VudCA9IHNpbGVudFB1c2hDb3VudCArIDEgV0hF
UkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAg
ICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwg
c3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAg
ICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAg
ICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChz
cWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgICAgIGNvbXBsZXRlT25N
YWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDApOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHNpbGVudFB1c2hD
b3VudCBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0
eU9yaWdpbiA9ID8iX3MpOworCisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0
KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwgc3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9y
aWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9H
X0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQor
ICAgICAgICAgICAgICAgIHNpbGVudFB1c2hDb3VudCA9IHNxbC0+Y29sdW1uSW50KDApOworICAg
ICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc2lsZW50UHVzaENvdW50
KTsKKyAgICB9KTsKK30KKwordm9pZCBQdXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZHNCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25z
dCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQ
dXNoUmVjb3JkPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBkaXNwYXRjaE9uV29y
a1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCksIHNlY3Vy
aXR5T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KHNlY3VyaXR5T3JpZ2luKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAg
VmVjdG9yPFB1c2hSZWNvcmQ+IHJlbW92ZWRSZWNvcmRzOworICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKwor
ICAgICAgICBpbnQ2NF90IHN1YnNjcmlwdGlvblNldElEID0gMDsKKworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCisgICAgICAgICAgICAg
ICAgIlNFTEVDVCBzdWIuc3Vic2NyaXB0aW9uU2V0SUQsICIga1B1c2hSZWNvcmRDb2x1bW5zCisg
ICAgICAgICAgICAgICAgIkZST00gU3Vic2NyaXB0aW9uU2V0cyBzcyAiCisgICAgICAgICAgICAg
ICAgIkpPSU4gU3Vic2NyaXB0aW9ucyBzdWIgIgorICAgICAgICAgICAgICAgICJPTiBzcy5yb3dp
ZCA9IHN1Yi5zdWJzY3JpcHRpb25TZXRJRCAiCisgICAgICAgICAgICAgICAgIldIRVJFIHNzLmJ1
bmRsZUlEID0gPyBBTkQgc3Muc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKyAgICAgICAgICAgIGlm
ICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwt
PmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAg
ICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNv
bXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNo
UmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgICAgICBzdWJzY3JpcHRpb25TZXRJRCA9IHNxbC0+Y29sdW1uSW50KDApOworICAgICAgICAg
ICAgICAgIHJlbW92ZWRSZWNvcmRzLmFwcGVuZChtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAx
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBh
dXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIkRFTEVURSBGUk9NIFN1YnNjcmlwdGlv
bnMgV0hFUkUgc3Vic2NyaXB0aW9uU2V0SUQgPSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3Fs
IHx8IHNxbC0+YmluZEludCgxLCBzdWJzY3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAg
ICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBW
ZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIFZlY3RvcjxQdXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8g
c3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00gU3Vic2NyaXB0aW9uU2V0
cyBXSEVSRSByb3dpZCA9ID8iX3MpOworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5k
SW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAg
ICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIGNvbXBs
ZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQdXNoUmVj
b3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CisgICAgICAgICAgICAg
ICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVjdG9y
PFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShy
ZW1vdmVkUmVjb3JkcykpOworICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaAppbmRleCA4M2Q4OTgxZTAzMzM2YWMyNzY2OTZj
NmU1M2QxODkxYzViNTIwNjc3Li5hNmNlODc2NGZhYWZlYmU0ZmY2MTgxMjhkYjFhMDY5ZDY5YzVl
OWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRh
YmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNl
LmgKQEAgLTQyLDE0ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8gV2FrZSBz
dGF0ZSB0aGF0IGFwcGxpZXMgZm9yIGRldmljZXMgdGhhdCByYWNlLXRvLXNsZWVwLgotZW51bSBj
bGFzcyBQdXNoV2FrZVN0YXRlIDogdWludDhfdCB7Ci0gICAgV2FraW5nLCAvLyBBbGwgcHVzaGVz
IHdpbGwgd2FrZSBkZXZpY2UuCi0gICAgT3Bwb3J0dW5pc3RpYywgLy8gTG93IHByaW9yaXR5IHB1
c2hlcyBtYXkgbm90IHdha2UgZGV2aWNlLgotICAgIE5vbldha2luZywgLy8gTm8gcHVzaGVzIHdp
bGwgd2FrZSBkZXZpY2UuCi0gICAgTnVtYmVyT2ZTdGF0ZXMKLX07Ci0KIHN0cnVjdCBQdXNoUmVj
b3JkIHsKICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyOwogICAgIFN0
cmluZyBidW5kbGVJRDsKQEAgLTYyLDcgKzU0LDYgQEAgc3RydWN0IFB1c2hSZWNvcmQgewogICAg
IFZlY3Rvcjx1aW50OF90PiBjbGllbnRQcml2YXRlS2V5OwogICAgIFZlY3Rvcjx1aW50OF90PiBz
aGFyZWRBdXRoU2VjcmV0OwogICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hUaW1lU3RhbXA+IGV4cGly
YXRpb25UaW1lIHsgfTsKLSAgICBQdXNoV2FrZVN0YXRlIHdha2VTdGF0ZSB7IFB1c2hXYWtlU3Rh
dGU6Oldha2luZyB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBpc29sYXRlZENv
cHkoKSBjb25zdCAmOwogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5
KCkgJiY7CkBAIC04MSw5ICs3MiwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRSZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcm
IGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0
ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0SWRlbnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUb3Bp
Y3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CiAKLSAgICB1
c2luZyBQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCA9IEhhc2hNYXA8UHVzaFdha2VTdGF0ZSwgVmVj
dG9yPFN0cmluZz4sIFdURjo6SW50SGFzaDxQdXNoV2FrZVN0YXRlPiwgV1RGOjpTdHJvbmdFbnVt
SGFzaFRyYWl0czxQdXNoV2FrZVN0YXRlPj47Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRU
b3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hXYWtlU3RhdGVUb1Rv
cGljTWFwJiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY3JlbWVudFNpbGVudFB1
c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3Jp
Z2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKGNv
bnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFB1c2hSZWNvcmQ+JiYpPiYmKTsKIAogcHJpdmF0ZToK
ICAgICBQdXNoRGF0YWJhc2UoUmVmPFdvcmtRdWV1ZT4mJiwgVW5pcXVlUmVmPFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCA1MTBjMWIwNzJiODk3ZDc5
MDBhYTZlNmVhMDJkOGYwMDYzOGZiM2RkLi5iMDVmYTMyODIyNzVmM2UxNWIwMTIzMGI5N2ZlODQz
N2E2OTA4ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8
d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC04OCw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNr
VG9GaXJlTm90aWZpY2F0aW9uRXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRp
b24mLCBjb25zdCBTdHJpbmcmIGFjdGlvbik7CiAjZW5kaWYKIAorICAgIGJvb2wgaGFzUGVuZGlu
Z1NpbGVudFB1c2hFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ1NpbGVudFB1c2hF
dmVudDsgfQorICAgIHZvaWQgc2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudChib29sIHZhbHVl
KSB7IG1faGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCA9IHZhbHVlOyB9CisKIHByaXZhdGU6CiAg
ICAgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBT
ZXJ2aWNlV29ya2VyRGF0YSYmLCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5
T3JpZ2luPiYmLCBTZXJ2aWNlV29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRv
cE9yaWdpbiwgSURCQ2xpZW50OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlcios
IHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsK
ICAgICB2b2lkIG5vdGlmeVNlcnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7
CkBAIC05Niw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygp
IGNvbnN0IHsgcmV0dXJuICFtX2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCiAgICAgTm90
aWZpY2F0aW9uQ2xpZW50KiBub3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBtX25v
dGlmaWNhdGlvbkNsaWVudC5nZXQoKTsgfQorCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Np
b25JRD4gc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAog
ICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwpAQCAtMTA5LDYgKzEx
NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVkUHJv
bWlzZT4+IG1fcGVuZGluZ1NraXBXYWl0aW5nUHJvbWlzZXM7CiAgICAgUEFMOjpTZXNzaW9uSUQg
bV9zZXNzaW9uSUQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9u
b3RpZmljYXRpb25DbGllbnQ7CisgICAgYm9vbCBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQg
eyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uY3BwCmluZGV4IGQ4ODQ1YWIyNGMzODA2MmMwNzI4MDE1NjQwZmZiMGE0ZjNkZmJhZjcuLmY3
YTQ0NWQxNjVmYWFjYWFmN2MyYzg0ZmQzMmUwNTk3YjRiNWVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJDb250YWluZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yODYsNiArMjg3LDkg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGlmIChjb250ZXh0LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCisgICAgICAgIGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuc2V0SGFzUGVuZGluZ1NpbGVu
dFB1c2hFdmVudChmYWxzZSk7CisKICAgICAvLyBUaGUgTm90aWZpY2F0aW9uIGlzIGtlcHQgYWxp
dmUgYnkgdmlydHVlIG9mIGJlaW5nIHNob3coKSduIHNvb24uCiAgICAgLy8gRklYTUU6IFdoZW4g
aW1wbGVtZW50aW5nIGdldE5vdGlmaWNhdGlvbnMoKSwgc3RvcmUgdGhpcyBOb3RpZmljYXRpb24g
aW4gdGhlIHJlZ2lzdHJhdGlvbidzIG5vdGlmaWNhdGlvbiBsaXN0LgogICAgIGF1dG8gbm90aWZp
Y2F0aW9uID0gTm90aWZpY2F0aW9uOjpjcmVhdGUoY29udGV4dCwgdGl0bGUsIG9wdGlvbnMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAppbmRleCBlMmU0MDhiMTA5MTU0N2ZkMDBiN2ZhNTAy
N2Y4NDFlZWM3YmU1NjhiLi5jODEzNWE3MmM2ZWNkMGRkNDM1ZTk1NDU1ZWIwOWRlZjAzZTJiOWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
Y29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMjI0LDEwICsyMjQsMTIgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRp
b25hbDxWZWN0b3I8dWludDhfdD4KICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRM
b29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0g
V2Vha1B0ciB7ICp0aGlzIH0sIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZSB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBm
aXJpbmcgZXZlbnQgZm9yIHdvcmtlciAlIiBQUkl1NjQsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS0+dGhyZWFkKCkuaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwogCisgICAgICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS0+c2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCh0cnVlKTsKKwog
ICAgICAgICBhdXRvIHB1c2hFdmVudCA9IFB1c2hFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5w
dXNoRXZlbnQsIHsgfSwgV1RGTW92ZShkYXRhKSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6
Olllcyk7CiAgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChw
dXNoRXZlbnQpOwogCi0gICAgICAgIHB1c2hFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJv
bWlzZXNBcmVTZXR0bGVkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgbXV0YWJs
ZSB7CisgICAgICAgIHB1c2hFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVT
ZXR0bGVkKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBzZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUsIGV2ZW50Q3JlYXRpb25UaW1lID0gcHVzaEV2ZW50LT50aW1lU3RhbXAoKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIG11
dGFibGUgewogICAgICAgICAgICAgYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UgPSBmYWxzZTsK
ICAgICAgICAgICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IGV4dGVuZExpZmV0aW1lUHJvbWlzZXMp
IHsKICAgICAgICAgICAgICAgICBpZiAocHJvbWlzZS0+c3RhdHVzKCkgPT0gRE9NUHJvbWlzZTo6
U3RhdHVzOjpSZWplY3RlZCkgewpAQCAtMjM1LDcgKzIzNywxNCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90PgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsYmFjayghaGFzUmVqZWN0ZWRBbnlQcm9taXNl
KTsKKworICAgICAgICAgICAgYm9vbCBzaG93ZWROb3RpZmljYXRpb24gPSAhc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLT5oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCk7CisgICAgICAgICAgICBi
b29sIHN1Y2Nlc3MgPSAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlICYmIHNob3dlZE5vdGlmaWNhdGlv
bjsKKworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tU
b0ZpcmVQdXNoRXZlbnQgZmFpbGVkIHRvIHByb2Nlc3MgcHVzaCBldmVudCAocmVqZWN0ZWRQcm9t
aXNlID0gJWQsIHNob3dlZE5vdGlmaWNhdGlvbiA9ICVkKSIsIGhhc1JlamVjdGVkQW55UHJvbWlz
ZSwgc2hvd2VkTm90aWZpY2F0aW9uKTsKKworICAgICAgICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCAxMmY4ZThhNWI1OWYwMGRkN2I3ZWZkM2IyYWQx
MzU3ZmEyNTE2OTMzLi4xNjZlZWRiZWZmNWZmYTg0NmU0Y2RkOGVjYjViNjY0YzRhMzhiYzFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMjI1MCwyOSArMjI1MCw1MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5J
bldlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgICAgICBt
YW5hZ2VyLT5tb3ZlRGF0YShvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0b3JdIHsgfSk7
CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKwogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNh
bGxiYWNrKQogewotI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQogICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0co
Tm90aWZpY2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGdldHRpbmcgcGVuZGluZyBwdXNoIG1lc3Nh
Z2VzIGZvciBzZXNzaW9uIElEICUiIFBSSXU2NCwgc2Vzc2lvbklELnRvVUludDY0KCkpOwogICAg
ICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdl
cyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UKICAgICAg
ICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3QgZmluZCBzZXNz
aW9uIGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBzZXNzaW9uSUQu
dG9VSW50NjQoKSk7Ci0jZW5kaWYKLSAgICBjYWxsYmFjayh7IH0pOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJvY2VzcyBoYW5k
bGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vzc2lvbiAlbGx1Iiwgc2Vz
c2lvbklELnRvVUludDY0KCkpOwotICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1NlcnZlcigpLnBy
b2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdlLnB1c2hEYXRhKSwgV1RGTW92ZShw
dXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAg
IGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHB1c2hNZXNzYWdlLnJl
Z2lzdHJhdGlvblVSTCk7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCkucHJvY2Vz
c1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3ZlKHB1c2hN
ZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRo
aXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIE5ldHdv
cmtTZXNzaW9uKiBzZXNzaW9uOworICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYgKHNlc3Npb24g
PSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICAgICAgICAgIHNlc3Npb24t
Pm5vdGlmaWNhdGlvbk1hbmFnZXIoKQorICAgICAgICAgICAgICAgICAgICAuaW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KFdURk1vdmUob3JpZ2luKSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIHJlc3VsdF0oaW50KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAg
ICAgICAgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIExPRyhQdXNoLCAiTmV0d29ya2luZyBwcm9j
ZXNzIGFza2VkIHRvIGhhbmRsZSBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vz
c2lvbiAlbGx1LCBidXQgdGhhdCBzZXNzaW9uIGRvZXNuJ3QgZXhpc3QiLCBzZXNzaW9uSUQudG9V
SW50NjQoKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjZWxzZQor
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4m
KT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdl
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgY2Fs
bGJhY2soZmFsc2UpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKSAmJiBF
TkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6ZGVs
ZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNDg2Y2I1YjNkZjY3MDBlODgwM2Y2MDA5
OWNhMzU3ZWYwZDJiYTg0MS4uODk5NTg2ZTcwYzBjZjVjYWMxMmQ0ODM0MDI4OTZjYzk2OWM4Zjdh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBA
IC0xNzQsNiArMTc0LDE2IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldFB1
c2hQZXJtaXNzaW9uU3RhdGUoVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRpCiAgICAgc2VuZE1lc3Nh
Z2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRl
PihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShzY29wZVVSTCkpOwogfQogCit2
b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkluY3Jl
bWVudFNpbGVudFB1c2hDb3VudD4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUo
b3JpZ2luKSk7Cit9CisKIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgdHlwZW5hbWUuLi4gQXJncz4KIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNl
bmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpAQCAtMjI3LDYgKzIzNywxNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxib29sPiB7CiAgICAgfQogfTsKIAordGVtcGxh
dGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8aW50PiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5
KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4g
dmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpCisg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKCp2YWx1ZSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlD
YWxsZXI8VmVjdG9yPFN0cmluZz4mJj4gewogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVt
b246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNTJhNjM4NGJhYjEwZTBhZTkxNmJhYTIzZjkx
NGE5MjVmZWUzMDhkZC4uMDZlNjE1N2ZhODY1NDUyNTU1OWJjYjU4NDAzMjI5ZmMyYWMzMmMxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYxLDYg
KzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoVVJM
JiYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYp
PiYmKTsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oVVJMJiYgc2NvcGVVUkwsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vi
c2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKICAgICB2b2lk
IGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOwor
ICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOwogCiBwcml2YXRlOgogICAg
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5n
JiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1
c2hEYWVtb25Db25zdGFudHMuaAppbmRleCBmM2Y3YmJlNjNmNGVkMzVlZGNmM2UyYWFhZDkzZmIz
ZTQ5MjlmZjk5Li40MzE4OTlkNzYwNmU0NjE2YTQ3MDE0ZTAwYTgyYWMzZjZmMmY5ZWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC0yNyw2
ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEIHsKIAorLy8gSWYgYW4gb3Jp
Z2luIHByb2Nlc3NlcyBtb3JlIHRoYW4gdGhpcyBtYW55IHNpbGVudCBwdXNoZXMsIHRoZW4gaXQg
d2lsbCBiZSB1bnN1YnNjcmliZWQgZnJvbSBwdXNoLgorY29uc3RleHByIGludCBtYXhTaWxlbnRQ
dXNoQ291bnQgPSAzOworCiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5
ID0gInByb3RvY29sIHZlcnNpb24iOwogY29uc3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lv
blZhbHVlID0gMTsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdl
S2V5ID0gImVuY29kZWQgbWVzc2FnZSI7CkBAIC00OCw3ICs1MSw4IEBAIGVudW0gY2xhc3MgTWVz
c2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNlLAogICAgIFVu
c3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlLAogICAgIEdldFB1c2hTdWJzY3JpcHRpb24sCi0gICAg
R2V0UHVzaFBlcm1pc3Npb25TdGF0ZQorICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUsCisgICAg
SW5jcmVtZW50U2lsZW50UHVzaENvdW50LAogfTsKIAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVT
ZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQpAQCAtNjUsNiArNjksNyBAQCBpbmxp
bmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6VW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2U6CiAgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6R2V0UHVzaFN1YnNjcmlwdGlvbjoKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVu
dFNpbGVudFB1c2hDb3VudDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2FzZSBNZXNzYWdl
VHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0
ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBhN2E4YmI2MDg3NWE5OTUyZTk5MGE1
MmFkODlkMzM0YzZkNmZmOGZhLi4zYzgxOGZiMjE4MzkzMmMyMTBmNTdhYWU2MDAwMzIzN2U0YWQ0
MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNp
bXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1w
b3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTQxLDYg
KzQyLDcgQEAKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbXBvcnQgIldlYkNl
cnRpZmljYXRlSW5mby5oIgogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisjaW1w
b3J0ICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3ND
YWNoZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9j
ZXNzUG9vbC5oIgpAQCAtNjEyLDQgKzYxNCw5IEBAIC0gKHZvaWQpX3Rlcm1pbmF0ZUFsbFdlYkNv
bnRlbnRQcm9jZXNzZXMKICAgICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQ
cm9jZXNzZXMoKTsKIH0KIAorLSAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKV9ub3RpZmljYXRp
b25NYW5hZ2VyRm9yVGVzdGluZworeworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKF9wcm9jZXNz
UG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7
Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggZTFmZDk5MWRmYjJiNzg0OTQ0NTAzNmNk
ODI5ZTY0ZDdjYzVkZGI2MS4uNmUxNTU3YWM1YjFkZTk2ODIwMjI5NzdkZDdkY2YzMzY0Yjg2MTZm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
UHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlP
cmlnaW4uaD4KIApAQCAtMTM3LDYgKzEzOCw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBn
ZXR0ZXI9X2lzQ29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0Q29v
a2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFydGl0
aW9uaW5nRW5hYmxlZCBXS19BUElfREVQUkVDQVRFRCgiUGFydGl0aW9uZWQgY29va2llcyBhcmUg
bm8gbG9uZ2VyIHN1cHBvcnRlZCIsIG1hY29zKDEwLjEyLjMsIDEwLjE0LjQpLCBpb3MoMTAuMywg
MTIuMikpOwogCistIChXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFn
ZXJGb3JUZXN0aW5nOworCiAvLyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZWVkUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJM
IHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlmaWNh
dGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNS40KSwgaW9zKDEzLjQpKTsKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9i
amVjdHNGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKaW5kZXggZmU0MTVlMDA4ZGQ2MzA1MTA1
ODI0ZjhjZmIwMjY5NWFmYzMyM2ZlYi4uZjdkZDQzYTgxMTQwZGNlZjZmOTMxNDEzMjUwNzNkNjc0
YjlkMjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNjEsNiArNjEs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhcGlk
UHVibGljS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6
OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKICAg
ICB2b2lkIHVuc3Vic2NyaWJlKGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBzY29wZSwgV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9u
RGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBT
dHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisKICAgICB2b2lkIGRpZENvbXBsZXRlR2V0
U3Vic2NyaXB0aW9uUmVxdWVzdChHZXRTdWJzY3JpcHRpb25SZXF1ZXN0Jik7CiAgICAgdm9pZCBk
aWRDb21wbGV0ZVN1YnNjcmliZVJlcXVlc3QoU3Vic2NyaWJlUmVxdWVzdCYpOwogICAgIHZvaWQg
ZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQppbmRleCAwNThhNzY5ZTY5NmNhZWNlNjY0NTQy
ZDBjYTcwMDhjODc0YjhhN2YwLi4yMWQ2YTU4NzBhYWNjMzQxYmMxZjQwYzgzZDNkZDVlMzdlYjBj
YzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgIkFwcGxlUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJNb2Nr
UHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJX
ZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KICNpbXBvcnQgPFdlYkNvcmUvUHVzaE1lc3NhZ2VDcnlwdG8uaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTQ0LDE5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJQdXNo
RCB7CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVRvcGljTGlzdHMoUHVzaFNlcnZpY2VDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQdXNoRGF0YWJhc2UmIGRhdGFiYXNlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGRhdGFiYXNlLmdldFRvcGljc0J5V2Fr
ZVN0YXRlKFsmY29ubmVjdGlvbiwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oYXV0byYmIHRvcGljTWFwKSBtdXRhYmxlIHsKKyAgICBkYXRhYmFzZS5nZXRU
b3BpY3MoWyZjb25uZWN0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXShhdXRvJiYgdG9waWNzKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklYTUU6IG1v
dmUgdG9waWNzIHRvIGlnbm9yZWQgbGlzdCBiYXNlZCBvbiB1c2VyIHByZWZlcmVuY2VzLgotICAg
ICAgICBQdXNoU2VydmljZUNvbm5lY3Rpb246OlRvcGljTGlzdHMgdG9waWNMaXN0czsKLQotICAg
ICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6V2FraW5nKTsg
aXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAodG9waWNMaXN0cy5l
bmFibGVkVG9waWNzLCBpdC0+dmFsdWUpOwotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFw
LmZpbmQoUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYyk7IGl0ICE9IHRvcGljTWFwLmVuZCgp
KQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlzdHMub3Bwb3J0dW5pc3RpY1RvcGljcywg
aXQtPnZhbHVlKTsKLSAgICAgICAgaWYgKGF1dG8gaXQgPSB0b3BpY01hcC5maW5kKFB1c2hXYWtl
U3RhdGU6Ok5vbldha2luZyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAgc3Rk
Ojpzd2FwKHRvcGljTGlzdHMubm9uV2FraW5nVG9waWNzLCBpdC0+dmFsdWUpOwotCi0gICAgICAg
IGNvbm5lY3Rpb24uc2V0VG9waWNMaXN0cyhXVEZNb3ZlKHRvcGljTGlzdHMpKTsKLQorICAgICAg
ICBjb25uZWN0aW9uLnNldEVuYWJsZWRUb3BpY3MoV1RGTW92ZSh0b3BpY3MpKTsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTQ4Miw2ICs0NzMsMzIgQEAgdm9p
ZCBQdXNoU2VydmljZTo6ZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJzY3JpYmVS
ZXF1ZXN0JiByZXF1ZXN0KQogICAgIGZpbmlzaGVkUHVzaFNlcnZpY2VSZXF1ZXN0KG1fdW5zdWJz
Y3JpYmVSZXF1ZXN0cywgcmVxdWVzdCk7CiB9CiAKK3ZvaWQgUHVzaFNlcnZpY2U6OmluY3JlbWVu
dFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiBoYW5k
bGVyKQoreworICAgIG1fZGF0YWJhc2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5kbGVJ
ZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3Vy
aXR5T3JpZ2luLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oaW50IHNpbGVudFB1c2hDb3Vu
dCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChzaWxlbnRQdXNoQ291bnQgPCBXZWJLaXQ6OldlYlB1
c2hEOjptYXhTaWxlbnRQdXNoQ291bnQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVz
aENvdW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVB
U0VfTE9HKFB1c2gsICJSZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdpdGgg
JXtwdWJsaWN9cyAle3NlbnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAlZCBzaWxlbnQgcHVz
aGVzIiwgYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51dGY4
KCkuZGF0YSgpLCBzaWxlbnRQdXNoQ291bnQpOworCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92
ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVudGlm
aWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3Jp
Z2luLCBzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRvJiYg
cmVtb3ZlZFJlY29yZHMpIG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQg
OiByZW1vdmVkUmVjb3JkcykgeworICAgICAgICAgICAgICAgIGF1dG8gdG9waWMgPSBtYWtlUHVz
aFRvcGljKHJlY29yZC5idW5kbGVJRCwgcmVjb3JkLnNjb3BlKTsKKyAgICAgICAgICAgICAgICBt
X2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJsaWNL
ZXksIFt0b3BpY10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHVzaCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0IGNvdWxk
bid0IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7cHVibGlj
fXMgY29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4uVVRGOFN0
cmluZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlVG9waWNM
aXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFtzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGhhbmRsZXIo
c2lsZW50UHVzaENvdW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwogZW51bSBjbGFzcyBDb250ZW50RW5jb2RpbmcgewogICAgIEVtcHR5LAogICAgIEFFU0dD
TSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMDI4MDg0ZTUyYjRh
MGRiYjNjMTQ5YmU2Yzk3MzZmNzU3NWU3ODdiMy4uMmNkMTgzZDMyNGJlOTE3MDZkOWMwNGViODFi
NzBhYmZkMWY4OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVzaFN1YnNjcmlwdGlv
bkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTgwLDYgKzgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkws
IFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVw
bHlTZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlwdGlvbihDbGllbnRDb25uZWN0aW9u
KiwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBnZXRQdXNoUGVy
bWlzc2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVz
aENvdW50KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOwogCiAgICAgdm9pZCBicm9hZGNh
c3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogICAgIHZv
aWQgYnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCBhZGQ2ZTNkOGFkZmVhODk5ODg4ZjRiYWY2MWFjYzA1
MzEzNjNkY2M1Li41NjRkOGE2OTU4ZDlhNWM3NWFkMmQ3YzQ5MWU2MTY1Yzk1MDk3N2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0xMTcsNiArMTE3LDExIEBA
IEFSR1VNRU5UUyhVUkwpCiBSRVBMWShjb25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYpCiBFTkQKIAorRlVOQ1RJT04oaW5jcmVtZW50U2lsZW50UHVzaENvdW50
KQorQVJHVU1FTlRTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKGludCkKK0VO
RAorCiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAt
MTk5LDYgKzIwNCwxMyBAQCBXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgZ2V0UHVzaFBlcm1pc3Np
b25TdGF0ZTo6ZW5jb2RlUmVwbHkoY29uc3QgRXhwZWN0ZWQ8dWludAogICAgIHJldHVybiBlbmNv
ZGVyLnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluY3JlbWVu
dFNpbGVudFB1c2hDb3VudDo6ZW5jb2RlUmVwbHkoaW50IHJlcGx5KQoreworICAgIFdlYktpdDo6
RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1
cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZv
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CkBAIC00MDEsNiArNDEzLDkgQEAgdm9pZCBEYWVt
b246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBN
ZXNzYWdlVHlwZSBtZXMKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0
YXRlOgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86
OmdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdl
LCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2Fn
ZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudDoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERN
ZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ+KGNs
aWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNjI2LDYgKzY0MSwxOCBAQCB2b2lkIERhZW1v
bjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBj
b25zdCBVUkwmIHNjbwogI2VuZGlmCiB9CiAKK3ZvaWQgRGFlbW9uOjppbmNyZW1lbnRTaWxlbnRQ
dXNoQ291bnQoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChp
bnQpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShb
dGhpcywgYnVuZGxlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lk
ZW50aWZpZXIoKSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCBy
ZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBp
ZiAoIW1fcHVzaFNlcnZpY2UpIHsKKyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+aW5jcmVt
ZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBXVEZN
b3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgfSk7Cit9CisKIENsaWVudENvbm5lY3Rpb24qIERhZW1v
bjo6dG9DbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAg
ICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24p
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2
NmIwNGZjMWFhNDhjY2Q3YWY0YjYyMDE0MmQ0Zjg3MTEzYzk1OTIuLmJlNWZhZjkxYzc5NDE2MTQ5
MmVlMTI3NmViMzU0YjI2Y2ZjY2Y5NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMi0xOCAgQmVuIE5oYW0g
IDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCBl
eGlzdGluZyBwdXNoIHRlc3RzIHRvIHNob3cgYSBub3RpZmljYXRpb24uIEFkZGVkIGEgbmV3IHRl
c3QgY2FzZSB0byBtYWtlIHN1cmUgdGhhdAorICAgICAgICBzdWJzY3JpcHRpb25zIGFyZSByZW1v
dmVkIHdoZW4gYW4gb3JpZ2luIHJlYWNoZXMgaXRzIHF1b3RhIG9mIHNpbGVudCBwdXNoZXMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRp
b25Qcm92aWRlcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJv
dmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1p
c3Npb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJh
c2UuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZVRlbXBvcmFyeURhdGFiYXNlUGF0
aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUb3BpY3NTeW5jKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlB1c2hEYXRhYmFzZVRlc3Q6OmdldFRvcGljcyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpQdXNoRGF0YWJhc2VUZXN0OjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlm
aWVyQW5kU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFi
YXNlVGVzdDo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
SFRUUFNlcnZlci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6Om9yaWdp
biBjb25zdCk6CisKIDIwMjItMDItMTcgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9z
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0pTQ10gSW5jcmVhc2UgdGltZW91dCB0byBhY2NvdW50
IGZvciBNSVBTIHNsb3duZXNzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJj
ZXMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dAppbmRleCA5MjZkNTZlODhh
NDJiOTYyMDQ1ODQwYmViMmUzY2VjODgxNTMyYzAzLi40YWM3Y2I4MDFmYjQ1YTFmMWIyNGY1YWNj
NDk5ODU3NjIyNGRkYmRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQKQEAgLTI1LDUgKzI1LDYg
QEAgRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5jcHAKIEphdmFTY3JpcHRUZXN0LmNwcAogUGxhdGZv
cm1VdGlsaXRpZXMuY3BwCiBUZXN0c0NvbnRyb2xsZXIuY3BwCitUZXN0Tm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwCiBUZXN0VXRpbGl0aWVzLmNwcAogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgwZjA2YTk4Y2M5MTU1
ZTRlYjllZjI0YjA1ODY3OTg4OTZjM2ZhZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oIgorCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVk
ZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS051
bWJlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luUmVmLmg+CisjaW5jbHVk
ZSA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFdLRGljdGlvbmFyeVJlZiBub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSktPm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7Cit9CisKK1Rlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKFZlY3RvcjxXS05vdGlm
aWNhdGlvbk1hbmFnZXJSZWY+JiYgbWFuYWdlcnMpCisgICAgOiBtX21hbmFnZXJzKFdURk1vdmUo
bWFuYWdlcnMpKQorICAgICwgbV9wZXJtaXNzaW9ucyhhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25h
cnlDcmVhdGUoKSkpCit7CisgICAgbV9wcm92aWRlciA9IHsKKyAgICAgICAgeyAwLCB0aGlzIH0s
CisgICAgICAgIDAsIC8vIHNob3dXZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8gY2xvc2VX
ZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8gZGlkRGVzdHJveU5vdGlmaWNhdGlvbgorICAg
ICAgICAwLCAvLyBhZGROb3RpZmljYXRpb25NYW5hZ2VyCisgICAgICAgIDAsIC8vIHJlbW92ZU5v
dGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgJlRlc3RXZWJLaXRBUEk6Om5vdGlmaWNhdGlvblBl
cm1pc3Npb25zLAorICAgICAgICAwLCAvLyBjbGVhck5vdGlmaWNhdGlvbnMKKyAgICB9OworCisg
ICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmljYXRp
b25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgJm1fcHJvdmlkZXIuYmFzZSk7Cit9CisKK1Rl
c3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRlcigpCit7Cisg
ICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tOb3RpZmljYXRp
b25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgbnVsbHB0cik7Cit9CisKK1dLRGljdGlvbmFy
eVJlZiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkg
Y29uc3QKK3sKKyAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgpKTsKKyAgICByZXR1cm4g
bV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwordm9pZCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6
OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCkKK3sKKyAg
ICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGFsbG93ZWQpKTsKKyAg
ICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOworICAgIFdLRGljdGlvbmFyeVNldEl0ZW0obV9w
ZXJtaXNzaW9ucy5nZXQoKSwgd2tPcmlnaW5TdHJpbmcuZ2V0KCksIHdrQWxsb3dlZC5nZXQoKSk7
CisKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJv
bVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQoKSkpOworICAgIGZvciAoYXV0byYgbWFuYWdlciA6
IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdlclByb3ZpZGVyRGlkVXBk
YXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFnZXIsIHdrT3JpZ2luLmdldCgpLCBhbGxvd2VkKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmUwNDhiZjlhMmQ4M2Q4
ZTQyZDU4NmMxNmExMmUxZWQzNjE0MzEwYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTAsMCArMSw1MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dLTXV0YWJsZURpY3Rp
b25hcnkuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25NYW5hZ2VyLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIGV4cGxpY2l0IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihWZWN0b3I8V0tOb3RpZmlj
YXRpb25NYW5hZ2VyUmVmPiYmKTsKKyAgICB+VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKCk7CisK
KyAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKSBjb25zdDsKKyAg
ICB2b2lkIHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wgYWxsb3dlZCk7
CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4gbV9tYW5h
Z2VyczsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBtX3Blcm1pc3Np
b25zOworICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3ZpZGVyOworfTsKKworfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5YzM5ZDI0OTc0MzI5Mjc4NGFkOWM4NTNkMDI3YTc1
OWNiN2I0NDdkLi5lYWNhOTJlZjE4MTY4N2Q2N2M5MmEwYTVhNzM0OGY0MDRiYTUzZDYzIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk4MCw2ICsyOTgwLDggQEAKIAkJRTVBQThEMUMyNTE1
MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RGF0ZUlucHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNE
MjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCQ2hlY2twb2ludFdB
TC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUI0RDMyMDcyN0MwNDU0MzAwODFB
OEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFQjREMzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFQjlBRDhDNjI3NjQ2RTczMDBEODkzQTQgLyogUHVzaERhdGFiYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hEYXRhYmFzZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQTc1QzQ4Mjc1RUQ3QkUwMEQ2RDMx
QyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXNoTWVzc2Fn
ZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRF
NTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMjY2
LDYgKzMyNjgsOCBAQAogCQkJCUJDMTMxODgzMTE3MTE0QTgwMEI2OTcyNyAvKiBQbGF0Zm9ybVV0
aWxpdGllcy5oICovLAogCQkJCUJDOTA5NTFCMTI1NTMzRDcwMDA4Mzc1NiAvKiBQbGF0Zm9ybVdl
YlZpZXcuaCAqLywKIAkJCQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAgLyogVGVzdC5oICovLAor
CQkJCUVCNEQzMjA3MjdDMDQ1NDMwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIu
Y3BwICovLAorCQkJCUVCNEQzMjA4MjdDMDQ1NDQwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuaCAqLywKIAkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3MjcgLyogVGVzdHNDb250
cm9sbGVyLmNwcCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3RTAgLyogVGVzdHNDb250
cm9sbGVyLmggKi8sCiAJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMxIC8qIFRlc3RVdGlsaXRp
ZXMuY3BwICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3Jl
L1B1c2hEYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVz
aERhdGFiYXNlLmNwcAppbmRleCA3MGJjZTM5N2MyMDUyMTBlM2E1Njc3NThhNmI3N2EzYjJkMzAy
OWMyLi4xMDZiZWQzNjcxM2FlYzE3ZDZlZDQ3OWIyZjRlZGZiZThjMmIxYjVhIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcApAQCAt
MzUsMTggKzM1LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKLXN0YXRpYyBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGlj
TWFwIGdldFRvcGljc0J5V2FrZVN0YXRlU3luYyhQdXNoRGF0YWJhc2UmIGRhdGFiYXNlKQorc3Rh
dGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCkKK3sKKyAgICBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06
Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKKyAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworc3Rh
dGljIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljc1N5bmMoUHVzaERhdGFiYXNlJiBkYXRhYmFzZSkK
IHsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3Rh
dGVUb1RvcGljTWFwIGdldFJlc3VsdDsKKyAgICBWZWN0b3I8U3RyaW5nPiB0b3BpY3M7CiAKLSAg
ICBkYXRhYmFzZS5nZXRUb3BpY3NCeVdha2VTdGF0ZShbJmRvbmUsICZnZXRSZXN1bHRdKFB1c2hE
YXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAmJiByZXN1bHQpIHsKLSAgICAgICAgZ2V0
UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpOworICAgIGRhdGFiYXNlLmdldFRvcGljcyhbJmRvbmUs
ICZ0b3BpY3NdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgdG9waWNzID0gV1RGTW92ZShyZXN1
bHQpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9KTsKICAgICBVdGlsOjpydW4oJmRvbmUp
OwogCi0gICAgcmV0dXJuIGdldFJlc3VsdDsKKyAgICByZXR1cm4gdG9waWNzOwogfQogCiBjbGFz
cyBQdXNoRGF0YWJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewpAQCAtNTQsMzAgKzYy
LDI5IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaERhdGFiYXNlPiBkYjsKIAog
ICAgIFB1c2hSZWNvcmQgcmVjb3JkMSB7CisgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlm
aWVyKCksCisgICAgICAgICJjb20uYXBwbGUud2ViYXBwIl9zLAorICAgICAgICAiaHR0cHM6Ly93
d3cuYXBwbGUuY29tIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL2lwaG9uZSJf
cywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MiJfcywKKyAgICAgICAgInRvcGljMSJf
cywKKyAgICAgICAgeyA1LCA2IH0sCisgICAgICAgIHsgNiwgNyB9LAorICAgICAgICB7IDcsIDgg
fSwKKyAgICAgICAgeyA4LCA5IH0KKyAgICB9OworICAgIFB1c2hSZWNvcmQgcmVjb3JkMiB7CiAg
ICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCiAgICAgICAgICJjb20uYXBwbGUu
U2FmYXJpIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAogICAgICAgICAi
aHR0cHM6Ly93d3cuYXBwbGUuY29tL21hYyJfcywKICAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBv
aW50MSJfcywKLSAgICAgICAgInRvcGljMSJfcywKKyAgICAgICAgInRvcGljMiJfcywKICAgICAg
ICAgeyAwLCAxIH0sCiAgICAgICAgIHsgMSwgMiB9LAogICAgICAgICB7IDIsIDMgfSwKICAgICAg
ICAgeyA0LCA1IH0sCiAgICAgICAgIGNvbnZlcnRTZWNvbmRzVG9FcG9jaFRpbWVTdGFtcCgxNjQz
MzUwMDAwKSwKLSAgICAgICAgUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYwotICAgIH07Ci0g
ICAgUHVzaFJlY29yZCByZWNvcmQyIHsKLSAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZp
ZXIoKSwKLSAgICAgICAgImNvbS5hcHBsZS53ZWJhcHAiX3MsCi0gICAgICAgICJodHRwczovL3d3
dy5hcHBsZS5jb20iX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20vaXBob25lIl9z
LAotICAgICAgICAiaHR0cHM6Ly9wdXNoRW5kcG9pbnQyIl9zLAotICAgICAgICAidG9waWMyIl9z
LAotICAgICAgICB7IDUsIDYgfSwKLSAgICAgICAgeyA2LCA3IH0sCi0gICAgICAgIHsgNywgOCB9
LAotICAgICAgICB7IDgsIDkgfQogICAgIH07CiAgICAgUHVzaFJlY29yZCByZWNvcmQzIHsKICAg
ICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKQEAgLTE2NywxNSArMTc0LDQzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJvd0lkZW50aWZpZXJzOwogICAgIH0KIAotICAgIFB1
c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0VG9waWNzQnlXYWtlU3RhdGUo
KQorICAgIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljcygpCiAgICAgewotICAgICAgICByZXR1cm4g
Z2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpkYik7CisgICAgICAgIHJldHVybiBnZXRUb3BpY3NT
eW5jKCpkYik7CisgICAgfQorCisgICAgVmVjdG9yPFB1c2hSZWNvcmQ+IHJlbW92ZVJlY29yZHNC
eUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlE
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgICAgIFZlY3RvcjxQdXNoUmVjb3JkPiByZW1vdmVkUmVjb3JkczsKKwor
ICAgICAgICBkYi0+cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3Jp
Z2luKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmcmVtb3ZlZFJlY29yZHNdKGF1
dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHJlbW92ZWRSZWNvcmRzID0gV1RGTW92ZShyZXN1
bHQpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGls
OjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiByZW1vdmVkUmVjb3JkczsKKyAgICB9CisK
KyAgICBpbnQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQs
IGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAgICAgICBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgICBkYi0+aW5jcmVtZW50
U2lsZW50UHVzaENvdW50KGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmY291bnRd
KGludCByZXN1bHQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0OworICAgICAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisg
ICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiAKICAgICB2b2lkIFNldFVwKCkgZmluYWwKICAg
ICB7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAgICBQdXNoRGF0YWJhc2U6OmNy
ZWF0ZShTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3RkOjp1
bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeworICAgICAgICBQdXNoRGF0YWJh
c2U6OmNyZWF0ZShtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCksIFt0aGlzLCAmZG9uZV0oc3Rk
Ojp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgewogICAgICAgICAgICAgZGIg
PSBXVEZNb3ZlKGRhdGFiYXNlKTsKICAgICAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgICAgICB9
KTsKQEAgLTIwMCw4ICsyMzUsNyBAQCBzdGF0aWMgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFB1c2hS
ZWNvcmQmIGEsIGNvbnN0IFB1c2hSZWNvcmQmIGIpCiAgICAgICAgICYmIGEuY2xpZW50UHVibGlj
S2V5ID09IGIuY2xpZW50UHVibGljS2V5CiAgICAgICAgICYmIGEuY2xpZW50UHJpdmF0ZUtleSA9
PSBiLmNsaWVudFByaXZhdGVLZXkKICAgICAgICAgJiYgYS5zaGFyZWRBdXRoU2VjcmV0ID09IGIu
c2hhcmVkQXV0aFNlY3JldAotICAgICAgICAmJiBhLmV4cGlyYXRpb25UaW1lID09IGIuZXhwaXJh
dGlvblRpbWUKLSAgICAgICAgJiYgYS53YWtlU3RhdGUgPT0gYi53YWtlU3RhdGU7CisgICAgICAg
ICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0aW9uVGltZTsKIH0KIAogVEVTVF9GKFB1
c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKQEAgLTIxNCwxMSArMjQ4LDggQEAgVEVTVF9G
KFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKICAgICBleHBlY3RlZFJlY29yZDIuaWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
VHlwZT4oMik7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQyID09ICppbnNlcnRSZXN1
bHQyKTsKIAotICAgIC8vIFNpbmNlIHJlY29yZDMgaXMgaW4gdGhlIHNhbWUgU3Vic2NyaXB0aW9u
U2V0IGFzIHJlY29yZDEsIGl0IHNob3VsZAotICAgIC8vIGluaGVyaXQgcmVjb3JkMSdzIHdha2Ug
c3RhdGUuCiAgICAgYXV0byBleHBlY3RlZFJlY29yZDMgPSByZWNvcmQzOwogICAgIGV4cGVjdGVk
UmVjb3JkMy5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlv
bklkZW50aWZpZXJUeXBlPigzKTsKLSAgICBleHBlY3RlZFJlY29yZDMud2FrZVN0YXRlID0gZXhw
ZWN0ZWRSZWNvcmQxLndha2VTdGF0ZTsKICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZFJlY29yZDMg
PT0gKmluc2VydFJlc3VsdDMpOwogCiAgICAgLy8gSW5zZXJ0aW5nIGEgcmVjb3JkIHdpdGggdGhl
IHNhbWUgKGJ1bmRsZUlELCBzY29wZSkgYXMgcmVjb3JkIDEgc2hvdWxkIGZhaWwuCkBAIC0yMzYs
NiArMjY3LDMwIEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBSZW1vdmVSZWNvcmQpCiAgICAg
RVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDIsIDMg
fSkpOwogfQogCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgUmVtb3ZlUmVjb3Jkc0J5QnVuZGxl
SWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKQoreworICAgIC8vIHJlY29yZDIgYW5kIHJlY29y
ZDMgaGF2ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2VjdXJpdHlPcmlnaW4uCisgICAgYXV0byBy
ZW1vdmVkUmVjb3JkcyA9IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0
eU9yaWdpbihyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBi
b29sIGNvbnRhaW5zUmVjb3JkMiA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNv
cmQyLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29y
ZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMyA9
IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQzLnRvcGljXShhdXRvJiByZWNv
cmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBu
b3RGb3VuZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkMik7CisgICAgRVhQRUNU
X1RSVUUoY29udGFpbnNSZWNvcmQzKTsKKyAgICBFWFBFQ1RfRVEocmVtb3ZlZFJlY29yZHMuc2l6
ZSgpLCAydSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVp
bnQ2NF90PiB7IDEgfSkpOworCisgICAgLy8gSW5zZXJ0aW5nIGEgbmV3IHJlY29yZCBzaG91bGQg
Z2V0IGEgbmV3IHJvd2lkLgorICAgIFB1c2hSZWNvcmQgcmVjb3JkNCA9IHJlY29yZDI7CisgICAg
YXV0byBpbnNlcnRSZXN1bHQgPSBpbnNlcnRSZWNvcmQoV1RGTW92ZShyZWNvcmQ0KSk7CisgICAg
RVhQRUNUX1RSVUUoaW5zZXJ0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoaW5zZXJ0UmVzdWx0LT5p
ZGVudGlmaWVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmll
clR5cGU+KDQpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8
dWludDY0X3Q+IHsgMSwgNCB9KSk7Cit9CisKIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBHZXRS
ZWNvcmRCeVRvcGljKQogewogICAgIGF1dG8gcmVzdWx0MSA9IGdldFJlY29yZEJ5VG9waWMocmVj
b3JkMS50b3BpYyk7CkBAIC0yNTksMjkgKzMxNCwyNyBAQCBURVNUX0YoUHVzaERhdGFiYXNlVGVz
dCwgR2V0UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUpCiAgICAgRVhQRUNUX0ZBTFNF
KHJlc3VsdDMpOwogfQogCi1URVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0VG9waWNzQnlXYWtl
U3RhdGUpCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0VG9waWNzKQogewotICAgIEhhc2hN
YXA8U3RyaW5nLCBQdXNoV2FrZVN0YXRlPiBleHBlY3RlZCB7Ci0gICAgICAgIHsgInRvcGljMSIs
IFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfSwKLSAgICAgICAgeyAidG9waWMyIiwgUHVz
aFdha2VTdGF0ZTo6V2FraW5nIH0sCi0gICAgICAgIHsgInRvcGljMyIsIFB1c2hXYWtlU3RhdGU6
Ok9wcG9ydHVuaXN0aWMgfQotICAgIH07Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFB1c2hXYWtlU3Rh
dGU+IGFjdHVhbDsKLQotICAgIGZvciAoY29uc3QgYXV0byYgW3dha2VTdGF0ZSwgdG9waWNzXSA6
IGdldFRvcGljc0J5V2FrZVN0YXRlKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiB0b3Bp
YyA6IHRvcGljcykKLSAgICAgICAgICAgIGFjdHVhbC5hZGQodG9waWMsIHdha2VTdGF0ZSk7Ci0g
ICAgfQotCi0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpOworICAgIFZlY3RvcjxTdHJp
bmc+IGV4cGVjdGVkIHsgInRvcGljMSJfcywgInRvcGljMiJfcywgInRvcGljMyJfcyB9OworICAg
IEVYUEVDVF9FUShnZXRUb3BpY3MoKSwgZXhwZWN0ZWQpOwogfQogCi1zdGF0aWMgU3RyaW5nIG1h
a2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgoKQorVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluY3Jl
bWVudFNpbGVudFB1c2hDb3VudCkKIHsKLSAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOwotICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxl
KCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZp
bGUoaGFuZGxlKTsKLSAgICByZXR1cm4gcGF0aDsKKyAgICBhdXRvIGNvdW50ID0gaW5jcmVtZW50
U2lsZW50UHVzaENvdW50KHJlY29yZDEuYnVuZGxlSUQsIHJlY29yZDEuc2VjdXJpdHlPcmlnaW4p
OworICAgIEVYUEVDVF9FUShjb3VudCwgMSk7CisKKyAgICAvLyByZWNvcmQyJ3MgYnVuZGxlSUQg
YW5kIHNlY3VyaXR5T3JpZ2luIGFyZSBkaWZmZXJlbnQKKyAgICBjb3VudCA9IGluY3JlbWVudFNp
bGVudFB1c2hDb3VudChyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNlY3VyaXR5T3JpZ2luKTsK
KyAgICBFWFBFQ1RfRVEoY291bnQsIDEpOworCisgICAgLy8gcmVjb3JkMiBhbmQgcmVjb3JkMyBo
YXZlIHRoZSBzYW1lIGJ1bmRsZUlEIGFuZCBzZWN1cml0eU9yaWdpbi4KKyAgICBjb3VudCA9IGlu
Y3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQzLmJ1bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5
T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDIpOworCisgICAgY291bnQgPSBpbmNyZW1l
bnRTaWxlbnRQdXNoQ291bnQoIm5vbmV4aXN0ZW50Il9zLCAibm9uZXhpc3RlbnQiX3MpOworICAg
IEVYUEVDVF9FUShjb3VudCwgMCk7CiB9CiAKIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGln
aHRPcHMpCkBAIC0zMTQsNyArMzY3LDYgQEAgVEVTVChQdXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdo
dE9wcykKICAgICAgICAgICAgIHsgMiwgMyB9LAogICAgICAgICAgICAgeyA0LCA1IH0sCiAgICAg
ICAgICAgICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAg
ICAgICAgICBQdXNoV2FrZVN0YXRlOjpXYWtpbmcKICAgICAgICAgfTsKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykgewpAQCAtMzM5LDggKzM5MSw3
IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCiAgICAgICAgIFV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNyZWF0ZVJlc3VsdCk7CiAKLSAgICAgICAg
YXV0byBnZXRSZXN1bHQgPSBnZXRUb3BpY3NCeVdha2VTdGF0ZVN5bmMoKmNyZWF0ZVJlc3VsdCk7
Ci0gICAgICAgIGF1dG8gdG9waWNzID0gZ2V0UmVzdWx0LnRha2UoUHVzaFdha2VTdGF0ZTo6V2Fr
aW5nKTsKKyAgICAgICAgYXV0byB0b3BpY3MgPSBnZXRUb3BpY3NTeW5jKCpjcmVhdGVSZXN1bHQp
OwogICAgICAgICBFWFBFQ1RfRVEodG9waWNzLnNpemUoKSwgcmVjb3JkQ291bnQpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVz
aEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5t
bQppbmRleCBiNjcyOTY3OGFmOTk4NTdkMmFmZjkwYzNjYWU0M2U2ZmIyNDdjYWI0Li44Y2Y1OGRl
Zjg2NDY5OTEyYjVhM2ZiMTlhZmZhZjI5M2E4Y2JkYmM5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0yOSw3ICsyOSwxMCBAQAog
I2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJv
dmlkZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KQEAgLTg5LDYgKzkyLDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0p
Owogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5y
ZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CiAgICAgdHJ5IHsK
ICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdl
KCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CkBAIC0xMzgsNiArMTQyLDkgQEAgVEVTVChQdXNoQVBJ
LCBmaXJlUHVzaEV2ZW50KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIg
PSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRp
b24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZp
Y2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkg
fSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOwor
CiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRs
ZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTE4OCw2ICsxOTUsNyBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBwb3J0LnBvc3RNZXNzYWdl
KCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+
IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24i
KTsKICAgICBpZiAoIWV2ZW50LmRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCB2YWx1
ZSA9IGV2ZW50LmRhdGEudGV4dCgpOwpAQCAtMjI1LDYgKzIzMyw5IEBAIFRFU1QoUHVzaEFQSSwg
ZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzU3VjY2Vzc2Z1bCkKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7
CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdl
ckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2Vy
dmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC0yNzAs
NiArMjgxLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0aE5vUGFnZXNGYWlsKQog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9u
IHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJ
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xd
IF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdl
dFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlk
ZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRN
ZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCBiN2IzNGI2Y2FhNTQ3YmUzMmEzNzYyOGNjZjFh
Y2RlZWM2ZjVkNjU5Li5hY2RiODQzZWI2YzVhYThjY2VlMGJmYjE1MjBiODRhMWRmNDlmNTFjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hE
YWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQ
dXNoRGFlbW9uLm1tCkBAIC0yOSwxMCArMjksMTIgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5k
bGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg+CkBAIC00NDAsNiArNDQyLDkg
QEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlw
ZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3Vy
Y2UgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpI
dHRwKSk7CiAKKyAgICAgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlciA9IG1ha2VVbmlxdWU8VGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyPihWZWN0b3I8V0tOb3RpZmljYXRp
b25NYW5hZ2VyUmVmPiB7IFtbbV9jb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0
aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2
aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgICAgICBtX25vdGlmaWNhdGlv
blByb3ZpZGVyLT5zZXRQZXJtaXNzaW9uKG1fc2VydmVyLT5vcmlnaW4oKSwgdHJ1ZSk7CisKICAg
ICAgICAgbV93ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm1fY29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgICAgICBbbV93ZWJWaWV3IGxvYWRSZXF1ZXN0Om1fc2VydmVyLT5yZXF1
ZXN0KCldOwogICAgIH0KQEAgLTQ0OSwxMiArNDU0LDQzIEBAIHByb3RlY3RlZDoKICAgICAgICAg
Y2xlYW5VcFRlc3RXZWJQdXNoRChtX3RlbXBEaXJlY3RvcnkuZ2V0KCkpOwogICAgIH0KIAorICAg
IFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGluamVjdFB1c2hNZXNzYWdlKE5TRGljdGlvbmFyeSAq
cHVzaFVzZXJJbmZvKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNjb3BlID0gbV9zZXJ2ZXItPnJl
cXVlc3QoKS5VUkwuYWJzb2x1dGVTdHJpbmc7CisgICAgICAgIFN0cmluZyB0b3BpYyA9ICJjb20u
YXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkgIl9zdHIgKyBzY29wZTsKKyAgICAgICAgaWQgb2Jq
ID0gQHsKKyAgICAgICAgICAgIEAidG9waWMiOiAoTlNTdHJpbmcgKil0b3BpYywKKyAgICAgICAg
ICAgIEAidXNlckluZm8iOiBwdXNoVXNlckluZm8KKyAgICAgICAgfTsKKyAgICAgICAgTlNEYXRh
ICpkYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRp
b25zOjAgZXJyb3I6bnVsbHB0cl07CisKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyICo+KGRhdGEuYnl0ZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0
YS5sZW5ndGgpIH07CisgICAgICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmco
V1RGTW92ZShtZXNzYWdlKSk7CisKKyAgICAgICAgYXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNy
ZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRl
c3RkYWVtb24uc2VydmljZSIpOworICAgICAgICBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0Zv
clJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdldCgpLCBNZXNzYWdlVHlwZTo6SW5qZWN0RW5jcnlw
dGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVkTWVzc2FnZSk7CisKKyAgICAgICAgLy8g
RmV0Y2ggcHVzaCBtZXNzYWdlcworICAgICAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZXMgPSBm
YWxzZTsKKyAgICAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4+
IG1lc3NhZ2VzOworICAgICAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6
XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKKyAgICAgICAgICAgIG1l
c3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAgICAgICBnb3RNZXNzYWdlcyA9IHRydWU7Cisg
ICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2Vz
KTsKKworICAgICAgICBFWFBFQ1RfRVEoW21lc3NhZ2VzIGNvdW50XSwgMXUpOworCisgICAgICAg
IHJldHVybiBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDowXTsKKyAgICB9CisKICAgICBSZXRhaW5Q
dHI8TlNVUkw+IG1fdGVtcERpcmVjdG9yeTsKICAgICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0
b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
bV9jb25maWd1cmF0aW9uOwogICAgIFJldGFpblB0cjxUZXN0TWVzc2FnZUhhbmRsZXI+IG1fdGVz
dE1lc3NhZ2VIYW5kbGVyOwogICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25TY3JpcHRNZXNzYWdl
SGFuZGxlcj4gbV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcj4gbV9zZXJ2ZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcj4gbV9ub3RpZmljYXRp
b25Qcm92aWRlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtX3dlYlZpZXc7CiB9OwogCkBA
IC00OTcsNiArNTMzLDcgQEAgdm9pZCBXZWJQdXNoREluamVjdGVkUHVzaFRlc3Q6OnJ1blRlc3Qo
TlNTdHJpbmcgKmV4cGVjdGVkTWVzc2FnZSwgTlNEaWN0aW9uYXJ5ICoKICAgICB9KTsKICAgICBz
ZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHNlbGYucmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNh
dGlvbiIpOwogICAgICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICAgICAg
cG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwgZGF0YSIpOwogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTUyMCw0MyArNTU3LDIwIEBAIHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hU
ZXN0OjpydW5UZXN0KE5TU3RyaW5nICpleHBlY3RlZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAg
ICAgfV07CiAKICAgICBsb2FkUmVxdWVzdChodG1sU291cmNlLCBzZXJ2aWNlV29ya2VyU291cmNl
KTsKLQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHkpOwogCi0gICAgU3RyaW5n
IGJ1bmRsZUlkZW50aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwot
ICAgIFN0cmluZyBzY29wZSA9IG1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5n
OwotICAgIFN0cmluZyB0b3BpYyA9IGJ1bmRsZUlkZW50aWZpZXIgKyAiICJfcyArIHNjb3BlOwot
Ci0gICAgaWQgb2JqID0gQHsKLSAgICAgICAgQCJ0b3BpYyI6IChOU1N0cmluZyAqKXRvcGljLAot
ICAgICAgICBAInVzZXJJbmZvIjogcHVzaFVzZXJJbmZvCi0gICAgfTsKLSAgICBOU0RhdGEgKmRh
dGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6
MCBlcnJvcjpudWxscHRyXTsKLQotICAgIFN0cmluZyBtZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhciAqPihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGEubGVuZ3Ro
KSB9OwotICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNz
YWdlKSk7Ci0KLSAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmlndXJl
Q29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNl
Iik7Ci0gICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29ubmVj
dGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9yVGVz
dGluZywgZW5jb2RlZE1lc3NhZ2UpOwotCi0gICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcwotICAg
IF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNlOwotICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKLSAgICBbbV9kYXRhU3RvcmUgX2dl
dFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2Fn
ZXMpIHsKLSAgICAgICAgbWVzc2FnZXMgPSByYXdNZXNzYWdlczsKLSAgICAgICAgZ290TWVzc2Fn
ZXMgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVz
c2FnZXMpOwotCi0gICAgRVhQRUNUX0VRKFttZXNzYWdlcyBjb3VudF0sIDF1KTsKKyAgICBhdXRv
IG1lc3NhZ2UgPSBpbmplY3RQdXNoTWVzc2FnZShwdXNoVXNlckluZm8pOwogCi0gICAgLy8gSGFu
ZGxlIHB1c2ggbWVzc2FnZQogICAgIF9fYmxvY2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9
IGZhbHNlOwotICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlcyBm
aXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIF9fYmxv
Y2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IGZhbHNlOworICAgIFttX2RhdGFT
dG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IHJl
c3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290RXhwZWN0ZWRNZXNzYWdlKTsKICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKworICAgIEVYUEVD
VF9UUlVFKHB1c2hNZXNzYWdlUHJvY2Vzc2VkUmVzdWx0KTsKIH0KIAogVEVTVF9GKFdlYlB1c2hE
SW5qZWN0ZWRQdXNoVGVzdCwgSGFuZGxlSW5qZWN0ZWRFbXB0eVB1c2gpCkBAIC03MDcsNiArNzIx
LDc3IEBAIFRFU1RfRihXZWJQdXNoRFRlc3QsIFVuc3Vic2NyaWJlVGVzdCkKICAgICBBU1NFUlRf
VFJVRShbb2JqIGlzRXF1YWw6ZXhwZWN0ZWRdKTsKIH0KIAorVEVTVF9GKFdlYlB1c2hEVGVzdCwg
VG9vTWFueVNpbGVudFB1c2hlc0NhdXNlc1Vuc3Vic2NyaWJlKQoreworICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBodG1sU291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRz
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGxldCBwdXNoTWFuYWdlciA9IG51bGw7
CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihh
c3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRv
ci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5h
Z2VyOworICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHB1c2hNYW5hZ2VyLnN1
YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAg
ICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBj
YXRjaCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAg
fQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdl
KHJlc3VsdCk7CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBnZXRQdXNoU3Vic2NyaXB0aW9uKCkK
KyAgICB7CisgICAgICAgIHB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpLnRoZW4oKHN1YnNj
cmlwdGlvbikgPT4geworICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
bm90ZS5wb3N0TWVzc2FnZShzdWJzY3JpcHRpb24gPyAiU3Vic2NyaWJlZCIgOiAiVW5zdWJzY3Jp
YmVkIik7CisgICAgICAgIH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICApSFRNTCI7Cisg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgPSAic2VsZi5h
ZGRFdmVudExpc3RlbmVyKCdwdXNoJywgKGV2ZW50KSA9PiB7IH0pOyI7CisKKyAgICBfX2Jsb2Nr
IFJldGFpblB0cjxpZD4gbWVzc2FnZSA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2Fn
ZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VI
YW5kbGVyOl4oaWQgcmVjZWl2ZWRNZXNzYWdlKSB7CisgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZl
ZE1lc3NhZ2U7CisgICAgICAgIGdvdE1lc3NhZ2UgPSB0cnVlOworICAgIH1dOworCisgICAgbG9h
ZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtlclNjcmlwdFNvdXJjZSk7CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIEFTU0VSVF9UUlVFKFtt
ZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IFdlYktpdDo6V2ViUHVzaEQ6Om1heFNpbGVudFB1c2hDb3VudDsgaSsrKSB7Cisg
ICAgICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgW21fd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2NyaXB0aW9uKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQs
IE5TRXJyb3IqKSB7IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1l
c3NhZ2UpOworICAgICAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJT
dWJzY3JpYmVkIl0pOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBwcm9jZXNzZWRQdXNoID0gZmFs
c2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCBwdXNoUmVzdWx0ID0gZmFsc2U7CisgICAgICAgIGF1
dG8gbWVzc2FnZSA9IGluamVjdFB1c2hNZXNzYWdlKEB7IH0pOworCisgICAgICAgIFttX2RhdGFT
dG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
Xihib29sIHJlc3VsdCkgeworICAgICAgICAgICAgcHVzaFJlc3VsdCA9IHJlc3VsdDsKKyAgICAg
ICAgICAgIHByb2Nlc3NlZFB1c2ggPSB0cnVlOworICAgICAgICB9XTsKKyAgICAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZwcm9jZXNzZWRQdXNoKTsKKworICAgICAgICAvLyBXZWJDb250
ZW50IHNob3VsZCBmYWlsIHByb2Nlc3NpbmcgdGhlIHB1c2ggc2luY2Ugbm8gbm90aWZpY2F0aW9u
IHdhcyBzaG93bi4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHB1c2hSZXN1bHQpOworICAgIH0KKwor
ICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbbV93ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dDpAImdldFB1c2hTdWJzY3JpcHRpb24oKSIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJv
ciopIHsgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAg
ICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJVbnN1YnNjcmliZWQiXSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIu
aAppbmRleCA3NWQyODJlYTllNDBkMjExNWFmMTk0OGFkM2Y4ZWI4ZmM2MzdjY2Q0Li5jNTNiNDM5
ZWEzODExMDEyNTZiNWMyOGI1MjFhZjgzMDRkMjljZDM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgSFRUUFNlcnZl
cihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRw
KTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKKyAgICBT
dHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KGNvbnN0IFN0
cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdFdp
dGhMb2NhbGhvc3QoY29uc3QgU3RyaW5nJiBwYXRoID0gIi8iX3N0cikgY29uc3Q7CiAgICAgc2l6
ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbQppbmRleCA4OGQ4NmJmMWQwYzE5ZjBjY2YzMDVmZDA4NWRhYTRkNzg3MzRkNDkwLi42
YzYxODQ4YmEyZDYxNGM5YTc3NmU5M2U3MWM5MDdmNzlmYWI5Yzc3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zNzYsNiArMzc2LDExIEBAIGNvbnN0IGNoYXIq
IEhUVFBTZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjaGVtZTsKIH0KIAorU3Ry
aW5nIEhUVFBTZXJ2ZXI6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiJXM6Ly8xMjcuMC4wLjE6JWQiLCBzY2hlbWUoKSwgcG9ydCgpXTsK
K30KKwogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0IFN0cmluZyYgcGF0
aCkgY29uc3QKIHsKICAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzOi8vMTI3LjAu
MC4xOiVkJUAiLCBzY2hlbWUoKSwgcG9ydCgpLCBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCld
XV07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452750</attachid>
            <date>2022-02-21 11:23:10 -0800</date>
            <delta_ts>2022-02-27 00:15:27 -0800</delta_ts>
            <desc>EWS</desc>
            <filename>bug-236863-20220221112309.patch</filename>
            <type>text/plain</type>
            <size>83355</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTRhMzc3MmNkM2E2MjI1
MDZkMTY5NzY0Y2VjNDNjZjJhZjE3Yzc4Yi4uOTZkMDY2MWE5ZjBmY2NhNjQ4Y2M0ODc3ODY2NDkw
OWI3MzNkZDlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAyLTIxICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBQ
dXNoU3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHRoZSB1c2VyVmlzaWJsZU9ubHkgZmxh
ZyBzZXQuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgICAgcHVzaCBldmVudHMgc2hvdWxkIHJl
c3VsdCBpbiBhIHVzZXItZmFjaW5nIG5vdGlmaWNhdGlvbi4KKworICAgICAgICBUbyBlbmZvcmNl
IHRoaXMsIHdlIHVzZSBhIHF1b3RhIHN5c3RlbS4gQSBwdXNoIHN1YnNjcmlwdGlvbiBjYW4gcHJv
Y2VzcyB1cCB0byB0aHJlZSBzaWxlbnQKKyAgICAgICAgcHVzaGVzLiBBZnRlciB0aHJlZSBzaWxl
bnQgcHVzaGVzLCB3ZSByZW1vdmUgdGhlIHB1c2ggc3Vic2NyaXB0aW9uLiBUbyBjb250aW51ZSB0
byByZWNlaXZlCisgICAgICAgIHB1c2hlcywgdGhlIHVzZXIgbXVzdCBuYXZpZ2F0ZSBiYWNrIHRv
IHRoZSB3ZWJzaXRlIGFuZCB0aGUgc2l0ZSBtdXN0IHJlcXVlc3QgcGVybWlzc2lvbiB0bworICAg
ICAgICBzZW5kIHB1c2hlcyBhZ2Fpbi4KKworICAgICAgICBPcmlnaW5hbGx5IHdlIHdlcmUgZ29p
bmcgdG8gdXNlIGEgbW9yZSBjb21wbGljYXRlZCBxdW90YSBzeXN0ZW0gdGhhdCBtb3ZlZCBzdWJz
Y3JpcHRpb25zCisgICAgICAgIGZyb20gd2FraW5nIHRvIG5vbi13YWtpbmcgYmVmb3JlIGZpbmFs
bHkgdW5zdWJzY3JpYmluZywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgaXQgY291bGQgbGVhZAorICAg
ICAgICB0byBzdWJzY3JpcHRpb25zIGJlaW5nIGluIGEgcGFydGlhbGx5LXdvcmtpbmcgc3RhdGUg
dGhhdCB3b3VsZCBiZSBoYXJkIHRvIGV4cGxhaW4gYW5kIHJlYXNvbgorICAgICAgICBhYm91dC4g
QXMgYSByZXN1bHQsIEkndmUgcmVtb3ZlZCB0aGUgd2FrZVN0YXRlIGNvbHVtbiBmcm9tIFB1c2hE
YXRhYmFzZSBhbmQgcmVwbGFjZWQgaXQKKyAgICAgICAgYSBzaWxlbnRQdXNoQ291bnQgY29sdW1u
LgorCisgICAgICAgIFRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgc2VydmljZSB3b3JrZXIgaGFz
IHNob3duIGEgbm90aWZpY2F0aW9uIHdoaWxlIHByb2Nlc3NpbmcgYSBwdXNoCisgICAgICAgIGV2
ZW50LCB3ZSB1c2UgYSBib29sZWFuIGZsYWcgb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBU
aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGJlY2F1c2UKKyAgICAgICAgd2UgY3VycmVudGx5IG9u
bHkgcHJvY2VzcyBvbmUgcHVzaCBldmVudCBhdCBhIHRpbWUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudCk6CisKIDIwMjItMDItMjEgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtJRkNdW0ludGVncmF0aW9uXSBUYWtlIHZlcnRpY2FsLXJsIHdyaXRp
bmcgbW9kZSB2YWx1ZSBpbnRvIGFjY291bnQgd2hlbiBjb252ZXJ0aW5nIHZpc3VhbCBtYXJnaW4v
Ym9yZGVyL3BhZGRpbmcgdmFsdWUgdG8gbG9naWNhbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMjdhMDUwYjdhZjMw
MTI4ZGRiZmFmMTcxNDkzNzg3YWVmZjc1NTYxLi4yMzMxMTVkYWNlY2MxZWE4ZTI4M2IwYWU3Nzdj
OWQ0MzU0YjA2YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIyLTAyLTIxICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICAtIElm
IGEgcHVzaCBldmVudCBkb2Vzbid0IHJlc3VsdCBpbiBhIG5vdGlmaWNhdGlvbiBvciBpZiB0aGUg
YXNzb2NpYXRlZCBwcm9taXNlIHJlamVjdHMsCisgICAgICAgICAgIHRoZW4gd2Ugbm90IGluY3Jl
bWVudCB0aGUgc2lsZW50IHB1c2ggY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoYXQgb3JpZ2luLgor
ICAgICAgICAgLSBQdXNoU2VydmljZSBub3cgcmVtb3ZlcyBhIHN1YnNjcmlwdGlvbiBpZiB0aGUg
b3JpZ2luIGhhcyByZWFjaGVkIGl0cyBxdW90YSBvZiBzaWxlbnQKKyAgICAgICAgICAgcHVzaGVz
LgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIG5ldyBBUEkgdGVzdHMuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6aW5jcmVtZW50U2ls
ZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8aW50Pjo6Y2FsbFJl
cGx5KToKKyAgICAgICAgKiBTaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vz
c1Bvb2wgX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSk6CisgICAgICAgICogd2VicHVz
aGQvUHVzaFNlcnZpY2UubW06CisgICAgICAgIChXZWJQdXNoRDo6dXBkYXRlVG9waWNMaXN0cyk6
CisgICAgICAgIChXZWJQdXNoRDo6UHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dCk6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpNZXNzYWdlSW5mbzo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50OjplbmNvZGVSZXBseSk6
CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKToKKyAg
ICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisKIDIw
MjItMDItMjEgIFNpbW9uIExld2lzICA8c2ltb24ubGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAg
IENoYW5nZSBJUEMgZW5jb2Rpbmcgb2YgYm9vbGVhbiB0eXBlIHRvIHVzZSBvbmUgYml0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKaW5kZXgg
OGExZjUzYWI0ODBhZTBiNDA1OTYyNmJjYTBjNDZlZTA3YzM5MjVjNS4uZmQ1NzQ3YjlhYzE0MTll
ZWIyZWY4NzQxN2U5NjUyNGU0ZjU4MmUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmNwcApAQCAtNDMsMTkgKzQzLDI0IEBACiAjZGVmaW5l
IFBVU0hEQl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoUHVz
aCwgIiVwIC0gUHVzaERhdGFiYXNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZp
bmUgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKSBQVVNIREJfUkVMRUFTRV9MT0dfRVJS
T1IoIkZhaWxlZCB0byBiaW5kIHN0YXRlbWVudCAoJWQpOiAlcyIsIG1fZGItPmxhc3RFcnJvcigp
LCBtX2RiLT5sYXN0RXJyb3JNc2coKSkKIAorI2RlZmluZSBrUHVzaFJlY29yZENvbHVtbnMgIiBz
dWIucm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIu
ZW5kcG9pbnQsIHN1Yi50b3BpYywgc3ViLnNlcnZlclZBUElEUHVibGljS2V5LCBzdWIuY2xpZW50
UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1
Yi5leHBpcmF0aW9uVGltZSAiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0
ZXhwciBpbnQgY3VycmVudFB1c2hEYXRhYmFzZVZlcnNpb24gPSAxOworc3RhdGljIGNvbnN0ZXhw
ciBpbnQgY3VycmVudFB1c2hEYXRhYmFzZVZlcnNpb24gPSAyOworI2RlZmluZSBrQ3VycmVudFB1
c2hEYXRhYmFzZVZlcnNpb25TdHJpbmcgIjIiCiAKIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwg
cHVzaERhdGFiYXNlU2NoZW1hVjFTdGF0ZW1lbnRzW10gPSB7CiAgICAgIlBSQUdNQSBhdXRvX3Zh
Y3V1bT1JTkNSRU1FTlRBTCJfcywKICAgICAiQ1JFQVRFIFRBQkxFIFN1YnNjcmlwdGlvblNldHMo
IgorICAgICIgIHJvd0lEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCiAgICAg
IiAgY3JlYXRpb25UaW1lIElOVCBOT1QgTlVMTCwiCiAgICAgIiAgYnVuZGxlSUQgVEVYVCBOT1Qg
TlVMTCwiCiAgICAgIiAgc2VjdXJpdHlPcmlnaW4gVEVYVCBOT1QgTlVMTCwiCi0gICAgIiAgd2Fr
ZVN0YXRlIElOVCBOT1QgTlVMTCwiCisgICAgIiAgc2lsZW50UHVzaENvdW50IElOVCBOT1QgTlVM
TCwiCiAgICAgIiAgVU5JUVVFKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbikpIl9zLAogICAgICJD
UkVBVEUgVEFCTEUgU3Vic2NyaXB0aW9ucygiCisgICAgIiAgcm93SUQgSU5URUdFUiBQUklNQVJZ
IEtFWSBBVVRPSU5DUkVNRU5ULCIKICAgICAiICBjcmVhdGlvblRpbWUgSU5UIE5PVCBOVUxMLCIK
ICAgICAiICBzdWJzY3JpcHRpb25TZXRJRCBJTlQgTk9UIE5VTEwsIgogICAgICIgIHNjb3BlIFRF
WFQgTk9UIE5VTEwsIgpAQCAtNjgsNyArNzMsNyBAQCBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFs
IHB1c2hEYXRhYmFzZVNjaGVtYVYxU3RhdGVtZW50c1tdID0gewogICAgICIgIGV4cGlyYXRpb25U
aW1lIElOVCwiCiAgICAgIiAgVU5JUVVFKHNjb3BlLCBzdWJzY3JpcHRpb25TZXRJRCkpIl9zLAog
ICAgICJDUkVBVEUgSU5ERVggU3Vic2NyaXB0aW9uc19TdWJzY3JpcHRpb25TZXRJRF9JbmRleCBP
TiBTdWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvblNldElEKSJfcywKLSAgICAiUFJBR01BIHVzZXJf
dmVyc2lvbiA9IDEiX3MKKyAgICAiUFJBR01BIHVzZXJfdmVyc2lvbiA9ICIga0N1cnJlbnRQdXNo
RGF0YWJhc2VWZXJzaW9uU3RyaW5nICIiX3MKIH07CiAKIFB1c2hSZWNvcmQgUHVzaFJlY29yZDo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgpAQCAtODQsOCArODksNyBAQCBQdXNoUmVjb3JkIFB1c2hS
ZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKICAgICAgICAgY2xpZW50UHVibGljS2V5LAog
ICAgICAgICBjbGllbnRQcml2YXRlS2V5LAogICAgICAgICBzaGFyZWRBdXRoU2VjcmV0LAotICAg
ICAgICBleHBpcmF0aW9uVGltZSwKLSAgICAgICAgd2FrZVN0YXRlCisgICAgICAgIGV4cGlyYXRp
b25UaW1lCiAgICAgfTsKIH0KIApAQCAtMTAyLDggKzEwNiw3IEBAIFB1c2hSZWNvcmQgUHVzaFJl
Y29yZDo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAgICAgV1RGTW92ZShjbGllbnRQdWJsaWNLZXkp
LAogICAgICAgICBXVEZNb3ZlKGNsaWVudFByaXZhdGVLZXkpLAogICAgICAgICBXVEZNb3ZlKHNo
YXJlZEF1dGhTZWNyZXQpLAotICAgICAgICBleHBpcmF0aW9uVGltZSwKLSAgICAgICAgd2FrZVN0
YXRlCisgICAgICAgIGV4cGlyYXRpb25UaW1lCiAgICAgfTsKIH0KIApAQCAtMjgwLDcgKzI4Myw3
IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVj
b3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgICAgIGludDY0X3Qgc3Vic2NyaXB0aW9u
U2V0SUQgPSAwOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3Rh
dGVtZW50T25RdWV1ZSgiU0VMRUNUIHJvd2lkLCB3YWtlU3RhdGUgRlJPTSBTdWJzY3JpcHRpb25T
ZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKyAgICAg
ICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHJvd0lEIEZS
T00gU3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2lu
ID0gPyJfcyk7CiAgICAgICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgICAgIHx8IHNxbC0+
YmluZFRleHQoMSwgcmVjb3JkLmJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sKICAgICAgICAgICAgICAg
ICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5zZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09L
KSB7CkBAIC0yODksMTkgKzI5MiwxNiBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6aW5zZXJ0UmVjb3Jk
KGNvbnN0IFB1c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHNxbC0+
c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAoKSA9PSBT
UUxJVEVfUk9XKQogICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNldElEID0gc3FsLT5jb2x1
bW5JbnQ2NCgwKTsKLSAgICAgICAgICAgICAgICByZWNvcmQud2FrZVN0YXRlID0gc3RhdGljX2Nh
c3Q8UHVzaFdha2VTdGF0ZT4oc3FsLT5jb2x1bW5JbnQoMSkpOwotICAgICAgICAgICAgfQogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKCFzdWJzY3JpcHRpb25TZXRJRCkgewotICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRp
b25TZXRzIFZBTFVFUyg/LCA/LCA/LCA/KSJfcyk7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvblNldHMgVkFMVUVT
KE5VTEwsID8sID8sID8sIDApIl9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAg
ICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgdGltZShudWxscHRyKSkgIT0gU1FMSVRFX09LCiAg
ICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCByZWNvcmQuYnVuZGxlSUQpICE9IFNR
TElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMywgcmVjb3JkLnNlY3Vy
aXR5T3JpZ2luKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQo
NCwgc3RhdGljX2Nhc3Q8aW50PihyZWNvcmQud2FrZVN0YXRlKSkgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2VjdXJpdHlPcmlnaW4p
ICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5E
X0VSUk9SKCk7CiAgICAgICAgICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiB7IH0pOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTMxNiw3ICszMTYsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6
aW5zZXJ0UmVjb3JkKGNvbnN0IFB1c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZAogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNo
ZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRpb25zIFZBTFVFUyg/LCA/
LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNh
Y2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFMVUVTKE5V
TEwsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICAgICAgICAgIGlmICgh
c3FsCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgdGltZShudWxscHRyKSkg
IT0gU1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMiwgc3Vic2Ny
aXB0aW9uU2V0SUQpICE9IFNRTElURV9PSwpAQCAtNDIzLDIxICs0MjMsMjAgQEAgdm9pZCBQdXNo
RGF0YWJhc2U6OnJlbW92ZVJlY29yZEJ5SWRlbnRpZmllcihQdXNoU3Vic2NyaXB0aW9uSWRlbnRp
ZmllciBpZGVudGlmaWUKICAgICB9KTsKIH0KIAotc3RhdGljIFB1c2hSZWNvcmQgbWFrZVB1c2hS
ZWNvcmRGcm9tUm93KFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlJiBzcWwpCitzdGF0aWMg
UHVzaFJlY29yZCBtYWtlUHVzaFJlY29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0
U2NvcGUmIHNxbCwgaW50IGNvbHVtbkluZGV4KQogewogICAgIFB1c2hSZWNvcmQgcmVjb3JkOwot
ICAgIHJlY29yZC5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlw
dGlvbklkZW50aWZpZXJUeXBlPihzcWwtPmNvbHVtbkludDY0KDApKTsKLSAgICByZWNvcmQuYnVu
ZGxlSUQgPSBzcWwtPmNvbHVtblRleHQoMSk7Ci0gICAgcmVjb3JkLnNlY3VyaXR5T3JpZ2luID0g
c3FsLT5jb2x1bW5UZXh0KDIpOwotICAgIHJlY29yZC5zY29wZSA9IHNxbC0+Y29sdW1uVGV4dCgz
KTsKLSAgICByZWNvcmQuZW5kcG9pbnQgPSBzcWwtPmNvbHVtblRleHQoNCk7Ci0gICAgcmVjb3Jk
LnRvcGljID0gc3FsLT5jb2x1bW5UZXh0KDUpOwotICAgIHJlY29yZC5zZXJ2ZXJWQVBJRFB1Ymxp
Y0tleSA9IHNxbC0+Y29sdW1uQmxvYig2KTsKLSAgICByZWNvcmQuY2xpZW50UHVibGljS2V5ID0g
c3FsLT5jb2x1bW5CbG9iKDcpOwotICAgIHJlY29yZC5jbGllbnRQcml2YXRlS2V5ID0gc3FsLT5j
b2x1bW5CbG9iKDgpOwotICAgIHJlY29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5jb2x1bW5C
bG9iKDkpOwotICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbVZh
bHVlKHNxbC0+Y29sdW1uVmFsdWUoMTApKTsKLSAgICByZWNvcmQud2FrZVN0YXRlID0gc3RhdGlj
X2Nhc3Q8UHVzaFdha2VTdGF0ZT4oc3FsLT5jb2x1bW5JbnQoMTEpKTsKKyAgICByZWNvcmQuaWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
VHlwZT4oc3FsLT5jb2x1bW5JbnQ2NChjb2x1bW5JbmRleCsrKSk7CisgICAgcmVjb3JkLmJ1bmRs
ZUlEID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zZWN1cml0
eU9yaWdpbiA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuc2Nv
cGUgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLmVuZHBvaW50
ID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC50b3BpYyA9IHNx
bC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuc2VydmVyVkFQSURQdWJs
aWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLmNsaWVu
dFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQu
Y2xpZW50UHJpdmF0ZUtleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICBy
ZWNvcmQuc2hhcmVkQXV0aFNlY3JldCA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsK
KyAgICByZWNvcmQuZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21WYWx1ZShzcWwt
PmNvbHVtblZhbHVlKGNvbHVtbkluZGV4KyspKTsKIAogICAgIHJldHVybiByZWNvcmQ7CiB9CkBA
IC00NDcsMTAgKzQ0Niw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeVRvcGljKGNv
bnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgZGlzcGF0Y2hP
bldvcmtRdWV1ZShbdGhpcywgdG9waWMgPSBjcm9zc1RocmVhZENvcHkodG9waWMpLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICAvLyBGb3JjZSBTUUxpdGUgdG8gY29uc3VsdCB0aGUgU3Vic2NyaXB0aW9ucyhzY29wZSkg
aW5kZXggZmlyc3QgdmlhIENST1NTIEpPSU4uCiAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3Rh
dGVtZW50T25RdWV1ZSgKLSAgICAgICAgICAgICJTRUxFQ1QgIgotICAgICAgICAgICAgIiAgc3Vi
LnJvd0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1Yi5zY29wZSwgc3ViLmVu
ZHBvaW50LCBzdWIudG9waWMsICIKLSAgICAgICAgICAgICIgIHN1Yi5zZXJ2ZXJWQVBJRFB1Ymxp
Y0tleSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksICIKLSAgICAg
ICAgICAgICIgIHN1Yi5zaGFyZWRBdXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUsIHNzLndh
a2VTdGF0ZSAiCisgICAgICAgICAgICAiU0VMRUNUICIga1B1c2hSZWNvcmRDb2x1bW5zCiAgICAg
ICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCiAgICAgICAgICAgICAiQ1JPU1MgSk9J
TiBTdWJzY3JpcHRpb25TZXRzIHNzICIKICAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0aW9u
U2V0SUQgPSBzcy5yb3dpZCAiCkBAIC00NjcsNyArNDYzLDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6
OmdldFJlY29yZEJ5VG9waWMoY29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRl
T25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVjb3JkRnJv
bVJvdyhzcWwpKTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCwgMCkpOwogICAgIH0pOwogfQog
CkBAIC00NzYsMTAgKzQ3Miw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAgZGlzcGF0
Y2hPbldvcmtRdWV1ZShbdGhpcywgYnVuZGxlSUQgPSBjcm9zc1RocmVhZENvcHkoYnVuZGxlSUQp
LCBzY29wZSA9IGNyb3NzVGhyZWFkQ29weShzY29wZSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZvcmNlIFNR
TGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3BlKSBpbmRleCBmaXJzdCB2aWEg
Q1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKAot
ICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBzdWIucm93SUQsIHNzLmJ1bmRs
ZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIuZW5kcG9pbnQsIHN1Yi50b3Bp
YywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVibGljS2V5LCBzdWIuY2xpZW50
UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAgICAgICAgICAgIiAgc3ViLnNo
YXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mud2FrZVN0YXRlICIKKyAgICAg
ICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAgICAgICAgICAgICJGUk9NIFN1
YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBKT0lOIFN1YnNjcmlwdGlvblNl
dHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCA9IHNzLnJvd2lk
ICIKQEAgLTQ5Niw3ICs0ODksNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlCdW5k
bGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgYwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCkpOworICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtl
UHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9CiAKQEAgLTUxMiwxNyArNTA1
LDExIEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hTZXQ8UHVzaFN1YnNjcmlwdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQgUHVzaERh
dGFiYXNlOjpnZXRUb3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hX
YWtlU3RhdGVUb1RvcGljTWFwJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQdXNoRGF0
YWJhc2U6OmdldFRvcGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbnN0ZXhwciBpbnQgbnVtYmVyT2ZXYWtlU3RhdGVzID0gc3RhdGljX2Nh
c3Q8aW50PihQdXNoV2FrZVN0YXRlOjpOdW1iZXJPZlN0YXRlcyk7Ci0gICAgICAgIFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPiwgbnVtYmVyT2ZXYWtlU3RhdGVzPiB0b3BpY3NCeVdha2VTdGF0ZShudW1i
ZXJPZldha2VTdGF0ZXMpOyAvLyB1c2VkIGJlY2F1c2UgSGFzaE1hcDo6aXNvbGF0ZWRDb3B5IGRv
ZXNuJ3QgZXhpc3QKLQotICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
Ci0gICAgICAgICAgICAiU0VMRUNUIHNzLndha2VTdGF0ZSwgc3ViLnRvcGljICIKLSAgICAgICAg
ICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKLSAgICAgICAgICAgICJKT0lOIFN1YnNjcmlw
dGlvblNldHMgc3MgIgotICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCA9IHNz
LnJvd2lkIl9zKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gdG9waWNzOworICAgICAgICBhdXRv
IHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNFTEVDVCB0b3BpYyBGUk9NIFN1YnNjcmlw
dGlvbnMiX3MpOwogICAgICAgICBpZiAoIXNxbCkgewogICAgICAgICAgICAgUFVTSERCX1JFTEVB
U0VfTE9HX0JJTkRfRVJST1IoKTsKICAgICAgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewpAQCAtNTMxLDIyICs1MTgsMTE4IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRUb3Bp
Y3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hXYWtlU3RhdGVUb1RvCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB3aGlsZSAoc3FsLT5zdGVw
KCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICAgICAgYXV0byBwdXNoV2FrZVN0YXRlID0gc3Fs
LT5jb2x1bW5JbnQoMCk7Ci0gICAgICAgICAgICBhdXRvIHRvcGljID0gc3FsLT5jb2x1bW5UZXh0
KDEpOwotICAgICAgICAgICAgaWYgKHB1c2hXYWtlU3RhdGUgPj0gMCAmJiBwdXNoV2FrZVN0YXRl
IDwgbnVtYmVyT2ZXYWtlU3RhdGVzKQotICAgICAgICAgICAgICAgIHRvcGljc0J5V2FrZVN0YXRl
W3B1c2hXYWtlU3RhdGVdLmFwcGVuZChXVEZNb3ZlKHRvcGljKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpCisgICAgICAgICAgICB0b3BpY3Mu
YXBwZW5kKHNxbC0+Y29sdW1uVGV4dCgwKSk7CiAKLSAgICAgICAgV29ya1F1ZXVlOjptYWluKCku
ZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHRvcGljc0J5V2FrZVN0YXRlID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9waWNzQnlXYWtl
U3RhdGUpKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFB1c2hXYWtlU3RhdGVUb1RvcGljTWFw
IHJlc3VsdDsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8aW50
PihQdXNoV2FrZVN0YXRlOjpOdW1iZXJPZlN0YXRlcyk7ICsraSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQuYWRkKHN0YXRpY19jYXN0PFB1c2hXYWtlU3RhdGU+KGkpLCBXVEZNb3ZlKHRvcGljc0J5
V2FrZVN0YXRlW2ldKSk7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
c3VsdCkpOworICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdG9waWNzID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUodG9waWNzKSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEZNb3ZlKHRvcGljcykpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KIAordm9p
ZCBQdXNoRGF0YWJhc2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1
bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzcGF0Y2hPbldvcmtRdWV1
ZShbdGhpcywgYnVuZGxlSUQgPSBjcm9zc1RocmVhZENvcHkoYnVuZGxlSUQpLCBzZWN1cml0eU9y
aWdpbiA9IGNyb3NzVGhyZWFkQ29weShzZWN1cml0eU9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGludCBz
aWxlbnRQdXNoQ291bnQgPSAwOworICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
bihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKworICAgICAgICB7CisgICAg
ICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlVQREFURSBTdWJzY3Jp
cHRpb25TZXRzIFNFVCBzaWxlbnRQdXNoQ291bnQgPSBzaWxlbnRQdXNoQ291bnQgKyAxIFdIRVJF
IGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKworICAgICAgICAgICAg
aWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRFX09LIHx8IHNx
bC0+YmluZFRleHQoMiwgc2VjdXJpdHlPcmlnaW4pICE9IFNRTElURV9PSykgeworICAgICAgICAg
ICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAg
Y29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3Fs
LT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFp
blF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAg
ICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNFTEVDVCBzaWxlbnRQdXNoQ291
bnQgRlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlP
cmlnaW4gPSA/Il9zKTsKKworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgx
LCBidW5kbGVJRCkgIT0gU1FMSVRFX09LIHx8IHNxbC0+YmluZFRleHQoMiwgc2VjdXJpdHlPcmln
aW4pICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19C
SU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykKKyAg
ICAgICAgICAgICAgICBzaWxlbnRQdXNoQ291bnQgPSBzcWwtPmNvbHVtbkludCgwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworCisgICAgICAgIGNvbXBsZXRl
T25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNpbGVudFB1c2hDb3VudCk7
CisgICAgfSk7Cit9CisKK3ZvaWQgUHVzaERhdGFiYXNlOjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJ
ZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3Qg
U3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UHVz
aFJlY29yZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzcGF0Y2hPbldvcmtR
dWV1ZShbdGhpcywgYnVuZGxlSUQgPSBjcm9zc1RocmVhZENvcHkoYnVuZGxlSUQpLCBzZWN1cml0
eU9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShzZWN1cml0eU9yaWdpbiksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFZl
Y3RvcjxQdXNoUmVjb3JkPiByZW1vdmVkUmVjb3JkczsKKyAgICAgICAgU1FMaXRlVHJhbnNhY3Rp
b24gdHJhbnNhY3Rpb24obV9kYik7CisgICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisKKyAg
ICAgICAgaW50NjRfdCBzdWJzY3JpcHRpb25TZXRJRCA9IDA7CisKKyAgICAgICAgeworICAgICAg
ICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKAorICAgICAgICAgICAgICAg
ICJTRUxFQ1Qgc3ViLnN1YnNjcmlwdGlvblNldElELCAiIGtQdXNoUmVjb3JkQ29sdW1ucworICAg
ICAgICAgICAgICAgICJGUk9NIFN1YnNjcmlwdGlvblNldHMgc3MgIgorICAgICAgICAgICAgICAg
ICJKT0lOIFN1YnNjcmlwdGlvbnMgc3ViICIKKyAgICAgICAgICAgICAgICAiT04gc3Mucm93aWQg
PSBzdWIuc3Vic2NyaXB0aW9uU2V0SUQgIgorICAgICAgICAgICAgICAgICJXSEVSRSBzcy5idW5k
bGVJRCA9ID8gQU5EIHNzLnNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisgICAgICAgICAgICBpZiAo
IXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwgc3FsLT5i
aW5kVGV4dCgyLCBzZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAg
ICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICBjb21w
bGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBWZWN0b3I8UHVzaFJl
Y29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHdoaWxlIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAg
ICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNvbHVtbkludCgwKTsKKyAgICAgICAgICAg
ICAgICByZW1vdmVkUmVjb3Jkcy5hcHBlbmQobWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCwgMSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0
byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJERUxFVEUgRlJPTSBTdWJzY3JpcHRpb25z
IFdIRVJFIHN1YnNjcmlwdGlvblNldElEID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8
fCBzcWwtPmJpbmRJbnQoMSwgc3Vic2NyaXB0aW9uU2V0SUQpICE9IFNRTElURV9PSykgeworICAg
ICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAg
ICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVj
dG9yPFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKKyAg
ICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBWZWN0b3I8UHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIkRFTEVURSBGUk9NIFN1YnNjcmlwdGlvblNldHMg
V0hFUkUgcm93aWQgPSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZElu
dCgxLCBzdWJzY3JpcHRpb25TZXRJRCkgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAg
UFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0
ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBWZWN0b3I8UHVzaFJlY29y
ZD4geyB9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgeworICAgICAgICAgICAgICAg
IGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3RvcjxQ
dXNoUmVjb3JkPiB7IH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworCisgICAgICAgIGNv
bXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUocmVt
b3ZlZFJlY29yZHMpKTsKKyAgICB9KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmgKaW5kZXggODNkODk4MWUwMzMzNmFjMjc2Njk2YzZl
NTNkMTg5MWM1YjUyMDY3Ny4uYTZjZTg3NjRmYWFmZWJlNGZmNjE4MTI4ZGIxYTA2OWQ2OWM1ZTlj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJh
c2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5o
CkBAIC00MiwxNCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIFdha2Ugc3Rh
dGUgdGhhdCBhcHBsaWVzIGZvciBkZXZpY2VzIHRoYXQgcmFjZS10by1zbGVlcC4KLWVudW0gY2xh
c3MgUHVzaFdha2VTdGF0ZSA6IHVpbnQ4X3QgewotICAgIFdha2luZywgLy8gQWxsIHB1c2hlcyB3
aWxsIHdha2UgZGV2aWNlLgotICAgIE9wcG9ydHVuaXN0aWMsIC8vIExvdyBwcmlvcml0eSBwdXNo
ZXMgbWF5IG5vdCB3YWtlIGRldmljZS4KLSAgICBOb25XYWtpbmcsIC8vIE5vIHB1c2hlcyB3aWxs
IHdha2UgZGV2aWNlLgotICAgIE51bWJlck9mU3RhdGVzCi19OwotCiBzdHJ1Y3QgUHVzaFJlY29y
ZCB7CiAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBTdHJp
bmcgYnVuZGxlSUQ7CkBAIC02Miw3ICs1NCw2IEBAIHN0cnVjdCBQdXNoUmVjb3JkIHsKICAgICBW
ZWN0b3I8dWludDhfdD4gY2xpZW50UHJpdmF0ZUtleTsKICAgICBWZWN0b3I8dWludDhfdD4gc2hh
cmVkQXV0aFNlY3JldDsKICAgICBzdGQ6Om9wdGlvbmFsPEVwb2NoVGltZVN0YW1wPiBleHBpcmF0
aW9uVGltZSB7IH07Ci0gICAgUHVzaFdha2VTdGF0ZSB3YWtlU3RhdGUgeyBQdXNoV2FrZVN0YXRl
OjpXYWtpbmcgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5
KCkgY29uc3QgJjsKICAgICBXRUJDT1JFX0VYUE9SVCBQdXNoUmVjb3JkIGlzb2xhdGVkQ29weSgp
ICYmOwpAQCAtODEsOSArNzIsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Z2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZ2V0UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5nJiBi
dW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6
Om9wdGlvbmFsPFB1c2hSZWNvcmQ+JiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdl
dElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllcj4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VG9waWNz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwogCi0gICAgdXNp
bmcgUHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgPSBIYXNoTWFwPFB1c2hXYWtlU3RhdGUsIFZlY3Rv
cjxTdHJpbmc+LCBXVEY6OkludEhhc2g8UHVzaFdha2VTdGF0ZT4sIFdURjo6U3Ryb25nRW51bUhh
c2hUcmFpdHM8UHVzaFdha2VTdGF0ZT4+OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VG9w
aWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChQdXNoV2FrZVN0YXRlVG9Ub3Bp
Y01hcCYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNyZW1lbnRTaWxlbnRQdXNo
Q291bnQoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChpbnQpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25z
dCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxQdXNoUmVjb3JkPiYmKT4mJik7CiAKIHByaXZhdGU6CiAg
ICAgUHVzaERhdGFiYXNlKFJlZjxXb3JrUXVldWU+JiYsIFVuaXF1ZVJlZjxXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggNTEwYzFiMDcyYjg5N2Q3OTAw
YWE2ZTZlYTAyZDhmMDA2MzhmYjNkZC4uYjA1ZmEzMjgyMjc1ZjNlMTViMDEyMzBiOTdmZTg0Mzdh
NjkwOGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb24uaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgPHd0
Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VSTEhhc2guaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtODgsNiArODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBwb3N0VGFza1Rv
RmlyZU5vdGlmaWNhdGlvbkV2ZW50KE5vdGlmaWNhdGlvbkV2ZW50VHlwZSwgTm90aWZpY2F0aW9u
JiwgY29uc3QgU3RyaW5nJiBhY3Rpb24pOwogI2VuZGlmCiAKKyAgICBib29sIGhhc1BlbmRpbmdT
aWxlbnRQdXNoRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZl
bnQ7IH0KKyAgICB2b2lkIHNldEhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQoYm9vbCB2YWx1ZSkg
eyBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQgPSB2YWx1ZTsgfQorCiBwcml2YXRlOgogICAg
IFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmJiwgU2Vy
dmljZVdvcmtlckRhdGEmJiwgY29uc3QgV29ya2VyUGFyYW1ldGVycyYsIFJlZjxTZWN1cml0eU9y
aWdpbj4mJiwgU2VydmljZVdvcmtlclRocmVhZCYsIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0b3BP
cmlnaW4sIElEQkNsaWVudDo6SURCQ29ubmVjdGlvblByb3h5KiwgU29ja2V0UHJvdmlkZXIqLCBz
dGQ6OnVuaXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiYmLCBQQUw6OlNlc3Npb25JRCk7CiAg
ICAgdm9pZCBub3RpZnlTZXJ2aWNlV29ya2VyUGFnZU9mQ3JlYXRpb25JZk5lY2Vzc2FyeSgpOwpA
QCAtOTYsNiArMTAwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoKSBj
b25zdCB7IHJldHVybiAhbV9leHRlbmRlZEV2ZW50cy5pc0VtcHR5KCk7IH0KIAogICAgIE5vdGlm
aWNhdGlvbkNsaWVudCogbm90aWZpY2F0aW9uQ2xpZW50KCkgZmluYWwgeyByZXR1cm4gbV9ub3Rp
ZmljYXRpb25DbGllbnQuZ2V0KCk7IH0KKwogICAgIHN0ZDo6b3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9CiAKICAg
ICBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEgbV9jb250ZXh0RGF0YTsKQEAgLTEwOSw2ICsxMTQs
NyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEZWZlcnJlZFByb21p
c2U+PiBtX3BlbmRpbmdTa2lwV2FpdGluZ1Byb21pc2VzOwogICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxOb3RpZmljYXRpb25DbGllbnQ+IG1fbm90
aWZpY2F0aW9uQ2xpZW50OworICAgIGJvb2wgbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50IHsg
ZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LmNwcAppbmRleCBkODg0NWFiMjRjMzgwNjJjMDcyODAxNTY0MGZmYjBhNGYzZGZiYWY3Li5mN2E0
NDVkMTY1ZmFhY2FhZjdjMmM4NGZkMzJlMDU5N2I0YjVlYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b24uY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lv
bi5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5j
bHVkZSAiU2VydmljZVdvcmtlclR5cGVzLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMjg2LDYgKzI4Nyw5IEBA
IHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBp
ZiAoY29udGV4dC5pc1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSgpKQorICAgICAgICBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnNldEhhc1BlbmRpbmdTaWxlbnRQ
dXNoRXZlbnQoZmFsc2UpOworCiAgICAgLy8gVGhlIE5vdGlmaWNhdGlvbiBpcyBrZXB0IGFsaXZl
IGJ5IHZpcnR1ZSBvZiBiZWluZyBzaG93KCknbiBzb29uLgogICAgIC8vIEZJWE1FOiBXaGVuIGlt
cGxlbWVudGluZyBnZXROb3RpZmljYXRpb25zKCksIHN0b3JlIHRoaXMgTm90aWZpY2F0aW9uIGlu
IHRoZSByZWdpc3RyYXRpb24ncyBub3RpZmljYXRpb24gbGlzdC4KICAgICBhdXRvIG5vdGlmaWNh
dGlvbiA9IE5vdGlmaWNhdGlvbjo6Y3JlYXRlKGNvbnRleHQsIHRpdGxlLCBvcHRpb25zKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VX
b3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZTJlNDA4YjEwOTE1NDdmZDAwYjdmYTUwMjdm
ODQxZWVjN2JlNTY4Yi4uYzgxMzVhNzJjNmVjZDBkZDQzNWU5NTQ1NWViMDlkZWYwM2UyYjlmYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTIyNCwxMCArMjI0LDEyIEBAIHZvaWQg
U2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9u
YWw8VmVjdG9yPHVpbnQ4X3Q+CiAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmV2ZW50TG9v
cCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpET01NYW5pcHVsYXRpb24sIFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBSZWYgeyBzZXJ2aWNl
V29ya2VyR2xvYmFsU2NvcGUgfSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFNlcnZpY2VX
b3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQgZmly
aW5nIGV2ZW50IGZvciB3b3JrZXIgJSIgUFJJdTY0LCBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUt
PnRocmVhZCgpLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAorICAgICAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUtPnNldEhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQodHJ1ZSk7CisKICAg
ICAgICAgYXV0byBwdXNoRXZlbnQgPSBQdXNoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucHVz
aEV2ZW50LCB7IH0sIFdURk1vdmUoZGF0YSksIEV4dGVuZGFibGVFdmVudDo6SXNUcnVzdGVkOjpZ
ZXMpOwogICAgICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQocHVz
aEV2ZW50KTsKIAotICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21p
c2VzQXJlU2V0dGxlZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIG11dGFibGUg
eworICAgICAgICBwdXNoRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0
dGxlZChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgc2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLCBldmVudENyZWF0aW9uVGltZSA9IHB1c2hFdmVudC0+dGltZVN0YW1wKCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlID0gZmFsc2U7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7
CiAgICAgICAgICAgICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0
YXR1czo6UmVqZWN0ZWQpIHsKQEAgLTIzNSw3ICsyMzcsMTQgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWlu
dDhfdD4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGJhY2soIWhhc1JlamVjdGVkQW55UHJvbWlzZSk7
CisKKyAgICAgICAgICAgIGJvb2wgc2hvd2VkTm90aWZpY2F0aW9uID0gIXNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS0+aGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCgpOworICAgICAgICAgICAgYm9v
bCBzdWNjZXNzID0gIWhhc1JlamVjdGVkQW55UHJvbWlzZSAmJiBzaG93ZWROb3RpZmljYXRpb247
CisKKyAgICAgICAgICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9G
aXJlUHVzaEV2ZW50IGZhaWxlZCB0byBwcm9jZXNzIHB1c2ggZXZlbnQgKHJlamVjdGVkUHJvbWlz
ZSA9ICVkLCBzaG93ZWROb3RpZmljYXRpb24gPSAlZCkiLCBoYXNSZWplY3RlZEFueVByb21pc2Us
IHNob3dlZE5vdGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHN1Y2Nlc3MpOwog
ICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggZjRmOGE0YzRmNGFmOTZhZjY4OTQyYzVjNmM5ODky
ZmY3ZTE5OTNmMS4uODQ0ZGIxODlmZjgyNjU1NTI5ZWY4ZjFhNzY2YTQ5MDhlNTYwN2EyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTIyNTAsMjkgKzIyNTAsNTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVuYW1lT3JpZ2luSW5X
ZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFUKICAgICAgICAgbWFu
YWdlci0+bW92ZURhdGEoZGF0YVR5cGVzLCBvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3JlZ2F0
b3JdIHsgfSk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKwogdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdl
PiYpPiYmIGNhbGxiYWNrKQogewotI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQog
ICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAg
ICAgICBMT0coTm90aWZpY2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGdldHRpbmcgcGVuZGluZyBw
dXNoIG1lc3NhZ2VzIGZvciBzZXNzaW9uIElEICUiIFBSSXU2NCwgc2Vzc2lvbklELnRvVUludDY0
KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVs
c2UKICAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBub3Qg
ZmluZCBzZXNzaW9uIGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiLCBz
ZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0jZW5kaWYKLSAgICBjYWxsYmFjayh7IH0pOwogfQogCiB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcgcHJv
Y2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vzc2lvbiAl
bGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwotICAgICAgICBzZXNzaW9uLT5lbnN1cmVTV1Nl
cnZlcigpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdlLnB1c2hEYXRhKSwg
V1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHB1c2hN
ZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCk7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVy
KCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZN
b3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
UmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uOworICAgICAgICAgICAgaWYgKCFyZXN1bHQgJiYg
KHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICAgICAgICAg
IHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKQorICAgICAgICAgICAgICAgICAgICAuaW5j
cmVtZW50U2lsZW50UHVzaENvdW50KFdURk1vdmUob3JpZ2luKSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHJlc3VsdF0oaW50KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FsbGJhY2socmVz
dWx0KTsKKyAgICAgICAgfSk7CiAgICAgfSBlbHNlCiAgICAgICAgIExPRyhQdXNoLCAiTmV0d29y
a2luZyBwcm9jZXNzIGFza2VkIHRvIGhhbmRsZSBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nl
c3MgaW4gc2Vzc2lvbiAlbGx1LCBidXQgdGhhdCBzZXNzaW9uIGRvZXNuJ3QgZXhpc3QiLCBzZXNz
aW9uSUQudG9VSW50NjQoKSk7CiB9Ci0jZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
CisjZWxzZQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1
c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7
CisgICAgY2FsbGJhY2soZmFsc2UpOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKIAogdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGNhbGxiYWNrKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZjAwYTIxOTNhYTJiMTM5
ODAyYjM2NmE0ZjEyMWM3NmVkZmY4OGYwMy4uMGZiMGVhZDNhZWE0OWI4YTAzMzNkOTljZmY4Yjkx
NWMzNmFhZDc3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCkBAIC0xNzUsNiArMTc1LDE2IEBAIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXI6OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRpCiAgICAg
c2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlz
c2lvblN0YXRlPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShzY29wZVVSTCkp
OwogfQogCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRTaWxlbnRQ
dXNoQ291bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgb3JpZ2luLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGludCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5
cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudD4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IFdURk1vdmUob3JpZ2luKSk7Cit9CisKIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXI6OnNlbmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpAQCAtMjI4LDYgKzIz
OCwxNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxib29sPiB7CiAgICAgfQogfTsK
IAordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8aW50PiB7CisgICAgc3RhdGljIHZvaWQg
Y2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlv
bmFsPGludD4gdmFsdWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICgh
dmFsdWUpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCp2YWx1ZSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1
Y3QgUmVwbHlDYWxsZXI8VmVjdG9yPFN0cmluZz4mJj4gewogICAgIHN0YXRpYyB2b2lkIGNhbGxS
ZXBseShEYWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNTJhNjM4NGJhYjEwZTBhZTkx
NmJhYTIzZjkxNGE5MjVmZWUzMDhkZC4uMDZlNjE1N2ZhODY1NDUyNTU1OWJjYjU4NDAzMjI5ZmMy
YWMzMmMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgK
QEAgLTYxLDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNl
cnZpY2UoVVJMJiYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlv
bkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oVVJMJiYgc2NvcGVV
UkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpQdXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsK
ICAgICB2b2lkIGdldFB1c2hQZXJtaXNzaW9uU3RhdGUoVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4m
Jik+JiYpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYpOwogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgY29u
c3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaAppbmRleCBmM2Y3YmJlNjNmNGVkMzVlZGNmM2Uy
YWFhZDkzZmIzZTQ5MjlmZjk5Li40MzE4OTlkNzYwNmU0NjE2YTQ3MDE0ZTAwYTgyYWMzZjZmMmY5
ZWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
CkBAIC0yNyw2ICsyNyw5IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEIHsKIAorLy8g
SWYgYW4gb3JpZ2luIHByb2Nlc3NlcyBtb3JlIHRoYW4gdGhpcyBtYW55IHNpbGVudCBwdXNoZXMs
IHRoZW4gaXQgd2lsbCBiZSB1bnN1YnNjcmliZWQgZnJvbSBwdXNoLgorY29uc3RleHByIGludCBt
YXhTaWxlbnRQdXNoQ291bnQgPSAzOworCiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xW
ZXJzaW9uS2V5ID0gInByb3RvY29sIHZlcnNpb24iOwogY29uc3RleHByIHVpbnQ2NF90IHByb3Rv
Y29sVmVyc2lvblZhbHVlID0gMTsKIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29k
ZWRNZXNzYWdlS2V5ID0gImVuY29kZWQgbWVzc2FnZSI7CkBAIC00OCw3ICs1MSw4IEBAIGVudW0g
Y2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBTdWJzY3JpYmVUb1B1c2hTZXJ2aWNl
LAogICAgIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlLAogICAgIEdldFB1c2hTdWJzY3JpcHRp
b24sCi0gICAgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZQorICAgIEdldFB1c2hQZXJtaXNzaW9uU3Rh
dGUsCisgICAgSW5jcmVtZW50U2lsZW50UHVzaENvdW50LAogfTsKIAogaW5saW5lIGJvb2wgbWVz
c2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQpAQCAtNjUsNiArNjks
NyBAQCBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2Fn
ZVR5cGUpCiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2U6
CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0UHVzaFN1YnNjcmlwdGlvbjoKICAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6
OkluY3JlbWVudFNpbGVudFB1c2hDb3VudDoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2Fz
ZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVzc2FnZVR5
cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQppbmRleCBhN2E4YmI2MDg3NWE5
OTUyZTk5MGE1MmFkODlkMzM0YzZkNmZmOGZhLi4zYzgxOGZiMjE4MzkzMmMyMTBmNTdhYWU2MDAw
MzIzN2U0YWQ0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVUlHYW1lcGFkUHJvdmlk
ZXIuaCIKKyNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAiV0tEb3dubG9hZEludGVybmFs
LmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
QEAgLTQxLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkQ2FjaGUuaCIKICNpbXBv
cnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9ydCAiV2ViQ29va2llTWFuYWdlclByb3h5
LmgiCisjaW1wb3J0ICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCIKICNpbXBvcnQgIldl
YlByb2Nlc3NDYWNoZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW1wb3J0
ICJXZWJQcm9jZXNzUG9vbC5oIgpAQCAtNjEyLDQgKzYxNCw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8
V0tQcm9jZXNzUG9vbD4mIHNoYXJlZFByb2Nlc3NQb29sKCkKICAgICBfcHJvY2Vzc1Bvb2wtPnRl
cm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMoKTsKIH0KIAorLSAoV0tOb3RpZmljYXRpb25N
YW5hZ2VyUmVmKV9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZworeworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJLaXQ6OldlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eT4oKSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggZTFm
ZDk5MWRmYjJiNzg0OTQ0NTAzNmNkODI5ZTY0ZDdjYzVkZGI2MS4uNmUxNTU3YWM1YjFkZTk2ODIw
MjI5NzdkZDdkY2YzMzY0Yjg2MTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTIzLDYgKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCisjaW1wb3J0IDxX
ZWJLaXQvV0tCYXNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbC5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtMTM3LDYgKzEzOCw4IEBACiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQ29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0Vu
YWJsZWQsIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQ6KSBCT09M
IF9jb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCBXS19BUElfREVQUkVDQVRFRCgiUGFy
dGl0aW9uZWQgY29va2llcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCIsIG1hY29zKDEwLjEyLjMs
IDEwLjE0LjQpLCBpb3MoMTAuMywgMTIuMikpOwogCistIChXS05vdGlmaWNhdGlvbk1hbmFnZXJS
ZWYpX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nOworCiAvLyBUZXN0IG9ubHkuCiAtICh2
b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3RpbmdXaXRoRmlyc3RQYXJ0eToo
TlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJMICopdGhpcmRQYXJ0eVVSTCBz
aG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlciAgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQpKTsKIC0gKHZvaWQpX2dhcmJh
Z2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTEuMCksIGlvcygxNC4wKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmgKaW5k
ZXggZmU0MTVlMDA4ZGQ2MzA1MTA1ODI0ZjhjZmIwMjY5NWFmYzMyM2ZlYi4uZjdkZDQzYTgxMTQw
ZGNlZjZmOTMxNDEzMjUwNzNkNjc0YjlkMjdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNl
cnZpY2UuaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdWJzY3JpYmUoY29u
c3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjb3BlLCBjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHZhcGlkUHVibGljS2V5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhLCBXZWJDb3JlOjpFeGNl
cHRpb25EYXRhPiYpPiYmKTsKICAgICB2b2lkIHVuc3Vic2NyaWJlKGNvbnN0IFN0cmluZyYgYnVu
ZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgV2ViQ29yZTo6UHVzaFN1YnNjcmlw
dGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8Ym9v
bCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CiAKKyAgICB2b2lkIGluY3JlbWVudFNp
bGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJik7CisKICAg
ICB2b2lkIGRpZENvbXBsZXRlR2V0U3Vic2NyaXB0aW9uUmVxdWVzdChHZXRTdWJzY3JpcHRpb25S
ZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN1YnNjcmliZVJlcXVlc3QoU3Vic2NyaWJl
UmVxdWVzdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5zdWJz
Y3JpYmVSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hT
ZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQppbmRleCAw
NThhNzY5ZTY5NmNhZWNlNjY0NTQyZDBjYTcwMDhjODc0YjhhN2YwLi4yMWQ2YTU4NzBhYWNjMzQx
YmMxZjQwYzgzZDNkZDVlMzdlYjBjYzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1B1c2hTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZp
Y2UubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFwcGxlUHVzaFNlcnZpY2VDb25uZWN0
aW9uLmgiCiAjaW1wb3J0ICJNb2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW1wb3J0IDxG
b3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVzaE1lc3NhZ2VDcnlw
dG8uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTQ0LDE5ICs0NSw5
IEBAIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVRvcGljTGlzdHMo
UHVzaFNlcnZpY2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQdXNoRGF0YWJhc2UmIGRhdGFiYXNl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGRh
dGFiYXNlLmdldFRvcGljc0J5V2FrZVN0YXRlKFsmY29ubmVjdGlvbiwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIHRvcGljTWFwKSBtdXRhYmxl
IHsKKyAgICBkYXRhYmFzZS5nZXRUb3BpY3MoWyZjb25uZWN0aW9uLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgdG9waWNzKSBtdXRhYmxlIHsK
ICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG9waWNzIHRvIGlnbm9yZWQgbGlzdCBiYXNlZCBvbiB1
c2VyIHByZWZlcmVuY2VzLgotICAgICAgICBQdXNoU2VydmljZUNvbm5lY3Rpb246OlRvcGljTGlz
dHMgdG9waWNMaXN0czsKLQotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVz
aFdha2VTdGF0ZTo6V2FraW5nKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAgICBz
dGQ6OnN3YXAodG9waWNMaXN0cy5lbmFibGVkVG9waWNzLCBpdC0+dmFsdWUpOwotICAgICAgICBp
ZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYyk7
IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlzdHMu
b3Bwb3J0dW5pc3RpY1RvcGljcywgaXQtPnZhbHVlKTsKLSAgICAgICAgaWYgKGF1dG8gaXQgPSB0
b3BpY01hcC5maW5kKFB1c2hXYWtlU3RhdGU6Ok5vbldha2luZyk7IGl0ICE9IHRvcGljTWFwLmVu
ZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlzdHMubm9uV2FraW5nVG9waWNzLCBp
dC0+dmFsdWUpOwotCi0gICAgICAgIGNvbm5lY3Rpb24uc2V0VG9waWNMaXN0cyhXVEZNb3ZlKHRv
cGljTGlzdHMpKTsKLQorICAgICAgICBjb25uZWN0aW9uLnNldEVuYWJsZWRUb3BpY3MoV1RGTW92
ZSh0b3BpY3MpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAg
LTQ4Miw2ICs0NzMsMzIgQEAgdm9pZCBQdXNoU2VydmljZTo6ZGlkQ29tcGxldGVVbnN1YnNjcmli
ZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0JiByZXF1ZXN0KQogICAgIGZpbmlzaGVkUHVzaFNl
cnZpY2VSZXF1ZXN0KG1fdW5zdWJzY3JpYmVSZXF1ZXN0cywgcmVxdWVzdCk7CiB9CiAKK3ZvaWQg
UHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoaW50KT4mJiBoYW5kbGVyKQoreworICAgIG1fZGF0YWJhc2UtPmluY3JlbWVudFNp
bGVudFB1c2hDb3VudChidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1
bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVy
KV0oaW50IHNpbGVudFB1c2hDb3VudCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChzaWxlbnRQdXNo
Q291bnQgPCBXZWJLaXQ6OldlYlB1c2hEOjptYXhTaWxlbnRQdXNoQ291bnQpIHsKKyAgICAgICAg
ICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFJFTEVBU0VfTE9HKFB1c2gsICJSZW1vdmluZyBhbGwgc3Vic2NyaXB0
aW9ucyBhc3NvY2lhdGVkIHdpdGggJXtwdWJsaWN9cyAle3NlbnNpdGl2ZX1zIHNpbmNlIGl0IHBy
b2Nlc3NlZCAlZCBzaWxlbnQgcHVzaGVzIiwgYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgp
LCBzZWN1cml0eU9yaWdpbi51dGY4KCkuZGF0YSgpLCBzaWxlbnRQdXNoQ291bnQpOworCisgICAg
ICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0
eU9yaWdpbihidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlk
ZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZN
b3ZlKGhhbmRsZXIpXShhdXRvJiYgcmVtb3ZlZFJlY29yZHMpIG11dGFibGUgeworICAgICAgICAg
ICAgZm9yIChhdXRvJiByZWNvcmQgOiByZW1vdmVkUmVjb3JkcykgeworICAgICAgICAgICAgICAg
IGF1dG8gdG9waWMgPSBtYWtlUHVzaFRvcGljKHJlY29yZC5idW5kbGVJRCwgcmVjb3JkLnNjb3Bl
KTsKKyAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHRvcGljLCByZWNv
cmQuc2VydmVyVkFQSURQdWJsaWNLZXksIFt0b3BpY10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJy
b3IqIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdW5zdWJzY3JpYmVkKQorICAg
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHVzaCwgIkluY3JlbWVudFNp
bGVudFB1c2hSZXF1ZXN0IGNvdWxkbid0IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7
c2Vuc2l0aXZlfXM6ICV7cHVibGljfXMgY29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgp
LCBlcnJvci5kb21haW4uVVRGOFN0cmluZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+
KGVycm9yLmNvZGUpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdXBkYXRlVG9waWNMaXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFtzaWxl
bnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENvdW50KTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwogZW51bSBjbGFzcyBDb250ZW50RW5jb2Rpbmcgewog
ICAgIEVtcHR5LAogICAgIEFFU0dDTSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
LmgKaW5kZXggMDI4MDg0ZTUyYjRhMGRiYjNjMTQ5YmU2Yzk3MzZmNzU3NWU3ODdiMy4uMmNkMTgz
ZDMyNGJlOTE3MDZkOWMwNGViODFiNzBhYmZkMWY4OGY5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJQdXNoTWVz
c2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRXhjZXB0aW9uRGF0YS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUHVzaFN1YnNjcmlwdGlvbkRhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTgwLDYgKzgxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbios
IGNvbnN0IFVSTCYgc2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4
Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlw
dGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJz
Y3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7
CiAgICAgdm9pZCBnZXRQdXNoUGVybWlzc2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qLCBjb25z
dCBVUkwmIHNjb3BlVVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHVp
bnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZv
aWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGludCk+JiYp
OwogCiAgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxsQ29ubmVjdGlvbklkZW50aXRpZXMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQppbmRleCAxY2Y4ZTI0NzNi
NDUzY2NmMTAxN2FjYzQ3ZTQzMjY2MjExZDYwNDA1Li5mNDE5NjJiNDgzYjYzYjdlZmMwMTgwNWY5
NjdkM2YxNzA1MTVmN2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1
c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
CkBAIC0xMTgsNiArMTE4LDExIEBAIEFSR1VNRU5UUyhVUkwpCiBSRVBMWShjb25zdCBFeHBlY3Rl
ZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpCiBFTkQKIAorRlVOQ1RJT04oaW5j
cmVtZW50U2lsZW50UHVzaENvdW50KQorQVJHVU1FTlRTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSkKK1JFUExZKGludCkKK0VORAorCiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVO
VFMKICN1bmRlZiBSRVBMWQpAQCAtMjAwLDYgKzIwNSwxMyBAQCBXZWJQdXNoRDo6RW5jb2RlZE1l
c3NhZ2UgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZTo6ZW5jb2RlUmVwbHkoY29uc3QgRXhwZWN0ZWQ8
dWludAogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVu
Y29kZWRNZXNzYWdlIGluY3JlbWVudFNpbGVudFB1c2hDb3VudDo6ZW5jb2RlUmVwbHkoaW50IHJl
cGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rl
ciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+CkBAIC00MDIs
NiArNDE0LDkgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VX
aXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KGNsaWVudENvbm5l
Y3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CiAgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudDoKKyAg
ICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjppbmNyZW1l
bnRTaWxlbnRQdXNoQ291bnQ+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZN
b3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtNjI4LDYg
KzY0MywxOCBAQCB2b2lkIERhZW1vbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShDbGllbnRDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjbwogICAgIHJlcGx5U2VuZGVyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFdlYkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGU6OkRlbmllZCkpOwog
fQogCit2b2lkIERhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVudENvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgc2VjdXJp
dHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoaW50KT4mJiByZXBseVNlbmRlcikKK3sK
KyAgICBydW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIg
PSBjb25uZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksIHNlY3VyaXR5T3Jp
Z2luID0gc2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJl
cGx5U2VuZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3B1c2hTZXJ2aWNlKSB7Cisg
ICAgICAgICAgICByZXBseVNlbmRlcigwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIG1fcHVzaFNlcnZpY2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5k
bGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAg
IH0pOworfQorCiBDbGllbnRDb25uZWN0aW9uKiBEYWVtb246OnRvQ2xpZW50Q29ubmVjdGlvbih4
cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CiAgICAgYXV0byBjbGllbnRDb25uZWN0aW9u
ID0gbV9jb25uZWN0aW9uTWFwLmdldChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjOGRlNWM3ZTUwMzFjMWY3MTgwZDJmYzJk
NjAxMGY0YTM1NDNiNzE5Li45OThkMTA1NWJkZTA4ODJiMzU1YTFmMjk5NDY0NjA3MGUyZDgzNmMx
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMjItMDItMjEgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTW9kaWZpZWQgZXhpc3RpbmcgcHVzaCB0ZXN0cyB0byBz
aG93IGEgbm90aWZpY2F0aW9uLiBBZGRlZCBhIG5ldyB0ZXN0IGNhc2UgdG8gbWFrZSBzdXJlIHRo
YXQKKyAgICAgICAgc3Vic2NyaXB0aW9ucyBhcmUgcmVtb3ZlZCB3aGVuIGFuIG9yaWdpbiByZWFj
aGVzIGl0cyBxdW90YSBvZiBzaWxlbnQgcHVzaGVzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
bm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92
aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6Om1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Z2V0VG9waWNzU3luYyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJh
c2VUZXN0OjpnZXRUb3BpY3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNl
VGVzdDo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRhYmFzZVRlc3Q6OmluY3JlbWVudFNpbGVu
dFB1c2hDb3VudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpvcmlnaW4gY29uc3QpOgorCiAyMDIyLTAyLTE3
ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBbcnVuLXdl
YmtpdC10ZXN0c10gVXNlIFB5dGhvbiAzIChQYXJ0IDEpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1NvdXJjZXMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzLnR4dApp
bmRleCA5MjZkNTZlODhhNDJiOTYyMDQ1ODQwYmViMmUzY2VjODgxNTMyYzAzLi40YWM3Y2I4MDFm
YjQ1YTFmMWIyNGY1YWNjNDk5ODU3NjIyNGRkYmRiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQK
QEAgLTI1LDUgKzI1LDYgQEAgRGVwcmVjYXRlZEdsb2JhbFZhbHVlcy5jcHAKIEphdmFTY3JpcHRU
ZXN0LmNwcAogUGxhdGZvcm1VdGlsaXRpZXMuY3BwCiBUZXN0c0NvbnRyb2xsZXIuY3BwCitUZXN0
Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCiBUZXN0VXRpbGl0aWVzLmNwcAogCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDgwZjA2YTk4Y2M5MTU1ZTRlYjllZjI0YjA1ODY3OTg4OTZjM2ZhZgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcApAQCAt
MCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgorCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFuYWdlci5oPgorI2luY2x1
ZGUgPFdlYktpdC9XS051bWJlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1NlY3VyaXR5T3JpZ2lu
UmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIFdLRGlj
dGlvbmFyeVJlZiBub3RpZmljYXRpb25QZXJtaXNzaW9ucyhjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIqPihj
b25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPm5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7
Cit9CisKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
KFZlY3RvcjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+JiYgbWFuYWdlcnMpCisgICAgOiBtX21h
bmFnZXJzKFdURk1vdmUobWFuYWdlcnMpKQorICAgICwgbV9wZXJtaXNzaW9ucyhhZG9wdFdLKFdL
TXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSkpCit7CisgICAgbV9wcm92aWRlciA9IHsKKyAgICAg
ICAgeyAwLCB0aGlzIH0sCisgICAgICAgIDAsIC8vIHNob3dXZWJOb3RpZmljYXRpb24KKyAgICAg
ICAgMCwgLy8gY2xvc2VXZWJOb3RpZmljYXRpb24KKyAgICAgICAgMCwgLy8gZGlkRGVzdHJveU5v
dGlmaWNhdGlvbgorICAgICAgICAwLCAvLyBhZGROb3RpZmljYXRpb25NYW5hZ2VyCisgICAgICAg
IDAsIC8vIHJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIKKyAgICAgICAgJlRlc3RXZWJLaXRBUEk6
Om5vdGlmaWNhdGlvblBlcm1pc3Npb25zLAorICAgICAgICAwLCAvLyBjbGVhck5vdGlmaWNhdGlv
bnMKKyAgICB9OworCisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAg
ICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgJm1fcHJvdmlkZXIu
YmFzZSk7Cit9CisKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Q
cm92aWRlcigpCit7CisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAg
ICAgV0tOb3RpZmljYXRpb25NYW5hZ2VyU2V0UHJvdmlkZXIobWFuYWdlciwgbnVsbHB0cik7Cit9
CisKK1dLRGljdGlvbmFyeVJlZiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKCkgY29uc3QKK3sKKyAgICBXS1JldGFpbihtX3Blcm1pc3Npb25zLmdldCgp
KTsKKyAgICByZXR1cm4gbV9wZXJtaXNzaW9ucy5nZXQoKTsKK30KKwordm9pZCBUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4sIGJvb2wg
YWxsb3dlZCkKK3sKKyAgICBhdXRvIHdrQWxsb3dlZCA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRl
KGFsbG93ZWQpKTsKKyAgICBhdXRvIHdrT3JpZ2luU3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhvcmlnaW4udXRmOCgpLmRhdGEoKSkpOworICAgIFdLRGljdGlv
bmFyeVNldEl0ZW0obV9wZXJtaXNzaW9ucy5nZXQoKSwgd2tPcmlnaW5TdHJpbmcuZ2V0KCksIHdr
QWxsb3dlZC5nZXQoKSk7CisKKyAgICBhdXRvIHdrT3JpZ2luID0gYWRvcHRXSyhXS1NlY3VyaXR5
T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyh3a09yaWdpblN0cmluZy5nZXQoKSkpOworICAgIGZvciAo
YXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAgIFdLTm90aWZpY2F0aW9uTWFuYWdl
clByb3ZpZGVyRGlkVXBkYXRlTm90aWZpY2F0aW9uUG9saWN5KG1hbmFnZXIsIHdrT3JpZ2luLmdl
dCgpLCBhbGxvd2VkKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmUwNDhiZjlhMmQ4M2Q4ZTQyZDU4NmMxNmExMmUxZWQzNjE0MzEwYwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0
L1dLTXV0YWJsZURpY3Rpb25hcnkuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNp
bmNsdWRlIDxXZWJLaXQvV0tSZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewor
CitjbGFzcyBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihW
ZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYmKTsKKyAgICB+VGVzdE5vdGlmaWNhdGlv
blByb3ZpZGVyKCk7CisKKyAgICBXS0RpY3Rpb25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lv
bnMoKSBjb25zdDsKKyAgICB2b2lkIHNldFBlcm1pc3Npb24oY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGJvb2wgYWxsb3dlZCk7CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZj4gbV9tYW5hZ2VyczsKKyAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5
UmVmPiBtX3Blcm1pc3Npb25zOworICAgIFdLTm90aWZpY2F0aW9uUHJvdmlkZXJWMCBtX3Byb3Zp
ZGVyOworfTsKKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0MDIyNTE5MjJmNmQ0NjNk
NDE0NWFhMDg1ODE3ZTMzZTk3YzM4MWQ1Li4xY2UzZjQyYmE5MjlhZGFjYTQ1M2JkNzI3YTljMzY5
YmZiZWYzYmIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjk4OSw2ICsyOTg5LDggQEAK
IAkJRTVBQThEMUMyNTE1MUNDNjAwNTFDQzQ1IC8qIERhdGVJbnB1dFRlc3RzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGF0ZUlucHV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUVCMjMwRDNEMjQ1RTcyMkUwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLmh0bWw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCMjMwRDNFMjQ1RTcyNjMwMEM2NkFEMSAvKiBJREJD
aGVja3BvaW50V0FMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SURCQ2hlY2twb2ludFdBTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUI0RDMy
MDcyN0MwNDU0MzAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFQjREMzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjlBRDhDNjI3NjQ2RTczMDBEODkzQTQg
LyogUHVzaERhdGFiYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFB1c2hEYXRhYmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCQTc1QzQ4
Mjc1RUQ3QkUwMEQ2RDMxQyAvKiBQdXNoTWVzc2FnZUNyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQdXNoTWVzc2FnZUNyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVDNzlGMTY4QkU0NTRFNTc5RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zMjc1LDYgKzMyNzcsOCBAQAogCQkJCUJDMTMxODgzMTE3MTE0QTgwMEI2OTcy
NyAvKiBQbGF0Zm9ybVV0aWxpdGllcy5oICovLAogCQkJCUJDOTA5NTFCMTI1NTMzRDcwMDA4Mzc1
NiAvKiBQbGF0Zm9ybVdlYlZpZXcuaCAqLywKIAkJCQlCQ0I5RTdGQTExMjM1OUEzMDBBMTM3RTAg
LyogVGVzdC5oICovLAorCQkJCUVCNEQzMjA3MjdDMDQ1NDMwMDgxQThFNCAvKiBUZXN0Tm90aWZp
Y2F0aW9uUHJvdmlkZXIuY3BwICovLAorCQkJCUVCNEQzMjA4MjdDMDQ1NDQwMDgxQThFNCAvKiBU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLywKIAkJCQlCQzEzMUFBODExNzEzMUZDMDBCNjk3
MjcgLyogVGVzdHNDb250cm9sbGVyLmNwcCAqLywKIAkJCQlCQ0I5RTdDNzExMjM0RTNBMDBBMTM3
RTAgLyogVGVzdHNDb250cm9sbGVyLmggKi8sCiAJCQkJN0JCNzU0QjAyNzRFMzlBMTAwRDAwRUMx
IC8qIFRlc3RVdGlsaXRpZXMuY3BwICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcAppbmRleCA3MGJjZTM5N2MyMDUyMTBlM2E1Njc3
NThhNmI3N2EzYjJkMzAyOWMyLi4xMDZiZWQzNjcxM2FlYzE3ZDZlZDQ3OWIyZjRlZGZiZThjMmIx
YjVhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERh
dGFiYXNlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERh
dGFiYXNlLmNwcApAQCAtMzUsMTggKzM1LDI2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLXN0YXRpYyBQdXNoRGF0YWJhc2U6OlB1c2hX
YWtlU3RhdGVUb1RvcGljTWFwIGdldFRvcGljc0J5V2FrZVN0YXRlU3luYyhQdXNoRGF0YWJhc2Um
IGRhdGFiYXNlKQorc3RhdGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCkKK3sK
KyAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOworICAgIGF1dG8gcGF0
aCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUs
ICIuZGIiKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICByZXR1cm4g
cGF0aDsKK30KKworc3RhdGljIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljc1N5bmMoUHVzaERhdGFi
YXNlJiBkYXRhYmFzZSkKIHsKICAgICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBQdXNoRGF0YWJh
c2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwIGdldFJlc3VsdDsKKyAgICBWZWN0b3I8U3RyaW5n
PiB0b3BpY3M7CiAKLSAgICBkYXRhYmFzZS5nZXRUb3BpY3NCeVdha2VTdGF0ZShbJmRvbmUsICZn
ZXRSZXN1bHRdKFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAmJiByZXN1bHQp
IHsKLSAgICAgICAgZ2V0UmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpOworICAgIGRhdGFiYXNlLmdl
dFRvcGljcyhbJmRvbmUsICZ0b3BpY3NdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgdG9waWNz
ID0gV1RGTW92ZShyZXN1bHQpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9KTsKICAgICBV
dGlsOjpydW4oJmRvbmUpOwogCi0gICAgcmV0dXJuIGdldFJlc3VsdDsKKyAgICByZXR1cm4gdG9w
aWNzOwogfQogCiBjbGFzcyBQdXNoRGF0YWJhc2VUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qg
ewpAQCAtNTQsMzAgKzYyLDI5IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaERh
dGFiYXNlPiBkYjsKIAogICAgIFB1c2hSZWNvcmQgcmVjb3JkMSB7CisgICAgICAgIFB1c2hTdWJz
Y3JpcHRpb25JZGVudGlmaWVyKCksCisgICAgICAgICJjb20uYXBwbGUud2ViYXBwIl9zLAorICAg
ICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBw
bGUuY29tL2lwaG9uZSJfcywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MiJfcywKKyAg
ICAgICAgInRvcGljMSJfcywKKyAgICAgICAgeyA1LCA2IH0sCisgICAgICAgIHsgNiwgNyB9LAor
ICAgICAgICB7IDcsIDggfSwKKyAgICAgICAgeyA4LCA5IH0KKyAgICB9OworICAgIFB1c2hSZWNv
cmQgcmVjb3JkMiB7CiAgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCiAgICAg
ICAgICJjb20uYXBwbGUuU2FmYXJpIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29t
Il9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tL21hYyJfcywKICAgICAgICAgImh0
dHBzOi8vcHVzaEVuZHBvaW50MSJfcywKLSAgICAgICAgInRvcGljMSJfcywKKyAgICAgICAgInRv
cGljMiJfcywKICAgICAgICAgeyAwLCAxIH0sCiAgICAgICAgIHsgMSwgMiB9LAogICAgICAgICB7
IDIsIDMgfSwKICAgICAgICAgeyA0LCA1IH0sCiAgICAgICAgIGNvbnZlcnRTZWNvbmRzVG9FcG9j
aFRpbWVTdGFtcCgxNjQzMzUwMDAwKSwKLSAgICAgICAgUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5p
c3RpYwotICAgIH07Ci0gICAgUHVzaFJlY29yZCByZWNvcmQyIHsKLSAgICAgICAgUHVzaFN1YnNj
cmlwdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgImNvbS5hcHBsZS53ZWJhcHAiX3MsCi0gICAg
ICAgICJodHRwczovL3d3dy5hcHBsZS5jb20iX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBs
ZS5jb20vaXBob25lIl9zLAotICAgICAgICAiaHR0cHM6Ly9wdXNoRW5kcG9pbnQyIl9zLAotICAg
ICAgICAidG9waWMyIl9zLAotICAgICAgICB7IDUsIDYgfSwKLSAgICAgICAgeyA2LCA3IH0sCi0g
ICAgICAgIHsgNywgOCB9LAotICAgICAgICB7IDgsIDkgfQogICAgIH07CiAgICAgUHVzaFJlY29y
ZCByZWNvcmQzIHsKICAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKQEAgLTE2
NywxNSArMTc0LDQzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJvd0lkZW50aWZpZXJzOwog
ICAgIH0KIAotICAgIFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0VG9w
aWNzQnlXYWtlU3RhdGUoKQorICAgIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljcygpCiAgICAgewot
ICAgICAgICByZXR1cm4gZ2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpkYik7CisgICAgICAgIHJl
dHVybiBnZXRUb3BpY3NTeW5jKCpkYik7CisgICAgfQorCisgICAgVmVjdG9yPFB1c2hSZWNvcmQ+
IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBT
dHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAg
ICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIFZlY3RvcjxQdXNoUmVjb3JkPiByZW1v
dmVkUmVjb3JkczsKKworICAgICAgICBkYi0+cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmll
ckFuZFNlY3VyaXR5T3JpZ2luKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwgWyZkb25lLCAmcmVt
b3ZlZFJlY29yZHNdKGF1dG8mJiByZXN1bHQpIHsKKyAgICAgICAgICAgIHJlbW92ZWRSZWNvcmRz
ID0gV1RGTW92ZShyZXN1bHQpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0p
OworICAgICAgICBVdGlsOjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiByZW1vdmVkUmVj
b3JkczsKKyAgICB9CisKKyAgICBpbnQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0
cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAg
ICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAg
ICBkYi0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbiwg
WyZkb25lLCAmY291bnRdKGludCByZXN1bHQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gcmVzdWx0
OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpy
dW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiAKICAgICB2b2lkIFNl
dFVwKCkgZmluYWwKICAgICB7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAgICBQ
dXNoRGF0YWJhc2U6OmNyZWF0ZShTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKCksIFt0aGlz
LCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgeworICAg
ICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCksIFt0
aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgewog
ICAgICAgICAgICAgZGIgPSBXVEZNb3ZlKGRhdGFiYXNlKTsKICAgICAgICAgICAgIGRvbmUgPSB0
cnVlOwogICAgICAgICB9KTsKQEAgLTIwMCw4ICsyMzUsNyBAQCBzdGF0aWMgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFB1c2hSZWNvcmQmIGEsIGNvbnN0IFB1c2hSZWNvcmQmIGIpCiAgICAgICAgICYm
IGEuY2xpZW50UHVibGljS2V5ID09IGIuY2xpZW50UHVibGljS2V5CiAgICAgICAgICYmIGEuY2xp
ZW50UHJpdmF0ZUtleSA9PSBiLmNsaWVudFByaXZhdGVLZXkKICAgICAgICAgJiYgYS5zaGFyZWRB
dXRoU2VjcmV0ID09IGIuc2hhcmVkQXV0aFNlY3JldAotICAgICAgICAmJiBhLmV4cGlyYXRpb25U
aW1lID09IGIuZXhwaXJhdGlvblRpbWUKLSAgICAgICAgJiYgYS53YWtlU3RhdGUgPT0gYi53YWtl
U3RhdGU7CisgICAgICAgICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0aW9uVGltZTsK
IH0KIAogVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKQEAgLTIxNCwxMSAr
MjQ4LDggQEAgVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKICAgICBleHBl
Y3RlZFJlY29yZDIuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyVHlwZT4oMik7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQy
ID09ICppbnNlcnRSZXN1bHQyKTsKIAotICAgIC8vIFNpbmNlIHJlY29yZDMgaXMgaW4gdGhlIHNh
bWUgU3Vic2NyaXB0aW9uU2V0IGFzIHJlY29yZDEsIGl0IHNob3VsZAotICAgIC8vIGluaGVyaXQg
cmVjb3JkMSdzIHdha2Ugc3RhdGUuCiAgICAgYXV0byBleHBlY3RlZFJlY29yZDMgPSByZWNvcmQz
OwogICAgIGV4cGVjdGVkUmVjb3JkMy5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPigzKTsKLSAgICBleHBlY3RlZFJlY29yZDMu
d2FrZVN0YXRlID0gZXhwZWN0ZWRSZWNvcmQxLndha2VTdGF0ZTsKICAgICBFWFBFQ1RfVFJVRShl
eHBlY3RlZFJlY29yZDMgPT0gKmluc2VydFJlc3VsdDMpOwogCiAgICAgLy8gSW5zZXJ0aW5nIGEg
cmVjb3JkIHdpdGggdGhlIHNhbWUgKGJ1bmRsZUlELCBzY29wZSkgYXMgcmVjb3JkIDEgc2hvdWxk
IGZhaWwuCkBAIC0yMzYsNiArMjY3LDMwIEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBSZW1v
dmVSZWNvcmQpCiAgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVp
bnQ2NF90PiB7IDIsIDMgfSkpOwogfQogCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgUmVtb3Zl
UmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5T3JpZ2luKQoreworICAgIC8vIHJl
Y29yZDIgYW5kIHJlY29yZDMgaGF2ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2VjdXJpdHlPcmln
aW4uCisgICAgYXV0byByZW1vdmVkUmVjb3JkcyA9IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50
aWZpZXJBbmRTZWN1cml0eU9yaWdpbihyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNlY3VyaXR5
T3JpZ2luKTsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMiA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJ
ZihbdG9waWMgPSByZWNvcmQyLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJu
IHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAgICBib29sIGNv
bnRhaW5zUmVjb3JkMyA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQzLnRv
cGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3Bp
YzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3Jk
Mik7CisgICAgRVhQRUNUX1RSVUUoY29udGFpbnNSZWNvcmQzKTsKKyAgICBFWFBFQ1RfRVEocmVt
b3ZlZFJlY29yZHMuc2l6ZSgpLCAydSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJz
KCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEgfSkpOworCisgICAgLy8gSW5zZXJ0aW5nIGEgbmV3
IHJlY29yZCBzaG91bGQgZ2V0IGEgbmV3IHJvd2lkLgorICAgIFB1c2hSZWNvcmQgcmVjb3JkNCA9
IHJlY29yZDI7CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBpbnNlcnRSZWNvcmQoV1RGTW92ZShy
ZWNvcmQ0KSk7CisgICAgRVhQRUNUX1RSVUUoaW5zZXJ0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEo
aW5zZXJ0UmVzdWx0LT5pZGVudGlmaWVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllclR5cGU+KDQpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmll
cnMoKSwgKEhhc2hTZXQ8dWludDY0X3Q+IHsgMSwgNCB9KSk7Cit9CisKIFRFU1RfRihQdXNoRGF0
YWJhc2VUZXN0LCBHZXRSZWNvcmRCeVRvcGljKQogewogICAgIGF1dG8gcmVzdWx0MSA9IGdldFJl
Y29yZEJ5VG9waWMocmVjb3JkMS50b3BpYyk7CkBAIC0yNTksMjkgKzMxNCwyNyBAQCBURVNUX0Yo
UHVzaERhdGFiYXNlVGVzdCwgR2V0UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUpCiAg
ICAgRVhQRUNUX0ZBTFNFKHJlc3VsdDMpOwogfQogCi1URVNUX0YoUHVzaERhdGFiYXNlVGVzdCwg
R2V0VG9waWNzQnlXYWtlU3RhdGUpCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0VG9waWNz
KQogewotICAgIEhhc2hNYXA8U3RyaW5nLCBQdXNoV2FrZVN0YXRlPiBleHBlY3RlZCB7Ci0gICAg
ICAgIHsgInRvcGljMSIsIFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfSwKLSAgICAgICAg
eyAidG9waWMyIiwgUHVzaFdha2VTdGF0ZTo6V2FraW5nIH0sCi0gICAgICAgIHsgInRvcGljMyIs
IFB1c2hXYWtlU3RhdGU6Ok9wcG9ydHVuaXN0aWMgfQotICAgIH07Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIFB1c2hXYWtlU3RhdGU+IGFjdHVhbDsKLQotICAgIGZvciAoY29uc3QgYXV0byYgW3dha2VT
dGF0ZSwgdG9waWNzXSA6IGdldFRvcGljc0J5V2FrZVN0YXRlKCkpIHsKLSAgICAgICAgZm9yIChj
b25zdCBhdXRvJiB0b3BpYyA6IHRvcGljcykKLSAgICAgICAgICAgIGFjdHVhbC5hZGQodG9waWMs
IHdha2VTdGF0ZSk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0VRKGV4cGVjdGVkLCBhY3R1YWwpOwor
ICAgIFZlY3RvcjxTdHJpbmc+IGV4cGVjdGVkIHsgInRvcGljMSJfcywgInRvcGljMiJfcywgInRv
cGljMyJfcyB9OworICAgIEVYUEVDVF9FUShnZXRUb3BpY3MoKSwgZXhwZWN0ZWQpOwogfQogCi1z
dGF0aWMgU3RyaW5nIG1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgoKQorVEVTVF9GKFB1c2hEYXRh
YmFzZVRlc3QsIEluY3JlbWVudFNpbGVudFB1c2hDb3VudCkKIHsKLSAgICBGaWxlU3lzdGVtOjpQ
bGF0Zm9ybUZpbGVIYW5kbGUgaGFuZGxlOwotICAgIGF1dG8gcGF0aCA9IEZpbGVTeXN0ZW06Om9w
ZW5UZW1wb3JhcnlGaWxlKCJQdXNoRGF0YWJhc2UiLCBoYW5kbGUsICIuZGIiKTsKLSAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKLSAgICByZXR1cm4gcGF0aDsKKyAgICBhdXRvIGNv
dW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50KHJlY29yZDEuYnVuZGxlSUQsIHJlY29yZDEu
c2VjdXJpdHlPcmlnaW4pOworICAgIEVYUEVDVF9FUShjb3VudCwgMSk7CisKKyAgICAvLyByZWNv
cmQyJ3MgYnVuZGxlSUQgYW5kIHNlY3VyaXR5T3JpZ2luIGFyZSBkaWZmZXJlbnQKKyAgICBjb3Vu
dCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQyLmJ1bmRsZUlELCByZWNvcmQyLnNl
Y3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDEpOworCisgICAgLy8gcmVjb3Jk
MiBhbmQgcmVjb3JkMyBoYXZlIHRoZSBzYW1lIGJ1bmRsZUlEIGFuZCBzZWN1cml0eU9yaWdpbi4K
KyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQzLmJ1bmRsZUlELCBy
ZWNvcmQzLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDIpOworCisgICAg
Y291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoIm5vbmV4aXN0ZW50Il9zLCAibm9uZXhp
c3RlbnQiX3MpOworICAgIEVYUEVDVF9FUShjb3VudCwgMCk7CiB9CiAKIFRFU1QoUHVzaERhdGFi
YXNlLCBNYW55SW5GbGlnaHRPcHMpCkBAIC0zMTQsNyArMzY3LDYgQEAgVEVTVChQdXNoRGF0YWJh
c2UsIE1hbnlJbkZsaWdodE9wcykKICAgICAgICAgICAgIHsgMiwgMyB9LAogICAgICAgICAgICAg
eyA0LCA1IH0sCiAgICAgICAgICAgICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1lU3RhbXAoMTY0
MzM1MDAwMCksCi0gICAgICAgICAgICBQdXNoV2FrZVN0YXRlOjpXYWtpbmcKICAgICAgICAgfTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykgewpA
QCAtMzM5LDggKzM5MSw3IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCiAg
ICAgICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNyZWF0ZVJlc3Vs
dCk7CiAKLSAgICAgICAgYXV0byBnZXRSZXN1bHQgPSBnZXRUb3BpY3NCeVdha2VTdGF0ZVN5bmMo
KmNyZWF0ZVJlc3VsdCk7Ci0gICAgICAgIGF1dG8gdG9waWNzID0gZ2V0UmVzdWx0LnRha2UoUHVz
aFdha2VTdGF0ZTo6V2FraW5nKTsKKyAgICAgICAgYXV0byB0b3BpY3MgPSBnZXRUb3BpY3NTeW5j
KCpjcmVhdGVSZXN1bHQpOwogICAgICAgICBFWFBFQ1RfRVEodG9waWNzLnNpemUoKSwgcmVjb3Jk
Q291bnQpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUHVzaEFQSS5tbQppbmRleCBiNjcyOTY3OGFmOTk4NTdkMmFmZjkwYzNjYWU0M2U2ZmIy
NDdjYWI0Li44Y2Y1OGRlZjg2NDY5OTEyYjVhM2ZiMTlhZmZhZjI5M2E4Y2JkYmM5IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0y
OSw3ICsyOSwxMCBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3RpZmljYXRpb25Q
cm92aWRlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
Tm90aWZpY2F0aW9uUHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdl
YktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KQEAgLTg5LDYgKzkyLDcgQEAgc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiUmVhZHkiKTsKIH0pOwogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9
PiB7CisgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9u
Iik7CiAgICAgdHJ5IHsKICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CkBAIC0xMzgsNiArMTQyLDkg
QEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAorICAg
IGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIo
eyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVz
dGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3Jp
Z2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNo
QVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTE4OCw2ICsxOTUs
NyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1
c2giLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9u
KCJub3RpZmljYXRpb24iKTsKICAgICBpZiAoIWV2ZW50LmRhdGEpCiAgICAgICAgIHJldHVybjsK
ICAgICBjb25zdCB2YWx1ZSA9IGV2ZW50LmRhdGEudGV4dCgpOwpAQCAtMjI1LDYgKzIzMyw5IEBA
IFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzU3VjY2Vzc2Z1bCkKICAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOwogICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJz
aXRlRGF0YVN0b3JlXSk7CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90
aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFy
ZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNl
dFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhh
bmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2Fn
ZSBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJz
dyJdOwogCkBAIC0yNzAsNiArMjgxLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0
aE5vUGFnZXNGYWlsKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3Jl
KFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIg
PSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRp
b24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZp
Y2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkg
fSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOwor
CiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRs
ZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCA5YmU1YTIwYTBjMGI4
NDU3NDQ3NmMxMTkwMTk0ZDI5MjljNmE3NjcyLi4wOGQ2Y2UwY2E1YmI1ZTQxYTU4NWRjM2M1MzVi
NDkxN2U5MmNmZTU0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yOSwxMCArMjksMTIgQEAKICNpbXBvcnQg
IkhUVFBTZXJ2ZXIuaCIKICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJU
ZXN0LmgiCisjaW1wb3J0ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlRl
c3RVUkxTY2hlbWVIYW5kbGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0
ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg+CkBA
IC00MjYsMTAgKzQyOCw2IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX25vdGlmaWNhdGlvbk1l
c3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW05vdGlmaWNhdGlvblNjcmlwdE1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFtbbV9jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bV9ub3RpZmljYXRpb25NZXNzYWdlSGFu
ZGxlci5nZXQoKSBuYW1lOkAibm90ZSJdOwotCi0gICAgICAgIG1fd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjptX2NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICAgICAgbV91aURl
bGVnYXRlID0gYWRvcHROUyhbW05vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgICAgICBbbV93ZWJWaWV3IHNldFVJRGVsZWdhdGU6bV91aURlbGVnYXRlLmdl
dCgpXTsKICAgICB9CiAKICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IGNoYXIqIGh0bWxTb3Vy
Y2UsIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UpCkBAIC00NDQsNiArNDQy
LDEyIEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzZXJ2aWNlV29ya2VyU2NyaXB0
U291cmNlIH0gfQogICAgICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2Nv
bDo6SHR0cCkpOwogCisgICAgICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVl
PFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcj4oVmVjdG9yPFdLTm90aWZp
Y2F0aW9uTWFuYWdlclJlZj4geyBbW21fY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX25vdGlm
aWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVk
U2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSB9KTsKKyAgICAgICAgbV9ub3RpZmlj
YXRpb25Qcm92aWRlci0+c2V0UGVybWlzc2lvbihtX3NlcnZlci0+b3JpZ2luKCksIHRydWUpOwor
CisgICAgICAgIG1fd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjptX2NvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICAgICAgbV91aURlbGVnYXRlID0gYWRvcHROUyhbW05vdGlmaWNh
dGlvblBlcm1pc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBbbV93ZWJWaWV3
IHNldFVJRGVsZWdhdGU6bV91aURlbGVnYXRlLmdldCgpXTsKICAgICAgICAgW21fd2ViVmlldyBs
b2FkUmVxdWVzdDptX3NlcnZlci0+cmVxdWVzdCgpXTsKICAgICB9CiAKQEAgLTQ1MiwxMiArNDU2
LDQzIEBAIHByb3RlY3RlZDoKICAgICAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRChtX3RlbXBEaXJl
Y3RvcnkuZ2V0KCkpOwogICAgIH0KIAorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGluamVj
dFB1c2hNZXNzYWdlKE5TRGljdGlvbmFyeSAqcHVzaFVzZXJJbmZvKQorICAgIHsKKyAgICAgICAg
U3RyaW5nIHNjb3BlID0gbV9zZXJ2ZXItPnJlcXVlc3QoKS5VUkwuYWJzb2x1dGVTdHJpbmc7Cisg
ICAgICAgIFN0cmluZyB0b3BpYyA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkgIl9z
dHIgKyBzY29wZTsKKyAgICAgICAgaWQgb2JqID0gQHsKKyAgICAgICAgICAgIEAidG9waWMiOiAo
TlNTdHJpbmcgKil0b3BpYywKKyAgICAgICAgICAgIEAidXNlckluZm8iOiBwdXNoVXNlckluZm8K
KyAgICAgICAgfTsKKyAgICAgICAgTlNEYXRhICpkYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24g
ZGF0YVdpdGhKU09OT2JqZWN0Om9iaiBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CisKKyAgICAg
ICAgU3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEuYnl0ZXMp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YS5sZW5ndGgpIH07CisgICAgICAgIGF1dG8gZW5j
b2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7CisKKyAgICAgICAg
YXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1Nl
cnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOworICAgICAgICBz
ZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdldCgp
LCBNZXNzYWdlVHlwZTo6SW5qZWN0RW5jcnlwdGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNv
ZGVkTWVzc2FnZSk7CisKKyAgICAgICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcworICAgICAgICBf
X2Jsb2NrIGJvb2wgZ290TWVzc2FnZXMgPSBmYWxzZTsKKyAgICAgICAgX19ibG9jayBSZXRhaW5Q
dHI8TlNBcnJheTxOU0RpY3Rpb25hcnkgKj4+IG1lc3NhZ2VzOworICAgICAgICBbbV9kYXRhU3Rv
cmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3
TWVzc2FnZXMpIHsKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAg
ICAgICBnb3RNZXNzYWdlcyA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2VzKTsKKworICAgICAgICBFWFBFQ1RfRVEoW21lc3Nh
Z2VzIGNvdW50XSwgMXUpOworCisgICAgICAgIHJldHVybiBbbWVzc2FnZXMgb2JqZWN0QXRJbmRl
eDowXTsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fdGVtcERpcmVjdG9yeTsKICAg
ICBSZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIFJldGFpblB0
cjxUZXN0TWVzc2FnZUhhbmRsZXI+IG1fdGVzdE1lc3NhZ2VIYW5kbGVyOwogICAgIFJldGFpblB0
cjxOb3RpZmljYXRpb25TY3JpcHRNZXNzYWdlSGFuZGxlcj4gbV9ub3RpZmljYXRpb25NZXNzYWdl
SGFuZGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcj4g
bV9zZXJ2ZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmlj
YXRpb25Qcm92aWRlcj4gbV9ub3RpZmljYXRpb25Qcm92aWRlcjsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiBtX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+
PiBtX3VpRGVsZWdhdGU7CiB9OwpAQCAtNTAxLDYgKzUzNiw3IEBAIHZvaWQgV2ViUHVzaERJbmpl
Y3RlZFB1c2hUZXN0OjpydW5UZXN0KE5TU3RyaW5nICpleHBlY3RlZE1lc3NhZ2UsIE5TRGljdGlv
bmFyeSAqCiAgICAgfSk7CiAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50
KSA9PiB7CiAgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93
Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0
YSkgewogICAgICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2VpdmVkOiBudWxsIGRh
dGEiKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01MjQsNDMgKzU2MCwyMCBAQCB2b2lk
IFdlYlB1c2hESW5qZWN0ZWRQdXNoVGVzdDo6cnVuVGVzdChOU1N0cmluZyAqZXhwZWN0ZWRNZXNz
YWdlLCBOU0RpY3Rpb25hcnkgKgogICAgIH1dOwogCiAgICAgbG9hZFJlcXVlc3QoaHRtbFNvdXJj
ZSwgc2VydmljZVdvcmtlclNvdXJjZSk7Ci0KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlYWR5KTsKIAotICAgIFN0cmluZyBidW5kbGVJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJL
aXQuVGVzdFdlYktpdEFQSSJfczsKLSAgICBTdHJpbmcgc2NvcGUgPSBtX3NlcnZlci0+cmVxdWVz
dCgpLlVSTC5hYnNvbHV0ZVN0cmluZzsKLSAgICBTdHJpbmcgdG9waWMgPSBidW5kbGVJZGVudGlm
aWVyICsgIiAiX3MgKyBzY29wZTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBpbmplY3RQdXNoTWVzc2Fn
ZShwdXNoVXNlckluZm8pOwogCi0gICAgaWQgb2JqID0gQHsKLSAgICAgICAgQCJ0b3BpYyI6IChO
U1N0cmluZyAqKXRvcGljLAotICAgICAgICBAInVzZXJJbmZvIjogcHVzaFVzZXJJbmZvCi0gICAg
fTsKLSAgICBOU0RhdGEgKmRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05P
YmplY3Q6b2JqIG9wdGlvbnM6MCBlcnJvcjpudWxscHRyXTsKLQotICAgIFN0cmluZyBtZXNzYWdl
IHsgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGRhdGEubGVuZ3RoKSB9OwotICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVT
dHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7Ci0KLSAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0g
Y3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNo
dGVzdGRhZW1vbi5zZXJ2aWNlIik7Ci0gICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JS
ZXBseSh1dGlsaXR5Q29ubmVjdGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVuY3J5cHRl
ZFB1c2hNZXNzYWdlRm9yVGVzdGluZywgZW5jb2RlZE1lc3NhZ2UpOwotCi0gICAgLy8gRmV0Y2gg
cHVzaCBtZXNzYWdlcwotICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNlOwotICAg
IF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKLSAg
ICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlv
bmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKLSAgICAgICAgbWVzc2FnZXMgPSByYXdNZXNzYWdlczsK
LSAgICAgICAgZ290TWVzc2FnZXMgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZ290TWVzc2FnZXMpOwotCi0gICAgRVhQRUNUX0VRKFttZXNzYWdlcyBjb3Vu
dF0sIDF1KTsKLQotICAgIC8vIEhhbmRsZSBwdXNoIG1lc3NhZ2UKICAgICBfX2Jsb2NrIGJvb2wg
cHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKLSAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQ
dXNoTWVzc2FnZTpbbWVzc2FnZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9v
bCByZXN1bHQpIHsKKyAgICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWRSZXN1bHQg
PSBmYWxzZTsKKyAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWRSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2Vk
ID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEV4cGVj
dGVkTWVzc2FnZSk7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVBy
b2Nlc3NlZCk7CisKKyAgICBFWFBFQ1RfVFJVRShwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCk7
CiB9CiAKIFRFU1RfRihXZWJQdXNoREluamVjdGVkUHVzaFRlc3QsIEhhbmRsZUluamVjdGVkRW1w
dHlQdXNoKQpAQCAtODA1LDYgKzgxOCw3NyBAQCBURVNUKFdlYlB1c2hELCBJbnN0YWxsQ29vcmRp
bmF0aW9uQnVuZGxlcykKICNlbmRpZiAvLyAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNl
bmRpZiAvLyBFTkFCTEUoSU5TVEFMTF9DT09SRElOQVRJT05fQlVORExFUykKIAorVEVTVF9GKFdl
YlB1c2hEVGVzdCwgVG9vTWFueVNpbGVudFB1c2hlc0NhdXNlc1Vuc3Vic2NyaWJlKQoreworICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBodG1sU291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3Jj
PSIvY29uc3RhbnRzLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGxldCBwdXNoTWFu
YWdlciA9IG51bGw7CisKKyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3
LmpzJykudGhlbihhc3luYyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3
YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBsZXQgcmVzdWx0ID0g
bnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0
aW9uLnB1c2hNYW5hZ2VyOworICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHB1
c2hNYW5hZ2VyLnN1YnNjcmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0
cnVlLAorICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJf
S0VZCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsg
ZTsKKyAgICAgICAgfQorICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3Rl
LnBvc3RNZXNzYWdlKHJlc3VsdCk7CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBnZXRQdXNoU3Vi
c2NyaXB0aW9uKCkKKyAgICB7CisgICAgICAgIHB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigp
LnRoZW4oKHN1YnNjcmlwdGlvbikgPT4geworICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMubm90ZS5wb3N0TWVzc2FnZShzdWJzY3JpcHRpb24gPyAiU3Vic2NyaWJlZCIg
OiAiVW5zdWJzY3JpYmVkIik7CisgICAgICAgIH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAg
ICApSFRNTCI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3Vy
Y2UgPSAic2VsZi5hZGRFdmVudExpc3RlbmVyKCdwdXNoJywgKGV2ZW50KSA9PiB7IH0pOyI7CisK
KyAgICBfX2Jsb2NrIFJldGFpblB0cjxpZD4gbWVzc2FnZSA9IG5pbDsKKyAgICBfX2Jsb2NrIGJv
b2wgZ290TWVzc2FnZSA9IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVy
IHNldE1lc3NhZ2VIYW5kbGVyOl4oaWQgcmVjZWl2ZWRNZXNzYWdlKSB7CisgICAgICAgIG1lc3Nh
Z2UgPSByZWNlaXZlZE1lc3NhZ2U7CisgICAgICAgIGdvdE1lc3NhZ2UgPSB0cnVlOworICAgIH1d
OworCisgICAgbG9hZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtlclNjcmlwdFNvdXJj
ZSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIEFT
U0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IFdlYktpdDo6V2ViUHVzaEQ6Om1heFNpbGVudFB1c2hDb3Vu
dDsgaSsrKSB7CisgICAgICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAgICAgW21fd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2NyaXB0aW9uKCkiIGNvbXBsZXRpb25I
YW5kbGVyOl4oaWQsIE5TRXJyb3IqKSB7IH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmdvdE1lc3NhZ2UpOworICAgICAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFs
VG9TdHJpbmc6QCJTdWJzY3JpYmVkIl0pOworCisgICAgICAgIF9fYmxvY2sgYm9vbCBwcm9jZXNz
ZWRQdXNoID0gZmFsc2U7CisgICAgICAgIF9fYmxvY2sgYm9vbCBwdXNoUmVzdWx0ID0gZmFsc2U7
CisgICAgICAgIGF1dG8gbWVzc2FnZSA9IGluamVjdFB1c2hNZXNzYWdlKEB7IH0pOworCisgICAg
ICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICAgICAgcHVzaFJlc3VsdCA9IHJl
c3VsdDsKKyAgICAgICAgICAgIHByb2Nlc3NlZFB1c2ggPSB0cnVlOworICAgICAgICB9XTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwcm9jZXNzZWRQdXNoKTsKKworICAgICAg
ICAvLyBXZWJDb250ZW50IHNob3VsZCBmYWlsIHByb2Nlc3NpbmcgdGhlIHB1c2ggc2luY2Ugbm8g
bm90aWZpY2F0aW9uIHdhcyBzaG93bi4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHB1c2hSZXN1bHQp
OworICAgIH0KKworICAgIGdvdE1lc3NhZ2UgPSBmYWxzZTsKKyAgICBbbV93ZWJWaWV3IGV2YWx1
YXRlSmF2YVNjcmlwdDpAImdldFB1c2hTdWJzY3JpcHRpb24oKSIgY29tcGxldGlvbkhhbmRsZXI6
XihpZCwgTlNFcnJvciopIHsgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RN
ZXNzYWdlKTsKKyAgICBBU1NFUlRfVFJVRShbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJVbnN1
YnNjcmliZWQiXSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlm
IC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIuaAppbmRleCA3NWQyODJlYTllNDBkMjExNWFmMTk0OGFkM2Y4ZWI4ZmM2Mzdj
Y2Q0Li5jNTNiNDM5ZWEzODExMDEyNTZiNWMyOGI1MjFhZjgzMDRkMjljZDM0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgSFRUUFNlcnZlcihGdW5jdGlvbjx2b2lkKENvbm5lY3Rpb24pPiYmLCBQcm90b2NvbCA9IFBy
b3RvY29sOjpIdHRwKTsKICAgICB+SFRUUFNlcnZlcigpOwogICAgIHVpbnQxNl90IHBvcnQoKSBj
b25zdDsKKyAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0KGNvbnN0IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdFdpdGhMb2NhbGhvc3QoY29uc3QgU3RyaW5nJiBwYXRoID0gIi8iX3N0cikgY29u
c3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5tbQppbmRleCA4OGQ4NmJmMWQwYzE5ZjBjY2YzMDVmZDA4NWRhYTRk
Nzg3MzRkNDkwLi42YzYxODQ4YmEyZDYxNGM5YTc3NmU5M2U3MWM5MDdmNzlmYWI5Yzc3IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCkBAIC0zNzYsNiArMzc2LDExIEBA
IGNvbnN0IGNoYXIqIEhUVFBTZXJ2ZXI6OnNjaGVtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNjaGVt
ZTsKIH0KIAorU3RyaW5nIEhUVFBTZXJ2ZXI6Om9yaWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXM6Ly8xMjcuMC4wLjE6JWQiLCBzY2hlbWUo
KSwgcG9ydCgpXTsKK30KKwogTlNVUkxSZXF1ZXN0ICpIVFRQU2VydmVyOjpyZXF1ZXN0KGNvbnN0
IFN0cmluZyYgcGF0aCkgY29uc3QKIHsKICAgICByZXR1cm4gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVzOi8vMTI3LjAuMC4xOiVkJUAiLCBzY2hlbWUoKSwgcG9ydCgpLCBwYXRoLmNyZWF0ZUNGU3Ry
aW5nKCkuZ2V0KCldXV07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggODk1NDUwOTBmNDVmMTAxODllZjEzN2RiMzYxZDQ1Zjhk
NWIyYmFkNi4uYzExZjA0MjZjMDVkNTdiNmUyNjE4OGYwMjk1YTk5YmNkMzg5M2UxYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE3IEBACisyMDIyLTAyLTIxICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgor
CisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVvdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBQdXNoRXZlbnQgdGVzdHMgdG8gY2hl
Y2sgdGhhdCBub3RpZmljYXRpb25zIGFyZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgKiBodHRwL3dw
dC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5j
IGNvbnN0KToKKyAgICAgICAgKHByb21pc2VfdGVzdC5hc3luYyBpZik6CisgICAgICAgICogaHR0
cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoK
KwogMjAyMi0wMi0yMSAgVHlsZXIgV2lsY29jayAgPHR5bGVyX3dAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFYOiBBZGQgdGVzdCBmb3IgcjI5MDEzMCAoaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzI5MDEzMC93ZWJraXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9w
dXNoLWFwaS9wdXNoRXZlbnQuYW55LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkv
cHVzaEV2ZW50LmFueS5qcwppbmRleCAzMWM4MTEwMTNjNTVhOTlhMThmMjZjNTk0ZjM2NDZjZjY4
ZGM5OTAxLi41ZTg5Zjc3MDVkZWNkOTM1NTJjNzE1YzNkZmE5OTE2Njc4ZTI2MDI0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hFdmVudC5hbnkuanMKQEAgLTYwLDEx
ICs2MCwyMyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogCiBwcm9taXNlX3Rlc3QoYXN5
bmMgKCkgPT4gewogICAgIGNvbnN0IHByb21pc2UgPSBzZWxmLmludGVybmFscy5zY2hlZHVsZVB1
c2hFdmVudCgidGVzdCIpOwotICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBzZWxmLm9ucHVzaCA9IHJlc29sdmUpOworICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQg
bmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaCA9IChldmVudCkgPT4geworICAgICAg
ICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKKyAg
ICAgICAgcmVzb2x2ZShldmVudCk7CisgICAgfSk7CiAgICAgYXNzZXJ0X2VxdWFscyhldmVudC5k
YXRhLnRleHQoKSwgInRlc3QiKTsKICAgICBhc3NlcnRfdHJ1ZShhd2FpdCBwcm9taXNlKTsKIH0s
ICJTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQiKTsKIAorcHJvbWlzZV90ZXN0KGFz
eW5jICgpID0+IHsKKyAgICBjb25zdCBwcm9taXNlID0gc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQ
dXNoRXZlbnQoInRlc3QiKTsKKyAgICBjb25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJl
c29sdmUgPT4gc2VsZi5vbnB1c2ggPSAoZXZlbnQpID0+IHsKKyAgICAgICAgcmVzb2x2ZShldmVu
dCk7CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLnRleHQoKSwgInRlc3Qi
KTsKKyAgICBhc3NlcnRfZmFsc2UoYXdhaXQgcHJvbWlzZSk7Cit9LCAiU2ltdWxhdGluZyBmaXJp
bmcgb2YgYSBwdXNoIGV2ZW50IHdpdGhvdXQgbm90aWZpY2F0aW9uIik7CisKIHByb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykKICAgICAgICAgcmV0dXJu
OwpAQCAtNzcsNiArODksNyBAQCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIHByb21p
c2UudGhlbigoKSA9PiBpc1B1c2hFdmVudFByb21pc2VSZXNvbHZlZCA9IHRydWUpOwogCiAgICAg
Y29uc3QgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoID0g
KGV2ZW50KSA9PiB7CisgICAgICAgIHNlbGYucmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24o
Im5vdGlmaWNhdGlvbiIpOwogICAgICAgICBldmVudC53YWl0VW50aWwod2FpdFVudGlsUHJvbWlz
ZSk7CiAgICAgICAgIHJlc29sdmUoZXZlbnQpOwogICAgIH0pOwpAQCAtODksMTIgKzEwMiwzNyBA
QCBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIGFzc2VydF90cnVlKGF3YWl0IHByb21p
c2UpOwogfSwgIlNpbXVsYXRpbmcgZmlyaW5nIG9mIGEgcHVzaCBldmVudCAtIHN1Y2Nlc3NmdWwg
d2FpdFVudGlsIik7CiAKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAgaWYgKCFzZWxm
LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAgbGV0IHJlc29sdmVXYWl0VW50aWxQ
cm9taXNlOworICAgIGNvbnN0IHdhaXRVbnRpbFByb21pc2UgPSBuZXcgUHJvbWlzZShyZXNvbHZl
ID0+IHJlc29sdmVXYWl0VW50aWxQcm9taXNlID0gcmVzb2x2ZSk7CisKKyAgICBsZXQgaXNQdXNo
RXZlbnRQcm9taXNlUmVzb2x2ZWQgPSBmYWxzZTsKKyAgICBjb25zdCBwcm9taXNlID0gaW50ZXJu
YWxzLnNjaGVkdWxlUHVzaEV2ZW50KCJ0ZXN0Iik7CisgICAgcHJvbWlzZS50aGVuKCgpID0+IGlz
UHVzaEV2ZW50UHJvbWlzZVJlc29sdmVkID0gdHJ1ZSk7CisKKyAgICBjb25zdCBldmVudCA9IGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2ggPSAoZXZlbnQpID0+IHsKKyAg
ICAgICAgZXZlbnQud2FpdFVudGlsKHdhaXRVbnRpbFByb21pc2UpOworICAgICAgICByZXNvbHZl
KGV2ZW50KTsKKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKGV2ZW50LmRhdGEudGV4dCgpLCAi
dGVzdCIpOworCisgICAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLnNldFRpbWVv
dXQocmVzb2x2ZSwgMTAwKSk7CisgICAgYXNzZXJ0X2ZhbHNlKGlzUHVzaEV2ZW50UHJvbWlzZVJl
c29sdmVkKTsKKworICAgIHJlc29sdmVXYWl0VW50aWxQcm9taXNlKCk7CisgICAgYXNzZXJ0X2Zh
bHNlKGF3YWl0IHByb21pc2UpOworfSwgIlNpbXVsYXRpbmcgZmlyaW5nIG9mIGEgcHVzaCBldmVu
dCAtIHN1Y2Nlc3NmdWwgd2FpdFVudGlsIHdpdGhvdXQgbm90aWZpY2F0aW9uIik7CisKIHByb21p
c2VfdGVzdChhc3luYyAoKSA9PiB7CiAgICAgaWYgKCFzZWxmLmludGVybmFscykKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY29uc3QgcHJvbWlzZSA9IGludGVybmFscy5zY2hlZHVsZVB1c2hFdmVu
dCgidGVzdCIpOwogICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9
PiBzZWxmLm9ucHVzaCA9IChldmVudCkgPT4geworICAgICAgICBzZWxmLnJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICAgICAgZXZlbnQud2FpdFVudGls
KFByb21pc2UucmVzb2x2ZSgpKTsKICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVq
ZWN0KCdlcnJvcicpKTsKICAgICAgICAgcmVzb2x2ZShldmVudCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5z
ZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAppbmRleCAzZmNkNDZlMzlmMzdjYmM5ZDM2MDNkZTM0
NGExM2E0OGI3YmVlMmM2Li4xMTIzNmQxNTBhMTMzYjZiYzNmMTVlZTVhNGEyYzA5ODk2MTNmMTUz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55
LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1
c2gtYXBpL3B1c2hFdmVudC5hbnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTUsNiAr
NSw4IEBAIFBBU1MgUHVzaEV2ZW50IGFycmF5QnVmZmVyIGhhbmRsaW5nCiBQQVNTIFB1c2hFdmVu
dCB3aXRoIGJhZCBqc29uCiBQQVNTIFdhaXQgZm9yIGFjdGl2YXRlIHByb21pc2UKIFBBU1MgU2lt
dWxhdGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50CitQQVNTIFNpbXVsYXRpbmcgZmlyaW5nIG9m
IGEgcHVzaCBldmVudCB3aXRob3V0IG5vdGlmaWNhdGlvbgogUEFTUyBTaW11bGF0aW5nIGZpcmlu
ZyBvZiBhIHB1c2ggZXZlbnQgLSBzdWNjZXNzZnVsIHdhaXRVbnRpbAorUEFTUyBTaW11bGF0aW5n
IGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgLSBzdWNjZXNzZnVsIHdhaXRVbnRpbCB3aXRob3V0IG5v
dGlmaWNhdGlvbgogUEFTUyBTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgLSB1bnN1
Y2Nlc3NmdWwgd2FpdFVudGlsCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453328</attachid>
            <date>2022-02-27 00:15:29 -0800</date>
            <delta_ts>2022-03-03 18:56:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-236863-20220227001529.patch</filename>
            <type>text/plain</type>
            <size>90370</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwMjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UyZWQzNmRiZWQ1MzVm
MDlhODBiMTM1ZTk3NWNiZWQ1ZWFmNjI4NS4uYjkyZmNhZWU1YWFiMmJkNzI4ZmFiZWFjMTNkMzM4
YjI4NWNlMGZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAyLTIxICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFsbCBQ
dXNoU3Vic2NyaXB0aW9ucyBhcmUgY3JlYXRlZCB3aXRoIHRoZSB1c2VyVmlzaWJsZU9ubHkgZmxh
ZyBzZXQuIFRoaXMgbWVhbnMgdGhhdCBhbGwKKyAgICAgICAgcHVzaCBldmVudHMgc2hvdWxkIHJl
c3VsdCBpbiBhIHVzZXItZmFjaW5nIG5vdGlmaWNhdGlvbi4KKworICAgICAgICBUbyBlbmZvcmNl
IHRoaXMsIHdlIHVzZSBhIHF1b3RhIHN5c3RlbS4gQSBwdXNoIHN1YnNjcmlwdGlvbiBjYW4gcHJv
Y2VzcyB1cCB0byB0aHJlZSBzaWxlbnQKKyAgICAgICAgcHVzaGVzLiBBZnRlciB0aHJlZSBzaWxl
bnQgcHVzaGVzLCB3ZSByZW1vdmUgdGhlIHB1c2ggc3Vic2NyaXB0aW9uLiBUbyBjb250aW51ZSB0
byByZWNlaXZlCisgICAgICAgIHB1c2hlcywgdGhlIHVzZXIgbXVzdCBuYXZpZ2F0ZSBiYWNrIHRv
IHRoZSB3ZWJzaXRlIGFuZCB0aGUgc2l0ZSBtdXN0IHJlcXVlc3QgcGVybWlzc2lvbiB0bworICAg
ICAgICBzZW5kIHB1c2hlcyBhZ2Fpbi4KKworICAgICAgICBPcmlnaW5hbGx5IHdlIHdlcmUgZ29p
bmcgdG8gdXNlIGEgbW9yZSBjb21wbGljYXRlZCBxdW90YSBzeXN0ZW0gdGhhdCBtb3ZlZCBzdWJz
Y3JpcHRpb25zCisgICAgICAgIGZyb20gd2FraW5nIHRvIG5vbi13YWtpbmcgYmVmb3JlIGZpbmFs
bHkgdW5zdWJzY3JpYmluZywgYnV0IHRoaXMgc2VlbWVkIGxpa2UgaXQgY291bGQgbGVhZAorICAg
ICAgICB0byBzdWJzY3JpcHRpb25zIGJlaW5nIGluIGEgcGFydGlhbGx5LXdvcmtpbmcgc3RhdGUg
dGhhdCB3b3VsZCBiZSBoYXJkIHRvIGV4cGxhaW4gYW5kIHJlYXNvbgorICAgICAgICBhYm91dC4g
QXMgYSByZXN1bHQsIEkndmUgcmVtb3ZlZCB0aGUgd2FrZVN0YXRlIGNvbHVtbiBmcm9tIFB1c2hE
YXRhYmFzZSBhbmQgcmVwbGFjZWQgaXQKKyAgICAgICAgYSBzaWxlbnRQdXNoQ291bnQgY29sdW1u
LgorCisgICAgICAgIFRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGEgc2VydmljZSB3b3JrZXIgaGFz
IHNob3duIGEgbm90aWZpY2F0aW9uIHdoaWxlIHByb2Nlc3NpbmcgYSBwdXNoCisgICAgICAgIGV2
ZW50LCB3ZSB1c2UgYSBib29sZWFuIGZsYWcgb24gU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLiBU
aGlzIHNob3VsZCBiZSBzdWZmaWNpZW50IGJlY2F1c2UKKyAgICAgICAgd2UgY3VycmVudGx5IG9u
bHkgcHJvY2VzcyBvbmUgcHVzaCBldmVudCBhdCBhIHRpbWUuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMvcHVzaC1h
cGkvUHVzaERhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hSZWNvcmQ6Omlzb2xh
dGVkQ29weSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRlZENv
cHkpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQpOgorICAg
ICAgICAoV2ViQ29yZTo6bWFrZVB1c2hSZWNvcmRGcm9tUm93KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6Z2V0UmVjb3JkQnlUb3BpYyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKToKKyAgICAgICAg
KFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzKToKKyAgICAgICAgKFdlYkNvcmU6OlB1
c2hEYXRhYmFzZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlB1c2hEYXRhYmFzZTo6cmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllckFuZFNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9u
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1Rv
RmlyZVB1c2hFdmVudCk6CisKIDIwMjItMDItMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIGNvbnN0IGNvcnJlY3RuZXNzIGZv
ciBTZWN1cml0eU9yaWdpbiBhY2Nlc3NvcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggM2Q1ZjVhNGNhYzM5ODFiZmIz
NjUzNWJkODU4ZTI1ZTBhOGMyYzU3OS4uMDU1NjZmNjAxZDcwMDRhMDAzMzY1Nzc3MTNlZWM2NDQz
OWNkNDhjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAyMi0wMi0yMSAgQmVuIE5oYW0g
IDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgLSBJZiBhIHB1
c2ggZXZlbnQgZG9lc24ndCByZXN1bHQgaW4gYSBub3RpZmljYXRpb24gb3IgaWYgdGhlIGFzc29j
aWF0ZWQgcHJvbWlzZSByZWplY3RzLAorICAgICAgICAgICB0aGVuIHdlIGluY3JlbWVudCB0aGUg
c2lsZW50IHB1c2ggY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoYXQgb3JpZ2luLgorICAgICAgICAg
LSBQdXNoU2VydmljZSBub3cgcmVtb3ZlcyBhIHN1YnNjcmlwdGlvbiBpZiB0aGUgb3JpZ2luIGhh
cyByZWFjaGVkIGl0cyBxdW90YSBvZiBzaWxlbnQKKyAgICAgICAgICAgcHVzaGVzLgorCisgICAg
ICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgYW5kIG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50KToKKyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8aW50Pjo6Y2FsbFJlcGx5KToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW06CisgICAgICAgICgtW1dLUHJvY2Vzc1Bvb2wgX25v
dGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSk6CisgICAgICAgICogd2VicHVzaGQvUHVzaFNl
cnZpY2UubW06CisgICAgICAgIChXZWJQdXNoRDo6dXBkYXRlVG9waWNMaXN0cyk6CisgICAgICAg
IChXZWJQdXNoRDo6UHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisgICAg
ICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1c2hEOjpNZXNz
YWdlSW5mbzo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50OjplbmNvZGVSZXBseSk6CisgICAgICAg
IChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKToKKyAgICAgICAgKFdl
YlB1c2hEOjpEYWVtb246OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisKIDIwMjItMDItMjEg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBB
bGxvdyBhZGF0dHJpYnV0aW9uZCB0byBzdGFydCBvbiBpT1MgZGV2aWNlcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuY3BwCmluZGV4IDhhMWY1M2Fi
NDgwYWUwYjQwNTk2MjZiY2EwYzQ2ZWUwN2MzOTI1YzUuLjM4OTg2ZDczYjQ3MmE2OTUyMmJmZWM1
OTFkMTlkNDFiN2IyOGI0NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVz
aC1hcGkvUHVzaERhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gt
YXBpL1B1c2hEYXRhYmFzZS5jcHAKQEAgLTM3LDI1ICszNywzMSBAQAogI2luY2x1ZGUgPHd0Zi9F
eHBlY3RlZC5oPgogI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8d3RmL1J1
bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAKICNkZWZpbmUgUFVTSERCX1JFTEVBU0VfTE9HKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhQ
dXNoLCAiJXAgLSBQdXNoRGF0YWJhc2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2Rl
ZmluZSBQVVNIREJfUkVMRUFTRV9MT0dfRVJST1IoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9S
KFB1c2gsICIlcCAtIFB1c2hEYXRhYmFzZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAj
ZGVmaW5lIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCkgUFVTSERCX1JFTEVBU0VfTE9H
X0VSUk9SKCJGYWlsZWQgdG8gYmluZCBzdGF0ZW1lbnQgKCVkKTogJXMiLCBtX2RiLT5sYXN0RXJy
b3IoKSwgbV9kYi0+bGFzdEVycm9yTXNnKCkpCiAKKyNkZWZpbmUga1B1c2hSZWNvcmRDb2x1bW5z
ICIgc3ViLnJvd0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1Yi5zY29wZSwg
c3ViLmVuZHBvaW50LCBzdWIudG9waWMsIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tleSwgc3ViLmNs
aWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksIHN1Yi5zaGFyZWRBdXRoU2VjcmV0
LCBzdWIuZXhwaXJhdGlvblRpbWUgIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBj
b25zdGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMTsKK3N0YXRpYyBjb25z
dGV4cHIgaW50IGN1cnJlbnRQdXNoRGF0YWJhc2VWZXJzaW9uID0gMjsKKyNkZWZpbmUga0N1cnJl
bnRQdXNoRGF0YWJhc2VWZXJzaW9uU3RyaW5nICIyIgogCiBzdGF0aWMgY29uc3QgQVNDSUlMaXRl
cmFsIHB1c2hEYXRhYmFzZVNjaGVtYVYxU3RhdGVtZW50c1tdID0gewogICAgICJQUkFHTUEgYXV0
b192YWN1dW09SU5DUkVNRU5UQUwiX3MsCiAgICAgIkNSRUFURSBUQUJMRSBTdWJzY3JpcHRpb25T
ZXRzKCIKKyAgICAiICByb3dJRCBJTlRFR0VSIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQsIgog
ICAgICIgIGNyZWF0aW9uVGltZSBJTlQgTk9UIE5VTEwsIgogICAgICIgIGJ1bmRsZUlEIFRFWFQg
Tk9UIE5VTEwsIgogICAgICIgIHNlY3VyaXR5T3JpZ2luIFRFWFQgTk9UIE5VTEwsIgotICAgICIg
IHdha2VTdGF0ZSBJTlQgTk9UIE5VTEwsIgorICAgICIgIHNpbGVudFB1c2hDb3VudCBJTlQgTk9U
IE5VTEwsIgogICAgICIgIFVOSVFVRShidW5kbGVJRCwgc2VjdXJpdHlPcmlnaW4pKSJfcywKICAg
ICAiQ1JFQVRFIFRBQkxFIFN1YnNjcmlwdGlvbnMoIgorICAgICIgIHJvd0lEIElOVEVHRVIgUFJJ
TUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCiAgICAgIiAgY3JlYXRpb25UaW1lIElOVCBOT1QgTlVM
TCwiCiAgICAgIiAgc3Vic2NyaXB0aW9uU2V0SUQgSU5UIE5PVCBOVUxMLCIKICAgICAiICBzY29w
ZSBURVhUIE5PVCBOVUxMLCIKQEAgLTY4LDcgKzc0LDcgQEAgc3RhdGljIGNvbnN0IEFTQ0lJTGl0
ZXJhbCBwdXNoRGF0YWJhc2VTY2hlbWFWMVN0YXRlbWVudHNbXSA9IHsKICAgICAiICBleHBpcmF0
aW9uVGltZSBJTlQsIgogICAgICIgIFVOSVFVRShzY29wZSwgc3Vic2NyaXB0aW9uU2V0SUQpKSJf
cywKICAgICAiQ1JFQVRFIElOREVYIFN1YnNjcmlwdGlvbnNfU3Vic2NyaXB0aW9uU2V0SURfSW5k
ZXggT04gU3Vic2NyaXB0aW9ucyhzdWJzY3JpcHRpb25TZXRJRCkiX3MsCi0gICAgIlBSQUdNQSB1
c2VyX3ZlcnNpb24gPSAxIl9zCisgICAgIlBSQUdNQSB1c2VyX3ZlcnNpb24gPSAiIGtDdXJyZW50
UHVzaERhdGFiYXNlVmVyc2lvblN0cmluZyAiIl9zCiB9OwogCiBQdXNoUmVjb3JkIFB1c2hSZWNv
cmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKQEAgLTg0LDggKzkwLDcgQEAgUHVzaFJlY29yZCBQ
dXNoUmVjb3JkOjppc29sYXRlZENvcHkoKSBjb25zdCAmCiAgICAgICAgIGNsaWVudFB1YmxpY0tl
eSwKICAgICAgICAgY2xpZW50UHJpdmF0ZUtleSwKICAgICAgICAgc2hhcmVkQXV0aFNlY3JldCwK
LSAgICAgICAgZXhwaXJhdGlvblRpbWUsCi0gICAgICAgIHdha2VTdGF0ZQorICAgICAgICBleHBp
cmF0aW9uVGltZQogICAgIH07CiB9CiAKQEAgLTEwMiwxMSArMTA3LDIwIEBAIFB1c2hSZWNvcmQg
UHVzaFJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgJiYKICAgICAgICAgV1RGTW92ZShjbGllbnRQdWJs
aWNLZXkpLAogICAgICAgICBXVEZNb3ZlKGNsaWVudFByaXZhdGVLZXkpLAogICAgICAgICBXVEZN
b3ZlKHNoYXJlZEF1dGhTZWNyZXQpLAotICAgICAgICBleHBpcmF0aW9uVGltZSwKLSAgICAgICAg
d2FrZVN0YXRlCisgICAgICAgIGV4cGlyYXRpb25UaW1lCiAgICAgfTsKIH0KIAorUmVtb3ZlZFB1
c2hSZWNvcmQgUmVtb3ZlZFB1c2hSZWNvcmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKK3sKKyAg
ICByZXR1cm4geyBpZGVudGlmaWVyLCB0b3BpYy5pc29sYXRlZENvcHkoKSwgc2VydmVyVkFQSURQ
dWJsaWNLZXkgfTsKK30KKworUmVtb3ZlZFB1c2hSZWNvcmQgUmVtb3ZlZFB1c2hSZWNvcmQ6Omlz
b2xhdGVkQ29weSgpICYmCit7CisgICAgcmV0dXJuIHsgaWRlbnRpZmllciwgV1RGTW92ZSh0b3Bp
YykuaXNvbGF0ZWRDb3B5KCksIFdURk1vdmUoc2VydmVyVkFQSURQdWJsaWNLZXkpIH07Cit9CisK
IGVudW0gY2xhc3MgU2hvdWxkRGVsZXRlQW5kUmV0cnkgeyBObywgWWVzIH07CiAKIHN0YXRpYyBF
eHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlRGF0YWJhc2U+LCBTaG91bGREZWxldGVBbmRSZXRyeT4g
b3BlbkFuZE1pZ3JhdGVEYXRhYmFzZUltcGwoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMjgwLDcg
KzI5NCw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29y
ZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgICAgIGludDY0X3Qgc3Vic2Ny
aXB0aW9uU2V0SUQgPSAwOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3FsID0gY2Fj
aGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHJvd2lkLCB3YWtlU3RhdGUgRlJPTSBTdWJzY3Jp
cHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsK
KyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiU0VMRUNUIHJv
d0lEIEZST00gU3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5
T3JpZ2luID0gPyJfcyk7CiAgICAgICAgICAgICBpZiAoIXNxbAogICAgICAgICAgICAgICAgIHx8
IHNxbC0+YmluZFRleHQoMSwgcmVjb3JkLmJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sKICAgICAgICAg
ICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5zZWN1cml0eU9yaWdpbikgIT0gU1FM
SVRFX09LKSB7CkBAIC0yODksMTkgKzMwMywxNiBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6aW5zZXJ0
UmVjb3JkKGNvbnN0IFB1c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZAog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAgICAgIGlmIChzcWwtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKQogICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvblNldElEID0gc3Fs
LT5jb2x1bW5JbnQ2NCgwKTsKLSAgICAgICAgICAgICAgICByZWNvcmQud2FrZVN0YXRlID0gc3Rh
dGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oc3FsLT5jb2x1bW5JbnQoMSkpOwotICAgICAgICAgICAg
fQogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFzdWJzY3JpcHRpb25TZXRJRCkgewotICAgICAg
ICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJz
Y3JpcHRpb25TZXRzIFZBTFVFUyg/LCA/LCA/LCA/KSJfcyk7CisgICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvblNldHMg
VkFMVUVTKE5VTEwsID8sID8sID8sIDApIl9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAg
ICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgdGltZShudWxscHRyKSkgIT0gU1FMSVRF
X09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgyLCByZWNvcmQuYnVuZGxlSUQp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZFRleHQoMywgcmVjb3Jk
LnNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgICAgICB8fCBzcWwtPmJp
bmRJbnQoNCwgc3RhdGljX2Nhc3Q8aW50PihyZWNvcmQud2FrZVN0YXRlKSkgIT0gU1FMSVRFX09L
KSB7CisgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2VjdXJpdHlP
cmlnaW4pICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xP
R19CSU5EX0VSUk9SKCk7CiAgICAgICAgICAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiB7IH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMxNiw3ICszMjcsNyBAQCB2b2lkIFB1c2hEYXRh
YmFzZTo6aW5zZXJ0UmVjb3JkKGNvbnN0IFB1c2hSZWNvcmQmIHJlY29yZCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZAogICAgICAgICB9CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwg
PSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJJTlNFUlQgSU5UTyBTdWJzY3JpcHRpb25zIFZBTFVF
Uyg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSJfcyk7CisgICAgICAgICAgICBhdXRvIHNx
bCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFM
VUVTKE5VTEwsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKICAgICAgICAgICAg
IGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMSwgdGltZShudWxs
cHRyKSkgIT0gU1FMSVRFX09LCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kSW50NjQoMiwg
c3Vic2NyaXB0aW9uU2V0SUQpICE9IFNRTElURV9PSwpAQCAtNDIzLDIxICs0MzQsMjAgQEAgdm9p
ZCBQdXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZEJ5SWRlbnRpZmllcihQdXNoU3Vic2NyaXB0aW9u
SWRlbnRpZmllciBpZGVudGlmaWUKICAgICB9KTsKIH0KIAotc3RhdGljIFB1c2hSZWNvcmQgbWFr
ZVB1c2hSZWNvcmRGcm9tUm93KFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlJiBzcWwpCitz
dGF0aWMgUHVzaFJlY29yZCBtYWtlUHVzaFJlY29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0
b1Jlc2V0U2NvcGUmIHNxbCwgaW50IGNvbHVtbkluZGV4KQogewogICAgIFB1c2hSZWNvcmQgcmVj
b3JkOwotICAgIHJlY29yZC5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1
YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPihzcWwtPmNvbHVtbkludDY0KDApKTsKLSAgICByZWNv
cmQuYnVuZGxlSUQgPSBzcWwtPmNvbHVtblRleHQoMSk7Ci0gICAgcmVjb3JkLnNlY3VyaXR5T3Jp
Z2luID0gc3FsLT5jb2x1bW5UZXh0KDIpOwotICAgIHJlY29yZC5zY29wZSA9IHNxbC0+Y29sdW1u
VGV4dCgzKTsKLSAgICByZWNvcmQuZW5kcG9pbnQgPSBzcWwtPmNvbHVtblRleHQoNCk7Ci0gICAg
cmVjb3JkLnRvcGljID0gc3FsLT5jb2x1bW5UZXh0KDUpOwotICAgIHJlY29yZC5zZXJ2ZXJWQVBJ
RFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYig2KTsKLSAgICByZWNvcmQuY2xpZW50UHVibGlj
S2V5ID0gc3FsLT5jb2x1bW5CbG9iKDcpOwotICAgIHJlY29yZC5jbGllbnRQcml2YXRlS2V5ID0g
c3FsLT5jb2x1bW5CbG9iKDgpOwotICAgIHJlY29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5j
b2x1bW5CbG9iKDkpOwotICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1l
RnJvbVZhbHVlKHNxbC0+Y29sdW1uVmFsdWUoMTApKTsKLSAgICByZWNvcmQud2FrZVN0YXRlID0g
c3RhdGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oc3FsLT5jb2x1bW5JbnQoMTEpKTsKKyAgICByZWNv
cmQuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVu
dGlmaWVyVHlwZT4oc3FsLT5jb2x1bW5JbnQ2NChjb2x1bW5JbmRleCsrKSk7CisgICAgcmVjb3Jk
LmJ1bmRsZUlEID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5z
ZWN1cml0eU9yaWdpbiA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNv
cmQuc2NvcGUgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLmVu
ZHBvaW50ID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC50b3Bp
YyA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuc2VydmVyVkFQ
SURQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3Jk
LmNsaWVudFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICBy
ZWNvcmQuY2xpZW50UHJpdmF0ZUtleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsK
KyAgICByZWNvcmQuc2hhcmVkQXV0aFNlY3JldCA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRl
eCsrKTsKKyAgICByZWNvcmQuZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZUZyb21WYWx1
ZShzcWwtPmNvbHVtblZhbHVlKGNvbHVtbkluZGV4KyspKTsKIAogICAgIHJldHVybiByZWNvcmQ7
CiB9CkBAIC00NDcsMTAgKzQ1Nyw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeVRv
cGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoCiAgICAgZGlz
cGF0Y2hPbldvcmtRdWV1ZShbdGhpcywgdG9waWMgPSBjcm9zc1RocmVhZENvcHkodG9waWMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICAvLyBGb3JjZSBTUUxpdGUgdG8gY29uc3VsdCB0aGUgU3Vic2NyaXB0aW9ucyhz
Y29wZSkgaW5kZXggZmlyc3QgdmlhIENST1NTIEpPSU4uCiAgICAgICAgIGF1dG8gc3FsID0gY2Fj
aGVkU3RhdGVtZW50T25RdWV1ZSgKLSAgICAgICAgICAgICJTRUxFQ1QgIgotICAgICAgICAgICAg
IiAgc3ViLnJvd0lELCBzcy5idW5kbGVJRCwgc3Muc2VjdXJpdHlPcmlnaW4sIHN1Yi5zY29wZSwg
c3ViLmVuZHBvaW50LCBzdWIudG9waWMsICIKLSAgICAgICAgICAgICIgIHN1Yi5zZXJ2ZXJWQVBJ
RFB1YmxpY0tleSwgc3ViLmNsaWVudFB1YmxpY0tleSwgc3ViLmNsaWVudFByaXZhdGVLZXksICIK
LSAgICAgICAgICAgICIgIHN1Yi5zaGFyZWRBdXRoU2VjcmV0LCBzdWIuZXhwaXJhdGlvblRpbWUs
IHNzLndha2VTdGF0ZSAiCisgICAgICAgICAgICAiU0VMRUNUICIga1B1c2hSZWNvcmRDb2x1bW5z
CiAgICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCiAgICAgICAgICAgICAiQ1JP
U1MgSk9JTiBTdWJzY3JpcHRpb25TZXRzIHNzICIKICAgICAgICAgICAgICJPTiBzdWIuc3Vic2Ny
aXB0aW9uU2V0SUQgPSBzcy5yb3dpZCAiCkBAIC00NjcsNyArNDc0LDcgQEAgdm9pZCBQdXNoRGF0
YWJhc2U6OmdldFJlY29yZEJ5VG9waWMoY29uc3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQdXNoUmVj
b3JkRnJvbVJvdyhzcWwpKTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCwgMCkpOwogICAgIH0p
OwogfQogCkBAIC00NzYsMTAgKzQ4Myw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRC
eUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAg
ZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhpcywgYnVuZGxlSUQgPSBjcm9zc1RocmVhZENvcHkoYnVu
ZGxlSUQpLCBzY29wZSA9IGNyb3NzVGhyZWFkQ29weShzY29wZSksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIEZv
cmNlIFNRTGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3BlKSBpbmRleCBmaXJz
dCB2aWEgQ1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1
ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBzdWIucm93SUQsIHNz
LmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIuZW5kcG9pbnQsIHN1
Yi50b3BpYywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVibGljS2V5LCBzdWIu
Y2xpZW50UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAgICAgICAgICAgIiAg
c3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mud2FrZVN0YXRlICIK
KyAgICAgICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAgICAgICAgICAgICJG
Uk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBKT0lOIFN1YnNjcmlw
dGlvblNldHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCA9IHNz
LnJvd2lkICIKQEAgLTQ5Niw3ICs1MDAsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0UmVjb3Jk
QnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgYwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGVPbk1haW5RdWV1
ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9tUm93KHNxbCkp
OworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9CiAKQEAgLTUxMiwz
OCArNTE2LDE4NyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6Z2V0SWRlbnRpZmllcnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3JpcHRpbwogICAgIH0pOwogfQogCi12b2lk
IFB1c2hEYXRhYmFzZTo6Z2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UHVzaERhdGFiYXNlOjpnZXRUb3BpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3Ry
aW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBkaXNwYXRjaE9uV29ya1F1ZXVl
KFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewotICAgICAgICBjb25zdGV4cHIgaW50IG51bWJlck9mV2FrZVN0YXRlcyA9IHN0
YXRpY19jYXN0PGludD4oUHVzaFdha2VTdGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOwotICAgICAgICBW
ZWN0b3I8VmVjdG9yPFN0cmluZz4sIG51bWJlck9mV2FrZVN0YXRlcz4gdG9waWNzQnlXYWtlU3Rh
dGUobnVtYmVyT2ZXYWtlU3RhdGVzKTsgLy8gdXNlZCBiZWNhdXNlIEhhc2hNYXA6Omlzb2xhdGVk
Q29weSBkb2Vzbid0IGV4aXN0Ci0KLSAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRP
blF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCBzcy53YWtlU3RhdGUsIHN1Yi50b3BpYyAiCi0g
ICAgICAgICAgICAiRlJPTSBTdWJzY3JpcHRpb25zIHN1YiAiCi0gICAgICAgICAgICAiSk9JTiBT
dWJzY3JpcHRpb25TZXRzIHNzICIKLSAgICAgICAgICAgICJPTiBzdWIuc3Vic2NyaXB0aW9uU2V0
SUQgPSBzcy5yb3dpZCJfcyk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHRvcGljczsKKyAgICAg
ICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1QgdG9waWMgRlJPTSBT
dWJzY3JpcHRpb25zIl9zKTsKICAgICAgICAgaWYgKCFzcWwpIHsKICAgICAgICAgICAgIFBVU0hE
Ql9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7Ci0gICAgICAgICAgICBXb3JrUXVldWU6Om1haW4o
KS5kaXNwYXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwot
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBWZWN0b3I8U3RyaW5nPiB7IH0pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9S
T1cpIHsKLSAgICAgICAgICAgIGF1dG8gcHVzaFdha2VTdGF0ZSA9IHNxbC0+Y29sdW1uSW50KDAp
OwotICAgICAgICAgICAgYXV0byB0b3BpYyA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICAgICAg
ICAgIGlmIChwdXNoV2FrZVN0YXRlID49IDAgJiYgcHVzaFdha2VTdGF0ZSA8IG51bWJlck9mV2Fr
ZVN0YXRlcykKLSAgICAgICAgICAgICAgICB0b3BpY3NCeVdha2VTdGF0ZVtwdXNoV2FrZVN0YXRl
XS5hcHBlbmQoV1RGTW92ZSh0b3BpYykpOworICAgICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0g
U1FMSVRFX1JPVykKKyAgICAgICAgICAgIHRvcGljcy5hcHBlbmQoc3FsLT5jb2x1bW5UZXh0KDAp
KTsKKworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBXVEZNb3ZlKHRvcGljcykpOworICAgIH0pOworfQorCit2b2lkIFB1c2hEYXRhYmFzZTo6
aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0IFN0
cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1
bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRsZUlEKSwgc2VjdXJpdHlPcmlnaW4gPSBjcm9z
c1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlID0gbWFr
ZVNjb3BlRXhpdChbJmNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBjb21wbGV0ZU9u
TWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwdSk7CisgICAgICAgIH0pOwor
CisgICAgICAgIGludCBzaWxlbnRQdXNoQ291bnQgPSAwOworICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbiB0cmFuc2FjdGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKwor
ICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
IlVQREFURSBTdWJzY3JpcHRpb25TZXRzIFNFVCBzaWxlbnRQdXNoQ291bnQgPSBzaWxlbnRQdXNo
Q291bnQgKyAxIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsK
KworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0g
U1FMSVRFX09LIHx8IHNxbC0+YmluZFRleHQoMiwgc2VjdXJpdHlPcmlnaW4pICE9IFNRTElURV9P
SykgeworICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
c3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1l
bnRPblF1ZXVlKCJTRUxFQ1Qgc2lsZW50UHVzaENvdW50IEZST00gU3Vic2NyaXB0aW9uU2V0cyBX
SEVSRSBidW5kbGVJRCA9ID8gQU5EIHNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisKKyAgICAgICAg
ICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8
fCBzcWwtPmJpbmRUZXh0KDIsIHNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAg
ICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgp
ID09IFNRTElURV9ST1cpCisgICAgICAgICAgICAgICAgc2lsZW50UHVzaENvdW50ID0gc3FsLT5j
b2x1bW5JbnQoMCk7CiAgICAgICAgIH0KIAotICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNw
YXRjaChbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgdG9w
aWNzQnlXYWtlU3RhdGUgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZSh0b3BpY3NCeVdha2VTdGF0
ZSkpXSgpIG11dGFibGUgewotICAgICAgICAgICAgUHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgcmVz
dWx0OwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxpbnQ+KFB1
c2hXYWtlU3RhdGU6Ok51bWJlck9mU3RhdGVzKTsgKytpKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5hZGQoc3RhdGljX2Nhc3Q8UHVzaFdha2VTdGF0ZT4oaSksIFdURk1vdmUodG9waWNzQnlXYWtl
U3RhdGVbaV0pKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0
KSk7CisgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworCisgICAgICAgIHNjb3BlLnJlbGVh
c2UoKTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgc2lsZW50UHVzaENvdW50KTsKKyAgICB9KTsKK30KKwordm9pZCBQdXNoRGF0YWJhc2U6
OnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRs
ZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRsZUlEKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzY29wZSA9
IG1ha2VTY29wZUV4aXQoWyZjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICAgICAgY29tcGxl
dGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgVmVjdG9yPFJlbW92ZWRQ
dXNoUmVjb3JkPiB7IH0pOwogICAgICAgICB9KTsKKworICAgICAgICBWZWN0b3I8UmVtb3ZlZFB1
c2hSZWNvcmQ+IHJlbW92ZWRQdXNoUmVjb3JkczsKKyAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb24g
dHJhbnNhY3Rpb24obV9kYik7CisgICAgICAgIHRyYW5zYWN0aW9uLmJlZ2luKCk7CisKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKAorICAg
ICAgICAgICAgICAgICJTRUxFQ1Qgc3ViLnN1YnNjcmlwdGlvblNldElELCBzdWIucm93aWQsIHN1
Yi50b3BpYywgc3ViLnNlcnZlclZBUElEUHVibGljS2V5ICIKKyAgICAgICAgICAgICAgICAiRlJP
TSBTdWJzY3JpcHRpb25TZXRzIHNzICIKKyAgICAgICAgICAgICAgICAiSk9JTiBTdWJzY3JpcHRp
b25zIHN1YiAiCisgICAgICAgICAgICAgICAgIk9OIHNzLnJvd2lkID0gc3ViLnN1YnNjcmlwdGlv
blNldElEICIKKyAgICAgICAgICAgICAgICAiV0hFUkUgc3MuYnVuZGxlSUQgPSA/Il9zKTsKKyAg
ICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxlSUQpICE9IFNRTElU
RV9PSykgeworICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB3
aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlm
aWVyVHlwZT4oc3FsLT5jb2x1bW5JbnQoMSkpOworICAgICAgICAgICAgICAgIGF1dG8gdG9waWMg
PSBzcWwtPmNvbHVtblRleHQoMik7CisgICAgICAgICAgICAgICAgYXV0byBzZXJ2ZXJWQVBJRFB1
YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYigzKTsKKyAgICAgICAgICAgICAgICByZW1vdmVkUHVz
aFJlY29yZHMuYXBwZW5kKHsgaWRlbnRpZmllciwgV1RGTW92ZSh0b3BpYyksIFdURk1vdmUoc2Vy
dmVyVkFQSURQdWJsaWNLZXkpIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJERUxF
VEUgRlJPTSBTdWJzY3JpcHRpb25zIFdIRVJFIHN1YnNjcmlwdGlvblNldElEIElOIChTRUxFQ1Qg
cm93aWQgRlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPykiX3MpOworICAg
ICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRF
X09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRl
bWVudE9uUXVldWUoIkRFTEVURSBGUk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQg
PSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQoMSwgYnVuZGxl
SUQpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19C
SU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisK
KyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHJlbW92ZWRQdXNoUmVjb3JkcykpOwor
ICAgIH0pOworfQorCisKK3ZvaWQgUHVzaERhdGFiYXNlOjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJ
ZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3Qg
U3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVt
b3ZlZFB1c2hSZWNvcmQ+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGRpc3BhdGNo
T25Xb3JrUXVldWUoW3RoaXMsIGJ1bmRsZUlEID0gY3Jvc3NUaHJlYWRDb3B5KGJ1bmRsZUlEKSwg
c2VjdXJpdHlPcmlnaW4gPSBjcm9zc1RocmVhZENvcHkoc2VjdXJpdHlPcmlnaW4pLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvIHNjb3BlID0gbWFrZVNjb3BlRXhpdChbJmNvbXBsZXRpb25IYW5kbGVyXSB7Cisg
ICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBWZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+IHsgfSk7CisgICAgICAgIH0pOworCisgICAgICAg
IFZlY3RvcjxSZW1vdmVkUHVzaFJlY29yZD4gcmVtb3ZlZFB1c2hSZWNvcmRzOworICAgICAgICBT
UUxpdGVUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24u
YmVnaW4oKTsKKworICAgICAgICBpbnQ2NF90IHN1YnNjcmlwdGlvblNldElEID0gMDsKKworICAg
ICAgICB7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCisg
ICAgICAgICAgICAgICAgIlNFTEVDVCBzdWIuc3Vic2NyaXB0aW9uU2V0SUQsIHN1Yi5yb3dpZCwg
c3ViLnRvcGljLCBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXkgIgorICAgICAgICAgICAgICAgICJG
Uk9NIFN1YnNjcmlwdGlvblNldHMgc3MgIgorICAgICAgICAgICAgICAgICJKT0lOIFN1YnNjcmlw
dGlvbnMgc3ViICIKKyAgICAgICAgICAgICAgICAiT04gc3Mucm93aWQgPSBzdWIuc3Vic2NyaXB0
aW9uU2V0SUQgIgorICAgICAgICAgICAgICAgICJXSEVSRSBzcy5idW5kbGVJRCA9ID8gQU5EIHNz
LnNlY3VyaXR5T3JpZ2luID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJp
bmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0sgfHwgc3FsLT5iaW5kVGV4dCgyLCBzZWN1
cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVB
U0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHdoaWxlIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Cisg
ICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNvbHVtbkludCgwKTsKKyAg
ICAgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNo
U3Vic2NyaXB0aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50KDEpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHRvcGljID0gc3FsLT5jb2x1bW5UZXh0KDIpOworICAgICAgICAgICAgICAg
IGF1dG8gc2VydmVyVkFQSURQdWJsaWNLZXkgPSBzcWwtPmNvbHVtbkJsb2IoMyk7CisgICAgICAg
ICAgICAgICAgcmVtb3ZlZFB1c2hSZWNvcmRzLmFwcGVuZCh7IGlkZW50aWZpZXIsIFdURk1vdmUo
dG9waWMpLCBXVEZNb3ZlKHNlcnZlclZBUElEUHVibGljS2V5KSB9KTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3Rh
dGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00gU3Vic2NyaXB0aW9ucyBXSEVSRSBzdWJzY3JpcHRp
b25TZXRJRCA9ID8iX3MpOworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kSW50KDEs
IHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNI
REJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpICE9IFNRTElURV9ET05F
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiREVMRVRFIEZST00gU3Vi
c2NyaXB0aW9uU2V0cyBXSEVSRSByb3dpZCA9ID8iX3MpOworICAgICAgICAgICAgaWYgKCFzcWwg
fHwgc3FsLT5iaW5kSW50KDEsIHN1YnNjcmlwdGlvblNldElEKSAhPSBTUUxJVEVfT0spIHsKKyAg
ICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+c3Rl
cCgpICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIHRyYW5zYWN0aW9uLmNvbW1pdCgpOworCisgICAgICAgIHNjb3BlLnJlbGVhc2Uo
KTsKKyAgICAgICAgY29tcGxldGVPbk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgV1RGTW92ZShyZW1vdmVkUHVzaFJlY29yZHMpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERhdGFiYXNlLmgKaW5kZXggODNkODk4MWUw
MzMzNmFjMjc2Njk2YzZlNTNkMTg5MWM1YjUyMDY3Ny4uMzNlNDNiZThhZWYwZWZkZWEyYzg3N2Iw
YTU4NzA2NDc3YjkyYjc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNo
LWFwaS9QdXNoRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBp
L1B1c2hEYXRhYmFzZS5oCkBAIC00MiwxNCArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLS8vIFdha2Ugc3RhdGUgdGhhdCBhcHBsaWVzIGZvciBkZXZpY2VzIHRoYXQgcmFjZS10by1z
bGVlcC4KLWVudW0gY2xhc3MgUHVzaFdha2VTdGF0ZSA6IHVpbnQ4X3QgewotICAgIFdha2luZywg
Ly8gQWxsIHB1c2hlcyB3aWxsIHdha2UgZGV2aWNlLgotICAgIE9wcG9ydHVuaXN0aWMsIC8vIExv
dyBwcmlvcml0eSBwdXNoZXMgbWF5IG5vdCB3YWtlIGRldmljZS4KLSAgICBOb25XYWtpbmcsIC8v
IE5vIHB1c2hlcyB3aWxsIHdha2UgZGV2aWNlLgotICAgIE51bWJlck9mU3RhdGVzCi19OwotCiBz
dHJ1Y3QgUHVzaFJlY29yZCB7CiAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIgaWRlbnRp
ZmllcjsKICAgICBTdHJpbmcgYnVuZGxlSUQ7CkBAIC02MiwxMiArNTQsMjAgQEAgc3RydWN0IFB1
c2hSZWNvcmQgewogICAgIFZlY3Rvcjx1aW50OF90PiBjbGllbnRQcml2YXRlS2V5OwogICAgIFZl
Y3Rvcjx1aW50OF90PiBzaGFyZWRBdXRoU2VjcmV0OwogICAgIHN0ZDo6b3B0aW9uYWw8RXBvY2hU
aW1lU3RhbXA+IGV4cGlyYXRpb25UaW1lIHsgfTsKLSAgICBQdXNoV2FrZVN0YXRlIHdha2VTdGF0
ZSB7IFB1c2hXYWtlU3RhdGU6Oldha2luZyB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJl
Y29yZCBpc29sYXRlZENvcHkoKSBjb25zdCAmOwogICAgIFdFQkNPUkVfRVhQT1JUIFB1c2hSZWNv
cmQgaXNvbGF0ZWRDb3B5KCkgJiY7CiB9OwogCitzdHJ1Y3QgUmVtb3ZlZFB1c2hSZWNvcmQgewor
ICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyIGlkZW50aWZpZXI7CisgICAgU3RyaW5nIHRv
cGljOworICAgIFZlY3Rvcjx1aW50OF90PiBzZXJ2ZXJWQVBJRFB1YmxpY0tleTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIFJlbW92ZWRQdXNoUmVjb3JkIGlzb2xhdGVkQ29weSgpIGNvbnN0ICY7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgUmVtb3ZlZFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5KCkgJiY7Cit9
OworCiBjbGFzcyBQdXNoRGF0YWJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtODEsOSArODEsMTIgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZ2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgZ2V0UmVjb3JkQnlCdW5kbGVJZGVudGlmaWVyQW5kU2NvcGUoY29uc3QgU3RyaW5n
JiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+JiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGdldElkZW50aWZpZXJzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllcj4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VG9w
aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOworCisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoY29uc3QgU3RyaW5n
JiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogCi0gICAgdXNpbmcgUHVzaFdha2VTdGF0ZVRvVG9waWNN
YXAgPSBIYXNoTWFwPFB1c2hXYWtlU3RhdGUsIFZlY3RvcjxTdHJpbmc+LCBXVEY6OkludEhhc2g8
UHVzaFdha2VTdGF0ZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHVzaFdha2VTdGF0ZT4+
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0VG9waWNzQnlXYWtlU3RhdGUoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCYmKT4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmlu
ZyYgYnVuZGxlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFJlbW92ZWRQdXNoUmVj
b3JkPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVSZWNvcmRzQnlCdW5k
bGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29u
c3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
UmVtb3ZlZFB1c2hSZWNvcmQ+JiYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBQdXNoRGF0YWJhc2Uo
UmVmPFdvcmtRdWV1ZT4mJiwgVW5pcXVlUmVmPFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuaAppbmRleCA1MTBjMWIwNzJiODk3ZDc5MDBhYTZlNmVhMDJkOGYwMDYz
OGZiM2RkLi5iMDVmYTMyODIyNzVmM2UxNWIwMTIzMGI5N2ZlODQzN2E2OTA4ZTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNv
bnRleHREYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIgogI2lu
Y2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KICNpbmNsdWRlIDx3dGYvVVJMSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04
OCw2ICs4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBvc3RUYXNrVG9GaXJlTm90aWZpY2F0aW9u
RXZlbnQoTm90aWZpY2F0aW9uRXZlbnRUeXBlLCBOb3RpZmljYXRpb24mLCBjb25zdCBTdHJpbmcm
IGFjdGlvbik7CiAjZW5kaWYKIAorICAgIGJvb2wgaGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudDsgfQorICAgIHZvaWQg
c2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudChib29sIHZhbHVlKSB7IG1faGFzUGVuZGluZ1Np
bGVudFB1c2hFdmVudCA9IHZhbHVlOyB9CisKIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlckds
b2JhbFNjb3BlKFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYmLCBTZXJ2aWNlV29ya2VyRGF0YSYm
LCBjb25zdCBXb3JrZXJQYXJhbWV0ZXJzJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmLCBTZXJ2aWNl
V29ya2VyVGhyZWFkJiwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9yaWdpbiwgSURCQ2xpZW50
OjpJREJDb25uZWN0aW9uUHJveHkqLCBTb2NrZXRQcm92aWRlciosIHN0ZDo6dW5pcXVlX3B0cjxO
b3RpZmljYXRpb25DbGllbnQ+JiYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIG5vdGlmeVNl
cnZpY2VXb3JrZXJQYWdlT2ZDcmVhdGlvbklmTmVjZXNzYXJ5KCk7CkBAIC05Niw2ICsxMDAsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cygpIGNvbnN0IHsgcmV0dXJuICFt
X2V4dGVuZGVkRXZlbnRzLmlzRW1wdHkoKTsgfQogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBu
b3RpZmljYXRpb25DbGllbnQoKSBmaW5hbCB7IHJldHVybiBtX25vdGlmaWNhdGlvbkNsaWVudC5n
ZXQoKTsgfQorCiAgICAgc3RkOjpvcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gc2Vzc2lvbklEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KIAogICAgIFNlcnZpY2VXb3JrZXJD
b250ZXh0RGF0YSBtX2NvbnRleHREYXRhOwpAQCAtMTA5LDYgKzExNCw3IEBAIHByaXZhdGU6CiAg
ICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4+IG1fcGVuZGluZ1Nr
aXBXYWl0aW5nUHJvbWlzZXM7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNhdGlvbkNsaWVudD4gbV9ub3RpZmljYXRpb25DbGllbnQ7
CisgICAgYm9vbCBtX2hhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQgeyBmYWxzZSB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCmluZGV4IGQ4ODQ1
YWIyNGMzODA2MmMwNzI4MDE1NjQwZmZiMGE0ZjNkZmJhZjcuLmY3YTQ0NWQxNjVmYWFjYWFmN2My
Yzg0ZmQzMmUwNTk3YjRiNWVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAi
U2VydmljZVdvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250YWluZXIuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29y
a2VyVHlwZXMuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0
Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0yODYsNiArMjg3LDkgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChjb250ZXh0LmlzU2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlKCkpCisgICAgICAgIGRvd25jYXN0PFNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZT4oY29udGV4dCkuc2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudChmYWxzZSk7
CisKICAgICAvLyBUaGUgTm90aWZpY2F0aW9uIGlzIGtlcHQgYWxpdmUgYnkgdmlydHVlIG9mIGJl
aW5nIHNob3coKSduIHNvb24uCiAgICAgLy8gRklYTUU6IFdoZW4gaW1wbGVtZW50aW5nIGdldE5v
dGlmaWNhdGlvbnMoKSwgc3RvcmUgdGhpcyBOb3RpZmljYXRpb24gaW4gdGhlIHJlZ2lzdHJhdGlv
bidzIG5vdGlmaWNhdGlvbiBsaXN0LgogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gTm90aWZpY2F0
aW9uOjpjcmVhdGUoY29udGV4dCwgdGl0bGUsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcAppbmRleCBlMmU0MDhiMTA5MTU0N2ZkMDBiN2ZhNTAyN2Y4NDFlZWM3YmU1NjhiLi4z
MGE5ODM1MTA0YTlhNzJkMTczNDA5Yzg2YmUwMDAzOWM1MTA2OGM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcApAQCAtMjI0LDEwICsyMjQsMTIgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNoRXZlbnQoc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4KICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZXZlbnRMb29wKCkucXVldWVUYXNrKFRh
c2tTb3VyY2U6OkRPTU1hbmlwdWxhdGlvbiwgW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IFJlZiB7IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZSB9LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0coU2VydmljZVdvcmtlciwgIlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBmaXJpbmcgZXZlbnQgZm9yIHdv
cmtlciAlIiBQUkl1NjQsIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkuaWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOwogCisgICAgICAgIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+
c2V0SGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCh0cnVlKTsKKwogICAgICAgICBhdXRvIHB1c2hF
dmVudCA9IFB1c2hFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wdXNoRXZlbnQsIHsgfSwgV1RG
TW92ZShkYXRhKSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZGlzcGF0Y2hFdmVudChwdXNoRXZlbnQpOwogCi0gICAg
ICAgIHB1c2hFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFt3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XShhdXRvJiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgbXV0YWJsZSB7CisgICAgICAgIHB1c2hF
dmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFtzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUsIGV2ZW50Q3JlYXRpb25UaW1lID0gcHVzaEV2ZW50LT50aW1lU3RhbXAo
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJv
bWlzZXMpIG11dGFibGUgewogICAgICAgICAgICAgYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2Ug
PSBmYWxzZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgcHJvbWlzZSA6IGV4dGVuZExpZmV0aW1l
UHJvbWlzZXMpIHsKICAgICAgICAgICAgICAgICBpZiAocHJvbWlzZS0+c3RhdHVzKCkgPT0gRE9N
UHJvbWlzZTo6U3RhdHVzOjpSZWplY3RlZCkgewpAQCAtMjM1LDcgKzIzNywxMyBAQCB2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFs
PFZlY3Rvcjx1aW50OF90PgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsYmFjayghaGFzUmVqZWN0ZWRB
bnlQcm9taXNlKTsKKworICAgICAgICAgICAgYm9vbCBzaG93ZWROb3RpZmljYXRpb24gPSAhc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLT5oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCk7CisgICAg
ICAgICAgICBib29sIHN1Y2Nlc3MgPSAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlICYmIHNob3dlZE5v
dGlmaWNhdGlvbjsKKworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUYoIXN1Y2Nlc3Ms
IFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0ZpcmVQdXNo
RXZlbnQgZmFpbGVkIHRvIHByb2Nlc3MgcHVzaCBldmVudCAocmVqZWN0ZWRQcm9taXNlID0gJWQs
IHNob3dlZE5vdGlmaWNhdGlvbiA9ICVkKSIsIGhhc1JlamVjdGVkQW55UHJvbWlzZSwgc2hvd2Vk
Tm90aWZpY2F0aW9uKTsKKworICAgICAgICAgICAgY2FsbGJhY2soc3VjY2Vzcyk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcAppbmRleCBmNGY4YTRjNGY0YWY5NmFmNjg5NDJjNWM2Yzk4OTJmZjdlMTk5
M2YxLi42ZjkzNTYyNWNkNjMyNTcyMjc4Y2E4MDljNjMxZGUxOTZhYWVmODYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMjI1MCwy
OSArMjI1MCw1MiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW5hbWVPcmlnaW5JbldlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVQogICAgICAgICBtYW5hZ2VyLT5t
b3ZlRGF0YShkYXRhVHlwZXMsIG9sZE9yaWdpbiwgbmV3T3JpZ2luLCBbYWdncmVnYXRvcl0geyB9
KTsKIH0KIAotI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpICYmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCiB2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYg
Y2FsbGJhY2spCiB7Ci0jaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIExP
RyhOb3RpZmljYXRpb25zLCAiTmV0d29ya1Byb2Nlc3MgZ2V0dGluZyBwZW5kaW5nIHB1c2ggbWVz
c2FnZXMgZm9yIHNlc3Npb24gSUQgJSIgUFJJdTY0LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5nZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzKFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZQogICAg
ICAgICBMT0coTm90aWZpY2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGNvdWxkIG5vdCBmaW5kIHNl
c3Npb24gZm9yIElEICVsbHUgdG8gZ2V0IHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIsIHNlc3Npb25J
RC50b1VJbnQ2NCgpKTsKLSNlbmRpZgotICAgIGNhbGxiYWNrKHsgfSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYlB1c2hNZXNzYWdlJiYgcHVzaE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIExPRyhQdXNoLCAiTmV0d29ya2luZyBwcm9jZXNzIGhh
bmRsaW5nIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUiLCBz
ZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0gICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2VydmVyKCku
cHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBXVEZNb3Zl
KHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICAg
ICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21VUkwocHVzaE1lc3NhZ2Uu
cmVnaXN0cmF0aW9uVVJMKTsKKyAgICAgICAgc2Vzc2lvbi0+ZW5zdXJlU1dTZXJ2ZXIoKS5wcm9j
ZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVz
aE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYgeyAq
dGhpcyB9LCBzZXNzaW9uSUQsIG9yaWdpbiA9IFdURk1vdmUob3JpZ2luKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgTmV0
d29ya1Nlc3Npb24qIHNlc3Npb247CisgICAgICAgICAgICBpZiAoIXJlc3VsdCAmJiAoc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpKSB7CisgICAgICAgICAgICAgICAgc2Vzc2lv
bi0+bm90aWZpY2F0aW9uTWFuYWdlcigpCisgICAgICAgICAgICAgICAgICAgIC5pbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQoV1RGTW92ZShvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgcmVzdWx0XSh1bnNpZ25lZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CisgICAgICAgIH0pOwogICAgIH0gZWxzZQogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtp
bmcgcHJvY2VzcyBhc2tlZCB0byBoYW5kbGUgYSBwdXNoIG1lc3NhZ2UgZnJvbSBVSSBwcm9jZXNz
IGluIHNlc3Npb24gJWxsdSwgYnV0IHRoYXQgc2Vzc2lvbiBkb2Vzbid0IGV4aXN0Iiwgc2Vzc2lv
bklELnRvVUludDY0KCkpOwogfQotI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwor
I2Vsc2UKKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1l
c3NhZ2U+Jik+JiYgY2FsbGJhY2spCit7CisgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNo
TWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQorewor
ICAgIGNhbGxiYWNrKGZhbHNlKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikgJiYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjaykKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGYwMGEyMTkzYWEyYjEzOTgw
MmIzNjZhNGYxMjFjNzZlZGZmODhmMDMuLjg2ZWU2NDBiMjY1ZTk0YjlmNmU3MmUwM2NjMzIyZTdi
MGYxMDg1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcApAQCAtMTc1LDYgKzE3NSwxNiBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpnZXRQdXNoUGVybWlzc2lvblN0YXRlKFVSTCYmIHNjb3BlVVJMLCBDb21wbGV0aQogICAgIHNl
bmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6R2V0UHVzaFBlcm1pc3Np
b25TdGF0ZT4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoc2NvcGVVUkwpKTsK
IH0KIAordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6aW5jcmVtZW50U2lsZW50UHVz
aENvdW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIG9yaWdpbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFt
X2Nvbm5lY3Rpb24pIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2Fn
ZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudD4oV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIFdURk1vdmUob3JpZ2luKSk7Cit9CisKIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlw
ZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KIHZvaWQgTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXI6OnNlbmRNZXNzYWdlKEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpAQCAtMjI4LDYg
KzIzOCwxNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxib29sPiB7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8dW5zaWduZWQ+IHsKKyAgICBzdGF0
aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8aW50PiB2YWx1ZTsKKyAgICAgICAgZGVjb2RlciA+PiB2YWx1ZTsKKyAgICAg
ICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigwKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKnZhbHVlKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0
ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7CiAgICAgc3RhdGljIHZv
aWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA1MmE2Mzg0YmFi
MTBlMGFlOTE2YmFhMjNmOTE0YTkyNWZlZTMwOGRkLi40YjI0N2NmNDZkN2ViODVjNzEwYWJiMmQ1
OGVmZDhhMTNhM2NhMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnN1YnNjcmliZUZy
b21QdXNoU2VydmljZShVUkwmJiBzY29wZVVSTCwgV2ViQ29yZTo6UHVzaFN1YnNjcmlwdGlvbklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6
RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlwdGlvbihVUkwm
JiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4m
Jik+JiYpOwogICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShVUkwmJiBzY29wZVVSTCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRp
b25EYXRhPiYmKT4mJik7CisgICAgdm9pZCBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQp
PiYmKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3Jr
U2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKaW5kZXggZjNmN2JiZTYz
ZjRlZDM1ZWRjZjNlMmFhYWQ5M2ZiM2U0OTI5ZmY5OS4uZTJkN2Q2YjcxNzEzNDU2MzMzZmZmMGVk
ZTVjNDA4NGU5ZDJkNGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVz
aERhZW1vbkNvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVt
b25Db25zdGFudHMuaApAQCAtMjcsNiArMjcsOSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQ
dXNoRCB7CiAKKy8vIElmIGFuIG9yaWdpbiBwcm9jZXNzZXMgbW9yZSB0aGFuIHRoaXMgbWFueSBz
aWxlbnQgcHVzaGVzLCB0aGVuIGl0IHdpbGwgYmUgdW5zdWJzY3JpYmVkIGZyb20gcHVzaC4KK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhTaWxlbnRQdXNoQ291bnQgPSAzOworCiBjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5ID0gInByb3RvY29sIHZlcnNpb24iOwogY29uc3Rl
eHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlID0gMTsKIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQgbWVzc2FnZSI7CkBAIC00
OCw3ICs1MSw4IEBAIGVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBTdWJz
Y3JpYmVUb1B1c2hTZXJ2aWNlLAogICAgIFVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlLAogICAg
IEdldFB1c2hTdWJzY3JpcHRpb24sCi0gICAgR2V0UHVzaFBlcm1pc3Npb25TdGF0ZQorICAgIEdl
dFB1c2hQZXJtaXNzaW9uU3RhdGUsCisgICAgSW5jcmVtZW50U2lsZW50UHVzaENvdW50LAogfTsK
IAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlKQpAQCAtNjUsNiArNjksNyBAQCBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHko
TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2U6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0UHVzaFN1YnNjcmlw
dGlvbjoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgorICAg
IGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hDb3VudDoKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgog
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpp
bmRleCBhN2E4YmI2MDg3NWE5OTUyZTk5MGE1MmFkODlkMzM0YzZkNmZmOGZhLi4zYzgxOGZiMjE4
MzkzMmMyMTBmNTdhYWU2MDAwMzIzN2U0YWQ0MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQpAQCAtMzMsNiArMzMsNyBAQAog
I2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9y
dCAiVUlHYW1lcGFkUHJvdmlkZXIuaCIKKyNpbXBvcnQgIldLQVBJQ2FzdC5oIgogI2ltcG9ydCAi
V0tEb3dubG9hZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tX
ZWJWaWV3SW50ZXJuYWwuaCIKQEAgLTQxLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYkJhY2tGb3J3
YXJkQ2FjaGUuaCIKICNpbXBvcnQgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2ltcG9ydCAiV2Vi
Q29va2llTWFuYWdlclByb3h5LmgiCisjaW1wb3J0ICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDYWNoZS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc01l
c3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5oIgpAQCAtNjEyLDQgKzYxNCw5IEBA
IHN0YXRpYyBSZXRhaW5QdHI8V0tQcm9jZXNzUG9vbD4mIHNoYXJlZFByb2Nlc3NQb29sKCkKICAg
ICBfcHJvY2Vzc1Bvb2wtPnRlcm1pbmF0ZUFsbFdlYkNvbnRlbnRQcm9jZXNzZXMoKTsKIH0KIAor
LSAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmKV9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGlu
ZworeworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKF9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxX
ZWJLaXQ6OldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKSk7Cit9CisKIEBlbmQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgKaW5kZXggZTFmZDk5MWRmYjJiNzg0OTQ0NTAzNmNkODI5ZTY0ZDdjYzVkZGI2MS4u
NmUxNTU3YWM1YjFkZTk2ODIwMjI5NzdkZDdkY2YzMzY0Yjg2MTZmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRl
LmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisjaW1wb3J0IDxXZWJLaXQvV0tCYXNlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9j
ZXNzUG9vbC5oPgogI2ltcG9ydCA8V2ViS2l0L1dLU2VjdXJpdHlPcmlnaW4uaD4KIApAQCAtMTM3
LDYgKzEzOCw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzQ29va2llU3Rv
cmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQsIHNldHRlcj1fc2V0Q29va2llU3RvcmFnZVBhcnRpdGlv
bmluZ0VuYWJsZWQ6KSBCT09MIF9jb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCBXS19B
UElfREVQUkVDQVRFRCgiUGFydGl0aW9uZWQgY29va2llcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRl
ZCIsIG1hY29zKDEwLjEyLjMsIDEwLjE0LjQpLCBpb3MoMTAuMywgMTIuMikpOwogCistIChXS05v
dGlmaWNhdGlvbk1hbmFnZXJSZWYpX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nOworCiAv
LyBUZXN0IG9ubHkuCiAtICh2b2lkKV9zZWVkUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZvclRlc3Rp
bmdXaXRoRmlyc3RQYXJ0eTooTlNVUkwgKilmaXJzdFBhcnR5VVJMIHRoaXJkUGFydHk6KE5TVVJM
ICopdGhpcmRQYXJ0eVVSTCBzaG91bGRTY2hlZHVsZU5vdGlmaWNhdGlvbjooQk9PTClzaG91bGRT
Y2hlZHVsZU5vdGlmaWNhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKSh2b2lkKSljb21w
bGV0aW9uSGFuZGxlciAgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNS40KSwgaW9zKDEzLjQp
KTsKIC0gKHZvaWQpX2dhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNGb3JUZXN0aW5nIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoMTEuMCksIGlvcygxNC4wKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2aWNlLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hTZXJ2aWNlLmgKaW5kZXggZmU0MTVlMDA4ZGQ2MzA1MTA1ODI0ZjhjZmIwMjY5NWFmYzMy
M2ZlYi4uODJmY2IxYzRlZTllN2Y0ZjgzNWQwNzA3MWFiNjIzODkyZmViYmJiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaFNlcnZpY2UuaApAQCAtNjEsNiArNjEsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzdWJzY3JpYmUoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIHNjb3BlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHZhcGlkUHVibGljS2V5LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25E
YXRhLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmKTsKICAgICB2b2lkIHVuc3Vic2NyaWJl
KGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgV2Vi
Q29yZTo6UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgRXhwZWN0ZWQ8Ym9vbCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mKT4mJik7CiAKKyAg
ICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQodW5zaWduZWQpPiYmKTsKKwogICAgIHZvaWQgZGlkQ29tcGxldGVHZXRTdWJzY3JpcHRpb25S
ZXF1ZXN0KEdldFN1YnNjcmlwdGlvblJlcXVlc3QmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3Vi
c2NyaWJlUmVxdWVzdChTdWJzY3JpYmVSZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVVu
c3Vic2NyaWJlUmVxdWVzdChVbnN1YnNjcmliZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1B1c2hTZXJ2aWNlLm1tCmluZGV4IDA1OGE3NjllNjk2Y2FlY2U2NjQ1NDJkMGNhNzAwOGM4NzRi
OGE3ZjAuLjM2MGJhZWRlMmU4ZGFkNWU0MTBmOTk0YTRkYzdhN2YyODNjZjkyN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNlcnZpY2UubW0KKysrIGIvU291cmNlL1dl
YktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAi
QXBwbGVQdXNoU2VydmljZUNvbm5lY3Rpb24uaCIKICNpbXBvcnQgIk1vY2tQdXNoU2VydmljZUNv
bm5lY3Rpb24uaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QdXNoTWVzc2FnZUNyeXB0by5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgpAQCAtNDQsMTkgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYlB1c2hEIHsKIAogc3RhdGlj
IHZvaWQgdXBkYXRlVG9waWNMaXN0cyhQdXNoU2VydmljZUNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFB1c2hEYXRhYmFzZSYgZGF0YWJhc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgZGF0YWJhc2UuZ2V0VG9waWNzQnlXYWtlU3RhdGUoWyZjb25u
ZWN0aW9uLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShh
dXRvJiYgdG9waWNNYXApIG11dGFibGUgeworICAgIGRhdGFiYXNlLmdldFRvcGljcyhbJmNvbm5l
Y3Rpb24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKGF1
dG8mJiB0b3BpY3MpIG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogbW92ZSB0b3BpY3MgdG8g
aWdub3JlZCBsaXN0IGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXMuCi0gICAgICAgIFB1c2hTZXJ2
aWNlQ29ubmVjdGlvbjo6VG9waWNMaXN0cyB0b3BpY0xpc3RzOwotCi0gICAgICAgIGlmIChhdXRv
IGl0ID0gdG9waWNNYXAuZmluZChQdXNoV2FrZVN0YXRlOjpXYWtpbmcpOyBpdCAhPSB0b3BpY01h
cC5lbmQoKSkKLSAgICAgICAgICAgIHN0ZDo6c3dhcCh0b3BpY0xpc3RzLmVuYWJsZWRUb3BpY3Ms
IGl0LT52YWx1ZSk7Ci0gICAgICAgIGlmIChhdXRvIGl0ID0gdG9waWNNYXAuZmluZChQdXNoV2Fr
ZVN0YXRlOjpPcHBvcnR1bmlzdGljKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAg
ICBzdGQ6OnN3YXAodG9waWNMaXN0cy5vcHBvcnR1bmlzdGljVG9waWNzLCBpdC0+dmFsdWUpOwot
ICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6Tm9uV2Fr
aW5nKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAgICBzdGQ6OnN3YXAodG9waWNM
aXN0cy5ub25XYWtpbmdUb3BpY3MsIGl0LT52YWx1ZSk7Ci0KLSAgICAgICAgY29ubmVjdGlvbi5z
ZXRUb3BpY0xpc3RzKFdURk1vdmUodG9waWNMaXN0cykpOwotCisgICAgICAgIGNvbm5lY3Rpb24u
c2V0RW5hYmxlZFRvcGljcyhXVEZNb3ZlKHRvcGljcykpOwogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgIH0pOwogfQpAQCAtNDgyLDYgKzQ3MywzMSBAQCB2b2lkIFB1c2hTZXJ2aWNl
OjpkaWRDb21wbGV0ZVVuc3Vic2NyaWJlUmVxdWVzdChVbnN1YnNjcmliZVJlcXVlc3QmIHJlcXVl
c3QpCiAgICAgZmluaXNoZWRQdXNoU2VydmljZVJlcXVlc3QobV91bnN1YnNjcmliZVJlcXVlc3Rz
LCByZXF1ZXN0KTsKIH0KIAordm9pZCBQdXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENv
dW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgaGFuZGxlcikKK3sK
KyAgICBtX2RhdGFiYXNlLT5pbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQoYnVuZGxlSWRlbnRpZmll
ciwgc2VjdXJpdHlPcmlnaW4sIFt0aGlzLCBidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdp
biwgaGFuZGxlciA9IFdURk1vdmUoaGFuZGxlcildKHVuc2lnbmVkIHNpbGVudFB1c2hDb3VudCkg
bXV0YWJsZSB7CisgICAgICAgIGlmIChzaWxlbnRQdXNoQ291bnQgPCBXZWJLaXQ6OldlYlB1c2hE
OjptYXhTaWxlbnRQdXNoQ291bnQpIHsKKyAgICAgICAgICAgIGhhbmRsZXIoc2lsZW50UHVzaENv
dW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJFTEVBU0Vf
TE9HKFB1c2gsICJSZW1vdmluZyBhbGwgc3Vic2NyaXB0aW9ucyBhc3NvY2lhdGVkIHdpdGggJXtw
dWJsaWN9cyAle3NlbnNpdGl2ZX1zIHNpbmNlIGl0IHByb2Nlc3NlZCAldSBzaWxlbnQgcHVzaGVz
IiwgYnVuZGxlSWRlbnRpZmllci51dGY4KCkuZGF0YSgpLCBzZWN1cml0eU9yaWdpbi51dGY4KCku
ZGF0YSgpLCBzaWxlbnRQdXNoQ291bnQpOworCisgICAgICAgIG1fZGF0YWJhc2UtPnJlbW92ZVJl
Y29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJZGVudGlmaWVy
LCBzZWN1cml0eU9yaWdpbiwgW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2lu
LCBzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShhdXRvJiYgcmVt
b3ZlZFJlY29yZHMpIG11dGFibGUgeworICAgICAgICAgICAgZm9yIChhdXRvJiByZWNvcmQgOiBy
ZW1vdmVkUmVjb3JkcykgeworICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvbi0+dW5zdWJzY3Jp
YmUocmVjb3JkLnRvcGljLCByZWNvcmQuc2VydmVyVkFQSURQdWJsaWNLZXksIFt0b3BpYyA9IHJl
Y29yZC50b3BpY10oYm9vbCB1bnN1YnNjcmliZWQsIE5TRXJyb3IqIGVycm9yKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghdW5zdWJzY3JpYmVkKQorICAgICAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoUHVzaCwgIkluY3JlbWVudFNpbGVudFB1c2hSZXF1ZXN0IGNvdWxk
bid0IHJlbW92ZSBzdWJzY3JpcHRpb24gZm9yIHRvcGljICV7c2Vuc2l0aXZlfXM6ICV7cHVibGlj
fXMgY29kZTogJWxsZCkiLCB0b3BpYy51dGY4KCkuZGF0YSgpLCBlcnJvci5kb21haW4uVVRGOFN0
cmluZyA/OiAibm9uZSIsIHN0YXRpY19jYXN0PGludDY0X3Q+KGVycm9yLmNvZGUpKTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlVG9waWNM
aXN0cyhtX2Nvbm5lY3Rpb24sIG1fZGF0YWJhc2UsIFtzaWxlbnRQdXNoQ291bnQsIGhhbmRsZXIg
PSBXVEZNb3ZlKGhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGhhbmRsZXIo
c2lsZW50UHVzaENvdW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICB9KTsK
K30KKwogZW51bSBjbGFzcyBDb250ZW50RW5jb2RpbmcgewogICAgIEVtcHR5LAogICAgIEFFU0dD
TSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMDI4MDg0ZTUyYjRh
MGRiYjNjMTQ5YmU2Yzk3MzZmNzU3NWU3ODdiMy4uNzk1NTdmNjhhNWRjZTU3MDJhY2U0YThkOTE0
ZTI1YjdlMDlmNDdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAg
LTQ2LDYgKzQ2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogZW51bSBjbGFzcyBNZXNzYWdlTGV2ZWwg
OiB1aW50OF90OwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitzdHJ1Y3QgU2VjdXJpdHlPcmln
aW5EYXRhOworfQorCiB1c2luZyBXZWJLaXQ6OldlYlB1c2hEOjpQdXNoTWVzc2FnZUZvclRlc3Rp
bmc7CiB1c2luZyBXZWJLaXQ6OldlYlB1c2hEOjpXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb247CiAKQEAgLTgwLDYgKzg0LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3Jp
YmVGcm9tUHVzaFNlcnZpY2UoQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVVUkws
IFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYgcmVw
bHlTZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFN1YnNjcmlwdGlvbihDbGllbnRDb25uZWN0aW9u
KiwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBl
Y3RlZDxzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25EYXRhPiwgV2ViQ29y
ZTo6RXhjZXB0aW9uRGF0YT4mKT4mJiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBnZXRQdXNoUGVy
bWlzc2lvblN0YXRlKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGE+Jik+JiYgcmVwbHlTZW5kZXIpOworICAgIHZvaWQgaW5jcmVtZW50U2lsZW50UHVz
aENvdW50KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKICAgICB2b2lkIGJy
b2FkY2FzdERlYnVnTWVzc2FnZShKU0M6Ok1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJik7CiAg
ICAgdm9pZCBicm9hZGNhc3RBbGxDb25uZWN0aW9uSWRlbnRpdGllcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDFjZjhlMjQ3M2I0NTNjY2YxMDE3YWNjNDdl
NDMyNjYyMTFkNjA0MDUuLjE5NmZiM2E4MTUxZmNiNDc3ODVjNjU4YjdhMzZkMWUyYTM3ZjA3NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTM1LDYgKzM1LDcg
QEAKICNpbXBvcnQgIk1vY2tBcHBCdW5kbGVSZWdpc3RyeS5oIgogCiAjaW1wb3J0IDxXZWJDb3Jl
L1B1c2hQZXJtaXNzaW9uU3RhdGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5E
YXRhLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL0xhdW5jaFNlcnZpY2VzU1BJLmg+CiAjaW1w
b3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9IZXhOdW1iZXIuaD4K
QEAgLTExOCw2ICsxMTksMTEgQEAgQVJHVU1FTlRTKFVSTCkKIFJFUExZKGNvbnN0IEV4cGVjdGVk
PHVpbnQ4X3QsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JikKIEVORAogCitGVU5DVElPTihpbmNy
ZW1lbnRTaWxlbnRQdXNoQ291bnQpCitBUkdVTUVOVFMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhKQorUkVQTFkodW5zaWduZWQpCitFTkQKKwogI3VuZGVmIEZVTkNUSU9OCiAjdW5kZWYgQVJH
VU1FTlRTCiAjdW5kZWYgUkVQTFkKQEAgLTIwMCw2ICsyMDYsMTMgQEAgV2ViUHVzaEQ6OkVuY29k
ZWRNZXNzYWdlIGdldFB1c2hQZXJtaXNzaW9uU3RhdGU6OmVuY29kZVJlcGx5KGNvbnN0IEV4cGVj
dGVkPHVpbnQKICAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7CiB9CiAKK1dlYlB1c2hE
OjpFbmNvZGVkTWVzc2FnZSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6OmVuY29kZVJlcGx5KHVu
c2lnbmVkIHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7Cisg
ICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIEluZm8+
CkBAIC00MDIsNiArNDE1LDkgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2Uo
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpHZXRQdXNoUGVybWlzc2lvblN0YXRlOgogICAgICAgICBoYW5kbGVXZWJQdXNo
RE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KGNs
aWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluY3JlbWVudFNpbGVudFB1c2hD
b3VudDoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZv
OjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNz
YWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApA
QCAtNjI4LDYgKzY0NCwxOCBAQCB2b2lkIERhZW1vbjo6Z2V0UHVzaFBlcm1pc3Npb25TdGF0ZShD
bGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHNjbwogICAgIHJlcGx5U2Vu
ZGVyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KFdlYkNvcmU6OlB1c2hQZXJtaXNzaW9uU3RhdGU6OkRl
bmllZCkpOwogfQogCit2b2lkIERhZW1vbjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KENsaWVu
dENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQpPiYmIHJl
cGx5U2VuZGVyKQoreworICAgIHJ1bkFmdGVyU3RhcnRpbmdQdXNoU2VydmljZShbdGhpcywgYnVu
ZGxlSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIo
KSwgc2VjdXJpdHlPcmlnaW4gPSBzZWN1cml0eU9yaWdpbi50b1N0cmluZygpLCByZXBseVNlbmRl
ciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSgpIG11dGFibGUgeworICAgICAgICBpZiAoIW1fcHVz
aFNlcnZpY2UpIHsKKyAgICAgICAgICAgIHJlcGx5U2VuZGVyKDApOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgbV9wdXNoU2VydmljZS0+aW5jcmVtZW50U2lsZW50
UHVzaENvdW50KGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBXVEZNb3ZlKHJlcGx5
U2VuZGVyKSk7CisgICAgfSk7Cit9CisKIENsaWVudENvbm5lY3Rpb24qIERhZW1vbjo6dG9DbGll
bnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKICAgICBhdXRvIGNs
aWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0KGNvbm5lY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGViNmNlMmQ3MmI2
MjNhZTNkZWJiOWMzNjQ1NDJkYzM2MDViYTcxODguLjM0MTdmNDg0ZWM0OWZjYmIyZGEzY2M0Mzc0
NWM5OGJlYzZjZTVjMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAyMi0wMi0yMSAgQmVuIE5oYW0gIDxuaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNoIHF1b3RhCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY4NjMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyBw
dXNoIHRlc3RzIHRvIHNob3cgYSBub3RpZmljYXRpb24uIEFkZGVkIGEgbmV3IHRlc3QgY2FzZSB0
byBtYWtlIHN1cmUgdGhhdAorICAgICAgICBzdWJzY3JpcHRpb25zIGFyZSByZW1vdmVkIHdoZW4g
YW4gb3JpZ2luIHJlYWNoZXMgaXRzIHF1b3RhIG9mIHNpbGVudCBwdXNoZXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHA6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5U
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OnNldFBlcm1pc3Npb24pOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6bWFrZVRlbXBvcmFyeURhdGFiYXNlUGF0aCk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpnZXRUb3BpY3NTeW5jKToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlB1c2hEYXRhYmFzZVRlc3Q6OmdldFRvcGljcyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQdXNoRGF0YWJhc2VUZXN0OjpyZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2Vj
dXJpdHlPcmlnaW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNlVGVzdDo6
aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om9wZXJh
dG9yPT0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6Om9yaWdpbiBjb25zdCk6
CisKIDIwMjItMDItMjEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW2lPU10gQWRqdXN0IHNvbWUgYmVoYXZpb3JzIGFyb3VuZCB0aGUgIk1hcmt1cCBJ
bWFnZSIgYWN0aW9uIGluIHRoZSBjYWxsb3V0IGJhcgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQKaW5k
ZXggOTI2ZDU2ZTg4YTQyYjk2MjA0NTg0MGJlYjJlM2NlYzg4MTUzMmMwMy4uNGFjN2NiODAxZmI0
NWExZjFiMjRmNWFjYzQ5OTg1NzYyMjRkZGJkYiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9Tb3VyY2VzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXMudHh0CkBA
IC0yNSw1ICsyNSw2IEBAIERlcHJlY2F0ZWRHbG9iYWxWYWx1ZXMuY3BwCiBKYXZhU2NyaXB0VGVz
dC5jcHAKIFBsYXRmb3JtVXRpbGl0aWVzLmNwcAogVGVzdHNDb250cm9sbGVyLmNwcAorVGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcAogVGVzdFV0aWxpdGllcy5jcHAKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4
MGYwNmE5OGNjOTE1NWU0ZWI5ZWYyNGIwNTg2Nzk4ODk2YzNmYWYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJU
ZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIldURlN0cmluZ1V0aWxpdGll
cy5oIgorI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaD4KKyNpbmNsdWRl
IDxXZWJLaXQvV0tOdW1iZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTZWN1cml0eU9yaWdpblJl
Zi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBXS0RpY3Rp
b25hcnlSZWYgbm90aWZpY2F0aW9uUGVybWlzc2lvbnMoY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5ub3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwor
fQorCitUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcihW
ZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiYmIG1hbmFnZXJzKQorICAgIDogbV9tYW5h
Z2VycyhXVEZNb3ZlKG1hbmFnZXJzKSkKKyAgICAsIG1fcGVybWlzc2lvbnMoYWRvcHRXSyhXS011
dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkpKQoreworICAgIG1fcHJvdmlkZXIgPSB7CisgICAgICAg
IHsgMCwgdGhpcyB9LAorICAgICAgICAwLCAvLyBzaG93V2ViTm90aWZpY2F0aW9uCisgICAgICAg
IDAsIC8vIGNsb3NlV2ViTm90aWZpY2F0aW9uCisgICAgICAgIDAsIC8vIGRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24KKyAgICAgICAgMCwgLy8gYWRkTm90aWZpY2F0aW9uTWFuYWdlcgorICAgICAgICAw
LCAvLyByZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyCisgICAgICAgICZUZXN0V2ViS2l0QVBJOjpu
b3RpZmljYXRpb25QZXJtaXNzaW9ucywKKyAgICAgICAgMCwgLy8gY2xlYXJOb3RpZmljYXRpb25z
CisgICAgfTsKKworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1hbmFnZXIsICZtX3Byb3ZpZGVyLmJh
c2UpOworfQorCitUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6On5UZXN0Tm90aWZpY2F0aW9uUHJv
dmlkZXIoKQoreworICAgIGZvciAoYXV0byYgbWFuYWdlciA6IG1fbWFuYWdlcnMpCisgICAgICAg
IFdLTm90aWZpY2F0aW9uTWFuYWdlclNldFByb3ZpZGVyKG1hbmFnZXIsIG51bGxwdHIpOworfQor
CitXS0RpY3Rpb25hcnlSZWYgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpub3RpZmljYXRpb25Q
ZXJtaXNzaW9ucygpIGNvbnN0Cit7CisgICAgV0tSZXRhaW4obV9wZXJtaXNzaW9ucy5nZXQoKSk7
CisgICAgcmV0dXJuIG1fcGVybWlzc2lvbnMuZ2V0KCk7Cit9CisKK3ZvaWQgVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyOjpzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBib29sIGFs
bG93ZWQpCit7CisgICAgYXV0byB3a0FsbG93ZWQgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShh
bGxvd2VkKSk7CisgICAgYXV0byB3a09yaWdpblN0cmluZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcob3JpZ2luLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBXS0RpY3Rpb25h
cnlTZXRJdGVtKG1fcGVybWlzc2lvbnMuZ2V0KCksIHdrT3JpZ2luU3RyaW5nLmdldCgpLCB3a0Fs
bG93ZWQuZ2V0KCkpOworCisgICAgYXV0byB3a09yaWdpbiA9IGFkb3B0V0soV0tTZWN1cml0eU9y
aWdpbkNyZWF0ZUZyb21TdHJpbmcod2tPcmlnaW5TdHJpbmcuZ2V0KCkpKTsKKyAgICBmb3IgKGF1
dG8mIG1hbmFnZXIgOiBtX21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJQ
cm92aWRlckRpZFVwZGF0ZU5vdGlmaWNhdGlvblBvbGljeShtYW5hZ2VyLCB3a09yaWdpbi5nZXQo
KSwgYWxsb3dlZCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmggYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJl
MDQ4YmY5YTJkODNkOGU0MmQ1ODZjMTZhMTJlMWVkMzYxNDMxMGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9X
S011dGFibGVEaWN0aW9uYXJ5Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTm90aWZpY2F0aW9uTWFu
YWdlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS05vdGlmaWNhdGlvblByb3ZpZGVyLmg+CisjaW5j
bHVkZSA8V2ViS2l0L1dLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
Y2xhc3MgVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoVmVj
dG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJik7CisgICAgflRlc3ROb3RpZmljYXRpb25Q
cm92aWRlcigpOworCisgICAgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25z
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRQZXJtaXNzaW9uKGNvbnN0IFN0cmluZyYgb3JpZ2luLCBi
b29sIGFsbG93ZWQpOworCitwcml2YXRlOgorICAgIFZlY3RvcjxXS05vdGlmaWNhdGlvbk1hbmFn
ZXJSZWY+IG1fbWFuYWdlcnM7CisgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFyeVJl
Zj4gbV9wZXJtaXNzaW9uczsKKyAgICBXS05vdGlmaWNhdGlvblByb3ZpZGVyVjAgbV9wcm92aWRl
cjsKK307CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDAyMjUxOTIyZjZkNDYzZDQx
NDVhYTA4NTgxN2UzM2U5N2MzODFkNS4uMWNlM2Y0MmJhOTI5YWRhY2E0NTNiZDcyN2E5YzM2OWJm
YmVmM2JiMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI5ODksNiArMjk4OSw4IEBACiAJ
CUU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERhdGVJbnB1dFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFQjIzMEQzRDI0NUU3MjJFMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCQ2hlY2twb2ludFdBTC5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIzMEQzRTI0NUU3MjYzMDBDNjZBRDEgLyogSURCQ2hl
Y2twb2ludFdBTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElE
QkNoZWNrcG9pbnRXQUwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCNEQzMjA3
MjdDMDQ1NDMwMDgxQThFNCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRUI0RDMyMDgyN0MwNDU0NDAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUI5QUQ4QzYyNzY0NkU3MzAwRDg5M0E0IC8q
IFB1c2hEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
dXNoRGF0YWJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQkE3NUM0ODI3
NUVEN0JFMDBENkQzMUMgLyogUHVzaE1lc3NhZ2VDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHVzaE1lc3NhZ2VDcnlwdG8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
Qzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2FibGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMzI3NSw2ICszMjc3LDggQEAKIAkJCQlCQzEzMTg4MzExNzExNEE4MDBCNjk3Mjcg
LyogUGxhdGZvcm1VdGlsaXRpZXMuaCAqLywKIAkJCQlCQzkwOTUxQjEyNTUzM0Q3MDAwODM3NTYg
LyogUGxhdGZvcm1XZWJWaWV3LmggKi8sCiAJCQkJQkNCOUU3RkExMTIzNTlBMzAwQTEzN0UwIC8q
IFRlc3QuaCAqLywKKwkJCQlFQjREMzIwNzI3QzA0NTQzMDA4MUE4RTQgLyogVGVzdE5vdGlmaWNh
dGlvblByb3ZpZGVyLmNwcCAqLywKKwkJCQlFQjREMzIwODI3QzA0NTQ0MDA4MUE4RTQgLyogVGVz
dE5vdGlmaWNhdGlvblByb3ZpZGVyLmggKi8sCiAJCQkJQkMxMzFBQTgxMTcxMzFGQzAwQjY5NzI3
IC8qIFRlc3RzQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNCOUU3QzcxMTIzNEUzQTAwQTEzN0Uw
IC8qIFRlc3RzQ29udHJvbGxlci5oICovLAogCQkJCTdCQjc1NEIwMjc0RTM5QTEwMEQwMEVDMSAv
KiBUZXN0VXRpbGl0aWVzLmNwcCAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHAKaW5kZXggNzBiY2UzOTdjMjA1MjEwZTNhNTY3NzU4
YTZiNzdhM2IyZDMwMjljMi4uZWYxNjAxOTY0YmZjZjg1Y2YzMDk0ZDlkNWYwZmU1ZjViNjRmOWZl
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRh
YmFzZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRh
YmFzZS5jcHAKQEAgLTM1LDE4ICszNSwyNiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1zdGF0aWMgUHVzaERhdGFiYXNlOjpQdXNoV2Fr
ZVN0YXRlVG9Ub3BpY01hcCBnZXRUb3BpY3NCeVdha2VTdGF0ZVN5bmMoUHVzaERhdGFiYXNlJiBk
YXRhYmFzZSkKK3N0YXRpYyBTdHJpbmcgbWFrZVRlbXBvcmFyeURhdGFiYXNlUGF0aCgpCit7Cisg
ICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICBhdXRvIHBhdGgg
PSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiUHVzaERhdGFiYXNlIiwgaGFuZGxlLCAi
LmRiIik7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgcmV0dXJuIHBh
dGg7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRUb3BpY3NTeW5jKFB1c2hEYXRhYmFz
ZSYgZGF0YWJhc2UpCiB7CiAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgUHVzaERhdGFiYXNl
OjpQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCBnZXRSZXN1bHQ7CisgICAgVmVjdG9yPFN0cmluZz4g
dG9waWNzOwogCi0gICAgZGF0YWJhc2UuZ2V0VG9waWNzQnlXYWtlU3RhdGUoWyZkb25lLCAmZ2V0
UmVzdWx0XShQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFwJiYgcmVzdWx0KSB7
Ci0gICAgICAgIGdldFJlc3VsdCA9IFdURk1vdmUocmVzdWx0KTsKKyAgICBkYXRhYmFzZS5nZXRU
b3BpY3MoWyZkb25lLCAmdG9waWNzXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgIHRvcGljcyA9
IFdURk1vdmUocmVzdWx0KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfSk7CiAgICAgVXRp
bDo6cnVuKCZkb25lKTsKIAotICAgIHJldHVybiBnZXRSZXN1bHQ7CisgICAgcmV0dXJuIHRvcGlj
czsKIH0KIAogY2xhc3MgUHVzaERhdGFiYXNlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsK
QEAgLTU0LDMyICs2Miw0MyBAQCBwdWJsaWM6CiAgICAgc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRh
YmFzZT4gZGI7CiAKICAgICBQdXNoUmVjb3JkIHJlY29yZDEgewotICAgICAgICBQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllcigpLAotICAgICAgICAiY29tLmFwcGxlLlNhZmFyaSJfcywKLSAgICAg
ICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJfcywKLSAgICAgICAgImh0dHBzOi8vd3d3LmFwcGxl
LmNvbS9tYWMiX3MsCi0gICAgICAgICJodHRwczovL3B1c2hFbmRwb2ludDEiX3MsCi0gICAgICAg
ICJ0b3BpYzEiX3MsCi0gICAgICAgIHsgMCwgMSB9LAotICAgICAgICB7IDEsIDIgfSwKLSAgICAg
ICAgeyAyLCAzIH0sCi0gICAgICAgIHsgNCwgNSB9LAotICAgICAgICBjb252ZXJ0U2Vjb25kc1Rv
RXBvY2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAgICAgIFB1c2hXYWtlU3RhdGU6Ok9wcG9y
dHVuaXN0aWMKLSAgICB9OwotICAgIFB1c2hSZWNvcmQgcmVjb3JkMiB7CiAgICAgICAgIFB1c2hT
dWJzY3JpcHRpb25JZGVudGlmaWVyKCksCiAgICAgICAgICJjb20uYXBwbGUud2ViYXBwIl9zLAog
ICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cu
YXBwbGUuY29tL2lwaG9uZSJfcywKICAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MiJfcywK
LSAgICAgICAgInRvcGljMiJfcywKKyAgICAgICAgInRvcGljMSJfcywKICAgICAgICAgeyA1LCA2
IH0sCiAgICAgICAgIHsgNiwgNyB9LAogICAgICAgICB7IDcsIDggfSwKICAgICAgICAgeyA4LCA5
IH0KICAgICB9OworICAgIFB1c2hSZWNvcmQgcmVjb3JkMiB7CisgICAgICAgIFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyKCksCisgICAgICAgICJjb20uYXBwbGUuU2FmYXJpIl9zLAorICAgICAg
ICAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZyJfcywKKyAgICAgICAgImh0dHBzOi8vd3d3LndlYmtp
dC5vcmcvYmxvZyJfcywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50NCJfcywKKyAgICAg
ICAgInRvcGljNCJfcywKKyAgICAgICAgeyAxNCwgMTUgfSwKKyAgICAgICAgeyAxNiwgMTcgfSwK
KyAgICAgICAgeyAxOCwgMTkgfSwKKyAgICAgICAgeyAyMCwgMjEgfQorICAgIH07CiAgICAgUHVz
aFJlY29yZCByZWNvcmQzIHsKKyAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwK
KyAgICAgICAgImNvbS5hcHBsZS5TYWZhcmkiX3MsCisgICAgICAgICJodHRwczovL3d3dy5hcHBs
ZS5jb20iX3MsCisgICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20vbWFjIl9zLAorICAgICAg
ICAiaHR0cHM6Ly9wdXNoRW5kcG9pbnQxIl9zLAorICAgICAgICAidG9waWMyIl9zLAorICAgICAg
ICB7IDAsIDEgfSwKKyAgICAgICAgeyAxLCAyIH0sCisgICAgICAgIHsgMiwgMyB9LAorICAgICAg
ICB7IDQsIDUgfSwKKyAgICAgICAgY29udmVydFNlY29uZHNUb0Vwb2NoVGltZVN0YW1wKDE2NDMz
NTAwMDApLAorICAgIH07CisgICAgUHVzaFJlY29yZCByZWNvcmQ0IHsKICAgICAgICAgUHVzaFN1
YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKICAgICAgICAgImNvbS5hcHBsZS5TYWZhcmkiX3MsCiAg
ICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20iX3MsCkBAIC05NSw2ICsxMTQsNyBAQCBwdWJs
aWM6CiAgICAgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiBpbnNlcnRSZXN1bHQxOwogICAgIHN0
ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4gaW5zZXJ0UmVzdWx0MjsKICAgICBzdGQ6Om9wdGlvbmFs
PFB1c2hSZWNvcmQ+IGluc2VydFJlc3VsdDM7CisgICAgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3Jk
PiBpbnNlcnRSZXN1bHQ0OwogCiAgICAgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiBpbnNlcnRS
ZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkKQogICAgIHsKQEAgLTE2NywxNSArMTg3LDU3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJvd0lkZW50aWZpZXJzOwogICAgIH0KIAotICAg
IFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0VG9waWNzQnlXYWtlU3Rh
dGUoKQorICAgIFZlY3RvcjxTdHJpbmc+IGdldFRvcGljcygpCiAgICAgewotICAgICAgICByZXR1
cm4gZ2V0VG9waWNzQnlXYWtlU3RhdGVTeW5jKCpkYik7CisgICAgICAgIHJldHVybiBnZXRUb3Bp
Y3NTeW5jKCpkYik7CisgICAgfQorCisgICAgVmVjdG9yPFJlbW92ZWRQdXNoUmVjb3JkPiByZW1v
dmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQpCisgICAg
eworICAgICAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICAgICAgVmVjdG9yPFJlbW92ZWRQdXNo
UmVjb3JkPiByZW1vdmVkUmVjb3JkczsKKworICAgICAgICBkYi0+cmVtb3ZlUmVjb3Jkc0J5QnVu
ZGxlSWRlbnRpZmllcihidW5kbGVJRCwgWyZkb25lLCAmcmVtb3ZlZFJlY29yZHNdKGF1dG8mJiBy
ZXN1bHQpIHsKKyAgICAgICAgICAgIHJlbW92ZWRSZWNvcmRzID0gV1RGTW92ZShyZXN1bHQpOwor
ICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGlsOjpydW4o
JmRvbmUpOworCisgICAgICAgIHJldHVybiByZW1vdmVkUmVjb3JkczsKKyAgICB9CisKKyAgICBW
ZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJB
bmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNl
Y3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAg
IFZlY3RvcjxSZW1vdmVkUHVzaFJlY29yZD4gcmVtb3ZlZFJlY29yZHM7CisKKyAgICAgICAgZGIt
PnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbihidW5kbGVJ
RCwgc2VjdXJpdHlPcmlnaW4sIFsmZG9uZSwgJnJlbW92ZWRSZWNvcmRzXShhdXRvJiYgcmVzdWx0
KSB7CisgICAgICAgICAgICByZW1vdmVkUmVjb3JkcyA9IFdURk1vdmUocmVzdWx0KTsKKyAgICAg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsKKyAgICAgICAgVXRpbDo6cnVuKCZkb25l
KTsKKworICAgICAgICByZXR1cm4gcmVtb3ZlZFJlY29yZHM7CisgICAgfQorCisgICAgdW5zaWdu
ZWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4pCisgICAgeworICAgICAgICBib29sIGRvbmUgPSBmYWxz
ZTsKKyAgICAgICAgdW5zaWduZWQgY291bnQgPSAwOworCisgICAgICAgIGRiLT5pbmNyZW1lbnRT
aWxlbnRQdXNoQ291bnQoYnVuZGxlSUQsIHNlY3VyaXR5T3JpZ2luLCBbJmRvbmUsICZjb3VudF0o
aW50IHJlc3VsdCkgeworICAgICAgICAgICAgY291bnQgPSByZXN1bHQ7CisgICAgICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAgICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAg
ICAgICAgcmV0dXJuIGNvdW50OwogICAgIH0KIAogICAgIHZvaWQgU2V0VXAoKSBmaW5hbAogICAg
IHsKICAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgICAgIFB1c2hEYXRhYmFzZTo6Y3Jl
YXRlKFNRTGl0ZURhdGFiYXNlOjppbk1lbW9yeVBhdGgoKSwgW3RoaXMsICZkb25lXShzdGQ6OnVu
aXF1ZV9wdHI8UHVzaERhdGFiYXNlPiYmIGRhdGFiYXNlKSB7CisgICAgICAgIFB1c2hEYXRhYmFz
ZTo6Y3JlYXRlKG1ha2VUZW1wb3JhcnlEYXRhYmFzZVBhdGgoKSwgW3RoaXMsICZkb25lXShzdGQ6
OnVuaXF1ZV9wdHI8UHVzaERhdGFiYXNlPiYmIGRhdGFiYXNlKSB7CiAgICAgICAgICAgICBkYiA9
IFdURk1vdmUoZGF0YWJhc2UpOwogICAgICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgICAgIH0p
OwpAQCAtMTg1LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUX1RSVUUoaW5zZXJ0
UmVzdWx0MSA9IGluc2VydFJlY29yZChyZWNvcmQxKSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGlu
c2VydFJlc3VsdDIgPSBpbnNlcnRSZWNvcmQocmVjb3JkMikpOwogICAgICAgICBBU1NFUlRfVFJV
RShpbnNlcnRSZXN1bHQzID0gaW5zZXJ0UmVjb3JkKHJlY29yZDMpKTsKKyAgICAgICAgQVNTRVJU
X1RSVUUoaW5zZXJ0UmVzdWx0NCA9IGluc2VydFJlY29yZChyZWNvcmQ0KSk7CiAgICAgfQogfTsK
IApAQCAtMjAwLDggKzI2Myw3IEBAIHN0YXRpYyBib29sIG9wZXJhdG9yPT0oY29uc3QgUHVzaFJl
Y29yZCYgYSwgY29uc3QgUHVzaFJlY29yZCYgYikKICAgICAgICAgJiYgYS5jbGllbnRQdWJsaWNL
ZXkgPT0gYi5jbGllbnRQdWJsaWNLZXkKICAgICAgICAgJiYgYS5jbGllbnRQcml2YXRlS2V5ID09
IGIuY2xpZW50UHJpdmF0ZUtleQogICAgICAgICAmJiBhLnNoYXJlZEF1dGhTZWNyZXQgPT0gYi5z
aGFyZWRBdXRoU2VjcmV0Ci0gICAgICAgICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0
aW9uVGltZQotICAgICAgICAmJiBhLndha2VTdGF0ZSA9PSBiLndha2VTdGF0ZTsKKyAgICAgICAg
JiYgYS5leHBpcmF0aW9uVGltZSA9PSBiLmV4cGlyYXRpb25UaW1lOwogfQogCiBURVNUX0YoUHVz
aERhdGFiYXNlVGVzdCwgSW5zZXJ0UmVjb3JkKQpAQCAtMjE0LDI2ICsyNzYsNzkgQEAgVEVTVF9G
KFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKICAgICBleHBlY3RlZFJlY29yZDIuaWRl
bnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVy
VHlwZT4oMik7CiAgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQyID09ICppbnNlcnRSZXN1
bHQyKTsKIAotICAgIC8vIFNpbmNlIHJlY29yZDMgaXMgaW4gdGhlIHNhbWUgU3Vic2NyaXB0aW9u
U2V0IGFzIHJlY29yZDEsIGl0IHNob3VsZAotICAgIC8vIGluaGVyaXQgcmVjb3JkMSdzIHdha2Ug
c3RhdGUuCiAgICAgYXV0byBleHBlY3RlZFJlY29yZDMgPSByZWNvcmQzOwogICAgIGV4cGVjdGVk
UmVjb3JkMy5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlv
bklkZW50aWZpZXJUeXBlPigzKTsKLSAgICBleHBlY3RlZFJlY29yZDMud2FrZVN0YXRlID0gZXhw
ZWN0ZWRSZWNvcmQxLndha2VTdGF0ZTsKICAgICBFWFBFQ1RfVFJVRShleHBlY3RlZFJlY29yZDMg
PT0gKmluc2VydFJlc3VsdDMpOwogCisgICAgYXV0byBleHBlY3RlZFJlY29yZDQgPSByZWNvcmQ0
OworICAgIGV4cGVjdGVkUmVjb3JkNC5pZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPig0KTsKKyAgICBFWFBFQ1RfVFJVRShleHBl
Y3RlZFJlY29yZDQgPT0gKmluc2VydFJlc3VsdDQpOworCiAgICAgLy8gSW5zZXJ0aW5nIGEgcmVj
b3JkIHdpdGggdGhlIHNhbWUgKGJ1bmRsZUlELCBzY29wZSkgYXMgcmVjb3JkIDEgc2hvdWxkIGZh
aWwuCi0gICAgUHVzaFJlY29yZCByZWNvcmQ0ID0gcmVjb3JkMTsKLSAgICByZWNvcmQ0LmVuZHBv
aW50ID0gImh0dHBzOi8vd3d3LndlYmtpdC5vcmciX3M7Ci0gICAgRVhQRUNUX0ZBTFNFKGluc2Vy
dFJlY29yZChXVEZNb3ZlKHJlY29yZDQpKSk7CisgICAgUHVzaFJlY29yZCByZWNvcmQ1ID0gcmVj
b3JkMTsKKyAgICByZWNvcmQ0LmVuZHBvaW50ID0gImh0dHBzOi8vcHVzaEVuZHBvaW50NSJfczsK
KyAgICBFWFBFQ1RfRkFMU0UoaW5zZXJ0UmVjb3JkKFdURk1vdmUocmVjb3JkNSkpKTsKIAotICAg
IEVYUEVDVF9FUShnZXRSb3dJZGVudGlmaWVycygpLCAoSGFzaFNldDx1aW50NjRfdD4geyAxLCAy
LCAzIH0pKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWlu
dDY0X3Q+IHsgMSwgMiwgMywgNCB9KSk7CiB9CiAKIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBS
ZW1vdmVSZWNvcmQpCiB7CiAgICAgRVhQRUNUX1RSVUUocmVtb3ZlUmVjb3JkQnlSb3dJZGVudGlm
aWVyKDEpKTsKICAgICBFWFBFQ1RfRkFMU0UocmVtb3ZlUmVjb3JkQnlSb3dJZGVudGlmaWVyKDEp
KTsKLSAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWludDY0X3Q+
IHsgMiwgMyB9KSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0
PHVpbnQ2NF90PiB7IDIsIDMsIDQgfSkpOworfQorCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwg
UmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllcikKK3sKKyAgICAvLyByZWNvcmQyLCByZWNv
cmQzLCBhbmQgcmVjb3JkNCBoYXZlIHRoZSBzYW1lIGJ1bmRsZUlELgorICAgIGF1dG8gcmVtb3Zl
ZFJlY29yZHMgPSByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyKHJlY29yZDIuYnVuZGxl
SUQpOworICAgIGJvb2wgY29udGFpbnNSZWNvcmQyID0gcmVtb3ZlZFJlY29yZHMuZmluZElmKFt0
b3BpYyA9IHJlY29yZDIudG9waWNdKGF1dG8mIHJlY29yZCkgeworICAgICAgICByZXR1cm4gdG9w
aWMgPT0gcmVjb3JkLnRvcGljOworICAgIH0pICE9IG5vdEZvdW5kOworICAgIGJvb2wgY29udGFp
bnNSZWNvcmQzID0gcmVtb3ZlZFJlY29yZHMuZmluZElmKFt0b3BpYyA9IHJlY29yZDMudG9waWNd
KGF1dG8mIHJlY29yZCkgeworICAgICAgICByZXR1cm4gdG9waWMgPT0gcmVjb3JkLnRvcGljOwor
ICAgIH0pICE9IG5vdEZvdW5kOworICAgIGJvb2wgY29udGFpbnNSZWNvcmQ0ID0gcmVtb3ZlZFJl
Y29yZHMuZmluZElmKFt0b3BpYyA9IHJlY29yZDQudG9waWNdKGF1dG8mIHJlY29yZCkgeworICAg
ICAgICByZXR1cm4gdG9waWMgPT0gcmVjb3JkLnRvcGljOworICAgIH0pICE9IG5vdEZvdW5kOwor
CisgICAgRVhQRUNUX1RSVUUoY29udGFpbnNSZWNvcmQyKTsKKyAgICBFWFBFQ1RfVFJVRShjb250
YWluc1JlY29yZDMpOworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkNCk7CisgICAgRVhQ
RUNUX0VRKHJlbW92ZWRSZWNvcmRzLnNpemUoKSwgM3UpOworICAgIEVYUEVDVF9FUShnZXRSb3dJ
ZGVudGlmaWVycygpLCAoSGFzaFNldDx1aW50NjRfdD4geyAxIH0pKTsKKworICAgIC8vIEluc2Vy
dGluZyBhIG5ldyByZWNvcmQgc2hvdWxkIHByb2R1Y2UgYSBuZXcgaWRlbnRpZmllci4KKyAgICBQ
dXNoUmVjb3JkIHJlY29yZDUgPSByZWNvcmQzOworICAgIGF1dG8gaW5zZXJ0UmVzdWx0ID0gaW5z
ZXJ0UmVjb3JkKFdURk1vdmUocmVjb3JkNSkpOworICAgIEVYUEVDVF9UUlVFKGluc2VydFJlc3Vs
dCk7CisgICAgRVhQRUNUX0VRKGluc2VydFJlc3VsdC0+aWRlbnRpZmllciwgbWFrZU9iamVjdElk
ZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPig1KSk7CisgICAgRVhQRUNU
X0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEsIDUgfSkpOwor
fQorCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgUmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRp
ZmllckFuZFNlY3VyaXR5T3JpZ2luKQoreworICAgIC8vIHJlY29yZDMgYW5kIHJlY29yZDQgaGF2
ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2VjdXJpdHlPcmlnaW4uCisgICAgYXV0byByZW1vdmVk
UmVjb3JkcyA9IHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdp
bihyZWNvcmQzLmJ1bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBib29sIGNv
bnRhaW5zUmVjb3JkMyA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQzLnRv
cGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3Bp
YzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkNCA9IHJlbW92
ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQ0LnRvcGljXShhdXRvJiByZWNvcmQpIHsK
KyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3Vu
ZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkMyk7CisgICAgRVhQRUNUX1RSVUUo
Y29udGFpbnNSZWNvcmQ0KTsKKyAgICBFWFBFQ1RfRVEocmVtb3ZlZFJlY29yZHMuc2l6ZSgpLCAy
dSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90
PiB7IDEsIDIgfSkpOworCisgICAgLy8gSW5zZXJ0aW5nIGEgbmV3IHJlY29yZCBzaG91bGQgcHJv
ZHVjZSBhIG5ldyBpZGVudGlmaWVyLgorICAgIFB1c2hSZWNvcmQgcmVjb3JkNSA9IHJlY29yZDM7
CisgICAgYXV0byBpbnNlcnRSZXN1bHQgPSBpbnNlcnRSZWNvcmQoV1RGTW92ZShyZWNvcmQ1KSk7
CisgICAgRVhQRUNUX1RSVUUoaW5zZXJ0UmVzdWx0KTsKKyAgICBFWFBFQ1RfRVEoaW5zZXJ0UmVz
dWx0LT5pZGVudGlmaWVyLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0aW9uSWRl
bnRpZmllclR5cGU+KDUpKTsKKyAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhh
c2hTZXQ8dWludDY0X3Q+IHsgMSwgMiwgNSB9KSk7CiB9CiAKIFRFU1RfRihQdXNoRGF0YWJhc2VU
ZXN0LCBHZXRSZWNvcmRCeVRvcGljKQpAQCAtMjU5LDI5ICszNzQsMjcgQEAgVEVTVF9GKFB1c2hE
YXRhYmFzZVRlc3QsIEdldFJlY29yZEJ5QnVuZGxlSWRlbnRpZmllckFuZFNjb3BlKQogICAgIEVY
UEVDVF9GQUxTRShyZXN1bHQzKTsKIH0KIAotVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEdldFRv
cGljc0J5V2FrZVN0YXRlKQorVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEdldFRvcGljcykKIHsK
LSAgICBIYXNoTWFwPFN0cmluZywgUHVzaFdha2VTdGF0ZT4gZXhwZWN0ZWQgewotICAgICAgICB7
ICJ0b3BpYzEiLCBQdXNoV2FrZVN0YXRlOjpPcHBvcnR1bmlzdGljIH0sCi0gICAgICAgIHsgInRv
cGljMiIsIFB1c2hXYWtlU3RhdGU6Oldha2luZyB9LAotICAgICAgICB7ICJ0b3BpYzMiLCBQdXNo
V2FrZVN0YXRlOjpPcHBvcnR1bmlzdGljIH0KLSAgICB9OwotICAgIEhhc2hNYXA8U3RyaW5nLCBQ
dXNoV2FrZVN0YXRlPiBhY3R1YWw7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIFt3YWtlU3RhdGUs
IHRvcGljc10gOiBnZXRUb3BpY3NCeVdha2VTdGF0ZSgpKSB7Ci0gICAgICAgIGZvciAoY29uc3Qg
YXV0byYgdG9waWMgOiB0b3BpY3MpCi0gICAgICAgICAgICBhY3R1YWwuYWRkKHRvcGljLCB3YWtl
U3RhdGUpOwotICAgIH0KLQotICAgIEVYUEVDVF9FUShleHBlY3RlZCwgYWN0dWFsKTsKKyAgICBW
ZWN0b3I8U3RyaW5nPiBleHBlY3RlZCB7ICJ0b3BpYzEiX3MsICJ0b3BpYzIiX3MsICJ0b3BpYzMi
X3MsICJ0b3BpYzQiX3MgfTsKKyAgICBFWFBFQ1RfRVEoZ2V0VG9waWNzKCksIGV4cGVjdGVkKTsK
IH0KIAotc3RhdGljIFN0cmluZyBtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCkKK1RFU1RfRihQ
dXNoRGF0YWJhc2VUZXN0LCBJbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQpCiB7Ci0gICAgRmlsZVN5
c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKLSAgICBhdXRvIHBhdGggPSBGaWxlU3lz
dGVtOjpvcGVuVGVtcG9yYXJ5RmlsZSgiUHVzaERhdGFiYXNlIiwgaGFuZGxlLCAiLmRiIik7Ci0g
ICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Ci0gICAgcmV0dXJuIHBhdGg7CisgICAg
YXV0byBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3VudChyZWNvcmQxLmJ1bmRsZUlELCBy
ZWNvcmQxLnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDF1KTsKKworICAg
IC8vIHJlY29yZDEgYW5kIHJlY29yZDMgaGF2ZSBkaWZmZXJlbnQgYnVuZGxlSUQgYW5kIHNlY3Vy
aXR5T3JpZ2luLgorICAgIGNvdW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50KHJlY29yZDMu
YnVuZGxlSUQsIHJlY29yZDMuc2VjdXJpdHlPcmlnaW4pOworICAgIEVYUEVDVF9FUShjb3VudCwg
MXUpOworCisgICAgLy8gcmVjb3JkMyBhbmQgcmVjb3JkNCBoYXZlIHRoZSBzYW1lIGJ1bmRsZUlE
IGFuZCBzZWN1cml0eU9yaWdpbi4KKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVudFB1c2hDb3Vu
dChyZWNvcmQ0LmJ1bmRsZUlELCByZWNvcmQ0LnNlY3VyaXR5T3JpZ2luKTsKKyAgICBFWFBFQ1Rf
RVEoY291bnQsIDJ1KTsKKworICAgIGNvdW50ID0gaW5jcmVtZW50U2lsZW50UHVzaENvdW50KCJu
b25leGlzdGVudCJfcywgIm5vbmV4aXN0ZW50Il9zKTsKKyAgICBFWFBFQ1RfRVEoY291bnQsIDB1
KTsKIH0KIAogVEVTVChQdXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdodE9wcykKQEAgLTMxNCw3ICs0
MjcsNiBAQCBURVNUKFB1c2hEYXRhYmFzZSwgTWFueUluRmxpZ2h0T3BzKQogICAgICAgICAgICAg
eyAyLCAzIH0sCiAgICAgICAgICAgICB7IDQsIDUgfSwKICAgICAgICAgICAgIGNvbnZlcnRTZWNv
bmRzVG9FcG9jaFRpbWVTdGFtcCgxNjQzMzUwMDAwKSwKLSAgICAgICAgICAgIFB1c2hXYWtlU3Rh
dGU6Oldha2luZwogICAgICAgICB9OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCByZWNvcmRDb3VudDsgaSsrKSB7CkBAIC0zMzksOCArNDUxLDcgQEAgVEVTVChQdXNoRGF0YWJh
c2UsIE1hbnlJbkZsaWdodE9wcykKICAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKICAgICAgICAg
QVNTRVJUX1RSVUUoY3JlYXRlUmVzdWx0KTsKIAotICAgICAgICBhdXRvIGdldFJlc3VsdCA9IGdl
dFRvcGljc0J5V2FrZVN0YXRlU3luYygqY3JlYXRlUmVzdWx0KTsKLSAgICAgICAgYXV0byB0b3Bp
Y3MgPSBnZXRSZXN1bHQudGFrZShQdXNoV2FrZVN0YXRlOjpXYWtpbmcpOworICAgICAgICBhdXRv
IHRvcGljcyA9IGdldFRvcGljc1N5bmMoKmNyZWF0ZVJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9F
USh0b3BpY3Muc2l6ZSgpLCByZWNvcmRDb3VudCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IGI2NzI5Njc4YWY5
OTg1N2QyYWZmOTBjM2NhZTQzZTZmYjI0N2NhYjQuLjhjZjU4ZGVmODY0Njk5MTJiNWEzZmIxOWFm
ZmFmMjkzYThjYmRiYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHVzaEFQSS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1B1c2hBUEkubW0KQEAgLTI5LDcgKzI5LDEwIEBACiAjaW1wb3J0ICJIVFRQU2VydmVy
LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tOb3RpZmljYXRpb25Qcm92aWRlci5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgpAQCAt
ODksNiArOTIsNyBAQCBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+
IHsKICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlz
dGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90
aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKICAgICB0cnkgewogICAgICAgICBpZiAoIWV2ZW50
LmRhdGEpIHsKICAgICAgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2VpdmVkOiBudWxsIGRh
dGEiKTsKQEAgLTEzOCw2ICsxNDIsOSBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnQpCiAK
ICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogCisgICAgYXV0byBwcm92aWRlciA9IFRlc3RXZWJLaXRBUEk6OlRl
c3ROb3RpZmljYXRpb25Qcm92aWRlcih7IFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX25v
dGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hh
cmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSB9KTsKKyAgICBwcm92aWRlci5z
ZXRQZXJtaXNzaW9uKHNlcnZlci5vcmlnaW4oKSwgdHJ1ZSk7CisKICAgICBhdXRvIG1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW1B1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3Nh
Z2UgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAi
c3ciXTsKIApAQCAtMTg4LDYgKzE5NSw3IEBAIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIChldmVudCkgPT4gewogICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlYWR5Iik7CiB9KTsKIHNl
bGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaCIsIChldmVudCkgPT4geworICAgIHNlbGYucmVnaXN0
cmF0aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOwogICAgIGlmICghZXZlbnQu
ZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGF0YS50ZXh0
KCk7CkBAIC0yMjUsNiArMjMzLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0aE5v
UGFnZXNTdWNjZXNzZnVsKQogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dl
YlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0
b3JlKFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlk
ZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3Vy
YXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90
aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2Vy
KCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUp
OworCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhh
bmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2Fn
ZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTI3MCw2ICsyODEsOSBAQCBURVNUKFB1
c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc0ZhaWwpCiAgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAg
ICBjbGVhcldlYnNpdGVEYXRhU3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0p
OwogCisgICAgYXV0byBwcm92aWRlciA9IFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Q
cm92aWRlcih7IFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX25vdGlmaWNhdGlvbk1hbmFn
ZXJGb3JUZXN0aW5nXSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtl
ck5vdGlmaWNhdGlvbk1hbmFnZXIoKSB9KTsKKyAgICBwcm92aWRlci5zZXRQZXJtaXNzaW9uKHNl
cnZlci5vcmlnaW4oKSwgdHJ1ZSk7CisKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHRO
UyhbW1B1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3ciXTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9u
Lm1tCmluZGV4IDliZTVhMjBhMGMwYjg0NTc0NDc2YzExOTAxOTRkMjkyOWM2YTc2NzIuLjNkNTcx
NmE4ODZmNWMzZGUwMTJkMzFkNjM3NGY3OGVjMGRkYzM0MWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI5
LDEwICsyOSwxMiBAQAogI2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3RpZmljYXRpb25Q
cm92aWRlci5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYlB1
c2hEYWVtb25Db25zdGFudHMuaD4KQEAgLTQyNiwxMCArNDI4LDYgQEAgcHJvdGVjdGVkOgogCiAg
ICAgICAgIG1fbm90aWZpY2F0aW9uTWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbTm90aWZpY2F0
aW9uU2NyaXB0TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICAgICAgW1ttX2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
X25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJub3RlIl07Ci0KLSAgICAg
ICAgbV93ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOm1fY29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgICAgICBtX3VpRGVsZWdhdGUgPSBhZG9wdE5TKFtbTm90aWZpY2F0aW9uUGVy
bWlzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFttX3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTptX3VpRGVsZWdhdGUuZ2V0KCldOwogICAgIH0KIAogICAgIHZvaWQgbG9hZFJlcXVl
c3QoY29uc3QgY2hhciogaHRtbFNvdXJjZSwgY29uc3QgY2hhciogc2VydmljZVdvcmtlclNjcmlw
dFNvdXJjZSkKQEAgLTQ0NCw2ICs0NDIsMTIgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgeyAi
L3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9
IH0sIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgfSB9CiAgICAgICAgIH0sIFRlc3RXZWJLaXRB
UEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKSk7CiAKKyAgICAgICAgbV9ub3RpZmljYXRp
b25Qcm92aWRlciA9IG1ha2VVbmlxdWU8VGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyPihWZWN0b3I8V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiB7IFtbbV9jb25maWd1cmF0
aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlm
aWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigp
IH0pOworICAgICAgICBtX25vdGlmaWNhdGlvblByb3ZpZGVyLT5zZXRQZXJtaXNzaW9uKG1fc2Vy
dmVyLT5vcmlnaW4oKSwgdHJ1ZSk7CisKKyAgICAgICAgbV93ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOm1fY29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBtX3VpRGVsZWdh
dGUgPSBhZG9wdE5TKFtbTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgICAgIFttX3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTptX3VpRGVsZWdhdGUuZ2V0KCld
OwogICAgICAgICBbbV93ZWJWaWV3IGxvYWRSZXF1ZXN0Om1fc2VydmVyLT5yZXF1ZXN0KCldOwog
ICAgIH0KIApAQCAtNDUyLDEyICs0NTYsNDMgQEAgcHJvdGVjdGVkOgogICAgICAgICBjbGVhblVw
VGVzdFdlYlB1c2hEKG1fdGVtcERpcmVjdG9yeS5nZXQoKSk7CiAgICAgfQogCisgICAgUmV0YWlu
UHRyPE5TRGljdGlvbmFyeT4gaW5qZWN0UHVzaE1lc3NhZ2UoTlNEaWN0aW9uYXJ5ICpwdXNoVXNl
ckluZm8pCisgICAgeworICAgICAgICBTdHJpbmcgc2NvcGUgPSBtX3NlcnZlci0+cmVxdWVzdCgp
LlVSTC5hYnNvbHV0ZVN0cmluZzsKKyAgICAgICAgU3RyaW5nIHRvcGljID0gImNvbS5hcHBsZS5X
ZWJLaXQuVGVzdFdlYktpdEFQSSAiX3N0ciArIHNjb3BlOworICAgICAgICBpZCBvYmogPSBAewor
ICAgICAgICAgICAgQCJ0b3BpYyI6IChOU1N0cmluZyAqKXRvcGljLAorICAgICAgICAgICAgQCJ1
c2VySW5mbyI6IHB1c2hVc2VySW5mbworICAgICAgICB9OworICAgICAgICBOU0RhdGEgKmRhdGEg
PSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlvbnM6MCBl
cnJvcjpudWxscHRyXTsKKworICAgICAgICBTdHJpbmcgbWVzc2FnZSB7IHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIgKj4oZGF0YS5ieXRlcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihkYXRhLmxlbmd0
aCkgfTsKKyAgICAgICAgYXV0byBlbmNvZGVkTWVzc2FnZSA9IGVuY29kZVN0cmluZyhXVEZNb3Zl
KG1lc3NhZ2UpKTsKKworICAgICAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5k
Q29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1v
bi5zZXJ2aWNlIik7CisgICAgICAgIHNlbmRNZXNzYWdlVG9EYWVtb25XYWl0aW5nRm9yUmVwbHko
dXRpbGl0eUNvbm5lY3Rpb24uZ2V0KCksIE1lc3NhZ2VUeXBlOjpJbmplY3RFbmNyeXB0ZWRQdXNo
TWVzc2FnZUZvclRlc3RpbmcsIGVuY29kZWRNZXNzYWdlKTsKKworICAgICAgICAvLyBGZXRjaCBw
dXNoIG1lc3NhZ2VzCisgICAgICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNlOwor
ICAgICAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PE5TRGljdGlvbmFyeSAqPj4gbWVzc2Fn
ZXM7CisgICAgICAgIFttX2RhdGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczpeKE5TQXJy
YXk8TlNEaWN0aW9uYXJ5ICo+ICpyYXdNZXNzYWdlcykgeworICAgICAgICAgICAgbWVzc2FnZXMg
PSByYXdNZXNzYWdlczsKKyAgICAgICAgICAgIGdvdE1lc3NhZ2VzID0gdHJ1ZTsKKyAgICAgICAg
fV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZXMpOworCisg
ICAgICAgIEVYUEVDVF9FUShbbWVzc2FnZXMgY291bnRdLCAxdSk7CisKKyAgICAgICAgcmV0dXJu
IFttZXNzYWdlcyBvYmplY3RBdEluZGV4OjBdOworICAgIH0KKwogICAgIFJldGFpblB0cjxOU1VS
TD4gbV90ZW1wRGlyZWN0b3J5OwogICAgIFJldGFpblB0cjxXS1dlYnNpdGVEYXRhU3RvcmU+IG1f
ZGF0YVN0b3JlOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBtX2NvbmZp
Z3VyYXRpb247CiAgICAgUmV0YWluUHRyPFRlc3RNZXNzYWdlSGFuZGxlcj4gbV90ZXN0TWVzc2Fn
ZUhhbmRsZXI7CiAgICAgUmV0YWluUHRyPE5vdGlmaWNhdGlvblNjcmlwdE1lc3NhZ2VIYW5kbGVy
PiBtX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyPiBtX3NlcnZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX25vdGlmaWNhdGlvblByb3Zp
ZGVyOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IG1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8
aWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4+IG1fdWlEZWxlZ2F0ZTsKIH07CkBAIC01MDEsNiArNTM2
LDcgQEAgdm9pZCBXZWJQdXNoREluamVjdGVkUHVzaFRlc3Q6OnJ1blRlc3QoTlNTdHJpbmcgKmV4
cGVjdGVkTWVzc2FnZSwgTlNEaWN0aW9uYXJ5ICoKICAgICB9KTsKICAgICBzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IHNlbGYucmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOwogICAg
ICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICAgICAgcG9ydC5wb3N0TWVz
c2FnZSgiUmVjZWl2ZWQ6IG51bGwgZGF0YSIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTUyNCw0MyArNTYwLDIwIEBAIHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0OjpydW5UZXN0
KE5TU3RyaW5nICpleHBlY3RlZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfV07CiAKICAg
ICBsb2FkUmVxdWVzdChodG1sU291cmNlLCBzZXJ2aWNlV29ya2VyU291cmNlKTsKLQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVhZHkpOwogCi0gICAgU3RyaW5nIGJ1bmRsZUlkZW50
aWZpZXIgPSAiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIl9zOwotICAgIFN0cmluZyBz
Y29wZSA9IG1fc2VydmVyLT5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5nOwotICAgIFN0cmlu
ZyB0b3BpYyA9IGJ1bmRsZUlkZW50aWZpZXIgKyAiICJfcyArIHNjb3BlOworICAgIGF1dG8gbWVz
c2FnZSA9IGluamVjdFB1c2hNZXNzYWdlKHB1c2hVc2VySW5mbyk7CiAKLSAgICBpZCBvYmogPSBA
ewotICAgICAgICBAInRvcGljIjogKE5TU3RyaW5nICopdG9waWMsCi0gICAgICAgIEAidXNlcklu
Zm8iOiBwdXNoVXNlckluZm8KLSAgICB9OwotICAgIE5TRGF0YSAqZGF0YSA9IFtOU0pTT05TZXJp
YWxpemF0aW9uIGRhdGFXaXRoSlNPTk9iamVjdDpvYmogb3B0aW9uczowIGVycm9yOm51bGxwdHJd
OwotCi0gICAgU3RyaW5nIG1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEu
Ynl0ZXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGF0YS5sZW5ndGgpIH07Ci0gICAgYXV0byBl
bmNvZGVkTWVzc2FnZSA9IGVuY29kZVN0cmluZyhXVEZNb3ZlKG1lc3NhZ2UpKTsKLQotICAgIGF1
dG8gdXRpbGl0eUNvbm5lY3Rpb24gPSBjcmVhdGVBbmRDb25maWd1cmVDb25uZWN0aW9uVG9TZXJ2
aWNlKCJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKTsKLSAgICBzZW5kTWVz
c2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdldCgpLCBNZXNz
YWdlVHlwZTo6SW5qZWN0RW5jcnlwdGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVkTWVz
c2FnZSk7Ci0KLSAgICAvLyBGZXRjaCBwdXNoIG1lc3NhZ2VzCi0gICAgX19ibG9jayBib29sIGdv
dE1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxOU0RpY3Rp
b25hcnkgKj4+IG1lc3NhZ2VzOwotICAgIFttX2RhdGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNz
YWdlczpeKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICpyYXdNZXNzYWdlcykgewotICAgICAgICBt
ZXNzYWdlcyA9IHJhd01lc3NhZ2VzOwotICAgICAgICBnb3RNZXNzYWdlcyA9IHRydWU7Ci0gICAg
fV07Ci0gICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlcyk7Ci0KLSAgICBF
WFBFQ1RfRVEoW21lc3NhZ2VzIGNvdW50XSwgMXUpOwotCi0gICAgLy8gSGFuZGxlIHB1c2ggbWVz
c2FnZQogICAgIF9fYmxvY2sgYm9vbCBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwotICAg
IFttX2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9iamVjdF0g
Y29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIF9fYmxvY2sgYm9vbCBwdXNo
TWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IGZhbHNlOworICAgIFttX2RhdGFTdG9yZSBfcHJvY2Vz
c1B1c2hNZXNzYWdlOm1lc3NhZ2UuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3Vs
dCkgeworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCA9IHJlc3VsdDsKICAgICAg
ICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZ290RXhwZWN0ZWRNZXNzYWdlKTsKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKworICAgIEVYUEVDVF9UUlVFKHB1c2hN
ZXNzYWdlUHJvY2Vzc2VkUmVzdWx0KTsKIH0KIAogVEVTVF9GKFdlYlB1c2hESW5qZWN0ZWRQdXNo
VGVzdCwgSGFuZGxlSW5qZWN0ZWRFbXB0eVB1c2gpCkBAIC04MDUsNiArODE4LDc3IEBAIFRFU1Qo
V2ViUHVzaEQsIEluc3RhbGxDb29yZGluYXRpb25CdW5kbGVzKQogI2VuZGlmIC8vICNpZiBVU0Uo
QVBQTEVfSU5URVJOQUxfU0RLKQogI2VuZGlmIC8vIEVOQUJMRShJTlNUQUxMX0NPT1JESU5BVElP
Tl9CVU5ETEVTKQogCitURVNUX0YoV2ViUHVzaERUZXN0LCBUb29NYW55U2lsZW50UHVzaGVzQ2F1
c2VzVW5zdWJzY3JpYmUpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGh0bWxTb3VyY2UgPSBS
IkhUTUwoCisgICAgPHNjcmlwdCBzcmM9Ii9jb25zdGFudHMuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQ+CisgICAgbGV0IHB1c2hNYW5hZ2VyID0gbnVsbDsKKworICAgIG5hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKGFzeW5jICgpID0+IHsKKyAgICAgICAg
Y29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHk7
CisgICAgICAgIGxldCByZXN1bHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAg
cHVzaE1hbmFnZXIgPSByZWdpc3RyYXRpb24ucHVzaE1hbmFnZXI7CisgICAgICAgICAgICBsZXQg
c3Vic2NyaXB0aW9uID0gYXdhaXQgcHVzaE1hbmFnZXIuc3Vic2NyaWJlKHsKKyAgICAgICAgICAg
ICAgICB1c2VyVmlzaWJsZU9ubHk6IHRydWUsCisgICAgICAgICAgICAgICAgYXBwbGljYXRpb25T
ZXJ2ZXJLZXk6IFZBTElEX1NFUlZFUl9LRVkKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
cmVzdWx0ID0gIlN1YnNjcmliZWQiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICByZXN1bHQgPSAiRXJyb3I6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHdpbmRvdy53ZWJr
aXQubWVzc2FnZUhhbmRsZXJzLm5vdGUucG9zdE1lc3NhZ2UocmVzdWx0KTsKKyAgICB9KTsKKwor
ICAgIGZ1bmN0aW9uIGdldFB1c2hTdWJzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgcHVzaE1h
bmFnZXIuZ2V0U3Vic2NyaXB0aW9uKCkudGhlbigoc3Vic2NyaXB0aW9uKSA9PiB7CisgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHN1YnNj
cmlwdGlvbiA/ICJTdWJzY3JpYmVkIiA6ICJVbnN1YnNjcmliZWQiKTsKKyAgICAgICAgfSk7Cisg
ICAgfQorICAgIDwvc2NyaXB0PgorICAgIClIVE1MIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciog
c2VydmljZVdvcmtlclNjcmlwdFNvdXJjZSA9ICJzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ3B1c2gn
LCAoZXZlbnQpID0+IHsgfSk7IjsKKworICAgIF9fYmxvY2sgUmV0YWluUHRyPGlkPiBtZXNzYWdl
ID0gbmlsOworICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlID0gZmFsc2U7CisgICAgW21fbm90
aWZpY2F0aW9uTWVzc2FnZUhhbmRsZXIgc2V0TWVzc2FnZUhhbmRsZXI6XihpZCByZWNlaXZlZE1l
c3NhZ2UpIHsKKyAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVkTWVzc2FnZTsKKyAgICAgICAgZ290
TWVzc2FnZSA9IHRydWU7CisgICAgfV07CisKKyAgICBsb2FkUmVxdWVzdChodG1sU291cmNlLCBz
ZXJ2aWNlV29ya2VyU2NyaXB0U291cmNlKTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZ290TWVzc2FnZSk7CisgICAgQVNTRVJUX1RSVUUoW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5n
OkAiU3Vic2NyaWJlZCJdKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6
OldlYlB1c2hEOjptYXhTaWxlbnRQdXNoQ291bnQ7IGkrKykgeworICAgICAgICBnb3RNZXNzYWdl
ID0gZmFsc2U7CisgICAgICAgIFttX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZ2V0UHVz
aFN1YnNjcmlwdGlvbigpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yKikgeyB9XTsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZnb3RNZXNzYWdlKTsKKyAgICAgICAg
QVNTRVJUX1RSVUUoW21lc3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiU3Vic2NyaWJlZCJdKTsKKwor
ICAgICAgICBfX2Jsb2NrIGJvb2wgcHJvY2Vzc2VkUHVzaCA9IGZhbHNlOworICAgICAgICBfX2Js
b2NrIGJvb2wgcHVzaFJlc3VsdCA9IGZhbHNlOworICAgICAgICBhdXRvIG1lc3NhZ2UgPSBpbmpl
Y3RQdXNoTWVzc2FnZShAeyB9KTsKKworICAgICAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNo
TWVzc2FnZTptZXNzYWdlLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsK
KyAgICAgICAgICAgIHB1c2hSZXN1bHQgPSByZXN1bHQ7CisgICAgICAgICAgICBwcm9jZXNzZWRQ
dXNoID0gdHJ1ZTsKKyAgICAgICAgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcHJvY2Vzc2VkUHVzaCk7CisKKyAgICAgICAgLy8gV2ViQ29udGVudCBzaG91bGQgZmFpbCBw
cm9jZXNzaW5nIHRoZSBwdXNoIHNpbmNlIG5vIG5vdGlmaWNhdGlvbiB3YXMgc2hvd24uCisgICAg
ICAgIEVYUEVDVF9GQUxTRShwdXNoUmVzdWx0KTsKKyAgICB9CisKKyAgICBnb3RNZXNzYWdlID0g
ZmFsc2U7CisgICAgW21fd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJnZXRQdXNoU3Vic2Ny
aXB0aW9uKCkiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQsIE5TRXJyb3IqKSB7IH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290TWVzc2FnZSk7CisgICAgQVNTRVJUX1RSVUUoW21l
c3NhZ2UgaXNFcXVhbFRvU3RyaW5nOkAiVW5zdWJzY3JpYmVkIl0pOworfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KElPUykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5o
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKaW5kZXggNzVkMjgyZWE5
ZTQwZDIxMTVhZjE5NDhhZDNmOGViOGZjNjM3Y2NkNC4uYzUzYjQzOWVhMzgxMTAxMjU2YjVjMjhi
NTIxYWY4MzA0ZDI5Y2QzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9I
VFRQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgK
QEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIEhUVFBTZXJ2ZXIoRnVuY3Rpb248dm9pZChD
b25uZWN0aW9uKT4mJiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CiAgICAgfkhUVFBTZXJ2
ZXIoKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CisgICAgU3RyaW5nIG9yaWdpbigpIGNv
bnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGggPSAiLyJf
c3RyKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3RXaXRoTG9jYWxob3N0KGNvbnN0
IFN0cmluZyYgcGF0aCA9ICIvIl9zdHIpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3Rz
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2
ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KaW5kZXggODhk
ODZiZjFkMGMxOWYwY2NmMzA1ZmQwODVkYWE0ZDc4NzM0ZDQ5MC4uNmM2MTg0OGJhMmQ2MTRjOWE3
NzZlOTNlNzFjOTA3Zjc5ZmFiOWM3NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNl
cnZlci5tbQpAQCAtMzc2LDYgKzM3NiwxMSBAQCBjb25zdCBjaGFyKiBIVFRQU2VydmVyOjpzY2hl
bWUoKSBjb25zdAogICAgIHJldHVybiBzY2hlbWU7CiB9CiAKK1N0cmluZyBIVFRQU2VydmVyOjpv
cmlnaW4oKSBjb25zdAoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
IiVzOi8vMTI3LjAuMC4xOiVkIiwgc2NoZW1lKCksIHBvcnQoKV07Cit9CisKIE5TVVJMUmVxdWVz
dCAqSFRUUFNlcnZlcjo6cmVxdWVzdChjb25zdCBTdHJpbmcmIHBhdGgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlczovLzEyNy4wLjAuMTolZCVAIiwgc2NoZW1l
KCksIHBvcnQoKSwgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpXV1dOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJiMWYx
OTE2NWYxYzJjMWJjMTcwMjBkZjAxMGE0N2I2NWViZmVjZWMuLjVkOTAxMTgxZDNiNWQwMWVhNmRm
ZmQ0OGZkYWMwZjhhMmU3NTk5YWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMi0yMSAg
QmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBFbmZvcmNlIHNpbGVudCBwdXNo
IHF1b3RhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzY4NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgUHVzaEV2ZW50IHRlc3RzIHRvIGNoZWNrIHRoYXQgbm90aWZpY2F0aW9ucyBhcmUgZGlz
cGxheWVkLgorCisgICAgICAgICogaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5qczoK
KyAgICAgICAgKHByb21pc2VfdGVzdC5hc3luYyBjb25zdCk6CisgICAgICAgIChwcm9taXNlX3Rl
c3QuYXN5bmMgaWYpOgorICAgICAgICAqIGh0dHAvd3B0L3B1c2gtYXBpL3B1c2hFdmVudC5hbnku
c2VydmljZXdvcmtlci1leHBlY3RlZC50eHQ6CisKIDIwMjItMDItMjEgIENhbWVyb24gTWNDb3Jt
YWNrICA8aGV5Y2FtQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIGlucHV0IGVsZW1lbnQgVUEg
c2hhZG93IHRyZWUgY3JlYXRpb24gbGF6eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gt
YXBpL3B1c2hFdmVudC5hbnkuanMKaW5kZXggMzFjODExMDEzYzU1YTk5YTE4ZjI2YzU5NGYzNjQ2
Y2Y2OGRjOTkwMS4uNWU4OWY3NzA1ZGVjZDkzNTUyYzcxNWMzZGZhOTkxNjY3OGUyNjAyNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LmpzCkBAIC02
MCwxMSArNjAsMjMgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKIAogcHJvbWlzZV90ZXN0
KGFzeW5jICgpID0+IHsKICAgICBjb25zdCBwcm9taXNlID0gc2VsZi5pbnRlcm5hbHMuc2NoZWR1
bGVQdXNoRXZlbnQoInRlc3QiKTsKLSAgICBjb25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNl
KHJlc29sdmUgPT4gc2VsZi5vbnB1c2ggPSByZXNvbHZlKTsKKyAgICBjb25zdCBldmVudCA9IGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2ggPSAoZXZlbnQpID0+IHsKKyAg
ICAgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7
CisgICAgICAgIHJlc29sdmUoZXZlbnQpOworICAgIH0pOwogICAgIGFzc2VydF9lcXVhbHMoZXZl
bnQuZGF0YS50ZXh0KCksICJ0ZXN0Iik7CiAgICAgYXNzZXJ0X3RydWUoYXdhaXQgcHJvbWlzZSk7
CiB9LCAiU2ltdWxhdGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50Iik7CiAKK3Byb21pc2VfdGVz
dChhc3luYyAoKSA9PiB7CisgICAgY29uc3QgcHJvbWlzZSA9IHNlbGYuaW50ZXJuYWxzLnNjaGVk
dWxlUHVzaEV2ZW50KCJ0ZXN0Iik7CisgICAgY29uc3QgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHNlbGYub25wdXNoID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHJlc29sdmUo
ZXZlbnQpOworICAgIH0pOworICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YS50ZXh0KCksICJ0
ZXN0Iik7CisgICAgYXNzZXJ0X2ZhbHNlKGF3YWl0IHByb21pc2UpOworfSwgIlNpbXVsYXRpbmcg
ZmlyaW5nIG9mIGEgcHVzaCBldmVudCB3aXRob3V0IG5vdGlmaWNhdGlvbiIpOworCiBwcm9taXNl
X3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTc3LDYgKzg5LDcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBw
cm9taXNlLnRoZW4oKCkgPT4gaXNQdXNoRXZlbnRQcm9taXNlUmVzb2x2ZWQgPSB0cnVlKTsKIAog
ICAgIGNvbnN0IGV2ZW50ID0gYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVz
aCA9IChldmVudCkgPT4geworICAgICAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0
aW9uKCJub3RpZmljYXRpb24iKTsKICAgICAgICAgZXZlbnQud2FpdFVudGlsKHdhaXRVbnRpbFBy
b21pc2UpOwogICAgICAgICByZXNvbHZlKGV2ZW50KTsKICAgICB9KTsKQEAgLTg5LDEyICsxMDIs
MzcgQEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBhc3NlcnRfdHJ1ZShhd2FpdCBw
cm9taXNlKTsKIH0sICJTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgLSBzdWNjZXNz
ZnVsIHdhaXRVbnRpbCIpOwogCitwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgIGlmICgh
c2VsZi5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybjsKKworICAgIGxldCByZXNvbHZlV2FpdFVu
dGlsUHJvbWlzZTsKKyAgICBjb25zdCB3YWl0VW50aWxQcm9taXNlID0gbmV3IFByb21pc2UocmVz
b2x2ZSA9PiByZXNvbHZlV2FpdFVudGlsUHJvbWlzZSA9IHJlc29sdmUpOworCisgICAgbGV0IGlz
UHVzaEV2ZW50UHJvbWlzZVJlc29sdmVkID0gZmFsc2U7CisgICAgY29uc3QgcHJvbWlzZSA9IGlu
dGVybmFscy5zY2hlZHVsZVB1c2hFdmVudCgidGVzdCIpOworICAgIHByb21pc2UudGhlbigoKSA9
PiBpc1B1c2hFdmVudFByb21pc2VSZXNvbHZlZCA9IHRydWUpOworCisgICAgY29uc3QgZXZlbnQg
PSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25wdXNoID0gKGV2ZW50KSA9PiB7
CisgICAgICAgIGV2ZW50LndhaXRVbnRpbCh3YWl0VW50aWxQcm9taXNlKTsKKyAgICAgICAgcmVz
b2x2ZShldmVudCk7CisgICAgfSk7CisgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLnRleHQo
KSwgInRlc3QiKTsKKworICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5zZXRU
aW1lb3V0KHJlc29sdmUsIDEwMCkpOworICAgIGFzc2VydF9mYWxzZShpc1B1c2hFdmVudFByb21p
c2VSZXNvbHZlZCk7CisKKyAgICByZXNvbHZlV2FpdFVudGlsUHJvbWlzZSgpOworICAgIGFzc2Vy
dF9mYWxzZShhd2FpdCBwcm9taXNlKTsKK30sICJTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2gg
ZXZlbnQgLSBzdWNjZXNzZnVsIHdhaXRVbnRpbCB3aXRob3V0IG5vdGlmaWNhdGlvbiIpOworCiBw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGNvbnN0IHByb21pc2UgPSBpbnRlcm5hbHMuc2NoZWR1bGVQdXNo
RXZlbnQoInRlc3QiKTsKICAgICBjb25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gc2VsZi5vbnB1c2ggPSAoZXZlbnQpID0+IHsKKyAgICAgICAgc2VsZi5yZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CiAgICAgICAgIGV2ZW50LndhaXRV
bnRpbChQcm9taXNlLnJlc29sdmUoKSk7CiAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNl
LnJlamVjdCgnZXJyb3InKSk7CiAgICAgICAgIHJlc29sdmUoZXZlbnQpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5zZXJ2aWNld29ya2Vy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hFdmVudC5h
bnkuc2VydmljZXdvcmtlci1leHBlY3RlZC50eHQKaW5kZXggM2ZjZDQ2ZTM5ZjM3Y2JjOWQzNjAz
ZGUzNDRhMTNhNDhiN2JlZTJjNi4uMTEyMzZkMTUwYTEzM2I2YmMzZjE1ZWU1YTRhMmMwOTg5NjEz
ZjE1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50
LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC01
LDYgKzUsOCBAQCBQQVNTIFB1c2hFdmVudCBhcnJheUJ1ZmZlciBoYW5kbGluZwogUEFTUyBQdXNo
RXZlbnQgd2l0aCBiYWQganNvbgogUEFTUyBXYWl0IGZvciBhY3RpdmF0ZSBwcm9taXNlCiBQQVNT
IFNpbXVsYXRpbmcgZmlyaW5nIG9mIGEgcHVzaCBldmVudAorUEFTUyBTaW11bGF0aW5nIGZpcmlu
ZyBvZiBhIHB1c2ggZXZlbnQgd2l0aG91dCBub3RpZmljYXRpb24KIFBBU1MgU2ltdWxhdGluZyBm
aXJpbmcgb2YgYSBwdXNoIGV2ZW50IC0gc3VjY2Vzc2Z1bCB3YWl0VW50aWwKK1BBU1MgU2ltdWxh
dGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50IC0gc3VjY2Vzc2Z1bCB3YWl0VW50aWwgd2l0aG91
dCBub3RpZmljYXRpb24KIFBBU1MgU2ltdWxhdGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50IC0g
dW5zdWNjZXNzZnVsIHdhaXRVbnRpbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453807</attachid>
            <date>2022-03-03 18:56:43 -0800</date>
            <delta_ts>2022-03-03 21:29:42 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-236863-20220303185642.patch</filename>
            <type>text/plain</type>
            <size>90349</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwODExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ0ZjBlZDEwZjRhOTg4
MWZmMTdjZTQ3YTQ2NTU4OWJjNmIzZjQyNi4uMzdiNGU2NzVlMDQ4MzQ1MmFiZTEyZWVkMzUxNzE4
OGUzYjU1OTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIyLTAzLTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEVuZm9yY2Ugc2lsZW50IHB1c2ggcXVv
dGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjg2
MworCisgICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KKworICAgICAgICBBbGwgUHVz
aFN1YnNjcmlwdGlvbnMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgdXNlclZpc2libGVPbmx5IGZsYWcg
c2V0LiBUaGlzIG1lYW5zIHRoYXQgYWxsCisgICAgICAgIHB1c2ggZXZlbnRzIHNob3VsZCByZXN1
bHQgaW4gYSB1c2VyLWZhY2luZyBub3RpZmljYXRpb24uCisKKyAgICAgICAgVG8gZW5mb3JjZSB0
aGlzLCB3ZSB1c2UgYSBxdW90YSBzeXN0ZW0uIEEgcHVzaCBzdWJzY3JpcHRpb24gY2FuIHByb2Nl
c3MgdXAgdG8gdGhyZWUgc2lsZW50CisgICAgICAgIHB1c2hlcy4gQWZ0ZXIgdGhyZWUgc2lsZW50
IHB1c2hlcywgd2UgcmVtb3ZlIHRoZSBwdXNoIHN1YnNjcmlwdGlvbi4gVG8gY29udGludWUgdG8g
cmVjZWl2ZQorICAgICAgICBwdXNoZXMsIHRoZSB1c2VyIG11c3QgbmF2aWdhdGUgYmFjayB0byB0
aGUgd2Vic2l0ZSBhbmQgdGhlIHNpdGUgbXVzdCByZXF1ZXN0IHBlcm1pc3Npb24gdG8KKyAgICAg
ICAgc2VuZCBwdXNoZXMgYWdhaW4uCisKKyAgICAgICAgT3JpZ2luYWxseSB3ZSB3ZXJlIGdvaW5n
IHRvIHVzZSBhIG1vcmUgY29tcGxpY2F0ZWQgcXVvdGEgc3lzdGVtIHRoYXQgbW92ZWQgc3Vic2Ny
aXB0aW9ucworICAgICAgICBmcm9tIHdha2luZyB0byBub24td2FraW5nIGJlZm9yZSBmaW5hbGx5
IHVuc3Vic2NyaWJpbmcsIGJ1dCB0aGlzIHNlZW1lZCBsaWtlIGl0IGNvdWxkIGxlYWQKKyAgICAg
ICAgdG8gc3Vic2NyaXB0aW9ucyBiZWluZyBpbiBhIHBhcnRpYWxseS13b3JraW5nIHN0YXRlIHRo
YXQgd291bGQgYmUgaGFyZCB0byBleHBsYWluIGFuZCByZWFzb24KKyAgICAgICAgYWJvdXQuIEFz
IGEgcmVzdWx0LCBJJ3ZlIHJlbW92ZWQgdGhlIHdha2VTdGF0ZSBjb2x1bW4gZnJvbSBQdXNoRGF0
YWJhc2UgYW5kIHJlcGxhY2VkIGl0CisgICAgICAgIGEgc2lsZW50UHVzaENvdW50IGNvbHVtbi4K
KworICAgICAgICBUbyB0cmFjayB3aGV0aGVyIG9yIG5vdCBhIHNlcnZpY2Ugd29ya2VyIGhhcyBz
aG93biBhIG5vdGlmaWNhdGlvbiB3aGlsZSBwcm9jZXNzaW5nIGEgcHVzaAorICAgICAgICBldmVu
dCwgd2UgdXNlIGEgYm9vbGVhbiBmbGFnIG9uIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4gVGhp
cyBzaG91bGQgYmUgc3VmZmljaWVudCBiZWNhdXNlCisgICAgICAgIHdlIGN1cnJlbnRseSBvbmx5
IHByb2Nlc3Mgb25lIHB1c2ggZXZlbnQgYXQgYSB0aW1lLgorCisgICAgICAgIENvdmVyZWQgYnkg
ZXhpc3RpbmcgYW5kIG5ldyBBUEkgdGVzdHMuCisKKyAgICAgICAgKiBNb2R1bGVzL3B1c2gtYXBp
L1B1c2hEYXRhYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQdXNoUmVjb3JkOjppc29sYXRl
ZENvcHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaFJlY29yZDo6aXNvbGF0ZWRDb3B5
KToKKyAgICAgICAgKFdlYkNvcmU6OlB1c2hEYXRhYmFzZTo6aW5zZXJ0UmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1ha2VQdXNoUmVjb3JkRnJvbVJvdyk6CisgICAgICAgIChXZWJDb3JlOjpQ
dXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5VG9waWMpOgorICAgICAgICAoV2ViQ29yZTo6UHVzaERh
dGFiYXNlOjpnZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQdXNoRGF0YWJhc2U6OmdldFRvcGljcyk6CisgICAgICAgIChXZWJDb3JlOjpQdXNo
RGF0YWJhc2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
dXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9y
aWdpbik6CisgICAgICAgICogTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmg6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbik6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1ZVRhc2tUb0Zp
cmVQdXNoRXZlbnQpOgorCiAyMDIyLTAzLTAzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUu
Y29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1bGF0aW9uIGRvZXMgbm90IG9ic2VydmUgdXBkYXRl
ZCB0aXRsZSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDdkMjUzMDg5ZGJjYTA4ZjAyZjk1YmVjYmE1NDE0
YzE0OGI3NjE4ZTQuLmNiMzVmOGFjMWVhYWE3NjhmNGQzMTZiZTdkZTY5MTUyMWZjNDQ0OGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMjItMDMtMDMgIEJlbiBOaGFtICA8bmhhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgRW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICAtIElmIGEgcHVzaCBldmVudCBkb2Vz
bid0IHJlc3VsdCBpbiBhIG5vdGlmaWNhdGlvbiBvciBpZiB0aGUgYXNzb2NpYXRlZCBwcm9taXNl
IHJlamVjdHMsCisgICAgICAgICAgIHRoZW4gd2UgaW5jcmVtZW50IHRoZSBzaWxlbnQgcHVzaCBj
b3VudCBhc3NvY2lhdGVkIHdpdGggdGhhdCBvcmlnaW4uCisgICAgICAgICAtIFB1c2hTZXJ2aWNl
IG5vdyByZW1vdmVzIGEgc3Vic2NyaXB0aW9uIGlmIHRoZSBvcmlnaW4gaGFzIHJlYWNoZWQgaXRz
IHF1b3RhIG9mIHNpbGVudAorICAgICAgICAgICBwdXNoZXMuCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyBhbmQgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBy
b2Nlc3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9u
cy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjppbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQpOgorICAgICAg
ICAoV2ViS2l0OjpSZXBseUNhbGxlcjxpbnQ+OjpjYWxsUmVwbHkpOgorICAgICAgICAqIFNoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpt
ZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQ
cm9jZXNzUG9vbC5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9vbCBfbm90aWZpY2F0aW9uTWFu
YWdlckZvclRlc3RpbmddKToKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoU2VydmljZS5tbToKKyAg
ICAgICAgKFdlYlB1c2hEOjp1cGRhdGVUb3BpY0xpc3RzKToKKyAgICAgICAgKFdlYlB1c2hEOjpQ
dXNoU2VydmljZTo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKyAgICAgICAgKiB3ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjppbmNy
ZW1lbnRTaWxlbnRQdXNoQ291bnQ6OmVuY29kZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpE
YWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1v
bjo6aW5jcmVtZW50U2lsZW50UHVzaENvdW50KToKKwogMjAyMi0wMy0wMyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtz
IGFuZCBYUEMgcHJvY2Vzc2VzIHRvIFNlY29uZGFyeSBQYXRoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5jcHAKaW5kZXggOTYwZGRiOTMwYmE0NzVk
OGMxMzQ2NDJlMDg2NTliMGY4YTEzZmQ4OC4uNzAwNjg0MmFlM2Y1MTFhN2VjYmI1ZTQ0ZTMzNTUz
ZDBkNjlmNzhiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9wdXNoLWFwaS9Q
dXNoRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVz
aERhdGFiYXNlLmNwcApAQCAtMzcsMjUgKzM3LDMxIEBACiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgorI2luY2x1ZGUgPHd0Zi9TY29wZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAog
I2RlZmluZSBQVVNIREJfUkVMRUFTRV9MT0coZm10LCAuLi4pIFJFTEVBU0VfTE9HKFB1c2gsICIl
cCAtIFB1c2hEYXRhYmFzZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFBV
U0hEQl9SRUxFQVNFX0xPR19FUlJPUihmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1IoUHVzaCwg
IiVwIC0gUHVzaERhdGFiYXNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUg
UFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKSBQVVNIREJfUkVMRUFTRV9MT0dfRVJST1Io
IkZhaWxlZCB0byBiaW5kIHN0YXRlbWVudCAoJWQpOiAlcyIsIG1fZGItPmxhc3RFcnJvcigpLCBt
X2RiLT5sYXN0RXJyb3JNc2coKSkKIAorI2RlZmluZSBrUHVzaFJlY29yZENvbHVtbnMgIiBzdWIu
cm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIuZW5k
cG9pbnQsIHN1Yi50b3BpYywgc3ViLnNlcnZlclZBUElEUHVibGljS2V5LCBzdWIuY2xpZW50UHVi
bGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5l
eHBpcmF0aW9uVGltZSAiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGNvbnN0ZXhw
ciBpbnQgY3VycmVudFB1c2hEYXRhYmFzZVZlcnNpb24gPSAxOworc3RhdGljIGNvbnN0ZXhwciBp
bnQgY3VycmVudFB1c2hEYXRhYmFzZVZlcnNpb24gPSAyOworI2RlZmluZSBrQ3VycmVudFB1c2hE
YXRhYmFzZVZlcnNpb25TdHJpbmcgIjIiCiAKIHN0YXRpYyBjb25zdCBBU0NJSUxpdGVyYWwgcHVz
aERhdGFiYXNlU2NoZW1hVjFTdGF0ZW1lbnRzW10gPSB7CiAgICAgIlBSQUdNQSBhdXRvX3ZhY3V1
bT1JTkNSRU1FTlRBTCJfcywKICAgICAiQ1JFQVRFIFRBQkxFIFN1YnNjcmlwdGlvblNldHMoIgor
ICAgICIgIHJvd0lEIElOVEVHRVIgUFJJTUFSWSBLRVkgQVVUT0lOQ1JFTUVOVCwiCiAgICAgIiAg
Y3JlYXRpb25UaW1lIElOVCBOT1QgTlVMTCwiCiAgICAgIiAgYnVuZGxlSUQgVEVYVCBOT1QgTlVM
TCwiCiAgICAgIiAgc2VjdXJpdHlPcmlnaW4gVEVYVCBOT1QgTlVMTCwiCi0gICAgIiAgd2FrZVN0
YXRlIElOVCBOT1QgTlVMTCwiCisgICAgIiAgc2lsZW50UHVzaENvdW50IElOVCBOT1QgTlVMTCwi
CiAgICAgIiAgVU5JUVVFKGJ1bmRsZUlELCBzZWN1cml0eU9yaWdpbikpIl9zLAogICAgICJDUkVB
VEUgVEFCTEUgU3Vic2NyaXB0aW9ucygiCisgICAgIiAgcm93SUQgSU5URUdFUiBQUklNQVJZIEtF
WSBBVVRPSU5DUkVNRU5ULCIKICAgICAiICBjcmVhdGlvblRpbWUgSU5UIE5PVCBOVUxMLCIKICAg
ICAiICBzdWJzY3JpcHRpb25TZXRJRCBJTlQgTk9UIE5VTEwsIgogICAgICIgIHNjb3BlIFRFWFQg
Tk9UIE5VTEwsIgpAQCAtNjgsNyArNzQsNyBAQCBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIHB1
c2hEYXRhYmFzZVNjaGVtYVYxU3RhdGVtZW50c1tdID0gewogICAgICIgIGV4cGlyYXRpb25UaW1l
IElOVCwiCiAgICAgIiAgVU5JUVVFKHNjb3BlLCBzdWJzY3JpcHRpb25TZXRJRCkpIl9zLAogICAg
ICJDUkVBVEUgSU5ERVggU3Vic2NyaXB0aW9uc19TdWJzY3JpcHRpb25TZXRJRF9JbmRleCBPTiBT
dWJzY3JpcHRpb25zKHN1YnNjcmlwdGlvblNldElEKSJfcywKLSAgICAiUFJBR01BIHVzZXJfdmVy
c2lvbiA9IDEiX3MKKyAgICAiUFJBR01BIHVzZXJfdmVyc2lvbiA9ICIga0N1cnJlbnRQdXNoRGF0
YWJhc2VWZXJzaW9uU3RyaW5nICIiX3MKIH07CiAKIFB1c2hSZWNvcmQgUHVzaFJlY29yZDo6aXNv
bGF0ZWRDb3B5KCkgY29uc3QgJgpAQCAtODQsOCArOTAsNyBAQCBQdXNoUmVjb3JkIFB1c2hSZWNv
cmQ6Omlzb2xhdGVkQ29weSgpIGNvbnN0ICYKICAgICAgICAgY2xpZW50UHVibGljS2V5LAogICAg
ICAgICBjbGllbnRQcml2YXRlS2V5LAogICAgICAgICBzaGFyZWRBdXRoU2VjcmV0LAotICAgICAg
ICBleHBpcmF0aW9uVGltZSwKLSAgICAgICAgd2FrZVN0YXRlCisgICAgICAgIGV4cGlyYXRpb25U
aW1lCiAgICAgfTsKIH0KIApAQCAtMTAyLDExICsxMDcsMjAgQEAgUHVzaFJlY29yZCBQdXNoUmVj
b3JkOjppc29sYXRlZENvcHkoKSAmJgogICAgICAgICBXVEZNb3ZlKGNsaWVudFB1YmxpY0tleSks
CiAgICAgICAgIFdURk1vdmUoY2xpZW50UHJpdmF0ZUtleSksCiAgICAgICAgIFdURk1vdmUoc2hh
cmVkQXV0aFNlY3JldCksCi0gICAgICAgIGV4cGlyYXRpb25UaW1lLAotICAgICAgICB3YWtlU3Rh
dGUKKyAgICAgICAgZXhwaXJhdGlvblRpbWUKICAgICB9OwogfQogCitSZW1vdmVkUHVzaFJlY29y
ZCBSZW1vdmVkUHVzaFJlY29yZDo6aXNvbGF0ZWRDb3B5KCkgY29uc3QgJgoreworICAgIHJldHVy
biB7IGlkZW50aWZpZXIsIHRvcGljLmlzb2xhdGVkQ29weSgpLCBzZXJ2ZXJWQVBJRFB1YmxpY0tl
eSB9OworfQorCitSZW1vdmVkUHVzaFJlY29yZCBSZW1vdmVkUHVzaFJlY29yZDo6aXNvbGF0ZWRD
b3B5KCkgJiYKK3sKKyAgICByZXR1cm4geyBpZGVudGlmaWVyLCBXVEZNb3ZlKHRvcGljKS5pc29s
YXRlZENvcHkoKSwgV1RGTW92ZShzZXJ2ZXJWQVBJRFB1YmxpY0tleSkgfTsKK30KKwogZW51bSBj
bGFzcyBTaG91bGREZWxldGVBbmRSZXRyeSB7IE5vLCBZZXMgfTsKIAogc3RhdGljIEV4cGVjdGVk
PFVuaXF1ZVJlZjxTUUxpdGVEYXRhYmFzZT4sIFNob3VsZERlbGV0ZUFuZFJldHJ5PiBvcGVuQW5k
TWlncmF0ZURhdGFiYXNlSW1wbChjb25zdCBTdHJpbmcmIHBhdGgpCkBAIC0yODAsNyArMjk0LDcg
QEAgdm9pZCBQdXNoRGF0YWJhc2U6Omluc2VydFJlY29yZChjb25zdCBQdXNoUmVjb3JkJiByZWNv
cmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQKICAgICAgICAgaW50NjRfdCBzdWJzY3JpcHRpb25T
ZXRJRCA9IDA7CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0
ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93aWQsIHdha2VTdGF0ZSBGUk9NIFN1YnNjcmlwdGlvblNl
dHMgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworICAgICAg
ICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJTRUxFQ1Qgcm93SUQgRlJP
TSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4g
PSA/Il9zKTsKICAgICAgICAgICAgIGlmICghc3FsCiAgICAgICAgICAgICAgICAgfHwgc3FsLT5i
aW5kVGV4dCgxLCByZWNvcmQuYnVuZGxlSUQpICE9IFNRTElURV9PSwogICAgICAgICAgICAgICAg
IHx8IHNxbC0+YmluZFRleHQoMiwgcmVjb3JkLnNlY3VyaXR5T3JpZ2luKSAhPSBTUUxJVEVfT0sp
IHsKQEAgLTI4OSwxOSArMzAzLDE2IEBAIHZvaWQgUHVzaERhdGFiYXNlOjppbnNlcnRSZWNvcmQo
Y29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoc3FsLT5z
dGVwKCkgPT0gU1FMSVRFX1JPVykgeworICAgICAgICAgICAgaWYgKHNxbC0+c3RlcCgpID09IFNR
TElURV9ST1cpCiAgICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uU2V0SUQgPSBzcWwtPmNvbHVt
bkludDY0KDApOwotICAgICAgICAgICAgICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0aWNfY2Fz
dDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxKSk7Ci0gICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXN1YnNjcmlwdGlvblNldElEKSB7Ci0gICAgICAgICAgICBh
dXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlv
blNldHMgVkFMVUVTKD8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2Fj
aGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9uU2V0cyBWQUxVRVMo
TlVMTCwgPywgPywgPywgMCkiX3MpOwogICAgICAgICAgICAgaWYgKCFzcWwKICAgICAgICAgICAg
ICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIpKSAhPSBTUUxJVEVfT0sKICAg
ICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDIsIHJlY29yZC5idW5kbGVJRCkgIT0gU1FM
SVRFX09LCi0gICAgICAgICAgICAgICAgfHwgc3FsLT5iaW5kVGV4dCgzLCByZWNvcmQuc2VjdXJp
dHlPcmlnaW4pICE9IFNRTElURV9PSwotICAgICAgICAgICAgICAgIHx8IHNxbC0+YmluZEludCg0
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlY29yZC53YWtlU3RhdGUpKSAhPSBTUUxJVEVfT0spIHsKKyAg
ICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRUZXh0KDMsIHJlY29yZC5zZWN1cml0eU9yaWdpbikg
IT0gU1FMSVRFX09LKSB7CiAgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRf
RVJST1IoKTsKICAgICAgICAgICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+IHsgfSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzE2LDcgKzMyNyw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpp
bnNlcnRSZWNvcmQoY29uc3QgUHVzaFJlY29yZCYgcmVjb3JkLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkCiAgICAgICAgIH0KIAogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hl
ZFN0YXRlbWVudE9uUXVldWUoIklOU0VSVCBJTlRPIFN1YnNjcmlwdGlvbnMgVkFMVUVTKD8sID8s
ID8sID8sID8sID8sID8sID8sID8sID8pIl9zKTsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2Fj
aGVkU3RhdGVtZW50T25RdWV1ZSgiSU5TRVJUIElOVE8gU3Vic2NyaXB0aW9ucyBWQUxVRVMoTlVM
TCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiX3MpOwogICAgICAgICAgICAgaWYgKCFz
cWwKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgxLCB0aW1lKG51bGxwdHIpKSAh
PSBTUUxJVEVfT0sKICAgICAgICAgICAgICAgICB8fCBzcWwtPmJpbmRJbnQ2NCgyLCBzdWJzY3Jp
cHRpb25TZXRJRCkgIT0gU1FMSVRFX09LCkBAIC00MjMsMjEgKzQzNCwyMCBAQCB2b2lkIFB1c2hE
YXRhYmFzZTo6cmVtb3ZlUmVjb3JkQnlJZGVudGlmaWVyKFB1c2hTdWJzY3JpcHRpb25JZGVudGlm
aWVyIGlkZW50aWZpZQogICAgIH0pOwogfQogCi1zdGF0aWMgUHVzaFJlY29yZCBtYWtlUHVzaFJl
Y29yZEZyb21Sb3coU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUmIHNxbCkKK3N0YXRpYyBQ
dXNoUmVjb3JkIG1ha2VQdXNoUmVjb3JkRnJvbVJvdyhTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRT
Y29wZSYgc3FsLCBpbnQgY29sdW1uSW5kZXgpCiB7CiAgICAgUHVzaFJlY29yZCByZWNvcmQ7Ci0g
ICAgcmVjb3JkLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vic2NyaXB0
aW9uSWRlbnRpZmllclR5cGU+KHNxbC0+Y29sdW1uSW50NjQoMCkpOwotICAgIHJlY29yZC5idW5k
bGVJRCA9IHNxbC0+Y29sdW1uVGV4dCgxKTsKLSAgICByZWNvcmQuc2VjdXJpdHlPcmlnaW4gPSBz
cWwtPmNvbHVtblRleHQoMik7Ci0gICAgcmVjb3JkLnNjb3BlID0gc3FsLT5jb2x1bW5UZXh0KDMp
OwotICAgIHJlY29yZC5lbmRwb2ludCA9IHNxbC0+Y29sdW1uVGV4dCg0KTsKLSAgICByZWNvcmQu
dG9waWMgPSBzcWwtPmNvbHVtblRleHQoNSk7Ci0gICAgcmVjb3JkLnNlcnZlclZBUElEUHVibGlj
S2V5ID0gc3FsLT5jb2x1bW5CbG9iKDYpOwotICAgIHJlY29yZC5jbGllbnRQdWJsaWNLZXkgPSBz
cWwtPmNvbHVtbkJsb2IoNyk7Ci0gICAgcmVjb3JkLmNsaWVudFByaXZhdGVLZXkgPSBzcWwtPmNv
bHVtbkJsb2IoOCk7Ci0gICAgcmVjb3JkLnNoYXJlZEF1dGhTZWNyZXQgPSBzcWwtPmNvbHVtbkJs
b2IoOSk7Ci0gICAgcmVjb3JkLmV4cGlyYXRpb25UaW1lID0gZXhwaXJhdGlvblRpbWVGcm9tVmFs
dWUoc3FsLT5jb2x1bW5WYWx1ZSgxMCkpOwotICAgIHJlY29yZC53YWtlU3RhdGUgPSBzdGF0aWNf
Y2FzdDxQdXNoV2FrZVN0YXRlPihzcWwtPmNvbHVtbkludCgxMSkpOworICAgIHJlY29yZC5pZGVu
dGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJU
eXBlPihzcWwtPmNvbHVtbkludDY0KGNvbHVtbkluZGV4KyspKTsKKyAgICByZWNvcmQuYnVuZGxl
SUQgPSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnNlY3VyaXR5
T3JpZ2luID0gc3FsLT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zY29w
ZSA9IHNxbC0+Y29sdW1uVGV4dChjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuZW5kcG9pbnQg
PSBzcWwtPmNvbHVtblRleHQoY29sdW1uSW5kZXgrKyk7CisgICAgcmVjb3JkLnRvcGljID0gc3Fs
LT5jb2x1bW5UZXh0KGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5zZXJ2ZXJWQVBJRFB1Ymxp
Y0tleSA9IHNxbC0+Y29sdW1uQmxvYihjb2x1bW5JbmRleCsrKTsKKyAgICByZWNvcmQuY2xpZW50
UHVibGljS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAgIHJlY29yZC5j
bGllbnRQcml2YXRlS2V5ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOworICAgIHJl
Y29yZC5zaGFyZWRBdXRoU2VjcmV0ID0gc3FsLT5jb2x1bW5CbG9iKGNvbHVtbkluZGV4KyspOwor
ICAgIHJlY29yZC5leHBpcmF0aW9uVGltZSA9IGV4cGlyYXRpb25UaW1lRnJvbVZhbHVlKHNxbC0+
Y29sdW1uVmFsdWUoY29sdW1uSW5kZXgrKykpOwogCiAgICAgcmV0dXJuIHJlY29yZDsKIH0KQEAg
LTQ0NywxMCArNDU3LDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5VG9waWMoY29u
c3QgU3RyaW5nJiB0b3BpYywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgKICAgICBkaXNwYXRjaE9u
V29ya1F1ZXVlKFt0aGlzLCB0b3BpYyA9IGNyb3NzVGhyZWFkQ29weSh0b3BpYyksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIC8vIEZvcmNlIFNRTGl0ZSB0byBjb25zdWx0IHRoZSBTdWJzY3JpcHRpb25zKHNjb3BlKSBp
bmRleCBmaXJzdCB2aWEgQ1JPU1MgSk9JTi4KICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0
ZW1lbnRPblF1ZXVlKAotICAgICAgICAgICAgIlNFTEVDVCAiCi0gICAgICAgICAgICAiICBzdWIu
cm93SUQsIHNzLmJ1bmRsZUlELCBzcy5zZWN1cml0eU9yaWdpbiwgc3ViLnNjb3BlLCBzdWIuZW5k
cG9pbnQsIHN1Yi50b3BpYywgIgotICAgICAgICAgICAgIiAgc3ViLnNlcnZlclZBUElEUHVibGlj
S2V5LCBzdWIuY2xpZW50UHVibGljS2V5LCBzdWIuY2xpZW50UHJpdmF0ZUtleSwgIgotICAgICAg
ICAgICAgIiAgc3ViLnNoYXJlZEF1dGhTZWNyZXQsIHN1Yi5leHBpcmF0aW9uVGltZSwgc3Mud2Fr
ZVN0YXRlICIKKyAgICAgICAgICAgICJTRUxFQ1QgIiBrUHVzaFJlY29yZENvbHVtbnMKICAgICAg
ICAgICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKICAgICAgICAgICAgICJDUk9TUyBKT0lO
IFN1YnNjcmlwdGlvblNldHMgc3MgIgogICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRpb25T
ZXRJRCA9IHNzLnJvd2lkICIKQEAgLTQ2Nyw3ICs0NzQsNyBAQCB2b2lkIFB1c2hEYXRhYmFzZTo6
Z2V0UmVjb3JkQnlUb3BpYyhjb25zdCBTdHJpbmcmIHRvcGljLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGVP
bk1haW5RdWV1ZShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWFrZVB1c2hSZWNvcmRGcm9t
Um93KHNxbCkpOworICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsLCAwKSk7CiAgICAgfSk7CiB9CiAK
QEAgLTQ3NiwxMCArNDgzLDcgQEAgdm9pZCBQdXNoRGF0YWJhc2U6OmdldFJlY29yZEJ5QnVuZGxl
SWRlbnRpZmllckFuZFNjb3BlKGNvbnN0IFN0cmluZyYgYnVuZGxlSUQsIGMKICAgICBkaXNwYXRj
aE9uV29ya1F1ZXVlKFt0aGlzLCBidW5kbGVJRCA9IGNyb3NzVGhyZWFkQ29weShidW5kbGVJRCks
IHNjb3BlID0gY3Jvc3NUaHJlYWRDb3B5KHNjb3BlKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRm9yY2UgU1FM
aXRlIHRvIGNvbnN1bHQgdGhlIFN1YnNjcmlwdGlvbnMoc2NvcGUpIGluZGV4IGZpcnN0IHZpYSBD
Uk9TUyBKT0lOLgogICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCi0g
ICAgICAgICAgICAiU0VMRUNUICIKLSAgICAgICAgICAgICIgIHN1Yi5yb3dJRCwgc3MuYnVuZGxl
SUQsIHNzLnNlY3VyaXR5T3JpZ2luLCBzdWIuc2NvcGUsIHN1Yi5lbmRwb2ludCwgc3ViLnRvcGlj
LCAiCi0gICAgICAgICAgICAiICBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXksIHN1Yi5jbGllbnRQ
dWJsaWNLZXksIHN1Yi5jbGllbnRQcml2YXRlS2V5LCAiCi0gICAgICAgICAgICAiICBzdWIuc2hh
cmVkQXV0aFNlY3JldCwgc3ViLmV4cGlyYXRpb25UaW1lLCBzcy53YWtlU3RhdGUgIgorICAgICAg
ICAgICAgIlNFTEVDVCAiIGtQdXNoUmVjb3JkQ29sdW1ucwogICAgICAgICAgICAgIkZST00gU3Vi
c2NyaXB0aW9ucyBzdWIgIgogICAgICAgICAgICAgIkNST1NTIEpPSU4gU3Vic2NyaXB0aW9uU2V0
cyBzcyAiCiAgICAgICAgICAgICAiT04gc3ViLnN1YnNjcmlwdGlvblNldElEID0gc3Mucm93aWQg
IgpAQCAtNDk2LDcgKzUwMCw3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRSZWNvcmRCeUJ1bmRs
ZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtYWtlUHVzaFJlY29yZEZyb21Sb3coc3FsKSk7CisgICAg
ICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1ha2VQ
dXNoUmVjb3JkRnJvbVJvdyhzcWwsIDApKTsKICAgICB9KTsKIH0KIApAQCAtNTEyLDM4ICs1MTYs
MTg3IEBAIHZvaWQgUHVzaERhdGFiYXNlOjpnZXRJZGVudGlmaWVycyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hTZXQ8UHVzaFN1YnNjcmlwdGlvCiAgICAgfSk7CiB9CiAKLXZvaWQgUHVzaERh
dGFiYXNlOjpnZXRUb3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFB1c2hX
YWtlU3RhdGVUb1RvcGljTWFwJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBQdXNoRGF0
YWJhc2U6OmdldFRvcGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGRpc3BhdGNoT25Xb3JrUXVldWUoW3RoaXMs
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGNvbnN0ZXhwciBpbnQgbnVtYmVyT2ZXYWtlU3RhdGVzID0gc3RhdGljX2Nh
c3Q8aW50PihQdXNoV2FrZVN0YXRlOjpOdW1iZXJPZlN0YXRlcyk7Ci0gICAgICAgIFZlY3RvcjxW
ZWN0b3I8U3RyaW5nPiwgbnVtYmVyT2ZXYWtlU3RhdGVzPiB0b3BpY3NCeVdha2VTdGF0ZShudW1i
ZXJPZldha2VTdGF0ZXMpOyAvLyB1c2VkIGJlY2F1c2UgSGFzaE1hcDo6aXNvbGF0ZWRDb3B5IGRv
ZXNuJ3QgZXhpc3QKLQotICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUo
Ci0gICAgICAgICAgICAiU0VMRUNUIHNzLndha2VTdGF0ZSwgc3ViLnRvcGljICIKLSAgICAgICAg
ICAgICJGUk9NIFN1YnNjcmlwdGlvbnMgc3ViICIKLSAgICAgICAgICAgICJKT0lOIFN1YnNjcmlw
dGlvblNldHMgc3MgIgotICAgICAgICAgICAgIk9OIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCA9IHNz
LnJvd2lkIl9zKTsKKyAgICAgICAgVmVjdG9yPFN0cmluZz4gdG9waWNzOworICAgICAgICBhdXRv
IHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIlNFTEVDVCB0b3BpYyBGUk9NIFN1YnNjcmlw
dGlvbnMiX3MpOwogICAgICAgICBpZiAoIXNxbCkgewogICAgICAgICAgICAgUFVTSERCX1JFTEVB
U0VfTE9HX0JJTkRfRVJST1IoKTsKLSAgICAgICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3Bh
dGNoKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7Ci0gICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIFZlY3RvcjxTdHJpbmc+IHsgfSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICB3aGlsZSAoc3FsLT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewot
ICAgICAgICAgICAgYXV0byBwdXNoV2FrZVN0YXRlID0gc3FsLT5jb2x1bW5JbnQoMCk7Ci0gICAg
ICAgICAgICBhdXRvIHRvcGljID0gc3FsLT5jb2x1bW5UZXh0KDEpOwotICAgICAgICAgICAgaWYg
KHB1c2hXYWtlU3RhdGUgPj0gMCAmJiBwdXNoV2FrZVN0YXRlIDwgbnVtYmVyT2ZXYWtlU3RhdGVz
KQotICAgICAgICAgICAgICAgIHRvcGljc0J5V2FrZVN0YXRlW3B1c2hXYWtlU3RhdGVdLmFwcGVu
ZChXVEZNb3ZlKHRvcGljKSk7CisgICAgICAgIHdoaWxlIChzcWwtPnN0ZXAoKSA9PSBTUUxJVEVf
Uk9XKQorICAgICAgICAgICAgdG9waWNzLmFwcGVuZChzcWwtPmNvbHVtblRleHQoMCkpOworCisg
ICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdU
Rk1vdmUodG9waWNzKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgUHVzaERhdGFiYXNlOjppbmNyZW1l
bnRTaWxlbnRQdXNoQ291bnQoY29uc3QgU3RyaW5nJiBidW5kbGVJRCwgY29uc3QgU3RyaW5nJiBz
ZWN1cml0eU9yaWdpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1bnNpZ25lZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit7CisgICAgZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhpcywgYnVuZGxlSUQg
PSBjcm9zc1RocmVhZENvcHkoYnVuZGxlSUQpLCBzZWN1cml0eU9yaWdpbiA9IGNyb3NzVGhyZWFk
Q29weShzZWN1cml0eU9yaWdpbiksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc2NvcGUgPSBtYWtlU2NvcGVF
eGl0KFsmY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgICAgIGNvbXBsZXRlT25NYWluUXVl
dWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDB1KTsKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgaW50IHNpbGVudFB1c2hDb3VudCA9IDA7CisgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigpOworCisgICAgICAg
IHsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgiVVBEQVRF
IFN1YnNjcmlwdGlvblNldHMgU0VUIHNpbGVudFB1c2hDb3VudCA9IHNpbGVudFB1c2hDb3VudCAr
IDEgV0hFUkUgYnVuZGxlSUQgPSA/IEFORCBzZWN1cml0eU9yaWdpbiA9ID8iX3MpOworCisgICAg
ICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVf
T0sgfHwgc3FsLT5iaW5kVGV4dCgyLCBzZWN1cml0eU9yaWdpbikgIT0gU1FMSVRFX09LKSB7Cisg
ICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzcWwtPnN0
ZXAoKSAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVl
dWUoIlNFTEVDVCBzaWxlbnRQdXNoQ291bnQgRlJPTSBTdWJzY3JpcHRpb25TZXRzIFdIRVJFIGJ1
bmRsZUlEID0gPyBBTkQgc2VjdXJpdHlPcmlnaW4gPSA/Il9zKTsKKworICAgICAgICAgICAgaWYg
KCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRFX09LIHx8IHNxbC0+
YmluZFRleHQoMiwgc2VjdXJpdHlPcmlnaW4pICE9IFNRTElURV9PSykgeworICAgICAgICAgICAg
ICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgPT0gU1FM
SVRFX1JPVykKKyAgICAgICAgICAgICAgICBzaWxlbnRQdXNoQ291bnQgPSBzcWwtPmNvbHVtbklu
dCgwKTsKICAgICAgICAgfQogCi0gICAgICAgIFdvcmtRdWV1ZTo6bWFpbigpLmRpc3BhdGNoKFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB0b3BpY3NCeVdh
a2VTdGF0ZSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHRvcGljc0J5V2FrZVN0YXRlKSldKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICBQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCByZXN1bHQ7Ci0g
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PGludD4oUHVzaFdha2VT
dGF0ZTo6TnVtYmVyT2ZTdGF0ZXMpOyArK2kpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmFkZChz
dGF0aWNfY2FzdDxQdXNoV2FrZVN0YXRlPihpKSwgV1RGTW92ZSh0b3BpY3NCeVdha2VTdGF0ZVtp
XSkpOwotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQpKTsKKyAg
ICAgICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwor
ICAgICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBz
aWxlbnRQdXNoQ291bnQpOworICAgIH0pOworfQorCit2b2lkIFB1c2hEYXRhYmFzZTo6cmVtb3Zl
UmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZW1vdmVkUHVzaFJlY29yZD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgZGlzcGF0Y2hPbldvcmtRdWV1ZShbdGhpcywgYnVuZGxlSUQgPSBj
cm9zc1RocmVhZENvcHkoYnVuZGxlSUQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlID0gbWFrZVNj
b3BlRXhpdChbJmNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAgICAgICAgICBjb21wbGV0ZU9uTWFp
blF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBWZWN0b3I8UmVtb3ZlZFB1c2hSZWNv
cmQ+IHsgfSk7CiAgICAgICAgIH0pOworCisgICAgICAgIFZlY3RvcjxSZW1vdmVkUHVzaFJlY29y
ZD4gcmVtb3ZlZFB1c2hSZWNvcmRzOworICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbiB0cmFuc2Fj
dGlvbihtX2RiKTsKKyAgICAgICAgdHJhbnNhY3Rpb24uYmVnaW4oKTsKKworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoCisgICAgICAgICAg
ICAgICAgIlNFTEVDVCBzdWIuc3Vic2NyaXB0aW9uU2V0SUQsIHN1Yi5yb3dpZCwgc3ViLnRvcGlj
LCBzdWIuc2VydmVyVkFQSURQdWJsaWNLZXkgIgorICAgICAgICAgICAgICAgICJGUk9NIFN1YnNj
cmlwdGlvblNldHMgc3MgIgorICAgICAgICAgICAgICAgICJKT0lOIFN1YnNjcmlwdGlvbnMgc3Vi
ICIKKyAgICAgICAgICAgICAgICAiT04gc3Mucm93aWQgPSBzdWIuc3Vic2NyaXB0aW9uU2V0SUQg
IgorICAgICAgICAgICAgICAgICJXSEVSRSBzcy5idW5kbGVJRCA9ID8iX3MpOworICAgICAgICAg
ICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0gU1FMSVRFX09LKSB7
CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJST1IoKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChz
cWwtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CisgICAgICAgICAgICAgICAgYXV0byBpZGVudGlm
aWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBl
PihzcWwtPmNvbHVtbkludCgxKSk7CisgICAgICAgICAgICAgICAgYXV0byB0b3BpYyA9IHNxbC0+
Y29sdW1uVGV4dCgyKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNlcnZlclZBUElEUHVibGljS2V5
ID0gc3FsLT5jb2x1bW5CbG9iKDMpOworICAgICAgICAgICAgICAgIHJlbW92ZWRQdXNoUmVjb3Jk
cy5hcHBlbmQoeyBpZGVudGlmaWVyLCBXVEZNb3ZlKHRvcGljKSwgV1RGTW92ZShzZXJ2ZXJWQVBJ
RFB1YmxpY0tleSkgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB7Cisg
ICAgICAgICAgICBhdXRvIHNxbCA9IGNhY2hlZFN0YXRlbWVudE9uUXVldWUoIkRFTEVURSBGUk9N
IFN1YnNjcmlwdGlvbnMgV0hFUkUgc3Vic2NyaXB0aW9uU2V0SUQgSU4gKFNFTEVDVCByb3dpZCBG
Uk9NIFN1YnNjcmlwdGlvblNldHMgV0hFUkUgYnVuZGxlSUQgPSA/KSJfcyk7CisgICAgICAgICAg
ICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRUZXh0KDEsIGJ1bmRsZUlEKSAhPSBTUUxJVEVfT0spIHsK
KyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0dfQklORF9FUlJPUigpOworICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNxbC0+
c3RlcCgpICE9IFNRTElURV9ET05FKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25R
dWV1ZSgiREVMRVRFIEZST00gU3Vic2NyaXB0aW9uU2V0cyBXSEVSRSBidW5kbGVJRCA9ID8iX3Mp
OworICAgICAgICAgICAgaWYgKCFzcWwgfHwgc3FsLT5iaW5kVGV4dCgxLCBidW5kbGVJRCkgIT0g
U1FMSVRFX09LKSB7CisgICAgICAgICAgICAgICAgUFVTSERCX1JFTEVBU0VfTE9HX0JJTkRfRVJS
T1IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGlmIChzcWwtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2FjdGlvbi5jb21taXQoKTsKKworICAgICAg
ICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUocmVtb3ZlZFB1c2hSZWNvcmRzKSk7CisgICAgfSk7
Cit9CisKKwordm9pZCBQdXNoRGF0YWJhc2U6OnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZp
ZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcm
IHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZW1vdmVkUHVz
aFJlY29yZD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgZGlzcGF0Y2hPbldvcmtR
dWV1ZShbdGhpcywgYnVuZGxlSUQgPSBjcm9zc1RocmVhZENvcHkoYnVuZGxlSUQpLCBzZWN1cml0
eU9yaWdpbiA9IGNyb3NzVGhyZWFkQ29weShzZWN1cml0eU9yaWdpbiksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8gc2NvcGUgPSBtYWtlU2NvcGVFeGl0KFsmY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAg
ICAgIGNvbXBsZXRlT25NYWluUXVldWUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFZlY3Rv
cjxSZW1vdmVkUHVzaFJlY29yZD4geyB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgVmVjdG9y
PFJlbW92ZWRQdXNoUmVjb3JkPiByZW1vdmVkUHVzaFJlY29yZHM7CisgICAgICAgIFNRTGl0ZVRy
YW5zYWN0aW9uIHRyYW5zYWN0aW9uKG1fZGIpOworICAgICAgICB0cmFuc2FjdGlvbi5iZWdpbigp
OworCisgICAgICAgIGludDY0X3Qgc3Vic2NyaXB0aW9uU2V0SUQgPSAwOworCisgICAgICAgIHsK
KyAgICAgICAgICAgIGF1dG8gc3FsID0gY2FjaGVkU3RhdGVtZW50T25RdWV1ZSgKKyAgICAgICAg
ICAgICAgICAiU0VMRUNUIHN1Yi5zdWJzY3JpcHRpb25TZXRJRCwgc3ViLnJvd2lkLCBzdWIudG9w
aWMsIHN1Yi5zZXJ2ZXJWQVBJRFB1YmxpY0tleSAiCisgICAgICAgICAgICAgICAgIkZST00gU3Vi
c2NyaXB0aW9uU2V0cyBzcyAiCisgICAgICAgICAgICAgICAgIkpPSU4gU3Vic2NyaXB0aW9ucyBz
dWIgIgorICAgICAgICAgICAgICAgICJPTiBzcy5yb3dpZCA9IHN1Yi5zdWJzY3JpcHRpb25TZXRJ
RCAiCisgICAgICAgICAgICAgICAgIldIRVJFIHNzLmJ1bmRsZUlEID0gPyBBTkQgc3Muc2VjdXJp
dHlPcmlnaW4gPSA/Il9zKTsKKyAgICAgICAgICAgIGlmICghc3FsIHx8IHNxbC0+YmluZFRleHQo
MSwgYnVuZGxlSUQpICE9IFNRTElURV9PSyB8fCBzcWwtPmJpbmRUZXh0KDIsIHNlY3VyaXR5T3Jp
Z2luKSAhPSBTUUxJVEVfT0spIHsKKyAgICAgICAgICAgICAgICBQVVNIREJfUkVMRUFTRV9MT0df
QklORF9FUlJPUigpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgd2hpbGUgKHNxbC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKKyAgICAgICAg
ICAgICAgICBzdWJzY3JpcHRpb25TZXRJRCA9IHNxbC0+Y29sdW1uSW50KDApOworICAgICAgICAg
ICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyVHlwZT4oc3FsLT5jb2x1bW5JbnQoMSkpOworICAgICAgICAgICAgICAg
IGF1dG8gdG9waWMgPSBzcWwtPmNvbHVtblRleHQoMik7CisgICAgICAgICAgICAgICAgYXV0byBz
ZXJ2ZXJWQVBJRFB1YmxpY0tleSA9IHNxbC0+Y29sdW1uQmxvYigzKTsKKyAgICAgICAgICAgICAg
ICByZW1vdmVkUHVzaFJlY29yZHMuYXBwZW5kKHsgaWRlbnRpZmllciwgV1RGTW92ZSh0b3BpYyks
IFdURk1vdmUoc2VydmVyVkFQSURQdWJsaWNLZXkpIH0pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRP
blF1ZXVlKCJERUxFVEUgRlJPTSBTdWJzY3JpcHRpb25zIFdIRVJFIHN1YnNjcmlwdGlvblNldElE
ID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwtPmJpbmRJbnQoMSwgc3Vic2Ny
aXB0aW9uU2V0SUQpICE9IFNRTElURV9PSykgeworICAgICAgICAgICAgICAgIFBVU0hEQl9SRUxF
QVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0gU1FMSVRFX0RPTkUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgeworICAgICAgICAgICAg
YXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnRPblF1ZXVlKCJERUxFVEUgRlJPTSBTdWJzY3JpcHRp
b25TZXRzIFdIRVJFIHJvd2lkID0gPyJfcyk7CisgICAgICAgICAgICBpZiAoIXNxbCB8fCBzcWwt
PmJpbmRJbnQoMSwgc3Vic2NyaXB0aW9uU2V0SUQpICE9IFNRTElURV9PSykgeworICAgICAgICAg
ICAgICAgIFBVU0hEQl9SRUxFQVNFX0xPR19CSU5EX0VSUk9SKCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc3FsLT5zdGVwKCkgIT0g
U1FMSVRFX0RPTkUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgdHJhbnNhY3Rpb24uY29tbWl0KCk7CisKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOworICAg
ICAgICBjb21wbGV0ZU9uTWFpblF1ZXVlKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZN
b3ZlKHJlbW92ZWRQdXNoUmVjb3JkcykpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1c2hEYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9wdXNoLWFwaS9QdXNoRGF0YWJhc2UuaAppbmRleCA4M2Q4OTgxZTAzMzM2YWMy
NzY2OTZjNmU1M2QxODkxYzViNTIwNjc3Li4zM2U0M2JlOGFlZjBlZmRlYTJjODc3YjBhNTg3MDY0
NzdiOTJiNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3B1c2gtYXBpL1B1
c2hEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcHVzaC1hcGkvUHVzaERh
dGFiYXNlLmgKQEAgLTQyLDE0ICs0Miw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotLy8g
V2FrZSBzdGF0ZSB0aGF0IGFwcGxpZXMgZm9yIGRldmljZXMgdGhhdCByYWNlLXRvLXNsZWVwLgot
ZW51bSBjbGFzcyBQdXNoV2FrZVN0YXRlIDogdWludDhfdCB7Ci0gICAgV2FraW5nLCAvLyBBbGwg
cHVzaGVzIHdpbGwgd2FrZSBkZXZpY2UuCi0gICAgT3Bwb3J0dW5pc3RpYywgLy8gTG93IHByaW9y
aXR5IHB1c2hlcyBtYXkgbm90IHdha2UgZGV2aWNlLgotICAgIE5vbldha2luZywgLy8gTm8gcHVz
aGVzIHdpbGwgd2FrZSBkZXZpY2UuCi0gICAgTnVtYmVyT2ZTdGF0ZXMKLX07Ci0KIHN0cnVjdCBQ
dXNoUmVjb3JkIHsKICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllciBpZGVudGlmaWVyOwog
ICAgIFN0cmluZyBidW5kbGVJRDsKQEAgLTYyLDEyICs1NCwyMCBAQCBzdHJ1Y3QgUHVzaFJlY29y
ZCB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGNsaWVudFByaXZhdGVLZXk7CiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IHNoYXJlZEF1dGhTZWNyZXQ7CiAgICAgc3RkOjpvcHRpb25hbDxFcG9jaFRpbWVTdGFt
cD4gZXhwaXJhdGlvblRpbWUgeyB9OwotICAgIFB1c2hXYWtlU3RhdGUgd2FrZVN0YXRlIHsgUHVz
aFdha2VTdGF0ZTo6V2FraW5nIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCBQdXNoUmVjb3JkIGlz
b2xhdGVkQ29weSgpIGNvbnN0ICY7CiAgICAgV0VCQ09SRV9FWFBPUlQgUHVzaFJlY29yZCBpc29s
YXRlZENvcHkoKSAmJjsKIH07CiAKK3N0cnVjdCBSZW1vdmVkUHVzaFJlY29yZCB7CisgICAgUHVz
aFN1YnNjcmlwdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBTdHJpbmcgdG9waWM7Cisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHNlcnZlclZBUElEUHVibGljS2V5OworCisgICAgV0VCQ09SRV9F
WFBPUlQgUmVtb3ZlZFB1c2hSZWNvcmQgaXNvbGF0ZWRDb3B5KCkgY29uc3QgJjsKKyAgICBXRUJD
T1JFX0VYUE9SVCBSZW1vdmVkUHVzaFJlY29yZCBpc29sYXRlZENvcHkoKSAmJjsKK307CisKIGNs
YXNzIFB1c2hEYXRhYmFzZSB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC04MSw5ICs4MSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRS
ZWNvcmRCeVRvcGljKGNvbnN0IFN0cmluZyYgdG9waWMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
c3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiYmKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZpZXJBbmRTY29wZShjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlELCBjb25zdCBTdHJpbmcmIHNjb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0
aW9uYWw8UHVzaFJlY29yZD4mJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SWRl
bnRpZmllcnMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFB1c2hTdWJzY3JpcHRpb25J
ZGVudGlmaWVyPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUb3BpY3MoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVuc2lnbmVkKT4mJik7CiAKLSAgICB1c2luZyBQdXNoV2FrZVN0YXRlVG9Ub3BpY01hcCA9IEhh
c2hNYXA8UHVzaFdha2VTdGF0ZSwgVmVjdG9yPFN0cmluZz4sIFdURjo6SW50SGFzaDxQdXNoV2Fr
ZVN0YXRlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQdXNoV2FrZVN0YXRlPj47Ci0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRUb3BpY3NCeVdha2VTdGF0ZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFB1c2hXYWtlU3RhdGVUb1RvcGljTWFwJiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJiBidW5k
bGVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+JiYp
PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50
aWZpZXJBbmRTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIGJ1bmRsZUlELCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxSZW1vdmVk
UHVzaFJlY29yZD4mJik+JiYpOwogCiBwcml2YXRlOgogICAgIFB1c2hEYXRhYmFzZShSZWY8V29y
a1F1ZXVlPiYmLCBVbmlxdWVSZWY8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZS5oCmluZGV4IDUxMGMxYjA3MmI4OTdkNzkwMGFhNmU2ZWEwMmQ4ZjAwNjM4ZmIzZGQu
LmIwNWZhMzI4MjI3NWYzZTE1YjAxMjMwYjk3ZmU4NDM3YTY5MDhlMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERh
dGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAi
V29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VUkxIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg4LDYgKzg5
LDkgQEAgcHVibGljOgogICAgIHZvaWQgcG9zdFRhc2tUb0ZpcmVOb3RpZmljYXRpb25FdmVudChO
b3RpZmljYXRpb25FdmVudFR5cGUsIE5vdGlmaWNhdGlvbiYsIGNvbnN0IFN0cmluZyYgYWN0aW9u
KTsKICNlbmRpZgogCisgICAgYm9vbCBoYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9oYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50OyB9CisgICAgdm9pZCBzZXRIYXNQ
ZW5kaW5nU2lsZW50UHVzaEV2ZW50KGJvb2wgdmFsdWUpIHsgbV9oYXNQZW5kaW5nU2lsZW50UHVz
aEV2ZW50ID0gdmFsdWU7IH0KKwogcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyR2xvYmFsU2Nv
cGUoU2VydmljZVdvcmtlckNvbnRleHREYXRhJiYsIFNlcnZpY2VXb3JrZXJEYXRhJiYsIGNvbnN0
IFdvcmtlclBhcmFtZXRlcnMmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIFNlcnZpY2VXb3JrZXJU
aHJlYWQmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBJREJDbGllbnQ6OklEQkNv
bm5lY3Rpb25Qcm94eSosIFNvY2tldFByb3ZpZGVyKiwgc3RkOjp1bmlxdWVfcHRyPE5vdGlmaWNh
dGlvbkNsaWVudD4mJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgbm90aWZ5U2VydmljZVdv
cmtlclBhZ2VPZkNyZWF0aW9uSWZOZWNlc3NhcnkoKTsKQEAgLTk2LDYgKzEwMCw3IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBoYXNQZW5kaW5nRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gIW1fZXh0ZW5k
ZWRFdmVudHMuaXNFbXB0eSgpOyB9CiAKICAgICBOb3RpZmljYXRpb25DbGllbnQqIG5vdGlmaWNh
dGlvbkNsaWVudCgpIGZpbmFsIHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uQ2xpZW50LmdldCgpOyB9
CisKICAgICBzdGQ6Om9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBzZXNzaW9uSUQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQogCiAgICAgU2VydmljZVdvcmtlckNvbnRleHRE
YXRhIG1fY29udGV4dERhdGE7CkBAIC0xMDksNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPj4gbV9wZW5kaW5nU2tpcFdhaXRp
bmdQcm9taXNlczsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8Tm90aWZpY2F0aW9uQ2xpZW50PiBtX25vdGlmaWNhdGlvbkNsaWVudDsKKyAgICBi
b29sIG1faGFzUGVuZGluZ1NpbGVudFB1c2hFdmVudCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggZDg4NDVhYjI0YzM4
MDYyYzA3MjgwMTU2NDBmZmIwYTRmM2RmYmFmNy4uZjdhNDQ1ZDE2NWZhYWNhYWY3YzJjODRmZDMy
ZTA1OTdiNGI1ZWM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtNDAsNiArNDAsNyBA
QAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb24uaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRhaW5lci5oIgorI2luY2x1ZGUg
IlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUeXBl
cy5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KQEAgLTI4Niw2ICsyODcsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb246OnNob3dOb3RpZmljYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKGNvbnRleHQuaXNTZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS5zZXRIYXNQZW5kaW5nU2lsZW50UHVzaEV2ZW50KGZhbHNlKTsKKwogICAg
IC8vIFRoZSBOb3RpZmljYXRpb24gaXMga2VwdCBhbGl2ZSBieSB2aXJ0dWUgb2YgYmVpbmcgc2hv
dygpJ24gc29vbi4KICAgICAvLyBGSVhNRTogV2hlbiBpbXBsZW1lbnRpbmcgZ2V0Tm90aWZpY2F0
aW9ucygpLCBzdG9yZSB0aGlzIE5vdGlmaWNhdGlvbiBpbiB0aGUgcmVnaXN0cmF0aW9uJ3Mgbm90
aWZpY2F0aW9uIGxpc3QuCiAgICAgYXV0byBub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb246OmNy
ZWF0ZShjb250ZXh0LCB0aXRsZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
CmluZGV4IGUyZTQwOGIxMDkxNTQ3ZmQwMGI3ZmE1MDI3Zjg0MWVlYzdiZTU2OGIuLjMwYTk4MzUx
MDRhOWE3MmQxNzM0MDljODZiZTAwMDM5YzUxMDY4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuY3BwCkBAIC0yMjQsMTAgKzIyNCwxMiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1
ZXVlVGFza1RvRmlyZVB1c2hFdmVudChzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90PgogICAg
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJj
ZTo6RE9NTWFuaXB1bGF0aW9uLCBbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgc2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlID0gUmVmIHsgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlIH0sIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIG11dGFi
bGUgewogICAgICAgICBSRUxFQVNFX0xPRyhTZXJ2aWNlV29ya2VyLCAiU2VydmljZVdvcmtlclRo
cmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50IGZpcmluZyBldmVudCBmb3Igd29ya2VyICUi
IFBSSXU2NCwgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CiAKKyAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5zZXRIYXNQ
ZW5kaW5nU2lsZW50UHVzaEV2ZW50KHRydWUpOworCiAgICAgICAgIGF1dG8gcHVzaEV2ZW50ID0g
UHVzaEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnB1c2hFdmVudCwgeyB9LCBXVEZNb3ZlKGRh
dGEpLCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKICAgICAgICAgc2VydmljZVdv
cmtlckdsb2JhbFNjb3BlLT5kaXNwYXRjaEV2ZW50KHB1c2hFdmVudCk7CiAKLSAgICAgICAgcHVz
aEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8m
JiBleHRlbmRMaWZldGltZVByb21pc2VzKSBtdXRhYmxlIHsKKyAgICAgICAgcHVzaEV2ZW50LT53
aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSwgZXZlbnRDcmVhdGlvblRpbWUgPSBwdXNoRXZlbnQtPnRpbWVTdGFtcCgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykg
bXV0YWJsZSB7CiAgICAgICAgICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNl
OwogICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNl
cykgewogICAgICAgICAgICAgICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNl
OjpTdGF0dXM6OlJlamVjdGVkKSB7CkBAIC0yMzUsNyArMjM3LDEzIEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlUHVzaEV2ZW50KHN0ZDo6b3B0aW9uYWw8VmVjdG9y
PHVpbnQ4X3Q+CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhbGxiYWNrKCFoYXNSZWplY3RlZEFueVByb21p
c2UpOworCisgICAgICAgICAgICBib29sIHNob3dlZE5vdGlmaWNhdGlvbiA9ICFzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUtPmhhc1BlbmRpbmdTaWxlbnRQdXNoRXZlbnQoKTsKKyAgICAgICAgICAg
IGJvb2wgc3VjY2VzcyA9ICFoYXNSZWplY3RlZEFueVByb21pc2UgJiYgc2hvd2VkTm90aWZpY2F0
aW9uOworCisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRighc3VjY2VzcywgU2Vydmlj
ZVdvcmtlciwgIlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZVB1c2hFdmVudCBm
YWlsZWQgdG8gcHJvY2VzcyBwdXNoIGV2ZW50IChyZWplY3RlZFByb21pc2UgPSAlZCwgc2hvd2Vk
Tm90aWZpY2F0aW9uID0gJWQpIiwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlLCBzaG93ZWROb3RpZmlj
YXRpb24pOworCisgICAgICAgICAgICBjYWxsYmFjayhzdWNjZXNzKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IDIwZDlkZTkyMDE5YzU5YjVjM2VhNTNjMzM0MTYxMDllNDg0OWM3ZDkuLjRl
YWIwNDVmODZkNDVhNjg5NzcxNTA4MTNhNzZjODdlM2VkZDM2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0yMjMyLDI5ICsyMjMy
LDUxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbmFtZU9yaWdpbkluV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVCiAgICAgICAgIHNlc3Npb24tPnN0b3JhZ2VN
YW5hZ2VyKCkubW92ZURhdGEoZGF0YVR5cGVzLCBvbGRPcmlnaW4sIG5ld09yaWdpbiwgW2FnZ3Jl
Z2F0b3JdIHsgfSk7CiB9CiAKLSNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKwogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNz
YWdlPiYpPiYmIGNhbGxiYWNrKQogewotI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05T
KQogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewog
ICAgICAgICBMT0coTm90aWZpY2F0aW9ucywgIk5ldHdvcmtQcm9jZXNzIGdldHRpbmcgcGVuZGlu
ZyBwdXNoIG1lc3NhZ2VzIGZvciBzZXNzaW9uIElEICUiIFBSSXU2NCwgc2Vzc2lvbklELnRvVUlu
dDY0KCkpOwogICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
IGVsc2UKICAgICAgICAgTE9HKE5vdGlmaWNhdGlvbnMsICJOZXR3b3JrUHJvY2VzcyBjb3VsZCBu
b3QgZmluZCBzZXNzaW9uIGZvciBJRCAlbGx1IHRvIGdldCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMi
LCBzZXNzaW9uSUQudG9VSW50NjQoKSk7Ci0jZW5kaWYKLSAgICBjYWxsYmFjayh7IH0pOwogfQog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBMT0coUHVzaCwgIk5ldHdvcmtpbmcg
cHJvY2VzcyBoYW5kbGluZyBhIHB1c2ggbWVzc2FnZSBmcm9tIFVJIHByb2Nlc3MgaW4gc2Vzc2lv
biAlbGx1Iiwgc2Vzc2lvbklELnRvVUludDY0KCkpOwotICAgICAgICBzZXNzaW9uLT5lbnN1cmVT
V1NlcnZlcigpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdlLnB1c2hEYXRh
KSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tVVJMKHB1
c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCk7CisgICAgICAgIHNlc3Npb24tPmVuc3VyZVNXU2Vy
dmVyKCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UucHVzaERhdGEpLCBX
VEZNb3ZlKHB1c2hNZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gUmVmIHsgKnRoaXMgfSwgc2Vzc2lvbklELCBvcmlnaW4gPSBXVEZNb3ZlKG9yaWdpbiksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIE5ldHdvcmtTZXNzaW9uKiBzZXNzaW9uOworICAgICAgICAgICAgaWYgKCFyZXN1bHQg
JiYgKHNlc3Npb24gPSBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSkgeworICAgICAgICAgICAg
ICAgIHNlc3Npb24tPm5vdGlmaWNhdGlvbk1hbmFnZXIoKS5pbmNyZW1lbnRTaWxlbnRQdXNoQ291
bnQoV1RGTW92ZShvcmlnaW4pLCBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0
XSh1bnNpZ25lZCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICB9KTsKICAg
ICB9IGVsc2UKICAgICAgICAgTE9HKFB1c2gsICJOZXR3b3JraW5nIHByb2Nlc3MgYXNrZWQgdG8g
aGFuZGxlIGEgcHVzaCBtZXNzYWdlIGZyb20gVUkgcHJvY2VzcyBpbiBzZXNzaW9uICVsbHUsIGJ1
dCB0aGF0IHNlc3Npb24gZG9lc24ndCBleGlzdCIsIHNlc3Npb25JRC50b1VJbnQ2NCgpKTsKIH0K
LSNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNlbHNlCisKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNhbGxiYWNr
KQoreworICAgIGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OnByb2Nl
c3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBjYWxsYmFjayhmYWxzZSk7
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpICYmIEVOQUJMRShCVUlMVF9J
Tl9OT1RJRklDQVRJT05TKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYgY2FsbGJhY2spCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcAppbmRleCBjNTEyZjJjYjMyNTQwNDU0YjA2ZGY3MzI1YTMxYjJhM2NlMWQw
YzY5Li44ZTdlMDFlMWUzY2YxOWYxMGZhYmI2ZTI0YTU0OGQ2NzE3NGZjZjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTE3NSw2ICsxNzUs
MTYgQEAgdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0UHVzaFBlcm1pc3Npb25T
dGF0ZShVUkwmJiBzY29wZVVSTCwgQ29tcGxldGkKICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxX
ZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkdldFB1c2hQZXJtaXNzaW9uU3RhdGU+KFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKHNjb3BlVVJMKSk7CiB9CiAKK3ZvaWQgTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXI6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBvcmlnaW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodW5zaWduZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9jb25uZWN0aW9uKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
c2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQ+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG9yaWdpbikp
OworfQorCiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2Fn
ZShBcmdzJiYuLi4gYXJncykgY29uc3QKIHsKQEAgLTIyOCw2ICsyMzgsMTcgQEAgdGVtcGxhdGU8
PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8Ym9vbD4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3Ry
dWN0IFJlcGx5Q2FsbGVyPHVuc2lnbmVkPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERh
ZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPGludD4gdmFs
dWU7CisgICAgICAgIGRlY29kZXIgPj4gdmFsdWU7CisgICAgICAgIGlmICghdmFsdWUpCisgICAg
ICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoMCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCp2YWx1ZSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxs
ZXI8VmVjdG9yPFN0cmluZz4mJj4gewogICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246
OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNTJhNjM4NGJhYjEwZTBhZTkxNmJhYTIzZjkxNGE5
MjVmZWUzMDhkZC4uNGIyNDdjZjQ2ZDdlYjg1YzcxMGFiYjJkNThlZmQ4YTEzYTNjYTAxMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTYxLDYgKzYx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zdWJzY3JpYmVGcm9tUHVzaFNlcnZpY2UoVVJMJiYg
c2NvcGVVUkwsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEV4cGVjdGVkPGJvb2wsIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYm
KTsKICAgICB2b2lkIGdldFB1c2hTdWJzY3JpcHRpb24oVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+JiYpPiYmKTsKICAgICB2b2lkIGdl
dFB1c2hQZXJtaXNzaW9uU3RhdGUoVVJMJiYgc2NvcGVVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8dWludDhfdCwgV2ViQ29yZTo6RXhjZXB0aW9uRGF0YT4mJik+JiYpOworICAg
IHZvaWQgaW5jcmVtZW50U2lsZW50UHVzaENvdW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CiAKIHByaXZhdGU6CiAg
ICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJp
bmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oCmluZGV4IGYzZjdiYmU2M2Y0ZWQzNWVkY2YzZTJhYWFkOTNm
YjNlNDkyOWZmOTkuLmUyZDdkNmI3MTcxMzQ1NjMzM2ZmZjBlZGU1YzQwODRlOWQyZDRhYTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTI3
LDYgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQgewogCisvLyBJZiBhbiBv
cmlnaW4gcHJvY2Vzc2VzIG1vcmUgdGhhbiB0aGlzIG1hbnkgc2lsZW50IHB1c2hlcywgdGhlbiBp
dCB3aWxsIGJlIHVuc3Vic2NyaWJlZCBmcm9tIHB1c2guCitjb25zdGV4cHIgdW5zaWduZWQgbWF4
U2lsZW50UHVzaENvdW50ID0gMzsKKwogY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVy
c2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9uIjsKIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2Nv
bFZlcnNpb25WYWx1ZSA9IDE7CiBjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVk
TWVzc2FnZUtleSA9ICJlbmNvZGVkIG1lc3NhZ2UiOwpAQCAtNDgsNyArNTEsOCBAQCBlbnVtIGNs
YXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CiAgICAgU3Vic2NyaWJlVG9QdXNoU2VydmljZSwK
ICAgICBVbnN1YnNjcmliZUZyb21QdXNoU2VydmljZSwKICAgICBHZXRQdXNoU3Vic2NyaXB0aW9u
LAotICAgIEdldFB1c2hQZXJtaXNzaW9uU3RhdGUKKyAgICBHZXRQdXNoUGVybWlzc2lvblN0YXRl
LAorICAgIEluY3JlbWVudFNpbGVudFB1c2hDb3VudCwKIH07CiAKIGlubGluZSBib29sIG1lc3Nh
Z2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKQEAgLTY1LDYgKzY5LDcg
QEAgaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VU
eXBlKQogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlOgog
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFB1c2hTdWJzY3JpcHRpb246CiAgICAgY2FzZSBNZXNz
YWdlVHlwZTo6R2V0UHVzaFBlcm1pc3Npb25TdGF0ZToKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJ
bmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGNhc2Ug
TWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZDoKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggYTdhOGJiNjA4NzVhOTk1
MmU5OTBhNTJhZDg5ZDMzNGM2ZDZmZjhmYS4uM2M4MThmYjIxODM5MzJjMjEwZjU3YWFlNjAwMDMy
MzdlNGFkNDJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2wubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIkxvZ2dpbmcuaCIK
ICNpbXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJR2FtZXBhZFByb3ZpZGVy
LmgiCisjaW1wb3J0ICJXS0FQSUNhc3QuaCIKICNpbXBvcnQgIldLRG93bmxvYWRJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCkBA
IC00MSw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZENhY2hlLmgiCiAjaW1wb3J0
ICJXZWJDZXJ0aWZpY2F0ZUluZm8uaCIKICNpbXBvcnQgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5o
IgorI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzQ2FjaGUuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKQEAgLTYxMiw0ICs2MTQsOSBAQCBzdGF0aWMgUmV0YWluUHRyPFdL
UHJvY2Vzc1Bvb2w+JiBzaGFyZWRQcm9jZXNzUG9vbCgpCiAgICAgX3Byb2Nlc3NQb29sLT50ZXJt
aW5hdGVBbGxXZWJDb250ZW50UHJvY2Vzc2VzKCk7CiB9CiAKKy0gKFdLTm90aWZpY2F0aW9uTWFu
YWdlclJlZilfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmcKK3sKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSShfcHJvY2Vzc1Bvb2wtPnN1cHBsZW1lbnQ8V2ViS2l0OjpXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk+KCkpOworfQorCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCmluZGV4IGUxZmQ5
OTFkZmIyYjc4NDk0NDUwMzZjZDgyOWU2NGQ3Y2M1ZGRiNjEuLjZlMTU1N2FjNWIxZGU5NjgyMDIy
OTc3ZGQ3ZGNmMzM2NGI4NjE2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAorI2ltcG9ydCA8V2Vi
S2l0L1dLQmFzZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2wuaD4KICNpbXBvcnQg
PFdlYktpdC9XS1NlY3VyaXR5T3JpZ2luLmg+CiAKQEAgLTEzNyw2ICsxMzgsOCBAQAogCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFi
bGVkLCBzZXR0ZXI9X3NldENvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBf
Y29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0VuYWJsZWQgV0tfQVBJX0RFUFJFQ0FURUQoIlBhcnRp
dGlvbmVkIGNvb2tpZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiLCBtYWNvcygxMC4xMi4zLCAx
MC4xNC40KSwgaW9zKDEwLjMsIDEyLjIpKTsKIAorLSAoV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVm
KV9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZzsKKwogLy8gVGVzdCBvbmx5LgogLSAodm9p
ZClfc2VlZFJlc291cmNlTG9hZFN0YXRpc3RpY3NGb3JUZXN0aW5nV2l0aEZpcnN0UGFydHk6KE5T
VVJMICopZmlyc3RQYXJ0eVVSTCB0aGlyZFBhcnR5OihOU1VSTCAqKXRoaXJkUGFydHlVUkwgc2hv
dWxkU2NoZWR1bGVOb3RpZmljYXRpb246KEJPT0wpc2hvdWxkU2NoZWR1bGVOb3RpZmljYXRpb24g
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTUuNCksIGlvcygxMy40KSk7CiAtICh2b2lkKV9nYXJiYWdl
Q29sbGVjdEphdmFTY3JpcHRPYmplY3RzRm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDExLjApLCBpb3MoMTQuMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoU2VydmljZS5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5oCmluZGV4
IGZlNDE1ZTAwOGRkNjMwNTEwNTgyNGY4Y2ZiMDI2OTVhZmMzMjNmZWIuLjgyZmNiMWM0ZWU5ZTdm
NGY4MzVkMDcwNzFhYjYyMzg5MmZlYmJiYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvUHVzaFNlcnZpY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hTZXJ2
aWNlLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3Vic2NyaWJlKGNvbnN0
IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY29wZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiB2YXBpZFB1YmxpY0tleSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBFeHBlY3RlZDxXZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YSwgV2ViQ29yZTo6RXhjZXB0
aW9uRGF0YT4mKT4mJik7CiAgICAgdm9pZCB1bnN1YnNjcmliZShjb25zdCBTdHJpbmcmIGJ1bmRs
ZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NvcGUsIFdlYkNvcmU6OlB1c2hTdWJzY3JpcHRp
b25JZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEV4cGVjdGVkPGJvb2ws
IFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+JiYpOwogCisgICAgdm9pZCBpbmNyZW1lbnRTaWxl
bnRQdXNoQ291bnQoY29uc3QgU3RyaW5nJiBidW5kbGVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNlY3VyaXR5T3JpZ2luLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJik7CisK
ICAgICB2b2lkIGRpZENvbXBsZXRlR2V0U3Vic2NyaXB0aW9uUmVxdWVzdChHZXRTdWJzY3JpcHRp
b25SZXF1ZXN0Jik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVN1YnNjcmliZVJlcXVlc3QoU3Vic2Ny
aWJlUmVxdWVzdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVVbnN1YnNjcmliZVJlcXVlc3QoVW5z
dWJzY3JpYmVSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1
c2hTZXJ2aWNlLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoU2VydmljZS5tbQppbmRl
eCA4MGUyNDMwODQwMGJjZmM3ZWE5YmFhMGFmODI3NzlkYTVmODM1MzIyLi5hZWU5MTlhOGEwZjk0
ZjdhNTY1ZWFjMDYxYjIyNmJkMWNjZTM4MDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1B1c2hTZXJ2aWNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaFNl
cnZpY2UubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIkFwcGxlUHVzaFNlcnZpY2VDb25u
ZWN0aW9uLmgiCiAjaW1wb3J0ICJNb2NrUHVzaFNlcnZpY2VDb25uZWN0aW9uLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCiAjaW1wb3J0
IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUHVzaE1lc3NhZ2VD
cnlwdG8uaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KQEAgLTQ0LDE5ICs0
NSw5IEBAIG5hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2b2lkIHVwZGF0ZVRvcGljTGlz
dHMoUHVzaFNlcnZpY2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQdXNoRGF0YWJhc2UmIGRhdGFi
YXNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGRhdGFiYXNlLmdldFRvcGljc0J5V2FrZVN0YXRlKFsmY29ubmVjdGlvbiwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYmIHRvcGljTWFwKSBtdXRh
YmxlIHsKKyAgICBkYXRhYmFzZS5nZXRUb3BpY3MoWyZjb25uZWN0aW9uLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgdG9waWNzKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gRklYTUU6IG1vdmUgdG9waWNzIHRvIGlnbm9yZWQgbGlzdCBiYXNlZCBv
biB1c2VyIHByZWZlcmVuY2VzLgotICAgICAgICBQdXNoU2VydmljZUNvbm5lY3Rpb246OlRvcGlj
TGlzdHMgdG9waWNMaXN0czsKLQotICAgICAgICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQo
UHVzaFdha2VTdGF0ZTo6V2FraW5nKTsgaXQgIT0gdG9waWNNYXAuZW5kKCkpCi0gICAgICAgICAg
ICBzdGQ6OnN3YXAodG9waWNMaXN0cy5lbmFibGVkVG9waWNzLCBpdC0+dmFsdWUpOwotICAgICAg
ICBpZiAoYXV0byBpdCA9IHRvcGljTWFwLmZpbmQoUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3Rp
Yyk7IGl0ICE9IHRvcGljTWFwLmVuZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlz
dHMub3Bwb3J0dW5pc3RpY1RvcGljcywgaXQtPnZhbHVlKTsKLSAgICAgICAgaWYgKGF1dG8gaXQg
PSB0b3BpY01hcC5maW5kKFB1c2hXYWtlU3RhdGU6Ok5vbldha2luZyk7IGl0ICE9IHRvcGljTWFw
LmVuZCgpKQotICAgICAgICAgICAgc3RkOjpzd2FwKHRvcGljTGlzdHMubm9uV2FraW5nVG9waWNz
LCBpdC0+dmFsdWUpOwotCi0gICAgICAgIGNvbm5lY3Rpb24uc2V0VG9waWNMaXN0cyhXVEZNb3Zl
KHRvcGljTGlzdHMpKTsKLQorICAgICAgICBjb25uZWN0aW9uLnNldEVuYWJsZWRUb3BpY3MoV1RG
TW92ZSh0b3BpY3MpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0K
QEAgLTQ4Miw2ICs0NzMsMzEgQEAgdm9pZCBQdXNoU2VydmljZTo6ZGlkQ29tcGxldGVVbnN1YnNj
cmliZVJlcXVlc3QoVW5zdWJzY3JpYmVSZXF1ZXN0JiByZXF1ZXN0KQogICAgIGZpbmlzaGVkUHVz
aFNlcnZpY2VSZXF1ZXN0KG1fdW5zdWJzY3JpYmVSZXF1ZXN0cywgcmVxdWVzdCk7CiB9CiAKK3Zv
aWQgUHVzaFNlcnZpY2U6OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJpbmcmIGJ1
bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQodW5zaWduZWQpPiYmIGhhbmRsZXIpCit7CisgICAgbV9kYXRhYmFzZS0+aW5j
cmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlkZW50aWZpZXIsIHNlY3VyaXR5T3JpZ2luLCBb
dGhpcywgYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIGhhbmRsZXIgPSBXVEZNb3Zl
KGhhbmRsZXIpXSh1bnNpZ25lZCBzaWxlbnRQdXNoQ291bnQpIG11dGFibGUgeworICAgICAgICBp
ZiAoc2lsZW50UHVzaENvdW50IDwgV2ViS2l0OjpXZWJQdXNoRDo6bWF4U2lsZW50UHVzaENvdW50
KSB7CisgICAgICAgICAgICBoYW5kbGVyKHNpbGVudFB1c2hDb3VudCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSRUxFQVNFX0xPRyhQdXNoLCAiUmVtb3Zpbmcg
YWxsIHN1YnNjcmlwdGlvbnMgYXNzb2NpYXRlZCB3aXRoICV7cHVibGljfXMgJXtzZW5zaXRpdmV9
cyBzaW5jZSBpdCBwcm9jZXNzZWQgJXUgc2lsZW50IHB1c2hlcyIsIGJ1bmRsZUlkZW50aWZpZXIu
dXRmOCgpLmRhdGEoKSwgc2VjdXJpdHlPcmlnaW4udXRmOCgpLmRhdGEoKSwgc2lsZW50UHVzaENv
dW50KTsKKworICAgICAgICBtX2RhdGFiYXNlLT5yZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlm
aWVyQW5kU2VjdXJpdHlPcmlnaW4oYnVuZGxlSWRlbnRpZmllciwgc2VjdXJpdHlPcmlnaW4sIFt0
aGlzLCBidW5kbGVJZGVudGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgc2lsZW50UHVzaENvdW50LCBo
YW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oYXV0byYmIHJlbW92ZWRSZWNvcmRzKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcmVjb3JkIDogcmVtb3ZlZFJlY29yZHMpIHsKKyAg
ICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb24tPnVuc3Vic2NyaWJlKHJlY29yZC50b3BpYywgcmVj
b3JkLnNlcnZlclZBUElEUHVibGljS2V5LCBbdG9waWMgPSByZWNvcmQudG9waWNdKGJvb2wgdW5z
dWJzY3JpYmVkLCBOU0Vycm9yKiBlcnJvcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXVu
c3Vic2NyaWJlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFB1
c2gsICJJbmNyZW1lbnRTaWxlbnRQdXNoUmVxdWVzdCBjb3VsZG4ndCByZW1vdmUgc3Vic2NyaXB0
aW9uIGZvciB0b3BpYyAle3NlbnNpdGl2ZX1zOiAle3B1YmxpY31zIGNvZGU6ICVsbGQpIiwgdG9w
aWMudXRmOCgpLmRhdGEoKSwgZXJyb3IuZG9tYWluLlVURjhTdHJpbmcgPzogIm5vbmUiLCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihlcnJvci5jb2RlKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHVwZGF0ZVRvcGljTGlzdHMobV9jb25uZWN0aW9uLCBt
X2RhdGFiYXNlLCBbc2lsZW50UHVzaENvdW50LCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVyKHNpbGVudFB1c2hDb3VudCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIGVudW0gY2xhc3MgQ29u
dGVudEVuY29kaW5nIHsKICAgICBFbXB0eSwKICAgICBBRVNHQ00sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5oCmluZGV4IDAyODA4NGU1MmI0YTBkYmIzYzE0OWJlNmM5NzM2Zjc1
NzVlNzg3YjMuLjc5NTU3ZjY4YTVkY2U1NzAyYWNlNGE4ZDkxNGUyNWI3ZTA5ZjQ3ZTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC00Niw2ICs0NiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIGVudW0gY2xhc3MgTWVzc2FnZUxldmVsIDogdWludDhfdDsKIH0KIAorbmFt
ZXNwYWNlIFdlYkNvcmUgeworc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKK30KKwogdXNpbmcg
V2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOwogdXNpbmcgV2ViS2l0OjpX
ZWJQdXNoRDo6V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uOwogCkBAIC04MCw2
ICs4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc3Vic2NyaWJlRnJvbVB1c2hTZXJ2aWNlKENs
aWVudENvbm5lY3Rpb24qLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBXZWJDb3JlOjpQdXNoU3Vic2Ny
aXB0aW9uSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBFeHBlY3RlZDxi
b29sLCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5U2VuZGVyKTsKICAgICB2b2lk
IGdldFB1c2hTdWJzY3JpcHRpb24oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFVSTCYgc2NvcGVV
UkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRXhwZWN0ZWQ8c3RkOjpvcHRpb25hbDxX
ZWJDb3JlOjpQdXNoU3Vic2NyaXB0aW9uRGF0YT4sIFdlYkNvcmU6OkV4Y2VwdGlvbkRhdGE+Jik+
JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQgZ2V0UHVzaFBlcm1pc3Npb25TdGF0ZShDbGllbnRD
b25uZWN0aW9uKiwgY29uc3QgVVJMJiBzY29wZVVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpFeGNlcHRpb25EYXRhPiYpPiYmIHJlcGx5
U2VuZGVyKTsKKyAgICB2b2lkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChDbGllbnRDb25uZWN0
aW9uKiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCh1bnNpZ25lZCk+JiYpOwogCiAgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2Uo
SlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYnJvYWRjYXN0QWxs
Q29ubmVjdGlvbklkZW50aXRpZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbQppbmRleCAxY2Y4ZTI0NzNiNDUzY2NmMTAxN2FjYzQ3ZTQzMjY2MjExZDYwNDA1Li4xOTZm
YjNhODE1MWZjYjQ3Nzg1YzY1OGI3YTM2ZDFlMmEzN2YwNzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJNb2NrQXBw
QnVuZGxlUmVnaXN0cnkuaCIKIAogI2ltcG9ydCA8V2ViQ29yZS9QdXNoUGVybWlzc2lvblN0YXRl
Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2ltcG9ydCA8cGFs
L3NwaS9jb2NvYS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgogI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW1wb3J0IDx3dGYvSGV4TnVtYmVyLmg+CkBAIC0xMTgsNiArMTE5LDExIEBA
IEFSR1VNRU5UUyhVUkwpCiBSRVBMWShjb25zdCBFeHBlY3RlZDx1aW50OF90LCBXZWJDb3JlOjpF
eGNlcHRpb25EYXRhPiYpCiBFTkQKIAorRlVOQ1RJT04oaW5jcmVtZW50U2lsZW50UHVzaENvdW50
KQorQVJHVU1FTlRTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSkKK1JFUExZKHVuc2lnbmVk
KQorRU5ECisKICN1bmRlZiBGVU5DVElPTgogI3VuZGVmIEFSR1VNRU5UUwogI3VuZGVmIFJFUExZ
CkBAIC0yMDAsNiArMjA2LDEzIEBAIFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBnZXRQdXNoUGVy
bWlzc2lvblN0YXRlOjplbmNvZGVSZXBseShjb25zdCBFeHBlY3RlZDx1aW50CiAgICAgcmV0dXJu
IGVuY29kZXIudGFrZUJ1ZmZlcigpOwogfQogCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgaW5j
cmVtZW50U2lsZW50UHVzaENvdW50OjplbmNvZGVSZXBseSh1bnNpZ25lZCByZXBseSkKK3sKKyAg
ICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7
CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlSW5mbwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgpAQCAtNDAyLDYgKzQxNSw5IEBA
IHZvaWQgRGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbiwgTWVzc2FnZVR5cGUgbWVzCiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0UHVzaFBl
cm1pc3Npb25TdGF0ZToKICAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1l
c3NhZ2VJbmZvOjpnZXRQdXNoUGVybWlzc2lvblN0YXRlPihjbGllbnRDb25uZWN0aW9uLCBlbmNv
ZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpJbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQ6CisgICAgICAgIGhhbmRs
ZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6aW5jcmVtZW50U2lsZW50UHVz
aENvdW50PihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNl
bmRlcikpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTYyOCw2ICs2NDQsMTggQEAg
dm9pZCBEYWVtb246OmdldFB1c2hQZXJtaXNzaW9uU3RhdGUoQ2xpZW50Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgY29uc3QgVVJMJiBzY28KICAgICByZXBseVNlbmRlcihzdGF0aWNfY2FzdDx1aW50
OF90PihXZWJDb3JlOjpQdXNoUGVybWlzc2lvblN0YXRlOjpEZW5pZWQpKTsKIH0KIAordm9pZCBE
YWVtb246OmluY3JlbWVudFNpbGVudFB1c2hDb3VudChDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHNlY3VyaXR5T3JpZ2luLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHVuc2lnbmVkKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBy
dW5BZnRlclN0YXJ0aW5nUHVzaFNlcnZpY2UoW3RoaXMsIGJ1bmRsZUlkZW50aWZpZXIgPSBjb25u
ZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCksIHNlY3VyaXR5T3JpZ2luID0g
c2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSwgcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2Vu
ZGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFtX3B1c2hTZXJ2aWNlKSB7CisgICAgICAg
ICAgICByZXBseVNlbmRlcigwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIG1fcHVzaFNlcnZpY2UtPmluY3JlbWVudFNpbGVudFB1c2hDb3VudChidW5kbGVJZGVu
dGlmaWVyLCBzZWN1cml0eU9yaWdpbiwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgIH0pOwor
fQorCiBDbGllbnRDb25uZWN0aW9uKiBEYWVtb246OnRvQ2xpZW50Q29ubmVjdGlvbih4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CiAgICAgYXV0byBjbGllbnRDb25uZWN0aW9uID0gbV9j
b25uZWN0aW9uTWFwLmdldChjb25uZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZGFlOTA1MGE2ODFmYjY2NDY5NTJlMzU4N2MwODE2
MzgxOGVhYzJlLi42ZmJkYmVmMTZmOTBhY2NmMGQ5ZjQ3NmY1MWUzODRmNzQyNGVjYTQ5IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MzEgQEAKKzIwMjItMDMtMDMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlk
c29uLgorCisgICAgICAgIE1vZGlmaWVkIGV4aXN0aW5nIHB1c2ggdGVzdHMgdG8gc2hvdyBhIG5v
dGlmaWNhdGlvbi4gQWRkZWQgYSBuZXcgdGVzdCBjYXNlIHRvIG1ha2Ugc3VyZSB0aGF0CisgICAg
ICAgIHN1YnNjcmlwdGlvbnMgYXJlIHJlbW92ZWQgd2hlbiBhbiBvcmlnaW4gcmVhY2hlcyBpdHMg
cXVvdGEgb2Ygc2lsZW50IHB1c2hlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdE5v
dGlmaWNhdGlvblByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRp
b25Qcm92aWRlcjo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6flRlc3ROb3RpZmljYXRpb25Qcm92aWRl
cik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXI6Om5v
dGlmaWNhdGlvblBlcm1pc3Npb25zKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRlc3ROb3Rp
ZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1B1c2hEYXRhYmFzZS5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjptYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omdl
dFRvcGljc1N5bmMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UHVzaERhdGFiYXNlVGVzdDo6
Z2V0VG9waWNzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlB1c2hEYXRhYmFzZVRlc3Q6OnJl
bW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpQdXNoRGF0YWJhc2VUZXN0OjppbmNyZW1lbnRTaWxlbnRQdXNoQ291
bnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6b3JpZ2luIGNvbnN0KToKKwogMjAyMi0wMy0wMyAgRGV3ZWkg
Wmh1ICA8ZGV3ZWlfemh1QGFwcGxlLmNvbT4KIAogICAgICAgICAncnVuLWJlbmNobWFyaycgc2Ny
aXB0IHNob3VsZCBsb2cgaHR0cCByZXF1ZXN0cyBkdXJpbmcgYmVuY2htYXJrIHJ1bi4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1NvdXJjZXMudHh0CmluZGV4IDkyNmQ1NmU4OGE0MmI5NjIwNDU4NDBiZWIyZTNjZWM4ODE1
MzJjMDMuLjRhYzdjYjgwMWZiNDVhMWYxYjI0ZjVhY2M0OTk4NTc2MjI0ZGRiZGIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlcy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9Tb3VyY2VzLnR4dApAQCAtMjUsNSArMjUsNiBAQCBEZXByZWNhdGVkR2xvYmFsVmFsdWVz
LmNwcAogSmF2YVNjcmlwdFRlc3QuY3BwCiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAKIFRlc3RzQ29u
dHJvbGxlci5jcHAKK1Rlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAKIFRlc3RVdGlsaXRpZXMu
Y3BwCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wODBmMDZhOThjYzkxNTVlNGViOWVmMjRiMDU4Njc5ODg5NmMzZmFm
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyLmgiCisKKyNpbmNsdWRl
ICJXVEZTdHJpbmdVdGlsaXRpZXMuaCIKKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRpb25N
YW5hZ2VyLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLTnVtYmVyLmg+CisjaW5jbHVkZSA8V2ViS2l0
L1dLU2VjdXJpdHlPcmlnaW5SZWYuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tTdHJpbmcuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
eworCitzdGF0aWMgV0tEaWN0aW9uYXJ5UmVmIG5vdGlmaWNhdGlvblBlcm1pc3Npb25zKGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRlc3ROb3RpZmlj
YXRpb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bm90aWZpY2F0
aW9uUGVybWlzc2lvbnMoKTsKK30KKworVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjpUZXN0Tm90
aWZpY2F0aW9uUHJvdmlkZXIoVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZj4mJiBtYW5h
Z2VycykKKyAgICA6IG1fbWFuYWdlcnMoV1RGTW92ZShtYW5hZ2VycykpCisgICAgLCBtX3Blcm1p
c3Npb25zKGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpKSkKK3sKKyAgICBtX3By
b3ZpZGVyID0geworICAgICAgICB7IDAsIHRoaXMgfSwKKyAgICAgICAgMCwgLy8gc2hvd1dlYk5v
dGlmaWNhdGlvbgorICAgICAgICAwLCAvLyBjbG9zZVdlYk5vdGlmaWNhdGlvbgorICAgICAgICAw
LCAvLyBkaWREZXN0cm95Tm90aWZpY2F0aW9uCisgICAgICAgIDAsIC8vIGFkZE5vdGlmaWNhdGlv
bk1hbmFnZXIKKyAgICAgICAgMCwgLy8gcmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcgorICAgICAg
ICAmVGVzdFdlYktpdEFQSTo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMsCisgICAgICAgIDAsIC8v
IGNsZWFyTm90aWZpY2F0aW9ucworICAgIH07CisKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBt
X21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5h
Z2VyLCAmbV9wcm92aWRlci5iYXNlKTsKK30KKworVGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyOjp+
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKCkKK3sKKyAgICBmb3IgKGF1dG8mIG1hbmFnZXIgOiBt
X21hbmFnZXJzKQorICAgICAgICBXS05vdGlmaWNhdGlvbk1hbmFnZXJTZXRQcm92aWRlcihtYW5h
Z2VyLCBudWxscHRyKTsKK30KKworV0tEaWN0aW9uYXJ5UmVmIFRlc3ROb3RpZmljYXRpb25Qcm92
aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKSBjb25zdAoreworICAgIFdLUmV0YWluKG1f
cGVybWlzc2lvbnMuZ2V0KCkpOworICAgIHJldHVybiBtX3Blcm1pc3Npb25zLmdldCgpOworfQor
Cit2b2lkIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlcjo6c2V0UGVybWlzc2lvbihjb25zdCBTdHJp
bmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKQoreworICAgIGF1dG8gd2tBbGxvd2VkID0gYWRvcHRX
SyhXS0Jvb2xlYW5DcmVhdGUoYWxsb3dlZCkpOworICAgIGF1dG8gd2tPcmlnaW5TdHJpbmcgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG9yaWdpbi51dGY4KCkuZGF0YSgp
KSk7CisgICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtX3Blcm1pc3Npb25zLmdldCgpLCB3a09yaWdp
blN0cmluZy5nZXQoKSwgd2tBbGxvd2VkLmdldCgpKTsKKworICAgIGF1dG8gd2tPcmlnaW4gPSBh
ZG9wdFdLKFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKHdrT3JpZ2luU3RyaW5nLmdl
dCgpKSk7CisgICAgZm9yIChhdXRvJiBtYW5hZ2VyIDogbV9tYW5hZ2VycykKKyAgICAgICAgV0tO
b3RpZmljYXRpb25NYW5hZ2VyUHJvdmlkZXJEaWRVcGRhdGVOb3RpZmljYXRpb25Qb2xpY3kobWFu
YWdlciwgd2tPcmlnaW4uZ2V0KCksIGFsbG93ZWQpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3ROb3RpZmljYXRp
b25Qcm92aWRlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZTA0OGJmOWEyZDgzZDhlNDJkNTg2YzE2YTEyZTFlZDM2MTQzMTBj
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0Tm90aWZpY2F0aW9u
UHJvdmlkZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJLaXQvV0tNdXRhYmxlRGljdGlvbmFyeS5oPgorI2luY2x1ZGUgPFdlYktp
dC9XS05vdGlmaWNhdGlvbk1hbmFnZXIuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tOb3RpZmljYXRp
b25Qcm92aWRlci5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlciB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyKFZlY3RvcjxXS05vdGlmaWNhdGlvbk1hbmFnZXJSZWY+JiYpOworICAg
IH5UZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoKTsKKworICAgIFdLRGljdGlvbmFyeVJlZiBub3Rp
ZmljYXRpb25QZXJtaXNzaW9ucygpIGNvbnN0OworICAgIHZvaWQgc2V0UGVybWlzc2lvbihjb25z
dCBTdHJpbmcmIG9yaWdpbiwgYm9vbCBhbGxvd2VkKTsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
V0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmPiBtX21hbmFnZXJzOworICAgIFdLUmV0YWluUHRyPFdL
TXV0YWJsZURpY3Rpb25hcnlSZWY+IG1fcGVybWlzc2lvbnM7CisgICAgV0tOb3RpZmljYXRpb25Q
cm92aWRlclYwIG1fcHJvdmlkZXI7Cit9OworCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGUyMTg1NDcyOWIxYWM3ODE4NWI1YTkxYmY5YTQ5ODA4MzQzYjE5NDAuLjg4OTRmYmQ0ZmRjZTVl
NjdiM2Q0Mzc3MmFkZjliMDZiMzUwMTk1NGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
MDAyLDYgKzMwMDIsOCBAQAogCQlFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRlSW5wdXRUZXN0cy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8qIElEQkNo
ZWNrcG9pbnRXQUwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkNoZWNrcG9p
bnRXQUwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0UyNDVFNzI2
MzAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFQjREMzIwNzI3QzA0NTQzMDA4MUE4RTQgLyogVGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCNEQzMjA4MjdDMDQ1NDQwMDgxQThF
NCAvKiBUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdE5vdGlm
aWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCOUFEOEM2
Mjc2NDZFNzMwMEQ4OTNBNCAvKiBQdXNoRGF0YWJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUHVzaERhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRUJBNzVDNDgyNzVFRDdCRTAwRDZEMzFDIC8qIFB1c2hNZXNzYWdlQ3J5cHRvLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFB1c2hNZXNzYWdlQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlFNDE3QjA1IC8qIE1hcmthYmxlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmthYmxlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyOTAsNiArMzI5Miw4IEBACiAJCQkJQkMxMzE4
ODMxMTcxMTRBODAwQjY5NzI3IC8qIFBsYXRmb3JtVXRpbGl0aWVzLmggKi8sCiAJCQkJQkM5MDk1
MUIxMjU1MzNENzAwMDgzNzU2IC8qIFBsYXRmb3JtV2ViVmlldy5oICovLAogCQkJCUJDQjlFN0ZB
MTEyMzU5QTMwMEExMzdFMCAvKiBUZXN0LmggKi8sCisJCQkJRUI0RDMyMDcyN0MwNDU0MzAwODFB
OEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5jcHAgKi8sCisJCQkJRUI0RDMyMDgyN0Mw
NDU0NDAwODFBOEU0IC8qIFRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oICovLAogCQkJCUJDMTMx
QUE4MTE3MTMxRkMwMEI2OTcyNyAvKiBUZXN0c0NvbnRyb2xsZXIuY3BwICovLAogCQkJCUJDQjlF
N0M3MTEyMzRFM0EwMEExMzdFMCAvKiBUZXN0c0NvbnRyb2xsZXIuaCAqLywKIAkJCQk3QkI3NTRC
MDI3NEUzOUExMDBEMDBFQzEgLyogVGVzdFV0aWxpdGllcy5jcHAgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvUHVzaERhdGFiYXNlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwCmluZGV4IDcwYmNl
Mzk3YzIwNTIxMGUzYTU2Nzc1OGE2Yjc3YTNiMmQzMDI5YzIuLmVmMTYwMTk2NGJmY2Y4NWNmMzA5
NGQ5ZDVmMGZlNWY1YjY0ZjlmZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9QdXNoRGF0YWJhc2UuY3BwCkBAIC0zNSwxOCArMzUsMjYgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotc3RhdGljIFB1
c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0VG9waWNzQnlXYWtlU3RhdGVT
eW5jKFB1c2hEYXRhYmFzZSYgZGF0YWJhc2UpCitzdGF0aWMgU3RyaW5nIG1ha2VUZW1wb3JhcnlE
YXRhYmFzZVBhdGgoKQoreworICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5k
bGU7CisgICAgYXV0byBwYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlB1c2hE
YXRhYmFzZSIsIGhhbmRsZSwgIi5kYiIpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5k
bGUpOworICAgIHJldHVybiBwYXRoOworfQorCitzdGF0aWMgVmVjdG9yPFN0cmluZz4gZ2V0VG9w
aWNzU3luYyhQdXNoRGF0YWJhc2UmIGRhdGFiYXNlKQogewogICAgIGJvb2wgZG9uZSA9IGZhbHNl
OwotICAgIFB1c2hEYXRhYmFzZTo6UHVzaFdha2VTdGF0ZVRvVG9waWNNYXAgZ2V0UmVzdWx0Owor
ICAgIFZlY3RvcjxTdHJpbmc+IHRvcGljczsKIAotICAgIGRhdGFiYXNlLmdldFRvcGljc0J5V2Fr
ZVN0YXRlKFsmZG9uZSwgJmdldFJlc3VsdF0oUHVzaERhdGFiYXNlOjpQdXNoV2FrZVN0YXRlVG9U
b3BpY01hcCYmIHJlc3VsdCkgewotICAgICAgICBnZXRSZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCk7
CisgICAgZGF0YWJhc2UuZ2V0VG9waWNzKFsmZG9uZSwgJnRvcGljc10oYXV0byYmIHJlc3VsdCkg
eworICAgICAgICB0b3BpY3MgPSBXVEZNb3ZlKHJlc3VsdCk7CiAgICAgICAgIGRvbmUgPSB0cnVl
OwogICAgIH0pOwogICAgIFV0aWw6OnJ1bigmZG9uZSk7CiAKLSAgICByZXR1cm4gZ2V0UmVzdWx0
OworICAgIHJldHVybiB0b3BpY3M7CiB9CiAKIGNsYXNzIFB1c2hEYXRhYmFzZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CkBAIC01NCwzMiArNjIsNDMgQEAgcHVibGljOgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQdXNoRGF0YWJhc2U+IGRiOwogCiAgICAgUHVzaFJlY29yZCByZWNvcmQxIHsK
LSAgICAgICAgUHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXIoKSwKLSAgICAgICAgImNvbS5hcHBs
ZS5TYWZhcmkiX3MsCi0gICAgICAgICJodHRwczovL3d3dy5hcHBsZS5jb20iX3MsCi0gICAgICAg
ICJodHRwczovL3d3dy5hcHBsZS5jb20vbWFjIl9zLAotICAgICAgICAiaHR0cHM6Ly9wdXNoRW5k
cG9pbnQxIl9zLAotICAgICAgICAidG9waWMxIl9zLAotICAgICAgICB7IDAsIDEgfSwKLSAgICAg
ICAgeyAxLCAyIH0sCi0gICAgICAgIHsgMiwgMyB9LAotICAgICAgICB7IDQsIDUgfSwKLSAgICAg
ICAgY29udmVydFNlY29uZHNUb0Vwb2NoVGltZVN0YW1wKDE2NDMzNTAwMDApLAotICAgICAgICBQ
dXNoV2FrZVN0YXRlOjpPcHBvcnR1bmlzdGljCi0gICAgfTsKLSAgICBQdXNoUmVjb3JkIHJlY29y
ZDIgewogICAgICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcigpLAogICAgICAgICAiY29t
LmFwcGxlLndlYmFwcCJfcywKICAgICAgICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbSJfcywKICAg
ICAgICAgImh0dHBzOi8vd3d3LmFwcGxlLmNvbS9pcGhvbmUiX3MsCiAgICAgICAgICJodHRwczov
L3B1c2hFbmRwb2ludDIiX3MsCi0gICAgICAgICJ0b3BpYzIiX3MsCisgICAgICAgICJ0b3BpYzEi
X3MsCiAgICAgICAgIHsgNSwgNiB9LAogICAgICAgICB7IDYsIDcgfSwKICAgICAgICAgeyA3LCA4
IH0sCiAgICAgICAgIHsgOCwgOSB9CiAgICAgfTsKKyAgICBQdXNoUmVjb3JkIHJlY29yZDIgewor
ICAgICAgICBQdXNoU3Vic2NyaXB0aW9uSWRlbnRpZmllcigpLAorICAgICAgICAiY29tLmFwcGxl
LlNhZmFyaSJfcywKKyAgICAgICAgImh0dHBzOi8vd3d3LndlYmtpdC5vcmciX3MsCisgICAgICAg
ICJodHRwczovL3d3dy53ZWJraXQub3JnL2Jsb2ciX3MsCisgICAgICAgICJodHRwczovL3B1c2hF
bmRwb2ludDQiX3MsCisgICAgICAgICJ0b3BpYzQiX3MsCisgICAgICAgIHsgMTQsIDE1IH0sCisg
ICAgICAgIHsgMTYsIDE3IH0sCisgICAgICAgIHsgMTgsIDE5IH0sCisgICAgICAgIHsgMjAsIDIx
IH0KKyAgICB9OwogICAgIFB1c2hSZWNvcmQgcmVjb3JkMyB7CisgICAgICAgIFB1c2hTdWJzY3Jp
cHRpb25JZGVudGlmaWVyKCksCisgICAgICAgICJjb20uYXBwbGUuU2FmYXJpIl9zLAorICAgICAg
ICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLAorICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUu
Y29tL21hYyJfcywKKyAgICAgICAgImh0dHBzOi8vcHVzaEVuZHBvaW50MSJfcywKKyAgICAgICAg
InRvcGljMiJfcywKKyAgICAgICAgeyAwLCAxIH0sCisgICAgICAgIHsgMSwgMiB9LAorICAgICAg
ICB7IDIsIDMgfSwKKyAgICAgICAgeyA0LCA1IH0sCisgICAgICAgIGNvbnZlcnRTZWNvbmRzVG9F
cG9jaFRpbWVTdGFtcCgxNjQzMzUwMDAwKSwKKyAgICB9OworICAgIFB1c2hSZWNvcmQgcmVjb3Jk
NCB7CiAgICAgICAgIFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyKCksCiAgICAgICAgICJjb20u
YXBwbGUuU2FmYXJpIl9zLAogICAgICAgICAiaHR0cHM6Ly93d3cuYXBwbGUuY29tIl9zLApAQCAt
OTUsNiArMTE0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8UHVzaFJlY29yZD4gaW5z
ZXJ0UmVzdWx0MTsKICAgICBzdGQ6Om9wdGlvbmFsPFB1c2hSZWNvcmQ+IGluc2VydFJlc3VsdDI7
CiAgICAgc3RkOjpvcHRpb25hbDxQdXNoUmVjb3JkPiBpbnNlcnRSZXN1bHQzOworICAgIHN0ZDo6
b3B0aW9uYWw8UHVzaFJlY29yZD4gaW5zZXJ0UmVzdWx0NDsKIAogICAgIHN0ZDo6b3B0aW9uYWw8
UHVzaFJlY29yZD4gaW5zZXJ0UmVjb3JkKGNvbnN0IFB1c2hSZWNvcmQmIHJlY29yZCkKICAgICB7
CkBAIC0xNjcsMTUgKzE4Nyw1NyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByb3dJZGVudGlm
aWVyczsKICAgICB9CiAKLSAgICBQdXNoRGF0YWJhc2U6OlB1c2hXYWtlU3RhdGVUb1RvcGljTWFw
IGdldFRvcGljc0J5V2FrZVN0YXRlKCkKKyAgICBWZWN0b3I8U3RyaW5nPiBnZXRUb3BpY3MoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGdldFRvcGljc0J5V2FrZVN0YXRlU3luYygqZGIpOworICAg
ICAgICByZXR1cm4gZ2V0VG9waWNzU3luYygqZGIpOworICAgIH0KKworICAgIFZlY3RvcjxSZW1v
dmVkUHVzaFJlY29yZD4gcmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJp
bmcmIGJ1bmRsZUlEKQorICAgIHsKKyAgICAgICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAg
IFZlY3RvcjxSZW1vdmVkUHVzaFJlY29yZD4gcmVtb3ZlZFJlY29yZHM7CisKKyAgICAgICAgZGIt
PnJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXIoYnVuZGxlSUQsIFsmZG9uZSwgJnJlbW92
ZWRSZWNvcmRzXShhdXRvJiYgcmVzdWx0KSB7CisgICAgICAgICAgICByZW1vdmVkUmVjb3JkcyA9
IFdURk1vdmUocmVzdWx0KTsKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICB9KTsK
KyAgICAgICAgVXRpbDo6cnVuKCZkb25lKTsKKworICAgICAgICByZXR1cm4gcmVtb3ZlZFJlY29y
ZHM7CisgICAgfQorCisgICAgVmVjdG9yPFJlbW92ZWRQdXNoUmVjb3JkPiByZW1vdmVSZWNvcmRz
QnlCdW5kbGVJZGVudGlmaWVyQW5kU2VjdXJpdHlPcmlnaW4oY29uc3QgU3RyaW5nJiBidW5kbGVJ
RCwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbikKKyAgICB7CisgICAgICAgIGJvb2wgZG9u
ZSA9IGZhbHNlOworICAgICAgICBWZWN0b3I8UmVtb3ZlZFB1c2hSZWNvcmQ+IHJlbW92ZWRSZWNv
cmRzOworCisgICAgICAgIGRiLT5yZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlmaWVyQW5kU2Vj
dXJpdHlPcmlnaW4oYnVuZGxlSUQsIHNlY3VyaXR5T3JpZ2luLCBbJmRvbmUsICZyZW1vdmVkUmVj
b3Jkc10oYXV0byYmIHJlc3VsdCkgeworICAgICAgICAgICAgcmVtb3ZlZFJlY29yZHMgPSBXVEZN
b3ZlKHJlc3VsdCk7CisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgfSk7CisgICAg
ICAgIFV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICAgICAgcmV0dXJuIHJlbW92ZWRSZWNvcmRzOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIGluY3JlbWVudFNpbGVudFB1c2hDb3VudChjb25zdCBTdHJp
bmcmIGJ1bmRsZUlELCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQorICAgIHsKKyAgICAg
ICAgYm9vbCBkb25lID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKworICAg
ICAgICBkYi0+aW5jcmVtZW50U2lsZW50UHVzaENvdW50KGJ1bmRsZUlELCBzZWN1cml0eU9yaWdp
biwgWyZkb25lLCAmY291bnRdKGludCByZXN1bHQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gcmVz
dWx0OworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH0pOworICAgICAgICBVdGls
OjpydW4oJmRvbmUpOworCisgICAgICAgIHJldHVybiBjb3VudDsKICAgICB9CiAKICAgICB2b2lk
IFNldFVwKCkgZmluYWwKICAgICB7CiAgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOwotICAgICAg
ICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShTUUxpdGVEYXRhYmFzZTo6aW5NZW1vcnlQYXRoKCksIFt0
aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkgewor
ICAgICAgICBQdXNoRGF0YWJhc2U6OmNyZWF0ZShtYWtlVGVtcG9yYXJ5RGF0YWJhc2VQYXRoKCks
IFt0aGlzLCAmZG9uZV0oc3RkOjp1bmlxdWVfcHRyPFB1c2hEYXRhYmFzZT4mJiBkYXRhYmFzZSkg
ewogICAgICAgICAgICAgZGIgPSBXVEZNb3ZlKGRhdGFiYXNlKTsKICAgICAgICAgICAgIGRvbmUg
PSB0cnVlOwogICAgICAgICB9KTsKQEAgLTE4NSw2ICsyNDcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IEFTU0VSVF9UUlVFKGluc2VydFJlc3VsdDEgPSBpbnNlcnRSZWNvcmQocmVjb3JkMSkpOwogICAg
ICAgICBBU1NFUlRfVFJVRShpbnNlcnRSZXN1bHQyID0gaW5zZXJ0UmVjb3JkKHJlY29yZDIpKTsK
ICAgICAgICAgQVNTRVJUX1RSVUUoaW5zZXJ0UmVzdWx0MyA9IGluc2VydFJlY29yZChyZWNvcmQz
KSk7CisgICAgICAgIEFTU0VSVF9UUlVFKGluc2VydFJlc3VsdDQgPSBpbnNlcnRSZWNvcmQocmVj
b3JkNCkpOwogICAgIH0KIH07CiAKQEAgLTIwMCw4ICsyNjMsNyBAQCBzdGF0aWMgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFB1c2hSZWNvcmQmIGEsIGNvbnN0IFB1c2hSZWNvcmQmIGIpCiAgICAgICAg
ICYmIGEuY2xpZW50UHVibGljS2V5ID09IGIuY2xpZW50UHVibGljS2V5CiAgICAgICAgICYmIGEu
Y2xpZW50UHJpdmF0ZUtleSA9PSBiLmNsaWVudFByaXZhdGVLZXkKICAgICAgICAgJiYgYS5zaGFy
ZWRBdXRoU2VjcmV0ID09IGIuc2hhcmVkQXV0aFNlY3JldAotICAgICAgICAmJiBhLmV4cGlyYXRp
b25UaW1lID09IGIuZXhwaXJhdGlvblRpbWUKLSAgICAgICAgJiYgYS53YWtlU3RhdGUgPT0gYi53
YWtlU3RhdGU7CisgICAgICAgICYmIGEuZXhwaXJhdGlvblRpbWUgPT0gYi5leHBpcmF0aW9uVGlt
ZTsKIH0KIAogVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIEluc2VydFJlY29yZCkKQEAgLTIxNCwy
NiArMjc2LDc5IEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBJbnNlcnRSZWNvcmQpCiAgICAg
ZXhwZWN0ZWRSZWNvcmQyLmlkZW50aWZpZXIgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQdXNoU3Vi
c2NyaXB0aW9uSWRlbnRpZmllclR5cGU+KDIpOwogICAgIEVYUEVDVF9UUlVFKGV4cGVjdGVkUmVj
b3JkMiA9PSAqaW5zZXJ0UmVzdWx0Mik7CiAKLSAgICAvLyBTaW5jZSByZWNvcmQzIGlzIGluIHRo
ZSBzYW1lIFN1YnNjcmlwdGlvblNldCBhcyByZWNvcmQxLCBpdCBzaG91bGQKLSAgICAvLyBpbmhl
cml0IHJlY29yZDEncyB3YWtlIHN0YXRlLgogICAgIGF1dG8gZXhwZWN0ZWRSZWNvcmQzID0gcmVj
b3JkMzsKICAgICBleHBlY3RlZFJlY29yZDMuaWRlbnRpZmllciA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oMyk7Ci0gICAgZXhwZWN0ZWRSZWNv
cmQzLndha2VTdGF0ZSA9IGV4cGVjdGVkUmVjb3JkMS53YWtlU3RhdGU7CiAgICAgRVhQRUNUX1RS
VUUoZXhwZWN0ZWRSZWNvcmQzID09ICppbnNlcnRSZXN1bHQzKTsKIAorICAgIGF1dG8gZXhwZWN0
ZWRSZWNvcmQ0ID0gcmVjb3JkNDsKKyAgICBleHBlY3RlZFJlY29yZDQuaWRlbnRpZmllciA9IG1h
a2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlwZT4oNCk7Cisg
ICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWRSZWNvcmQ0ID09ICppbnNlcnRSZXN1bHQ0KTsKKwogICAg
IC8vIEluc2VydGluZyBhIHJlY29yZCB3aXRoIHRoZSBzYW1lIChidW5kbGVJRCwgc2NvcGUpIGFz
IHJlY29yZCAxIHNob3VsZCBmYWlsLgotICAgIFB1c2hSZWNvcmQgcmVjb3JkNCA9IHJlY29yZDE7
Ci0gICAgcmVjb3JkNC5lbmRwb2ludCA9ICJodHRwczovL3d3dy53ZWJraXQub3JnIl9zOwotICAg
IEVYUEVDVF9GQUxTRShpbnNlcnRSZWNvcmQoV1RGTW92ZShyZWNvcmQ0KSkpOworICAgIFB1c2hS
ZWNvcmQgcmVjb3JkNSA9IHJlY29yZDE7CisgICAgcmVjb3JkNC5lbmRwb2ludCA9ICJodHRwczov
L3B1c2hFbmRwb2ludDUiX3M7CisgICAgRVhQRUNUX0ZBTFNFKGluc2VydFJlY29yZChXVEZNb3Zl
KHJlY29yZDUpKSk7CiAKLSAgICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hT
ZXQ8dWludDY0X3Q+IHsgMSwgMiwgMyB9KSk7CisgICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZp
ZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEsIDIsIDMsIDQgfSkpOwogfQogCiBURVNUX0Yo
UHVzaERhdGFiYXNlVGVzdCwgUmVtb3ZlUmVjb3JkKQogewogICAgIEVYUEVDVF9UUlVFKHJlbW92
ZVJlY29yZEJ5Um93SWRlbnRpZmllcigxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHJlbW92ZVJlY29y
ZEJ5Um93SWRlbnRpZmllcigxKSk7Ci0gICAgRVhQRUNUX0VRKGdldFJvd0lkZW50aWZpZXJzKCks
IChIYXNoU2V0PHVpbnQ2NF90PiB7IDIsIDMgfSkpOworICAgIEVYUEVDVF9FUShnZXRSb3dJZGVu
dGlmaWVycygpLCAoSGFzaFNldDx1aW50NjRfdD4geyAyLCAzLCA0IH0pKTsKK30KKworVEVTVF9G
KFB1c2hEYXRhYmFzZVRlc3QsIFJlbW92ZVJlY29yZHNCeUJ1bmRsZUlkZW50aWZpZXIpCit7Cisg
ICAgLy8gcmVjb3JkMiwgcmVjb3JkMywgYW5kIHJlY29yZDQgaGF2ZSB0aGUgc2FtZSBidW5kbGVJ
RC4KKyAgICBhdXRvIHJlbW92ZWRSZWNvcmRzID0gcmVtb3ZlUmVjb3Jkc0J5QnVuZGxlSWRlbnRp
ZmllcihyZWNvcmQyLmJ1bmRsZUlEKTsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMiA9IHJlbW92
ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQyLnRvcGljXShhdXRvJiByZWNvcmQpIHsK
KyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3Vu
ZDsKKyAgICBib29sIGNvbnRhaW5zUmVjb3JkMyA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9w
aWMgPSByZWNvcmQzLnRvcGljXShhdXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGlj
ID09IHJlY29yZC50b3BpYzsKKyAgICB9KSAhPSBub3RGb3VuZDsKKyAgICBib29sIGNvbnRhaW5z
UmVjb3JkNCA9IHJlbW92ZWRSZWNvcmRzLmZpbmRJZihbdG9waWMgPSByZWNvcmQ0LnRvcGljXShh
dXRvJiByZWNvcmQpIHsKKyAgICAgICAgcmV0dXJuIHRvcGljID09IHJlY29yZC50b3BpYzsKKyAg
ICB9KSAhPSBub3RGb3VuZDsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkMik7Cisg
ICAgRVhQRUNUX1RSVUUoY29udGFpbnNSZWNvcmQzKTsKKyAgICBFWFBFQ1RfVFJVRShjb250YWlu
c1JlY29yZDQpOworICAgIEVYUEVDVF9FUShyZW1vdmVkUmVjb3Jkcy5zaXplKCksIDN1KTsKKyAg
ICBFWFBFQ1RfRVEoZ2V0Um93SWRlbnRpZmllcnMoKSwgKEhhc2hTZXQ8dWludDY0X3Q+IHsgMSB9
KSk7CisKKyAgICAvLyBJbnNlcnRpbmcgYSBuZXcgcmVjb3JkIHNob3VsZCBwcm9kdWNlIGEgbmV3
IGlkZW50aWZpZXIuCisgICAgUHVzaFJlY29yZCByZWNvcmQ1ID0gcmVjb3JkMzsKKyAgICBhdXRv
IGluc2VydFJlc3VsdCA9IGluc2VydFJlY29yZChXVEZNb3ZlKHJlY29yZDUpKTsKKyAgICBFWFBF
Q1RfVFJVRShpbnNlcnRSZXN1bHQpOworICAgIEVYUEVDVF9FUShpbnNlcnRSZXN1bHQtPmlkZW50
aWZpZXIsIG1ha2VPYmplY3RJZGVudGlmaWVyPFB1c2hTdWJzY3JpcHRpb25JZGVudGlmaWVyVHlw
ZT4oNSkpOworICAgIEVYUEVDVF9FUShnZXRSb3dJZGVudGlmaWVycygpLCAoSGFzaFNldDx1aW50
NjRfdD4geyAxLCA1IH0pKTsKK30KKworVEVTVF9GKFB1c2hEYXRhYmFzZVRlc3QsIFJlbW92ZVJl
Y29yZHNCeUJ1bmRsZUlkZW50aWZpZXJBbmRTZWN1cml0eU9yaWdpbikKK3sKKyAgICAvLyByZWNv
cmQzIGFuZCByZWNvcmQ0IGhhdmUgdGhlIHNhbWUgYnVuZGxlSUQgYW5kIHNlY3VyaXR5T3JpZ2lu
LgorICAgIGF1dG8gcmVtb3ZlZFJlY29yZHMgPSByZW1vdmVSZWNvcmRzQnlCdW5kbGVJZGVudGlm
aWVyQW5kU2VjdXJpdHlPcmlnaW4ocmVjb3JkMy5idW5kbGVJRCwgcmVjb3JkMy5zZWN1cml0eU9y
aWdpbik7CisgICAgYm9vbCBjb250YWluc1JlY29yZDMgPSByZW1vdmVkUmVjb3Jkcy5maW5kSWYo
W3RvcGljID0gcmVjb3JkMy50b3BpY10oYXV0byYgcmVjb3JkKSB7CisgICAgICAgIHJldHVybiB0
b3BpYyA9PSByZWNvcmQudG9waWM7CisgICAgfSkgIT0gbm90Rm91bmQ7CisgICAgYm9vbCBjb250
YWluc1JlY29yZDQgPSByZW1vdmVkUmVjb3Jkcy5maW5kSWYoW3RvcGljID0gcmVjb3JkNC50b3Bp
Y10oYXV0byYgcmVjb3JkKSB7CisgICAgICAgIHJldHVybiB0b3BpYyA9PSByZWNvcmQudG9waWM7
CisgICAgfSkgIT0gbm90Rm91bmQ7CisKKyAgICBFWFBFQ1RfVFJVRShjb250YWluc1JlY29yZDMp
OworICAgIEVYUEVDVF9UUlVFKGNvbnRhaW5zUmVjb3JkNCk7CisgICAgRVhQRUNUX0VRKHJlbW92
ZWRSZWNvcmRzLnNpemUoKSwgMnUpOworICAgIEVYUEVDVF9FUShnZXRSb3dJZGVudGlmaWVycygp
LCAoSGFzaFNldDx1aW50NjRfdD4geyAxLCAyIH0pKTsKKworICAgIC8vIEluc2VydGluZyBhIG5l
dyByZWNvcmQgc2hvdWxkIHByb2R1Y2UgYSBuZXcgaWRlbnRpZmllci4KKyAgICBQdXNoUmVjb3Jk
IHJlY29yZDUgPSByZWNvcmQzOworICAgIGF1dG8gaW5zZXJ0UmVzdWx0ID0gaW5zZXJ0UmVjb3Jk
KFdURk1vdmUocmVjb3JkNSkpOworICAgIEVYUEVDVF9UUlVFKGluc2VydFJlc3VsdCk7CisgICAg
RVhQRUNUX0VRKGluc2VydFJlc3VsdC0+aWRlbnRpZmllciwgbWFrZU9iamVjdElkZW50aWZpZXI8
UHVzaFN1YnNjcmlwdGlvbklkZW50aWZpZXJUeXBlPig1KSk7CisgICAgRVhQRUNUX0VRKGdldFJv
d0lkZW50aWZpZXJzKCksIChIYXNoU2V0PHVpbnQ2NF90PiB7IDEsIDIsIDUgfSkpOwogfQogCiBU
RVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgR2V0UmVjb3JkQnlUb3BpYykKQEAgLTI1OSwyOSArMzc0
LDI3IEBAIFRFU1RfRihQdXNoRGF0YWJhc2VUZXN0LCBHZXRSZWNvcmRCeUJ1bmRsZUlkZW50aWZp
ZXJBbmRTY29wZSkKICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Myk7CiB9CiAKLVRFU1RfRihQdXNo
RGF0YWJhc2VUZXN0LCBHZXRUb3BpY3NCeVdha2VTdGF0ZSkKK1RFU1RfRihQdXNoRGF0YWJhc2VU
ZXN0LCBHZXRUb3BpY3MpCiB7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFB1c2hXYWtlU3RhdGU+IGV4
cGVjdGVkIHsKLSAgICAgICAgeyAidG9waWMxIiwgUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3Rp
YyB9LAotICAgICAgICB7ICJ0b3BpYzIiLCBQdXNoV2FrZVN0YXRlOjpXYWtpbmcgfSwKLSAgICAg
ICAgeyAidG9waWMzIiwgUHVzaFdha2VTdGF0ZTo6T3Bwb3J0dW5pc3RpYyB9Ci0gICAgfTsKLSAg
ICBIYXNoTWFwPFN0cmluZywgUHVzaFdha2VTdGF0ZT4gYWN0dWFsOwotCi0gICAgZm9yIChjb25z
dCBhdXRvJiBbd2FrZVN0YXRlLCB0b3BpY3NdIDogZ2V0VG9waWNzQnlXYWtlU3RhdGUoKSkgewot
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHRvcGljIDogdG9waWNzKQotICAgICAgICAgICAgYWN0
dWFsLmFkZCh0b3BpYywgd2FrZVN0YXRlKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEoZXhwZWN0
ZWQsIGFjdHVhbCk7CisgICAgVmVjdG9yPFN0cmluZz4gZXhwZWN0ZWQgeyAidG9waWMxIl9zLCAi
dG9waWMyIl9zLCAidG9waWMzIl9zLCAidG9waWM0Il9zIH07CisgICAgRVhQRUNUX0VRKGdldFRv
cGljcygpLCBleHBlY3RlZCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgbWFrZVRlbXBvcmFyeURhdGFi
YXNlUGF0aCgpCitURVNUX0YoUHVzaERhdGFiYXNlVGVzdCwgSW5jcmVtZW50U2lsZW50UHVzaENv
dW50KQogewotICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7Ci0gICAg
YXV0byBwYXRoID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIlB1c2hEYXRhYmFzZSIs
IGhhbmRsZSwgIi5kYiIpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShoYW5kbGUpOwotICAg
IHJldHVybiBwYXRoOworICAgIGF1dG8gY291bnQgPSBpbmNyZW1lbnRTaWxlbnRQdXNoQ291bnQo
cmVjb3JkMS5idW5kbGVJRCwgcmVjb3JkMS5zZWN1cml0eU9yaWdpbik7CisgICAgRVhQRUNUX0VR
KGNvdW50LCAxdSk7CisKKyAgICAvLyByZWNvcmQxIGFuZCByZWNvcmQzIGhhdmUgZGlmZmVyZW50
IGJ1bmRsZUlEIGFuZCBzZWN1cml0eU9yaWdpbi4KKyAgICBjb3VudCA9IGluY3JlbWVudFNpbGVu
dFB1c2hDb3VudChyZWNvcmQzLmJ1bmRsZUlELCByZWNvcmQzLnNlY3VyaXR5T3JpZ2luKTsKKyAg
ICBFWFBFQ1RfRVEoY291bnQsIDF1KTsKKworICAgIC8vIHJlY29yZDMgYW5kIHJlY29yZDQgaGF2
ZSB0aGUgc2FtZSBidW5kbGVJRCBhbmQgc2VjdXJpdHlPcmlnaW4uCisgICAgY291bnQgPSBpbmNy
ZW1lbnRTaWxlbnRQdXNoQ291bnQocmVjb3JkNC5idW5kbGVJRCwgcmVjb3JkNC5zZWN1cml0eU9y
aWdpbik7CisgICAgRVhQRUNUX0VRKGNvdW50LCAydSk7CisKKyAgICBjb3VudCA9IGluY3JlbWVu
dFNpbGVudFB1c2hDb3VudCgibm9uZXhpc3RlbnQiX3MsICJub25leGlzdGVudCJfcyk7CisgICAg
RVhQRUNUX0VRKGNvdW50LCAwdSk7CiB9CiAKIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGln
aHRPcHMpCkBAIC0zMTQsNyArNDI3LDYgQEAgVEVTVChQdXNoRGF0YWJhc2UsIE1hbnlJbkZsaWdo
dE9wcykKICAgICAgICAgICAgIHsgMiwgMyB9LAogICAgICAgICAgICAgeyA0LCA1IH0sCiAgICAg
ICAgICAgICBjb252ZXJ0U2Vjb25kc1RvRXBvY2hUaW1lU3RhbXAoMTY0MzM1MDAwMCksCi0gICAg
ICAgICAgICBQdXNoV2FrZVN0YXRlOjpXYWtpbmcKICAgICAgICAgfTsKIAogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjb3JkQ291bnQ7IGkrKykgewpAQCAtMzM5LDggKzQ1MSw3
IEBAIFRFU1QoUHVzaERhdGFiYXNlLCBNYW55SW5GbGlnaHRPcHMpCiAgICAgICAgIFV0aWw6OnJ1
bigmZG9uZSk7CiAgICAgICAgIEFTU0VSVF9UUlVFKGNyZWF0ZVJlc3VsdCk7CiAKLSAgICAgICAg
YXV0byBnZXRSZXN1bHQgPSBnZXRUb3BpY3NCeVdha2VTdGF0ZVN5bmMoKmNyZWF0ZVJlc3VsdCk7
Ci0gICAgICAgIGF1dG8gdG9waWNzID0gZ2V0UmVzdWx0LnRha2UoUHVzaFdha2VTdGF0ZTo6V2Fr
aW5nKTsKKyAgICAgICAgYXV0byB0b3BpY3MgPSBnZXRUb3BpY3NTeW5jKCpjcmVhdGVSZXN1bHQp
OwogICAgICAgICBFWFBFQ1RfRVEodG9waWNzLnNpemUoKSwgcmVjb3JkQ291bnQpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVz
aEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5t
bQppbmRleCBjNWFiZDQ2ZjNhZTk2YmUyMDg1NWE3NTkxZDVkYWMzOGM0NmM4MGIyLi4zYmQyZjFl
MjNkZjcwYjE1NDZlZTZmYzU3MjU3ZjhiODZkYzAyNDNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0yOSw3ICsyOSwxMCBAQAog
I2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3ROb3RpZmljYXRpb25Qcm92aWRlci5oIgogI2lt
cG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLTm90aWZpY2F0aW9uUHJv
dmlkZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVE
YXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uaD4KQEAgLTg5LDYgKzkyLDcgQEAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgKGV2ZW50KSA9PiB7CiAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKIH0p
Owogc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5y
ZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CiAgICAgdHJ5IHsK
ICAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CiAgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdl
KCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CkBAIC0xMzgsNiArMTQyLDkgQEAgVEVTVChQdXNoQVBJ
LCBmaXJlUHVzaEV2ZW50KQogCiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIg
PSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRp
b24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZp
Y2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkg
fSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOwor
CiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRs
ZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhh
bmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CiAKQEAgLTE4OCw2ICsxOTUsNyBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKICAgICBwb3J0LnBvc3RNZXNzYWdl
KCJSZWFkeSIpOwogfSk7CiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+
IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24i
KTsKICAgICBpZiAoIWV2ZW50LmRhdGEpCiAgICAgICAgIHJldHVybjsKICAgICBjb25zdCB2YWx1
ZSA9IGV2ZW50LmRhdGEudGV4dCgpOwpAQCAtMjI1LDYgKzIzMyw5IEBAIFRFU1QoUHVzaEFQSSwg
ZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzU3VjY2Vzc2Z1bCkKICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAg
IGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7
CiAKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblBy
b3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdl
ckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2Vy
Tm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2Vy
dmVyLm9yaWdpbigpLCB0cnVlKTsKKwogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0p
OwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOwogCkBAIC0yNzAs
NiArMjgxLDkgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0aE5vUGFnZXNGYWlsKQog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CiAgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9u
IHdlYnNpdGVEYXRhU3RvcmVdKTsKIAorICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJ
OjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xd
IF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdl
dFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlk
ZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRN
ZXNzYWdlIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAInN3Il07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2ViUHVzaERhZW1vbi5tbQppbmRleCAwZGUwOWRjNmI0OGI3ZTEyZThjY2UzNDllMjgz
YjgzNjlkODAwMTFkLi5kMTRjOTcwNTdkN2ZhNjAzYjU3Yzc1NTM5NmFlZDE5NDNmMTc0NDBhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hE
YWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQ
dXNoRGFlbW9uLm1tCkBAIC0yOSwxMCArMjksMTIgQEAKICNpbXBvcnQgIkhUVFBTZXJ2ZXIuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
ICJUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIuaCIKICNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5k
bGVyLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNp
bXBvcnQgPFdlYktpdC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg+CkBAIC00MjYsMTAgKzQyOCw2
IEBAIHByb3RlY3RlZDoKIAogICAgICAgICBtX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyID0g
YWRvcHROUyhbW05vdGlmaWNhdGlvblNjcmlwdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgICAgIFtbbV9jb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2Ny
aXB0TWVzc2FnZUhhbmRsZXI6bV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1l
OkAibm90ZSJdOwotCi0gICAgICAgIG1fd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlv
bjptX2NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICAgICAgbV91aURlbGVnYXRlID0gYWRvcHRO
UyhbW05vdGlmaWNhdGlvblBlcm1pc3Npb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAg
ICBbbV93ZWJWaWV3IHNldFVJRGVsZWdhdGU6bV91aURlbGVnYXRlLmdldCgpXTsKICAgICB9CiAK
ICAgICB2b2lkIGxvYWRSZXF1ZXN0KGNvbnN0IGNoYXIqIGh0bWxTb3VyY2UsIGNvbnN0IGNoYXIq
IHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UpCkBAIC00NDQsNiArNDQyLDEyIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIgfSB9LCBzZXJ2aWNlV29ya2VyU2NyaXB0U291cmNlIH0gfQogICAg
ICAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCkpOwogCisg
ICAgICAgIG1fbm90aWZpY2F0aW9uUHJvdmlkZXIgPSBtYWtlVW5pcXVlPFRlc3RXZWJLaXRBUEk6
OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcj4oVmVjdG9yPFdLTm90aWZpY2F0aW9uTWFuYWdlclJl
Zj4geyBbW21fY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX25vdGlmaWNhdGlvbk1hbmFnZXJG
b3JUZXN0aW5nXSwgV0tOb3RpZmljYXRpb25NYW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5v
dGlmaWNhdGlvbk1hbmFnZXIoKSB9KTsKKyAgICAgICAgbV9ub3RpZmljYXRpb25Qcm92aWRlci0+
c2V0UGVybWlzc2lvbihtX3NlcnZlci0+b3JpZ2luKCksIHRydWUpOworCisgICAgICAgIG1fd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjptX2NvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICAgICAgbV91aURlbGVnYXRlID0gYWRvcHROUyhbW05vdGlmaWNhdGlvblBlcm1pc3Npb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBbbV93ZWJWaWV3IHNldFVJRGVsZWdhdGU6
bV91aURlbGVnYXRlLmdldCgpXTsKICAgICAgICAgW21fd2ViVmlldyBsb2FkUmVxdWVzdDptX3Nl
cnZlci0+cmVxdWVzdCgpXTsKICAgICB9CiAKQEAgLTQ1MiwxMiArNDU2LDQzIEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRChtX3RlbXBEaXJlY3RvcnkuZ2V0KCkpOwog
ICAgIH0KIAorICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGluamVjdFB1c2hNZXNzYWdlKE5T
RGljdGlvbmFyeSAqcHVzaFVzZXJJbmZvKQorICAgIHsKKyAgICAgICAgU3RyaW5nIHNjb3BlID0g
bV9zZXJ2ZXItPnJlcXVlc3QoKS5VUkwuYWJzb2x1dGVTdHJpbmc7CisgICAgICAgIFN0cmluZyB0
b3BpYyA9ICJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkgIl9zdHIgKyBzY29wZTsKKyAg
ICAgICAgaWQgb2JqID0gQHsKKyAgICAgICAgICAgIEAidG9waWMiOiAoTlNTdHJpbmcgKil0b3Bp
YywKKyAgICAgICAgICAgIEAidXNlckluZm8iOiBwdXNoVXNlckluZm8KKyAgICAgICAgfTsKKyAg
ICAgICAgTlNEYXRhICpkYXRhID0gW05TSlNPTlNlcmlhbGl6YXRpb24gZGF0YVdpdGhKU09OT2Jq
ZWN0Om9iaiBvcHRpb25zOjAgZXJyb3I6bnVsbHB0cl07CisKKyAgICAgICAgU3RyaW5nIG1lc3Nh
Z2UgeyBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGRhdGEuYnl0ZXMpLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oZGF0YS5sZW5ndGgpIH07CisgICAgICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBl
bmNvZGVTdHJpbmcoV1RGTW92ZShtZXNzYWdlKSk7CisKKyAgICAgICAgYXV0byB1dGlsaXR5Q29u
bmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UoIm9yZy53ZWJr
aXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOworICAgICAgICBzZW5kTWVzc2FnZVRvRGFl
bW9uV2FpdGluZ0ZvclJlcGx5KHV0aWxpdHlDb25uZWN0aW9uLmdldCgpLCBNZXNzYWdlVHlwZTo6
SW5qZWN0RW5jcnlwdGVkUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLCBlbmNvZGVkTWVzc2FnZSk7CisK
KyAgICAgICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcworICAgICAgICBfX2Jsb2NrIGJvb2wgZ290
TWVzc2FnZXMgPSBmYWxzZTsKKyAgICAgICAgX19ibG9jayBSZXRhaW5QdHI8TlNBcnJheTxOU0Rp
Y3Rpb25hcnkgKj4+IG1lc3NhZ2VzOworICAgICAgICBbbV9kYXRhU3RvcmUgX2dldFBlbmRpbmdQ
dXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVzc2FnZXMpIHsKKyAg
ICAgICAgICAgIG1lc3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAgICAgICBnb3RNZXNzYWdl
cyA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmdvdE1lc3NhZ2VzKTsKKworICAgICAgICBFWFBFQ1RfRVEoW21lc3NhZ2VzIGNvdW50XSwgMXUp
OworCisgICAgICAgIHJldHVybiBbbWVzc2FnZXMgb2JqZWN0QXRJbmRleDowXTsKKyAgICB9CisK
ICAgICBSZXRhaW5QdHI8TlNVUkw+IG1fdGVtcERpcmVjdG9yeTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJzaXRlRGF0YVN0b3JlPiBtX2RhdGFTdG9yZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29u
ZmlndXJhdGlvbj4gbV9jb25maWd1cmF0aW9uOwogICAgIFJldGFpblB0cjxUZXN0TWVzc2FnZUhh
bmRsZXI+IG1fdGVzdE1lc3NhZ2VIYW5kbGVyOwogICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25T
Y3JpcHRNZXNzYWdlSGFuZGxlcj4gbV9ub3RpZmljYXRpb25NZXNzYWdlSGFuZGxlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcj4gbV9zZXJ2ZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFRlc3RXZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcj4g
bV9ub3RpZmljYXRpb25Qcm92aWRlcjsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiBtX3dlYlZp
ZXc7CiAgICAgUmV0YWluUHRyPGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+PiBtX3VpRGVsZWdhdGU7
CiB9OwpAQCAtNTAxLDYgKzUzNiw3IEBAIHZvaWQgV2ViUHVzaERJbmplY3RlZFB1c2hUZXN0Ojpy
dW5UZXN0KE5TU3RyaW5nICpleHBlY3RlZE1lc3NhZ2UsIE5TRGljdGlvbmFyeSAqCiAgICAgfSk7
CiAgICAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CiAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJu
b3RpZmljYXRpb24iKTsKICAgICAgICAgICAgIGlmICghZXZlbnQuZGF0YSkgewogICAgICAgICAg
ICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2VpdmVkOiBudWxsIGRhdGEiKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CkBAIC01MjQsNDMgKzU2MCwyMCBAQCB2b2lkIFdlYlB1c2hESW5qZWN0
ZWRQdXNoVGVzdDo6cnVuVGVzdChOU1N0cmluZyAqZXhwZWN0ZWRNZXNzYWdlLCBOU0RpY3Rpb25h
cnkgKgogICAgIH1dOwogCiAgICAgbG9hZFJlcXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtl
clNvdXJjZSk7Ci0KICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlYWR5KTsKIAotICAg
IFN0cmluZyBidW5kbGVJZGVudGlmaWVyID0gImNvbS5hcHBsZS5XZWJLaXQuVGVzdFdlYktpdEFQ
SSJfczsKLSAgICBTdHJpbmcgc2NvcGUgPSBtX3NlcnZlci0+cmVxdWVzdCgpLlVSTC5hYnNvbHV0
ZVN0cmluZzsKLSAgICBTdHJpbmcgdG9waWMgPSBidW5kbGVJZGVudGlmaWVyICsgIiAiX3MgKyBz
Y29wZTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBpbmplY3RQdXNoTWVzc2FnZShwdXNoVXNlckluZm8p
OwogCi0gICAgaWQgb2JqID0gQHsKLSAgICAgICAgQCJ0b3BpYyI6IChOU1N0cmluZyAqKXRvcGlj
LAotICAgICAgICBAInVzZXJJbmZvIjogcHVzaFVzZXJJbmZvCi0gICAgfTsKLSAgICBOU0RhdGEg
KmRhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlvbiBkYXRhV2l0aEpTT05PYmplY3Q6b2JqIG9wdGlv
bnM6MCBlcnJvcjpudWxscHRyXTsKLQotICAgIFN0cmluZyBtZXNzYWdlIHsgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhciAqPihkYXRhLmJ5dGVzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRhdGEubGVu
Z3RoKSB9OwotICAgIGF1dG8gZW5jb2RlZE1lc3NhZ2UgPSBlbmNvZGVTdHJpbmcoV1RGTW92ZSht
ZXNzYWdlKSk7Ci0KLSAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmln
dXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2
aWNlIik7Ci0gICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29u
bmVjdGlvbi5nZXQoKSwgTWVzc2FnZVR5cGU6OkluamVjdEVuY3J5cHRlZFB1c2hNZXNzYWdlRm9y
VGVzdGluZywgZW5jb2RlZE1lc3NhZ2UpOwotCi0gICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcwot
ICAgIF9fYmxvY2sgYm9vbCBnb3RNZXNzYWdlcyA9IGZhbHNlOwotICAgIF9fYmxvY2sgUmV0YWlu
UHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKLSAgICBbbV9kYXRhU3RvcmUg
X2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6XihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqcmF3TWVz
c2FnZXMpIHsKLSAgICAgICAgbWVzc2FnZXMgPSByYXdNZXNzYWdlczsKLSAgICAgICAgZ290TWVz
c2FnZXMgPSB0cnVlOwotICAgIH1dOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290
TWVzc2FnZXMpOwotCi0gICAgRVhQRUNUX0VRKFttZXNzYWdlcyBjb3VudF0sIDF1KTsKLQotICAg
IC8vIEhhbmRsZSBwdXNoIG1lc3NhZ2UKICAgICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9j
ZXNzZWQgPSBmYWxzZTsKLSAgICBbbV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVz
c2FnZXMgZmlyc3RPYmplY3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAg
ICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWRSZXN1bHQgPSBmYWxzZTsKKyAgICBb
bV9kYXRhU3RvcmUgX3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlLmdldCgpIGNvbXBsZXRpb25I
YW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWRSZXN1
bHQgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9
XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdEV4cGVjdGVkTWVzc2FnZSk7CiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisKKyAg
ICBFWFBFQ1RfVFJVRShwdXNoTWVzc2FnZVByb2Nlc3NlZFJlc3VsdCk7CiB9CiAKIFRFU1RfRihX
ZWJQdXNoREluamVjdGVkUHVzaFRlc3QsIEhhbmRsZUluamVjdGVkRW1wdHlQdXNoKQpAQCAtODA1
LDYgKzgxOCw3NyBAQCBURVNUKFdlYlB1c2hELCBJbnN0YWxsQ29vcmRpbmF0aW9uQnVuZGxlcykK
ICNlbmRpZiAvLyAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNlbmRpZiAvLyBFTkFCTEUo
SU5TVEFMTF9DT09SRElOQVRJT05fQlVORExFUykKIAorVEVTVF9GKFdlYlB1c2hEVGVzdCwgVG9v
TWFueVNpbGVudFB1c2hlc0NhdXNlc1Vuc3Vic2NyaWJlKQoreworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBodG1sU291cmNlID0gUiJIVE1MKAorICAgIDxzY3JpcHQgc3JjPSIvY29uc3RhbnRzLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgIGxldCBwdXNoTWFuYWdlciA9IG51bGw7CisK
KyAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcignL3N3LmpzJykudGhlbihhc3lu
YyAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5z
ZXJ2aWNlV29ya2VyLnJlYWR5OworICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHB1c2hNYW5hZ2VyID0gcmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2Vy
OworICAgICAgICAgICAgbGV0IHN1YnNjcmlwdGlvbiA9IGF3YWl0IHB1c2hNYW5hZ2VyLnN1YnNj
cmliZSh7CisgICAgICAgICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAorICAgICAgICAg
ICAgICAgIGFwcGxpY2F0aW9uU2VydmVyS2V5OiBWQUxJRF9TRVJWRVJfS0VZCisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgICAgIHJlc3VsdCA9ICJTdWJzY3JpYmVkIjsKKyAgICAgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICAgICAgcmVzdWx0ID0gIkVycm9yOiAiICsgZTsKKyAgICAgICAgfQor
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5ub3RlLnBvc3RNZXNzYWdlKHJl
c3VsdCk7CisgICAgfSk7CisKKyAgICBmdW5jdGlvbiBnZXRQdXNoU3Vic2NyaXB0aW9uKCkKKyAg
ICB7CisgICAgICAgIHB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpLnRoZW4oKHN1YnNjcmlw
dGlvbikgPT4geworICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMubm90
ZS5wb3N0TWVzc2FnZShzdWJzY3JpcHRpb24gPyAiU3Vic2NyaWJlZCIgOiAiVW5zdWJzY3JpYmVk
Iik7CisgICAgICAgIH0pOworICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgICApSFRNTCI7CisgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHNlcnZpY2VXb3JrZXJTY3JpcHRTb3VyY2UgPSAic2VsZi5hZGRF
dmVudExpc3RlbmVyKCdwdXNoJywgKGV2ZW50KSA9PiB7IH0pOyI7CisKKyAgICBfX2Jsb2NrIFJl
dGFpblB0cjxpZD4gbWVzc2FnZSA9IG5pbDsKKyAgICBfX2Jsb2NrIGJvb2wgZ290TWVzc2FnZSA9
IGZhbHNlOworICAgIFttX25vdGlmaWNhdGlvbk1lc3NhZ2VIYW5kbGVyIHNldE1lc3NhZ2VIYW5k
bGVyOl4oaWQgcmVjZWl2ZWRNZXNzYWdlKSB7CisgICAgICAgIG1lc3NhZ2UgPSByZWNlaXZlZE1l
c3NhZ2U7CisgICAgICAgIGdvdE1lc3NhZ2UgPSB0cnVlOworICAgIH1dOworCisgICAgbG9hZFJl
cXVlc3QoaHRtbFNvdXJjZSwgc2VydmljZVdvcmtlclNjcmlwdFNvdXJjZSk7CisKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOworICAgIEFTU0VSVF9UUlVFKFttZXNz
YWdlIGlzRXF1YWxUb1N0cmluZzpAIlN1YnNjcmliZWQiXSk7CisKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJQdXNoRDo6bWF4U2lsZW50UHVzaENvdW50OyBpKyspIHsK
KyAgICAgICAgZ290TWVzc2FnZSA9IGZhbHNlOworICAgICAgICBbbV93ZWJWaWV3IGV2YWx1YXRl
SmF2YVNjcmlwdDpAImdldFB1c2hTdWJzY3JpcHRpb24oKSIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCwgTlNFcnJvciopIHsgfV07CisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZ290
TWVzc2FnZSk7CisgICAgICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpA
IlN1YnNjcmliZWQiXSk7CisKKyAgICAgICAgX19ibG9jayBib29sIHByb2Nlc3NlZFB1c2ggPSBm
YWxzZTsKKyAgICAgICAgX19ibG9jayBib29sIHB1c2hSZXN1bHQgPSBmYWxzZTsKKyAgICAgICAg
YXV0byBtZXNzYWdlID0gaW5qZWN0UHVzaE1lc3NhZ2UoQHsgfSk7CisKKyAgICAgICAgW21fZGF0
YVN0b3JlIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZS5nZXQoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgICAgICBwdXNoUmVzdWx0ID0gcmVzdWx0OworICAg
ICAgICAgICAgcHJvY2Vzc2VkUHVzaCA9IHRydWU7CisgICAgICAgIH1dOworICAgICAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJnByb2Nlc3NlZFB1c2gpOworCisgICAgICAgIC8vIFdlYkNv
bnRlbnQgc2hvdWxkIGZhaWwgcHJvY2Vzc2luZyB0aGUgcHVzaCBzaW5jZSBubyBub3RpZmljYXRp
b24gd2FzIHNob3duLgorICAgICAgICBFWFBFQ1RfRkFMU0UocHVzaFJlc3VsdCk7CisgICAgfQor
CisgICAgZ290TWVzc2FnZSA9IGZhbHNlOworICAgIFttX3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0OkAiZ2V0UHVzaFN1YnNjcmlwdGlvbigpIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vy
cm9yKikgeyB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmdvdE1lc3NhZ2UpOwor
ICAgIEFTU0VSVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAIlVuc3Vic2NyaWJlZCJd
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gUExBVEZP
Uk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5oCmluZGV4IDQ2MDMwMDk0OTExYzMyYmJjZDZhOTdiY2U3N2QyYjQ3ZTgyZDNlNWQuLmUzODQw
OWU0ODMwZmM3MDJjNzY5NzMyMTRkNzA2ODViMzc3NDg1YmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBIVFRQU2Vy
dmVyKEZ1bmN0aW9uPHZvaWQoQ29ubmVjdGlvbik+JiYsIFByb3RvY29sID0gUHJvdG9jb2w6Okh0
dHApOwogICAgIH5IVFRQU2VydmVyKCk7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OworICAg
IFN0cmluZyBvcmlnaW4oKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBwYXRoID0gIi8iX3N0cikgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0
V2l0aExvY2FsaG9zdChjb25zdCBTdHJpbmcmIHBhdGggPSAiLyJfc3RyKSBjb25zdDsKICAgICBz
aXplX3QgdG90YWxSZXF1ZXN0cygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLm1tCmluZGV4IGE2NWQ5MzExZWQwNGNlY2I1N2I1ZDRiMDg0ZGJjNDdlMmY0MGE2NjMu
LmFmNmFkNGE3MzUxNzAyOWQyNmE3ZjgzNGVhODU3MTczNmRlNDI4MTkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KQEAgLTM3Niw2ICszNzYsMTEgQEAgY29uc3QgY2hh
ciogSFRUUFNlcnZlcjo6c2NoZW1lKCkgY29uc3QKICAgICByZXR1cm4gc2NoZW1lOwogfQogCitT
dHJpbmcgSFRUUFNlcnZlcjo6b3JpZ2luKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlczovLzEyNy4wLjAuMTolZCIsIHNjaGVtZSgpLCBwb3J0KCld
OworfQorCiBOU1VSTFJlcXVlc3QgKkhUVFBTZXJ2ZXI6OnJlcXVlc3QoY29uc3QgU3RyaW5nJiBw
YXRoKSBjb25zdAogewogICAgIHJldHVybiBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXM6Ly8xMjcu
MC4wLjE6JWQlQCIsIHNjaGVtZSgpLCBwb3J0KCksIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KV1dXTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0Yzc1NDhkZTU1MmY1OGFlMmIwN2MwOTQ2ODIwOTkzMWUyODZlMjgwLi5k
OWUyNTMxNzM5OGI1MWUwZWE3ZGM3ODY5ZTkxMDVkZDI1NWNkMGYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjItMDMtMDMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
RW5mb3JjZSBzaWxlbnQgcHVzaCBxdW90YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM2ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlk
c29uLgorCisgICAgICAgIFVwZGF0ZSBQdXNoRXZlbnQgdGVzdHMgdG8gY2hlY2sgdGhhdCBub3Rp
ZmljYXRpb25zIGFyZSBkaXNwbGF5ZWQuCisKKyAgICAgICAgKiBodHRwL3dwdC9wdXNoLWFwaS9w
dXNoRXZlbnQuYW55LmpzOgorICAgICAgICAocHJvbWlzZV90ZXN0LmFzeW5jIGNvbnN0KToKKyAg
ICAgICAgKHByb21pc2VfdGVzdC5hc3luYyBpZik6CisgICAgICAgICogaHR0cC93cHQvcHVzaC1h
cGkvcHVzaEV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dDoKKwogMjAyMi0wMy0w
MyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBuYXNh
LmdvdiBwYWdlIHdpdGggZml4ZWQgYmFja2dyb3VuZHMgcGFpbnRzIGluY29ycmVjdGx5IG9uIHNj
cm9sbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50
LmFueS5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hFdmVudC5hbnkuanMK
aW5kZXggMzFjODExMDEzYzU1YTk5YTE4ZjI2YzU5NGYzNjQ2Y2Y2OGRjOTkwMS4uNWU4OWY3NzA1
ZGVjZDkzNTUyYzcxNWMzZGZhOTkxNjY3OGUyNjAyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQuYW55LmpzCkBAIC02MCwxMSArNjAsMjMgQEAgcHJvbWlz
ZV90ZXN0KGFzeW5jICgpID0+IHsKIAogcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBj
b25zdCBwcm9taXNlID0gc2VsZi5pbnRlcm5hbHMuc2NoZWR1bGVQdXNoRXZlbnQoInRlc3QiKTsK
LSAgICBjb25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1
c2ggPSByZXNvbHZlKTsKKyAgICBjb25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29s
dmUgPT4gc2VsZi5vbnB1c2ggPSAoZXZlbnQpID0+IHsKKyAgICAgICAgc2VsZi5yZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CisgICAgICAgIHJlc29sdmUoZXZl
bnQpOworICAgIH0pOwogICAgIGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YS50ZXh0KCksICJ0ZXN0
Iik7CiAgICAgYXNzZXJ0X3RydWUoYXdhaXQgcHJvbWlzZSk7CiB9LCAiU2ltdWxhdGluZyBmaXJp
bmcgb2YgYSBwdXNoIGV2ZW50Iik7CiAKK3Byb21pc2VfdGVzdChhc3luYyAoKSA9PiB7CisgICAg
Y29uc3QgcHJvbWlzZSA9IHNlbGYuaW50ZXJuYWxzLnNjaGVkdWxlUHVzaEV2ZW50KCJ0ZXN0Iik7
CisgICAgY29uc3QgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNlbGYub25w
dXNoID0gKGV2ZW50KSA9PiB7CisgICAgICAgIHJlc29sdmUoZXZlbnQpOworICAgIH0pOworICAg
IGFzc2VydF9lcXVhbHMoZXZlbnQuZGF0YS50ZXh0KCksICJ0ZXN0Iik7CisgICAgYXNzZXJ0X2Zh
bHNlKGF3YWl0IHByb21pc2UpOworfSwgIlNpbXVsYXRpbmcgZmlyaW5nIG9mIGEgcHVzaCBldmVu
dCB3aXRob3V0IG5vdGlmaWNhdGlvbiIpOworCiBwcm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4gewog
ICAgIGlmICghc2VsZi5pbnRlcm5hbHMpCiAgICAgICAgIHJldHVybjsKQEAgLTc3LDYgKzg5LDcg
QEAgcHJvbWlzZV90ZXN0KGFzeW5jICgpID0+IHsKICAgICBwcm9taXNlLnRoZW4oKCkgPT4gaXNQ
dXNoRXZlbnRQcm9taXNlUmVzb2x2ZWQgPSB0cnVlKTsKIAogICAgIGNvbnN0IGV2ZW50ID0gYXdh
aXQgbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZWxmLm9ucHVzaCA9IChldmVudCkgPT4geworICAg
ICAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsK
ICAgICAgICAgZXZlbnQud2FpdFVudGlsKHdhaXRVbnRpbFByb21pc2UpOwogICAgICAgICByZXNv
bHZlKGV2ZW50KTsKICAgICB9KTsKQEAgLTg5LDEyICsxMDIsMzcgQEAgcHJvbWlzZV90ZXN0KGFz
eW5jICgpID0+IHsKICAgICBhc3NlcnRfdHJ1ZShhd2FpdCBwcm9taXNlKTsKIH0sICJTaW11bGF0
aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgLSBzdWNjZXNzZnVsIHdhaXRVbnRpbCIpOwogCitw
cm9taXNlX3Rlc3QoYXN5bmMgKCkgPT4geworICAgIGlmICghc2VsZi5pbnRlcm5hbHMpCisgICAg
ICAgIHJldHVybjsKKworICAgIGxldCByZXNvbHZlV2FpdFVudGlsUHJvbWlzZTsKKyAgICBjb25z
dCB3YWl0VW50aWxQcm9taXNlID0gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlV2FpdFVu
dGlsUHJvbWlzZSA9IHJlc29sdmUpOworCisgICAgbGV0IGlzUHVzaEV2ZW50UHJvbWlzZVJlc29s
dmVkID0gZmFsc2U7CisgICAgY29uc3QgcHJvbWlzZSA9IGludGVybmFscy5zY2hlZHVsZVB1c2hF
dmVudCgidGVzdCIpOworICAgIHByb21pc2UudGhlbigoKSA9PiBpc1B1c2hFdmVudFByb21pc2VS
ZXNvbHZlZCA9IHRydWUpOworCisgICAgY29uc3QgZXZlbnQgPSBhd2FpdCBuZXcgUHJvbWlzZShy
ZXNvbHZlID0+IHNlbGYub25wdXNoID0gKGV2ZW50KSA9PiB7CisgICAgICAgIGV2ZW50LndhaXRV
bnRpbCh3YWl0VW50aWxQcm9taXNlKTsKKyAgICAgICAgcmVzb2x2ZShldmVudCk7CisgICAgfSk7
CisgICAgYXNzZXJ0X2VxdWFscyhldmVudC5kYXRhLnRleHQoKSwgInRlc3QiKTsKKworICAgIGF3
YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5zZXRUaW1lb3V0KHJlc29sdmUsIDEwMCkp
OworICAgIGFzc2VydF9mYWxzZShpc1B1c2hFdmVudFByb21pc2VSZXNvbHZlZCk7CisKKyAgICBy
ZXNvbHZlV2FpdFVudGlsUHJvbWlzZSgpOworICAgIGFzc2VydF9mYWxzZShhd2FpdCBwcm9taXNl
KTsKK30sICJTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgLSBzdWNjZXNzZnVsIHdh
aXRVbnRpbCB3aXRob3V0IG5vdGlmaWNhdGlvbiIpOworCiBwcm9taXNlX3Rlc3QoYXN5bmMgKCkg
PT4gewogICAgIGlmICghc2VsZi5pbnRlcm5hbHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNv
bnN0IHByb21pc2UgPSBpbnRlcm5hbHMuc2NoZWR1bGVQdXNoRXZlbnQoInRlc3QiKTsKICAgICBj
b25zdCBldmVudCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2VsZi5vbnB1c2ggPSAo
ZXZlbnQpID0+IHsKKyAgICAgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigi
bm90aWZpY2F0aW9uIik7CiAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlc29sdmUo
KSk7CiAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgnZXJyb3InKSk7CiAg
ICAgICAgIHJlc29sdmUoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
cHVzaC1hcGkvcHVzaEV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3B1c2gtYXBpL3B1c2hFdmVudC5hbnkuc2VydmljZXdvcmtlci1leHBl
Y3RlZC50eHQKaW5kZXggM2ZjZDQ2ZTM5ZjM3Y2JjOWQzNjAzZGUzNDRhMTNhNDhiN2JlZTJjNi4u
MTEyMzZkMTUwYTEzM2I2YmMzZjE1ZWU1YTRhMmMwOTg5NjEzZjE1MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvcHVzaC1hcGkvcHVzaEV2ZW50LmFueS5zZXJ2aWNld29ya2VyLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9wdXNoLWFwaS9wdXNoRXZlbnQu
YW55LnNlcnZpY2V3b3JrZXItZXhwZWN0ZWQudHh0CkBAIC01LDYgKzUsOCBAQCBQQVNTIFB1c2hF
dmVudCBhcnJheUJ1ZmZlciBoYW5kbGluZwogUEFTUyBQdXNoRXZlbnQgd2l0aCBiYWQganNvbgog
UEFTUyBXYWl0IGZvciBhY3RpdmF0ZSBwcm9taXNlCiBQQVNTIFNpbXVsYXRpbmcgZmlyaW5nIG9m
IGEgcHVzaCBldmVudAorUEFTUyBTaW11bGF0aW5nIGZpcmluZyBvZiBhIHB1c2ggZXZlbnQgd2l0
aG91dCBub3RpZmljYXRpb24KIFBBU1MgU2ltdWxhdGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50
IC0gc3VjY2Vzc2Z1bCB3YWl0VW50aWwKK1BBU1MgU2ltdWxhdGluZyBmaXJpbmcgb2YgYSBwdXNo
IGV2ZW50IC0gc3VjY2Vzc2Z1bCB3YWl0VW50aWwgd2l0aG91dCBub3RpZmljYXRpb24KIFBBU1Mg
U2ltdWxhdGluZyBmaXJpbmcgb2YgYSBwdXNoIGV2ZW50IC0gdW5zdWNjZXNzZnVsIHdhaXRVbnRp
bAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>