<?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>208026</bug_id>
          
          <creation_ts>2020-02-20 12:54:27 -0800</creation_ts>
          <short_desc>App-bound domains should have separate Network Sessions</short_desc>
          <delta_ts>2020-02-21 19:44:15 -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>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1621361</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 12:54:27 -0800</bug_when>
    <thetext>We should switch between App-Bound and In-App-Browser Network Sessions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621364</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 12:56:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/59434006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621429</commentid>
    <comment_count>2</comment_count>
      <attachid>391338</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 14:46:36 -0800</bug_when>
    <thetext>Created attachment 391338
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621433</commentid>
    <comment_count>3</comment_count>
      <attachid>391339</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 15:08:54 -0800</bug_when>
    <thetext>Created attachment 391339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621455</commentid>
    <comment_count>4</comment_count>
      <attachid>391339</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-20 15:39:50 -0800</bug_when>
    <thetext>Comment on attachment 391339
Patch

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

This looks very good! I have a few minor things I&apos;d like addressed.

&gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:53
&gt; +    return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation, parameters.isMainResourceNavigationForAnyFrame, parameters.networkActivityTracker, parameters.isNavigatingToAppBoundDomain);

At some point, it seems like we should just past the parameters object to the &apos;create&apos; method! :-)

&gt; Source/WebKit/NetworkProcess/NetworkLoadParameters.h:64
&gt; +    bool isNavigatingToAppBoundDomain { true };

It seems like the default state should be false here (most traffic is likely not app-bound).

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:124
&gt; +

Extra whitespace.

&gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:77
&gt; +    bool isNavigatingToAppBoundDomain;

Whitespace, and should have a default argument.

&gt; Source/WebKit/Shared/LoadParameters.h:72
&gt; +    bool isNavigatingToAppBoundDomain;

Please provide a default initializer (false).

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3064
&gt; +    void send(PolicyDecision&amp;&amp; policyDecision)

Oops! :-)

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3083
&gt; +bool WebPageProxy::isAppBoundDomain(WebCore::RegistrableDomain domain)

Could this be &quot;const WebCore::RegistrableDomain&amp;&quot; ?

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2259
&gt; +    bool isAppBoundDomain(WebCore::RegistrableDomain);

Could this be const? Also seems like the argument (which is effectively a String) would benefit from being passed by reference.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2261
&gt; +    bool isNavigatingToAppBoundDomain() { return m_isNavigatingToAppBoundDomain; }

This should be &quot;bool isNavigatingToAppBoundDomain() const&quot;

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:1290
&gt; +    bool isNavigatingToAppBoundDomain() { return m_isNavigatingToAppBoundDomain; }

Should be const.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2073
&gt; +    bool m_isNavigatingToAppBoundDomain { true };

I think this should default to &apos;false&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621471</commentid>
    <comment_count>5</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 16:13:03 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #4)
&gt; Comment on attachment 391339 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391339&amp;action=review
&gt; 
&gt; This looks very good! I have a few minor things I&apos;d like addressed.
&gt; 

Thanks for the comments! I&apos;ll make these changes.

&gt; &gt; Source/WebKit/NetworkProcess/NetworkDataTask.cpp:53
&gt; &gt; +    return NetworkDataTaskCocoa::create(session, client, parameters.request, parameters.webFrameID, parameters.webPageID, parameters.storedCredentialsPolicy, parameters.contentSniffingPolicy, parameters.contentEncodingSniffingPolicy, parameters.shouldClearReferrerOnHTTPSToHTTPRedirect, parameters.shouldPreconnectOnly, parameters.isMainFrameNavigation, parameters.isMainResourceNavigationForAnyFrame, parameters.networkActivityTracker, parameters.isNavigatingToAppBoundDomain);
&gt; 
&gt; At some point, it seems like we should just past the parameters object to
&gt; the &apos;create&apos; method! :-)
&gt; 

Agreed!

&gt; &gt; Source/WebKit/NetworkProcess/NetworkLoadParameters.h:64
&gt; &gt; +    bool isNavigatingToAppBoundDomain { true };
&gt; 
&gt; It seems like the default state should be false here (most traffic is likely
&gt; not app-bound).
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.cpp:124
&gt; &gt; +
&gt; 
&gt; Extra whitespace.
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/NetworkResourceLoadParameters.h:77
&gt; &gt; +    bool isNavigatingToAppBoundDomain;
&gt; 
&gt; Whitespace, and should have a default argument.
&gt; 
&gt; &gt; Source/WebKit/Shared/LoadParameters.h:72
&gt; &gt; +    bool isNavigatingToAppBoundDomain;
&gt; 
&gt; Please provide a default initializer (false).
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3064
&gt; &gt; +    void send(PolicyDecision&amp;&amp; policyDecision)
&gt; 
&gt; Oops! :-)
&gt; 

Yep, my bad. This was my own mistake from a previous patch...
&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.h:2073
&gt; &gt; +    bool m_isNavigatingToAppBoundDomain { true };
&gt; 
&gt; I think this should default to &apos;false&apos;.

I think there&apos;s a few other places where I default to true, I&apos;ll change those too!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621478</commentid>
    <comment_count>6</comment_count>
      <attachid>391355</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 16:24:21 -0800</bug_when>
    <thetext>Created attachment 391355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621490</commentid>
    <comment_count>7</comment_count>
      <attachid>391355</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-20 16:52:35 -0800</bug_when>
    <thetext>Comment on attachment 391355
Patch

Looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621491</commentid>
    <comment_count>8</comment_count>
      <attachid>391355</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-02-20 16:53:20 -0800</bug_when>
    <thetext>Comment on attachment 391355
Patch

r=me once you confirm that EWS is happy. Please do double-check with Chris or Youenn if they are available tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621497</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 17:19:34 -0800</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #8)
&gt; Comment on attachment 391355 [details]
&gt; Patch
&gt; 
&gt; r=me once you confirm that EWS is happy. Please do double-check with Chris
&gt; or Youenn if they are available tomorrow.

Thanks! Sounds good, I also asked John to take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621498</commentid>
    <comment_count>10</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-02-20 17:22:13 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=391355&amp;action=review

First batch of comments.

&gt; Source/WebKit/ChangeLog:13
&gt; +        domains. This requires updating the webPage when a navigation occurs

Weird camel casing of webPage. Is that a reference to a variable?

&gt; Source/WebKit/ChangeLog:103
&gt; +        the new webPage via the ProvisionalPageProxy.

Same thing with the camel casing.

&gt; Source/WebKit/ChangeLog:112
&gt; +        These functions determine if the category is appBound and update the

Should be app-bound.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:346
&gt; +    void setInAppBrowserPrivacyEnabled(PAL::SessionID, bool, CompletionHandler&lt;void()&gt;&amp;&amp;);

I would give the bool a name even though it is pretty obvious what it&apos;s for.

&gt; Source/WebKit/NetworkProcess/NetworkSession.h:100
&gt; +

Was there an edit here?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:98
&gt; +    SessionWrapper&amp; sessionWrapperForTask(const WebCore::ResourceRequest&amp;, WebCore::StoredCredentialsPolicy, bool);

The bool needs to have a name here.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:100
&gt; +    bool isInAppBrowserPrivacyEnabled() { return m_isInAppBrowserPrivacyEnabled; }

Const.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1201
&gt; +    if (m_isInAppBrowserPrivacyEnabled) {

This should be if (m_isInAppBrowserPrivacyEnabled &amp;&amp; isNavigatingToAppBoundDomain) and then no curly braces.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1296
&gt; +    if (m_appBoundSession)

This should be return !!m_appBoundSession. Could be moved to the header if you so wish.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebsiteDataStore.mm:489
&gt; +    auto category = webPageProxy-&gt;configuration().webViewCategory();

Do we have to use a variable here or could the call be made like so: completionHandler(toWKWebViewCategory(webPageProxy-&gt;configuration().webViewCategory()) ?

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.cpp:348
&gt; +        reply(PolicyDecision { identifier, true, WebCore::PolicyAction::Ignore, navigationID, DownloadID(), WTF::nullopt });

I think we need to add a boolean enum NavigatingToAppBoundDomain::{Yes, No} so that PolicyDecision.h can take one of those. Instantiating a PolicyDecision with just &quot;true&quot; makes it unclear what your code does. With such an enum you can make your getters isNavigatingToAppBoundDomain() return it instead of a boolean too and you don&apos;t have to name all those bool parameters in header files. Load parameters can use it too.

&gt; Source/WebKit/UIProcess/ProvisionalPageProxy.h:95
&gt; +    void loadRequest(API::Navigation&amp;, WebCore::ResourceRequest&amp;&amp;, API::Object* userData, bool, Optional&lt;WebsitePoliciesData&gt;&amp;&amp; = WTF::nullopt);

This bool needs a name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621501</commentid>
    <comment_count>11</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-20 17:29:56 -0800</bug_when>
    <thetext>Thanks John!

Seems like Mac-wk2 tests also need some investigating, looking into those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621507</commentid>
    <comment_count>12</comment_count>
      <attachid>391355</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-02-20 17:39:47 -0800</bug_when>
    <thetext>Comment on attachment 391355
Patch

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

Second batch of comments. Looks good overall!

&gt; Source/WebKit/ChangeLog:13
&gt; +        domains. This requires updating the webPage when a navigation occurs

Weird camel casing of webPage. Is that a reference to a variable?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3083
&gt; +bool WebPageProxy::isAppBoundDomain(WebCore::RegistrableDomain domain)

RegistrableDomain&amp; and const both for the parameter and the function?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3091
&gt; +    if (m_preferences-&gt;isInAppBrowserPrivacyEnabled()) {

This should be if (m_preferences-&gt;isInAppBrowserPrivacyEnabled() &amp;&amp; isMainFrame) so that you can drop one nested context.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3093
&gt; +            RegistrableDomain currentDomain { requestURL };

This variable is never used.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3094
&gt; +            if (!isAppBoundDomain(RegistrableDomain(requestURL))) {

You could have a convenience function isAppBoundDomain(URL&amp;) that does the conversion for you and calls isAppBoundDomain(isAppBoundDomain&amp;).

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2259
&gt; +    bool isAppBoundDomain(WebCore::RegistrableDomain);

This should probably be isAppBoundDomain(const WebCore::RegistrableDomain&amp;) const;

&gt; Source/WebKit/UIProcess/WebPageProxy.h:2260
&gt; +    void setIsNavigatingToAppBoundDomain(bool isMainFrame, const URL&amp; requestURL);

requestURL is unnecessary.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:330
&gt; +    auto* webFrameLoaderClient = toWebFrameLoaderClient(resourceLoader.frame()-&gt;loader().client());

Can resourceLoader.frame() return null?

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:339
&gt;          // FIXME: Instead of passing userContentControllerIdentifier, the NetworkProcess should be able to get it using webPageId.

Does this FIXME need to be moved along with the assignment statements? I don&apos;t think so.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:687
&gt;      // FIXME: Instead of passing userContentControllerIdentifier, we should just pass webPageId to NetworkProcess.

Ditto.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:839
&gt; +        m_frame-&gt;didReceivePolicyDecision(listenerID, PolicyDecision { identifier, true, PolicyAction::Ignore, 0, { }, { } });

Again, we should not call with raw booleans like this.

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:996
&gt; +            m_frame-&gt;didReceivePolicyDecision(listenerID, PolicyDecision { requestIdentifier, false, PolicyAction::Ignore, 0, { }, { } });

Ditto.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3265
&gt; +void WebPage::didReceivePolicyDecision(FrameIdentifier frameID, uint64_t listenerID, PolicyDecision&amp;&amp; policyDecision)

Good catch.

&gt; Tools/ChangeLog:11
&gt; +        manually for the test. One ensures that setting the webView category

Weird camel casing of webView.

&gt; Tools/WebKitTestRunner/TestController.h:263
&gt; +    void getWebViewCategory();

Const?

&gt; Tools/WebKitTestRunner/TestController.h:303
&gt; +    bool hasAppBoundSession();

Const?

&gt; LayoutTests/platform/mac-wk2/TestExpectations:61
&gt; +http/tests/in-app-browser-privacy/ [ Pass ]

You should probably have the same comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621508</commentid>
    <comment_count>13</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-02-20 17:41:32 -0800</bug_when>
    <thetext>(In reply to John Wilander from comment #12)
&gt; You could have a convenience function isAppBoundDomain(URL&amp;) that does the
&gt; conversion for you and calls isAppBoundDomain(isAppBoundDomain&amp;).

I mean to say &quot;… calls isAppBoundDomain(RegistrableDomain&amp;).&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621739</commentid>
    <comment_count>14</comment_count>
      <attachid>391418</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 11:56:15 -0800</bug_when>
    <thetext>Created attachment 391418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621745</commentid>
    <comment_count>15</comment_count>
      <attachid>391421</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 12:09:05 -0800</bug_when>
    <thetext>Created attachment 391421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621773</commentid>
    <comment_count>16</comment_count>
      <attachid>391426</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 13:32:11 -0800</bug_when>
    <thetext>Created attachment 391426
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621787</commentid>
    <comment_count>17</comment_count>
      <attachid>391429</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 14:43:57 -0800</bug_when>
    <thetext>Created attachment 391429
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621788</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 14:44:37 -0800</bug_when>
    <thetext>(In reply to katherine_cheney from comment #17)
&gt; Created attachment 391429 [details]
&gt; Patch

trying to get this new mac-wk2 test to pass (runs fine locally, not sure what&apos;s going on here)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621790</commentid>
    <comment_count>19</comment_count>
      <attachid>391430</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-02-21 15:44:17 -0800</bug_when>
    <thetext>Created attachment 391430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621841</commentid>
    <comment_count>20</comment_count>
      <attachid>391430</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-21 19:43:20 -0800</bug_when>
    <thetext>Comment on attachment 391430
Patch

Clearing flags on attachment: 391430

Committed r257185: &lt;https://trac.webkit.org/changeset/257185&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621842</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-21 19:43:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621844</commentid>
    <comment_count>22</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-21 19:44:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/59691947&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391338</attachid>
            <date>2020-02-20 14:46:36 -0800</date>
            <delta_ts>2020-02-20 15:08:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200220144635.patch</filename>
            <type>text/plain</type>
            <size>118662</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkZDBiY2E4NzM5ZDc0NGYw
MzY4ZTFjN2UxN2JkMjk0NmIxNTUzNDkuLmRiNjdiNTY1MDk4NmRjM2I3NmIyYWNkZTI4YjhlNTcw
NTEwNDVmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIwICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtZG9tYWluLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1k
b21haW4uaHRtbAorCisgICAgICAgIFN1cHBvcnRzIG5ldHdvcmsgc2Vzc2lvbiBzd2l0Y2hpbmcg
Zm9yIG5hdmlnYXRpb25zIHRvIGFwcC1ib3VuZAorICAgICAgICBkb21haW5zLiBUaGlzIHJlcXVp
cmVzIHVwZGF0aW5nIHRoZSB3ZWJQYWdlIHdoZW4gYSBuYXZpZ2F0aW9uIG9jY3VycworICAgICAg
ICB0byBjaGVjayB3aGV0aGVyIGl0IGlzIHRvIGFuIGFwcC1ib3VuZCBkZXN0aW5hdGlvbi4gSW4g
Y2FzZSBvZiBhCisgICAgICAgIHByb2Nlc3Mgc3dhcCwgdGhpcyBoYXMgdG8gYmUgZG9uZSBib3Ro
IGluIFBvbGljeURlY2lzaW9uU2VuZGVyIGFuZAorICAgICAgICBpbiB0aGUgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmxvYWREYXRhIGFuZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QK
KyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtdXN0IHNlbmQg
dGhlIEluLUFwcCBCcm93c2VyIHByaXZhY3kgZmxhZyB0byB0aGUKKyAgICAgICAgTmV0d29yayBw
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICBQYXNzZXMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gZmxhZyB0byB0
aGUgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNBcHBCb3VuZFNl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNlc3Npb24pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0FwcEJv
dW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpo
YXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQSBsYXJnZSBwb3J0aW9u
IG9mIHRoaXMgcGF0Y2ggaXMgdGhyZWUgZnVuY3Rpb25zIGZvciB0ZXN0aW5nLCBvbmUgc2V0cyAK
KyAgICAgICAgdGhlIGluLWFwcCBicm93c2VyIHByaXZhY3kgZmxhZyBmb3IgdGhlIHRlc3QgY2Fz
ZSwgb25lIGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24sIGFuZCBvbmUKKyAgICAgICAg
Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgY2F0ZWdvcnkgd2FzIGNvcnJlY3RseSBzZXQgdG8gYXBw
LWJvdW5kIGRvbWFpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFBhc3Nl
cyB0aGUgSW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIHZhbHVlIGZyb20gTlNVc2VyRGVmYXVs
dHMgdG8gdGhlIG5ldHdvcmsgc2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAg
ICBDcmVhdGVzIGEgbmV3IHNlc3Npb24gKG9yIHJldHVybnMgdGhlIGV4aXN0aW5nIGFwcC1ib3Vu
ZCBzZXNzaW9uKSBpZgorICAgICAgICB0aGUgbmF2aWdhdGlvbiBpcyBhcHAtYm91bmQuIFRoaXMg
aXMgdGhlIG1haW4gY2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBTaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Yg
YSBwcm9jZXNzIHN3YXAsIHdlIG11c3QgYWRkIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGJvb2xlYW4gaW4gTG9hZFBhcmFtZXRlcnMgdG8gZW5zdXJlIGl0IGdldHMg
c2VudCB0bworICAgICAgICB0aGUgbmV3IHdlYlBhZ2UgdmlhIHRoZSBQcm92aXNpb25hbFBhZ2VQ
cm94eS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2Vu
ZGVyOjpzZW5kKToKKyAgICAgICAgRml4ZXMgYSBjYXBpdGFsaXphdGlvbiBlcnJvci4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzQXBwQm91bmREb21haW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgVGhlc2Ug
ZnVuY3Rpb25zIGRldGVybWluZSBpZiB0aGUgY2F0ZWdvcnkgaXMgYXBwQm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFdLV2ViVmlldyB3aXRoIG5vbi16ZXJvIG9yaWdpbiBoYXMgdGhlIHdyb25n
IHRvcCBjb250ZW50IGluc2V0IHdpdGggTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRW
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKaW5kZXggODIxMjM2ZTc5MDZkZGM4M2FlYjY5NjdjOGVlYjhjMThmZDA2YTkxMi4uODA1MGQx
MWZmOGU3MTdlMTk3NWE2NGJiZjA0YmU2ZTU2ZGUwYzdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdAogewogICAgIEFTU0VSVCghcGFyYW1ldGVycy5yZXF1ZXN0
LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVy
biBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVy
cy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFy
YW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlv
biwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1l
dGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyKTsKKyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFt
ZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25u
ZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2
aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICNl
bmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVh
dGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IGRlNzRkMzNhODFmNjJkNDU4MDZiNjg5NWZmM2JhZWNi
ZmM1NjZhMTcuLjI0YTkzNzM1MTBlMTAzMTJiMzllMTM3MzA1OGY2OGJlMTZjNTQ1NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAgUHJlY29u
bmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKICAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHRydWUgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5YmZhNDhmYjE4ODc1YTNkMGIwYWQ3OTkzMWNjYmNj
MWZjYzdlNDgwLi40OTIwMDc3NmIwY2E5Mjg0NDkyN2Q0MWE1Mjc2ZGEzOTQwODExOGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MjYwMyw0ICsyNjAzLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwor
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNBcHBCb3VuZFNlc3Np
b24oKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4
MzRmNmVlNTdjMmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zMGExMzI1N2JkNWU1Njk0NGI3
ZGIyYjNhMjY3NDEzYWY2YzNiMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29u
ZHMgc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdv
cmtlckZldGNoVGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2Vk
KFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBj
b25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lv
bklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVkZGZjZGJhMzlhMzA3
ZWY1ZTFkMDdhZjEzNWYyNDdmMTNlZWMxYWMuLmM4ZDAwOGZkOTFlZWZjMDJkN2JlMWRiNWU4YTQ3
YmIzOTM4MDM2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTY4LDQgKzE2OCw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKCkgLT4gKCkgU3luY2hyb25vdXMKIAogICAgIFJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIAorICAgIEhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0Fw
cEJvdW5kU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGRhMjIwOWI4N2VhMzM1MzUyYjE4NGE4N2ZkYWE5
MGUzMDE5ZTc1MzYuLjI3MjdhMTI3YjRhMWZhZTE2MzZhZDk2YmJiNzhlMTFjZjU2N2YyNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMTksNiArMTE5LDkgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1haW5Eb2N1bWVudFVSTDsKICAgICBlbmNvZGVyIDw8IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKKyAgICAKKyAgICBlbmNvZGVy
IDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisKIH0KIAogT3B0aW9uYWw8TmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk0LDYgKzI5NywxMiBAQCBPcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUAogICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAorICAgIE9w
dGlvbmFsPGJvb2w+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgZGVjb2RlciA+
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlmICghaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQu
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2YmY2NDQ5NTNhLi4wZjdkNjgw
M2Y5MTE0Nzc5MzFlNWVjYzk2OWEwODRmMjFjZTM2YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwog
ICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKKyAgICAKKyAgICBib29sIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47CisgICAgCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBmZjNhYmQ5OTM4OTFlN2JhMDhkZmY4YTIzYmU3ZjA5YjhhZjkzODM1Li5m
NTk4ZDc5NjY4OTBlNzdkZDExNGMxMmQ3ZmFlMTYzNTZjZDVjNTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjgsNiArMzI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0
KG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5mbygpLCByZXF1ZXN0
KSwgMCk7CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAg
IHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IG1fcGFyYW1ldGVycy5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChkZXNj
cmlwdGlvbj0lIiBQVUJMSUNfTE9HX1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0
aW9uKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKaW5kZXggOGIwYzFjYThjNTNlZjZiZjMxZGNkNDBkZDNhOTY1Y2ZlZTZl
NWM4OC4uNGM0YWY4NzY2ZTBjNzI5MGFmMzEwN2FmY2MwYjJiYTZjZWNjZmI2OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTcsNiArOTcs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGlu
Z0V2ZW50KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3Rp
bmdFdmVudCA9IGxvZzsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sKSB7IH0KKwogICAg
IHZvaWQgc2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wpOwogICAgIGJv
b2wgc2hvdWxkRG93bmdyYWRlUmVmZXJyZXIoKSBjb25zdDsKICAgICB2b2lkIHNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoV2ViQ29yZTo6VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDIxZmM4NjliY2Q4MmMy
OTVjYjY0NTY1NDQxMDc1OGMyNTljZjQ1YzEuLmEwMzQ2ZDA3MzM2MjIwN2YwZTY5ZjgzYjA3Zjc0
MzI3OGE3ZGFhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCw2
ICs4NCw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJ
UEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0ZXN0U3BlZWRNdWx0
aXBsaWVyOwogICAgIGVuY29kZXIgPDwgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlOwogICAgIGVuY29kZXIgPDwgYWxsb3dzU2VydmVyUHJlY29ubmVjdDsKKyAg
ICBlbmNvZGVyIDw8IGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7CiB9CiAKIE9wdGlvbmFs
PE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKQEAgLTI2OSw2ICsyNzAs
MTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CiAgICAgaWYgKCFhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAgIE9wdGlvbmFsPGJvb2w+IGlzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ7CisgICAgZGVjb2RlciA+PiBpc0luQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkOworICAgIGlmICghaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIHJldHVybiB7ewogICAgICAgICAqc2Vzc2lvbklE
CkBAIC0zMTQsNiArMzIwLDcgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBX
VEZNb3ZlKCp0ZXN0U3BlZWRNdWx0aXBsaWVyKQogICAgICAgICAsIFdURk1vdmUoKnN1cHByZXNz
ZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSkKICAgICAgICAgLCBXVEZNb3Zl
KCphbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQorICAgICAgICAsIFdURk1vdmUoKmlzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQpCiAgICAgfX07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCA3MmY3NTI2NzVlZDg3YjgyMjEwMjFlMDZiNmE4YTNiNWY0NzhjOTA2Li5lOGU2
ZTE5OGRkOTczNmYzODMyNzQxZDFlOTFmNGI1YzZhNGQ5MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9u
UGFyYW1ldGVycy5oCkBAIC0xMDMsNiArMTAzLDcgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3Jl
YXRpb25QYXJhbWV0ZXJzIHsKICAgICB1bnNpZ25lZCB0ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9
OwogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdl
IHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93c1NlcnZlclByZWNvbm5lY3QgeyB0cnVlIH07Cisg
ICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IGY0ODMxOWE3MWQ5MjU5
OGMyZDE2MGE1MGJmODY0N2VlN2JiYTZhNzQuLjBiZDc2NTQxNDAwNjE3NDcxZGI2ZjE3Mjg4ZjM1
ODZkZjEzM2U4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0
IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0Rh
dGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdh
dGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3Jl
OjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
LCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJl
cXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENv
bnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRp
b25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlcikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVl
c3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRl
bnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25G
b3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikpOwogICAgIH0KIAogICAgIH5OZXR3b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzYs
NyArNzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24m
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2
aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgYm9v
bCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRC
YXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
JiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQ
b2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJl
cXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNlNmJl
NDUwN2JjNTg3ZmIzZGRkYTI2OC4uMTg5NzYxNWM1Nzk0OTAxNTUyYjdiNDk5NTRmZTIxYjViYTE1
YzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGljIGlu
bGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tD
b2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFs
cywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50
U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VO
YXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFU
YXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYg
Y2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVu
dGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291
cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
PiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENy
ZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCi0g
ICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNz
aW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdpdGhDcmVk
ZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpKSkKKyAgICAsIG1fc2Vzc2lvbldyYXBw
ZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0d29ya1Nlc3Npb25Db2NvYSY+KHNlc3Npb24p
LnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpKQogICAgICwgbV9m
cmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VO
YXZpZ2F0aW9uRm9yQW55RnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCmluZGV4IDRhZDJjMTAxYmU3YTll
NzlmOGQzNTAyNjVkNzg4YzM4ZDAyZTU4NTguLjg0MTFlNzFiNzkxZmI5NzY4YzA4OTk0ZGY0ZWI2
ZmVlMDU0MGE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBAIC05MywxNCArOTMsMTkgQEAgcHVibGlj
OgogICAgIGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygp
IG92ZXJyaWRlOwogCi0gICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSk7CisgICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsK
IAorICAgIFNlc3Npb25XcmFwcGVyJiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJv
b2wpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCBlbmFibGVk
KSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IGVuYWJsZWQ7IH0K
KyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKSB7IHJldHVybiBtX2lzSW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZh
bGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb247IH0KICAgICBTZWNv
bmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRU
aHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9uV3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXImIGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NL
RVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRh
c2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5hbDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2
YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBz
dGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9uPj4gbV9pc29sYXRlZFNlc3Npb25zOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Npb24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAg
ICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNl
c3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2
ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29uZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5Owog
ICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAg
ICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBkZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2
MGZlZmRjYjEyMDRlLi4xMGM0NGEwNjExZWQ2NzI4YzNhNDg0MzkwNDhiMTgyNWRmZDAxNzg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYgKzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vzcywg
TmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVMYXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90
dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFy
YW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJzLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUp
CisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdl
KFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsx
MTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3Rh
dGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxp
emUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Np
b25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vz
c2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CkBAIC0xMTk3LDYgKzExOTgsMTEgQEAgU2Vzc2lvbldy
YXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBX
ZWJDb3JlOjpSZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAor
ICAgIGlmIChtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCisgICAgICAgICAgICByZXR1cm4gYXBwQm91bmRT
ZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeTo6VXNlOgogICAgICAgICByZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxT
dG9yYWdlOwpAQCAtMTIwOSw2ICsxMjE1LDMyIEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAg
ICAgfQogfQogCitTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRT
ZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5KQoreworICAgIGlmICghbV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgbV9hcHBC
b3VuZFNlc3Npb24gPSBtYWtlVW5pcXVlPElzb2xhdGVkU2Vzc2lvbj4oKTsKKyAgICAgICAgbV9h
cHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZSht
X3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9u
LCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSk7CisgICAgICAg
IG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRp
YWxpemUobV9zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05v
dFVzZSk7CisgICAgfQorCisgICAgYXV0byYgc2Vzc2lvbldyYXBwZXIgPSBbJl0gKGF1dG8gc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpIC0+IFNlc3Npb25XcmFwcGVyJiB7CisgICAgICAgIHN3aXRj
aCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgorICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9u
LCAiVXNpbmcgYXBwLWJvdW5kIE5TVVJMU2Vzc2lvbiB3aXRoIGNyZWRlbnRpYWwgc3RvcmFnZS4i
KTsKKyAgICAgICAgICAgIHJldHVybiBtX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZTsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICJVc2luZyBh
cHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGhvdXQgY3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAg
ICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRp
YWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3M6CisgICAgICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVs
ZXNzU2Vzc2lvbi5zZXNzaW9uKQorICAgICAgICAgICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxT
dGF0ZWxlc3NTZXNzaW9uKCk7CisgICAgICAgICAgICByZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxl
c3NTZXNzaW9uOworICAgICAgICB9CisgICAgfSAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOwor
CisgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOworfQorCiBTZXNzaW9uV3JhcHBlciYgTmV0d29y
a1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluKQogewogICAgIGF1dG8mIGVudHJ5ID0gbV9pc29sYXRl
ZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9tYWluLCBbdGhpc10gewpAQCAtMTI1OSw2ICsx
MjkxLDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uKGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvCiAgICAgcmV0dXJuIG1faXNvbGF0ZWRT
ZXNzaW9ucy5jb250YWlucyhkb21haW4pOwogfQogCitib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6
Omhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgaWYgKG1fYXBwQm91bmRTZXNzaW9u
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRlZFNlc3Npb25zKCkKIHsKICAgICBtX2lzb2xh
dGVkU2Vzc2lvbnMuY2xlYXIoKTsKQEAgLTEyODIsNiArMTMyMSwxMSBAQCB2b2lkIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5jZWwoKQogICAgICAgICBbc2Vzc2lvbi0+c2Vz
c2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRd
OwogICAgIH0KICAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKKworICAgIFttX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRh
dGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgIFttX2FwcEJvdW5k
U2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRh
dGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogfQogCiB2b2lkIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMoKQpAQCAtMTI5NSw2ICsxMzM5LDcg
QEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICBtX3N0
YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjpt
X3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2Fz
dDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05T
T3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1faXNv
bGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50cnkuc2Vzc2lvbiA9IFtOU1VSTFNl
c3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5LnNlc3Npb24uZ2V0KCkuY29uZmln
dXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50cnkuZGVsZWdhdGUuZ2V0KCkpIGRl
bGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CisgICAgbV9hcHBCb3Vu
ZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9u
Om1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpz
dGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRl
UXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAjZW5kaWYKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDA4ODFiOTBiZWFlM2JjNTdmMDJh
MzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTkyOWFlMWRiZWMzMDYxYzJlNGM1OTQz
MjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU2LDYg
KzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9ja0hpc3RvcnkpOwogICAgIGVuY29k
ZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICBlbmNvZGVyIDw8IGNsaWVu
dFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29kZShlbmNvZGVyKTsKIH0KQEAgLTEz
Miw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNv
dXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkYXRhLmNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNsaWVudFJlZGlyZWN0U291cmNlRm9y
SGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBp
ZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oCmluZGV4IGI1ZDJkMjg4Y2ZjZTAx
MzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjE0YmRkNjg2NTkxNjllYWM1ZGQyNjgzYjk4NmE5
NGRkZDIzZTM2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNjks
NyArNjksOCBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0
b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAgICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OwotCisgICAgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAg
IAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFE
ZXRlY3Rpb25Db250ZXh0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24u
aAppbmRleCA3MTVjNTIxMjJmMDE5YTI5NjQ5YjFhMWU1OGFhYTA5Y2Y5Nzg1ZDJlLi5hM2NlN2Jl
YTA3Y2NmYjY5ODk0Yzg0NTM5MDliZWY1NzA2NjQ5YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Bv
bGljeURlY2lzaW9uLmgKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0
cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIgeyB9OworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7
IHRydWUgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uIHsgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAw
IH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9OwpAQCAtNDIsNiArNDMsNyBAQCBz
dHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVu
Y29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICAgICAgZW5jb2RlciA8
PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwgbmF2aWdhdGlvbklEOwogICAgICAg
ICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1NywxMSBAQCBzdHJ1Y3QgUG9saWN5
RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRJZGVudGlmaWVyOwogICAgICAg
ICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPGJvb2w+IGRlY29kZWRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOworICAgICAgICBkZWNvZGVyID4+IGRlY29kZWRJc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOworICAgICAgICBpZiAoIWRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQorICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBP
cHRpb25hbDxXZWJDb3JlOjpQb2xpY3lBY3Rpb24+IGRlY29kZWRQb2xpY3lBY3Rpb247CiAgICAg
ICAgIGRlY29kZXIgPj4gZGVjb2RlZFBvbGljeUFjdGlvbjsKQEAgLTc2LDcgKzgzLDcgQEAgc3Ry
dWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAgICAgaWYgKCFkZWNvZGVkV2Vic2l0ZVBvbGljaWVz
RGF0YSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJu
IHt7IFdURk1vdmUoKmRlY29kZWRJZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFj
dGlvbiksIFdURk1vdmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93
bmxvYWRJRCksIFdURk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKKyAgICAg
ICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWRJZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2Rl
ZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0
aW9uKSwgV1RGTW92ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3du
bG9hZElEKSwgV1RGTW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwogCiAgICAg
fQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDYxZTA5Zjg4YjBmZmZlMWUwOWFiNmM4ZDYzOTJhMzY3
YWIwMmM2MWEuLjRlMDQzYzAwNTU4OGJmNzg2MGMyNzRmM2NkOThmZTc4ZmNmNzQ2OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmNwcApAQCAtNTI3LDYgKzUyNywxMyBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdAog
I2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKQoreworICAgIFdl
YktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhhc0FwcEJvdW5kU2Vzc2lvbihbY29udGV4dCwg
Y2FsbGJhY2tdKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKSB7CisgICAgICAgIGNhbGxiYWNrKGhh
c0FwcEJvdW5kU2Vzc2lvbiwgY29udGV4dCk7CisgICAgfSk7Cit9CisKIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJs
ZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRp
c3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNjk2
LDMgKzcwMywxMCBAQCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGEoV0tXZWJzaXRl
RGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udAogICAgICAgICAgICAgY2FsbGJh
Y2soY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3ZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJl
ZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAg
IFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKGVuYWJsZWQsIFtjb250ZXh0LCBjb21wbGV0aW9uSGFuZGxlcl0geworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKaW5kZXggMjhkNmE4
NzdkNmI3NzVhODgzYTRlMGRkY2UwMDhjMTFhNWFmZjc2Ny4uZTg2YTZmOTA3OWVhNTc5OTlmZjdm
ZjU0NmU4Mjg5NTk3NTk0YTk3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAgLTExNyw2ICsxMTcsOCBAQCB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBG
dW5jdGlvbikodm9pZCogZnVuYwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNp
dGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uRnVuY3Rpb24pKGJvb2wgaGFz
SXNvbGF0ZWRTZXNzaW9uLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uRnVuY3Rpb24g
Y2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRT
ZXNzaW9uRnVuY3Rpb24pKGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uLCB2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNz
aW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdL
V2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5
cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NT
aG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25D
b250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tXZWJzaXRlRGF0
YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lk
ICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4
dCk7CkBAIC0xNTcsNiArMTU5LDkgQEAgV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JUZXN0aW5nKFdLV2Vic2l0ZUQKIHR5cGVkZWYg
dm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGFDYWxsYmFjaykodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGEo
V0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJz
aXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrIGNhbGxiYWNrKTsKIAordHlwZWRlZiB2b2lk
ICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRGdW5jdGlv
bikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFT
dG9yZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxl
cik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA0
MzJjMjA3YzgxZjE0MzNlZGIzNDk1ZmNjNTdhYzU3MjVjOGUyNzZhLi40N2E1MWUwODYzYzAzYzY2
YjBjZTZkNDk1ODQ0MGNiNzc1M2U4MDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTQ3Myw2ICs0NzMs
MjMgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYKICNlbmRpZgogfQogCistICh2b2lkKV9nZXRX
ZWJWaWV3Q2F0ZWdvcnlGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6
KHZvaWQgKF4pKF9XS1dlYlZpZXdDYXRlZ29yeSBjYXRlZ29yeSkpY29tcGxldGlvbkhhbmRsZXIK
K3sKKyAgICBpZiAoIXdlYlZpZXcpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoX1dLV2Vi
Vmlld0NhdGVnb3J5V2ViQnJvd3Nlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBh
dXRvIHdlYlBhZ2VQcm94eSA9IFt3ZWJWaWV3IF9wYWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94
eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93
c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8gY2F0ZWdvcnkgPSB3ZWJQ
YWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53ZWJWaWV3Q2F0ZWdvcnkoKTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcih0b1dLV2ViVmlld0NhdGVnb3J5KGNhdGVnb3J5KSk7Cit9CisKIC0gKHZvaWQp
X3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDdkM2ZkNWZkNjhjZDJjZGQ0MjAxNWI1YmFiYTFkYjk3OWY0
ODE1Y2QuLmVmMGY3ODM3ZjM1Njk5MGFlMDEzMzljMzlmNTExYjcwOTlmODA0NTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMjMsNiArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlLmg+CiAKIE5TX0FT
U1VNRV9OT05OVUxMX0JFR0lOCkBAIC02NCw2ICs2NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhO
U1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAt
ICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYlZpZXdDYXRlZ29yeSBjYXRlZ29y
eSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKICsgKHZvaWQpX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxs
T3JpZ2lucyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAo
Ym9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygx
MC4xNCksIGlvcygxMi4wKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGUwMTYyYWQ1Nzk5ZjRmOWUx
OTc0ZjM0YWQ1MjhiYmRhYTM5MTE1N2EuLjRiZDIzMmFjYWQzMWYxYTdiNDg2MTA3NjEyNmE2NGE1
ZTU4MmI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQ0Nyw2ICsxNDQ3LDI3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRRdW90YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UmVzZXRRdW90YShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0Fw
cEJvdW5kU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9
CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2Fn
ZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoc2Vzc2lvbklELCB2YWx1ZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggZTQxMzA5ZmY4YTM5OTNmZTVhZTU3
NDUyNmY2YjI2MDk4MzRkNmNhZC4uMDJiY2NmNTljMjM3ODc4YzA3MzZiNjcyZGU4ZDIzM2U3ZDE4
OWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIxNiw2ICsyMTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVz
b3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQg
cmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJyb3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwg
UmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiYpOwogCisgICAgdm9p
ZCBoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgCiBw
cml2YXRlOgogICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQogICAgIEFTQ0lJTGl0ZXJhbCBw
cm9jZXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJOZXR3b3JraW5nIl9zOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXgg
ZWIwYTk5MTdmMDgxNTA1MTI1YWU0NDg0MWUyYzNlZTk2MmI3M2I5NC4uNTIyOTY3ZTYxNDZiNjJm
YWMzYTQxZTQ2Zjc4NzFjNTBhMjI2NWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApAQCAtMTQ4LDE0ICsxNDgsMTQgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGcmVlemVMYXllclRyZWVEdWVUb1N3aXBlQW5pbWF0aW9uKCkpOwog
fQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZERhdGE6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQsIG1f
cGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAK
LSAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJl
ZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBi
YXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZ
ZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFj
dGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOworICAgIG1fcGFnZS5sb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBu
YXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBX
ZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3RO
YXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKLXZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VQcm94
eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAKQEAgLTE2NSw3ICsxNjUsNyBA
QCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkg
JiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tG
b3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQ
cm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAot
ICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0
aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBX
VEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1Rv
QmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMoRnJhbWVJZGVudGlmaWVyIGYKICAg
ICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsK
ICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFtZSAmJiBtX21haW5GcmFtZS0+ZnJh
bWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAhPSBtX25hdmlnYXRpb25JRCkgewot
ICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0
IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIHRydWUsIFdl
YkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwg
V1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCBiMTFkZTFjNDI1OTBj
NjBjZjFhZjA2ODNjNzcyNTg2ZjZhYmEzNmI0Li4xMmIyZjk5NDNlNzQ3Mjg1MjdhMTM3OTU0OGI0
ZDZkYWJlMjdlNTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTkxLDggKzkxLDggQEAgcHVibGljOgogICAgIExheWVySG9zdGluZ0Nv
bnRleHRJRCBjb250ZXh0SURGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbjsgfQogI2VuZGlmCiAKLSAgICB2
b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6
TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwor
ICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIGJvb2wsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJl
cXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9
IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA2NWNkYmZmY2QxMzM5YzJlYjk2MWE0Y2EzYTY4NjM0MTIzM2Qx
MTFlLi4wNGNiNWQ0Mzc2YjRlN2E2YWE3YzkyYTc4YmFjYmNkYzNjYjU4MjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3NCw2ICsyNzQsMTIgQEAKICNp
bmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKIAorI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0
aW9ucy5oPgorI2Vsc2UKKyNkZWZpbmUgV0VCX1BBR0VfUFJPWFlfQURESVRJT05TCisjZW5kaWYK
KwogLy8gVGhpcyBjb250cm9scyB3aGF0IHN0cmF0ZWd5IHdlIHVzZSBmb3IgbW91c2Ugd2hlZWwg
Y29hbGVzY2luZy4KICNkZWZpbmUgTUVSR0VfV0hFRUxfRVZFTlRTIDEKIApAQCAtMTI2NCwxMSAr
MTI3MCwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChzaG91bGRVc2VGb3Jl
Z3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24t
PnNldEZvcmVncm91bmRBY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFj
dGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykubW92ZVRvVW5pcXVlUHRyKCkpOwogCi0gICAg
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8pOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlS
ZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkpOwogICAgIHJldHVy
biBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBBU1NFUlQoIW1f
aXNDbG9zZWQpOwogCkBAIC0xMjkwLDYgKzEyOTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
cwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9y
eSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9u
LmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVj
dFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
PSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRi
b3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VE
aXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTEzODQs
MTEgKzEzOTEsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBpZiAoc2hvdWxkVXNl
Rm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0
aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91
bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpLm1vdmVUb1VuaXF1ZVB0cigpKTsKIAot
ICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93
ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwg
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0
YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEY6Om51
bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0
aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5j
b2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0
aE5hdmlnYXRpb24iKTsKIApAQCAtMTQwOCw2ICsxNDE1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2Vzcy0+dHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGxvYWRQYXJhbWV0
ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKTsKICAgICBsb2Fk
UGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKwogICAgIGFkZFBsYXRmb3Jt
TG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CkBAIC0zMDUyLDEwICszMDYxLDEwIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9saWN5RGVjaXNpb25TZW5k
ZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAgICAgfQogCi0gICAgdm9p
ZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCisgICAgdm9pZCBzZW5kKFBv
bGljeURlY2lzaW9uJiYgcG9saWN5RGVjaXNpb24pCiAgICAgewogICAgICAgICBpZiAobV9zZW5k
RnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZNb3ZlKFBvbGljeURlY2lz
aW9uKSk7CisgICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZNb3ZlKHBvbGljeURlY2lzaW9u
KSk7CiAgICAgfQogCiAgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTMwNzAsNiArMzA3OSwyOSBAQCBwcml2YXRlOgogICAg
IFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9OwogCisKK2Jvb2wgV2ViUGFn
ZVByb3h5Ojppc0FwcEJvdW5kRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFp
bikKK3sKKyAgICBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9v
bCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmIChtX3ByZWZl
cmVuY2VzLT5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGlz
TWFpbkZyYW1lICYmIHJlcXVlc3RVUkwpIHsKKyAgICAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWlu
IGN1cnJlbnREb21haW4geyByZXF1ZXN0VVJMIH07CisgICAgICAgICAgICBpZiAoIWlzQXBwQm91
bmREb21haW4oUmVnaXN0cmFibGVEb21haW4ocmVxdWVzdFVSTCkpKSB7CisgICAgICAgICAgICAg
ICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpJ
bkFwcEJyb3dzZXIpOworICAgICAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRl
Z29yeTo6QXBwQm91bmREb21haW4pOworICAgICAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkTmF2aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb24sIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpXZWJzaXRlUG9saWNpZXMqIHBvbGljaWVzLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyKQogewogICAgIFJlZjxXZWJzaXRlRGF0YVN0b3JlPiB3ZWJzaXRlRGF0YVN0
b3JlID0gbV93ZWJzaXRlRGF0YVN0b3JlLmNvcHlSZWYoKTsKQEAgLTMxNTcsNyArMzE4OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xp
Y3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8
UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyLCBXaWxsQ29udGludWVMb2FkSW5OZXdQcm9j
ZXNzIHdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3MpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKSB7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRl
ci0+aWRlbnRpZmllcigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBX
VEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNl
bmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE4MCw3ICszMjEyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZp
Z2F0aW9uKgogICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IHsgfTsK
ICAgICB9CiAKLSAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50
aWZpZXIoKSwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkg
OiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykgfSk7CisgICAgc2VuZGVy
LT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCkgOiAwLCBkb3dubG9hZElELCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykgfSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UoRnJhbWVJZGVu
dGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IGJvb2wgdXNlZExlZ2FjeVRMUywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25h
bDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMzI1Nyw5ICszMjg5LDkgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIHMKICAgICAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNw
b25kaW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKICAgICAgICAgQVNTRVJU
KCFuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CiAgICAgICAgIGlmIChh
dXRvJiBzdWJzdGl0dXRlRGF0YSA9IG5hdmlnYXRpb24tPnN1YnN0aXR1dGVEYXRhKCkpCi0gICAg
ICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0
dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9
LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vi
c3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5s
b2FkRGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vi
c3RpdHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwg
c3Vic3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3Rp
dHV0ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCks
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
cHJvdmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3Qg
eyBuYXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3Qo
bmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3Qo
KSB9LCBudWxscHRyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSk7CiAgICAgfTsKICAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyLT5z
aG91bGRQYXVzZUxvYWRpbmcoKm1fcHJvdmlzaW9uYWxQYWdlKSkKICAgICAgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5zZXRDb250aW51ZUxvYWRpbmdDYWxsYmFjaygqbV9wcm92aXNpb25hbFBh
Z2UsIFdURk1vdmUoY29udGludWF0aW9uKSk7CkBAIC00OTM2LDggKzQ5NjgsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveAogICAgIGF1dG8qIGZyYW1lID0gcHJvY2Vzcy0+d2ViRnJhbWUoZnJh
bWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBmcmFtZSk7CiAKLSAgICBhdXRvIHNl
bmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJ
RCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigpXSAoY29u
c3QgYXV0byYgUG9saWN5RGVjaXNpb24pIHsKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IFBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKKyAgICBhdXRvIHNlbmRlciA9IFBvbGljeURl
Y2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigpXSAoY29uc3QgYXV0byYgcG9saWN5
RGVjaXNpb24pIHsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9u
KSwgd2ViUGFnZUlEKTsKICAgICB9KTsKIAogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92
ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsCkBAIC00OTYxLDkgKzQ5OTMsMTEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBpZiAobmF2aWdhdGlvbklEICYmICFmcm9t
QVBJKQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuY2xlYXJQZW5kaW5nQVBJUmVxdWVzdCh0cmFu
c2FjdGlvbik7CiAKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGZyYW1lLmlz
TWFpbkZyYW1lKCksIHJlcXVlc3QudXJsKCkpOworCiAgICAgaWYgKCFjaGVja1VSTFJlY2VpdmVk
RnJvbUN1cnJlbnRPclByZXZpb3VzV2ViUHJvY2Vzcyhwcm9jZXNzLCByZXF1ZXN0LnVybCgpKSkg
ewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3MsICJJZ25vcmlu
ZyByZXF1ZXN0IHRvIGxvYWQgdGhpcyBtYWluIHJlc291cmNlIGJlY2F1c2UgaXQgaXMgb3V0c2lk
ZSB0aGUgc2FuZGJveCIpOwotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBz
ZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQo
KSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24g
eyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUxOTAsNyArNTIyNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5CiAgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlELCBvcmlnaW5hbFJlcXVlc3Qs
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVxdWVzdEJvZHkpLCBXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCB1c2VyRGF0YSwgc2VuZGVyLmNvcHlSZWYoKSk7CiAKICAgICAvLyBJZiB0aGUg
Y2xpZW50IGRpZCBub3QgcmVzcG9uZCBzeW5jaHJvbm91c2x5LCBwcm9jZWVkIHdpdGggdGhlIGxv
YWQuCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVy
KCksIFBvbGljeUFjdGlvbjo6VXNlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpu
dWxsb3B0IH0pOworICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRl
bnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6
VXNlLCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKQEAgLTUyMDcsOCArNTI0MSw4IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8p
OwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3Np
bmdXYXJuaW5nKTsKIAotICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVy
OjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoY29uc3QgYXV0byYgUG9saWN5RGVjaXNp
b24pIHsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbikpOworICAgICAg
ICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBs
aXN0ZW5lcklEXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBs
aXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbikpOwogICAgICAgICB9KTsKIAogICAgICAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBX
VEZNb3ZlKHNlbmRlcikpOwpAQCAtNTI1Niw4ICs1MjkwLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAg
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92ZShwcm9j
ZXNzKV0gKGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJ
RCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOworICAgICAgICBhdXRv
IHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBh
Z2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChj
b25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKICAgICAgICAgfSk7CiAgICAgICAg
IAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlv
bi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmMjIwNWQ4NWQ0YjA5MjRhZWRjM2YxYTcwZTIyZGQz
ZDRiZDFhNjcxLi45NDE2MDc2NzJhOWMyMjVhNzJjMmU0MDcwNDhhYmMwNTM1ZWQzN2IyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTYxNCw4ICsxNjE0LDggQEAg
cHVibGljOgogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBk
b3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsK
ICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFza1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7Ci0g
ICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVu
Y29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90
QWxsb3cpOwotICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpu
dWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGJvb2wsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGJvb2wsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1Rv
SXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LApAQCAtMjI1NSw2ICsyMjU1LDEwIEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHRyeUNsb3NlVGltZWRPdXQoKTsKICAgICB2b2lkIG1ha2VTdG9yYWdlU3BhY2VSZXF1
ZXN0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFt
ZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVp
bnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgICAgIAorICAgIGJvb2wgaXNB
cHBCb3VuZERvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgdm9pZCBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0IFVSTCYg
cmVxdWVzdFVSTCk7CisgICAgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgeyBy
ZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CiAKICAgICBjb25zdCBJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3dlYlBh
Z2VJRDsKQEAgLTI3MzksNiArMjc0Myw4IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBNb25vdG9uaWNUaW1lIG1fZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yTWFpbkZyYW1lVGltZXN0YW1wOwogI2VuZGlmCisgICAgICAgIAorICAgIGJvb2wgbV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgdHJ1ZSB9OwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZTE2NTFj
ODMyMWJhNTNjYjg3MjlmNWNmMzVlYzc5Mzg3NTFjOTgwYy4uNGM0ZmI4NTViYWJmMTkzM2I1ZTgz
NmNlMmU3NWQxN2YwNmQ1MDc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQpAQCAtMTQ1LDYgKzE0NSw4IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVE
YXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JSZWFkV3JpdGVEaXJlY3RvcnkobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3Jr
Q2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgYm9vbCBzaG91bGRJbmNsdWRl
TG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gaXNTYWZhcmk7CisgICAgYm9vbCBp
c0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tl
eTo6aXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCldXTsKKyAgICAKICAgICBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwog
ICAgIHBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzID0gewogICAgICAgICBtX3Nl
c3Npb25JRCwKQEAgLTE3OCw2ICsxODAsNyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBX
ZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT50
ZXN0U3BlZWRNdWx0aXBsaWVyKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c3VwcHJlc3Nl
c0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCksCiAgICAgICAgIG1fY29uZmln
dXJhdGlvbi0+YWxsb3dzU2VydmVyUHJlY29ubmVjdCgpLAorICAgICAgICBpc0luQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkCiAgICAgfTsKICAgICBuZXR3b3JraW5nSGFzQmVndW4oKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCBiZGI3MjAwMWIyYTczNGM5NWIyZjVmNGVmMzI3YWIxNWJjZjNjNmEy
Li5lMzZmMDhmMmZhMTllNmZhOWNhODU0YzY1MzAyYTg1ZGZjZWQ2ZmU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcApAQCAtMjI1NSw0ICsyMjU1LDI4IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6
OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0c1N0b3JhZ2VEaXJlY3RvcnkoKQogfQogI2VuZGlmCiAK
K3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgZm9yIChh
dXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAg
ICAgICBuZXR3b3JrUHJvY2Vzcy0+aGFzQXBwQm91bmRTZXNzaW9uKG1fc2Vzc2lvbklELCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xz
KCkuc2l6ZSgpID09IDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgQVNTRVJUKCFjb21wbGV0aW9uSGFuZGxlcik7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9y
ZTo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0
d29ya1Byb2Nlc3MtPnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKG1fc2Vzc2lvbklELCB2
YWx1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJUKHBy
b2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQorCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggZjA4MjlmMTJiNTcwNDc5NjkxMGE0NjljNWE4ZTcyMjAxYTUxMjk1ZS4uN2ZhYTRi
NTkyNjVhZjNlZmQ0MWNmMGI0MWIzNWQxM2EyNjEyMzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjkz
LDYgKzI5Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFT
Y3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNl
dDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJl
ZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3Jk
Pik+JiYgYXBwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzNTdlMjJhOGZmYmUyY2M0NDA2Y2U1ODFl
ZGI1YjVhZWRhYTYyZjMuLmFlZDlmM2FhYjc0NjUwM2MzYTE3NzBlMTQwNWNlZDk0M2U3ODY5N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5jcHAKQEAgLTMyNiwxNCArMzI2LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMCiAgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BS
ZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygp
OwogICAgIH0KKyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJh
bWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkp
OworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxv
YWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdl
YkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKHdlYlBhZ2UpCisg
ICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQ
YWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQogICAgIGlmIChkb2N1bWVudCkgewogICAgICAgICBsb2FkUGFyYW1ldGVy
cy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKICAgICAg
ICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyLCB0aGUgTmV0d29ya1Byb2Nlc3Mgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGl0IHVzaW5n
IHdlYlBhZ2VJZC4KLSAgICAgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgp
KTsKLSAgICAgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZy
YW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKLSAgICAgICAgYXV0byogd2Vi
UGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgICAgIGlm
ICh3ZWJQYWdlKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllciA9IHdlYlBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIo
KTsKICAgICB9CkBAIC02MDEsNiArNjA0LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAg
ICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2Vj
dXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KICAgICBsb2FkUGFyYW1ldGVy
cy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJzID0gb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsKKyAgICAK
KyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsK
KwogICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUod2ViRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2Fk
UGFyYW1ldGVycyk7CiAKICAgICBkYXRhLnNocmluaygwKTsKQEAgLTY2OCwxMyArNjc1LDE2IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BS
ZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygp
OwogICAgIH0KICAgICBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKCZmcmFtZSwgbG9hZFBhcmFtZXRl
cnMpOwotCisgICAgCisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1l
TG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRlcigpLmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFt
ZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1l
KCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5w
YWdlKCkgOiBudWxscHRyOworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBsb2FkUGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpOworICAgIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAg
ICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCk7CiAgICAgLy8gRklYTUU6IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyLCB3ZSBzaG91bGQganVzdCBwYXNzIHdlYlBhZ2VJZCB0byBOZXR3
b3JrUHJvY2Vzcy4KLSAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGll
bnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRlcigpLmNsaWVudCgpKTsKLSAg
ICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
d2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKICAgICBpZiAod2ViUGFnZSkK
ICAgICAgICAgbG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9
IHdlYlBhZ2UtPnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMTIxMmVlYWI1NzA3YWRlZTFlNjc2NWRh
MmZlNjliM2RlNzdjMjllYi4uNzYzYzk5ZTBkNTI1MGVjMjE3ZjJmZjU3OGJmMjllZDExMzVhODAx
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04MzYsNyArODM2LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnMKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFt
ZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2Vi
RnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+
ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBpZGVu
dGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAogICAgICAgICBjYW5TaG93
UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25v
cmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCB0cnVlLCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwKQEAgLTk5MywxMSArOTkzLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAg
ICAgICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dCwKICAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5
KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwKICAgICAg
ICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBy
ZXF1ZXN0SWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwor
ICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIHRydWUsIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURlY2lzaW9u
LnBvbGljeUFjdGlvbiwgMCwgcG9saWN5RGVjaXNpb24uZG93bmxvYWRJRCwgeyB9fSk7CisgICAg
ICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lE
ZWNpc2lvbiB7IHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURlY2lzaW9uLmlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBvbGljeURlY2lzaW9uLnBvbGljeUFjdGlvbiwgMCwg
cG9saWN5RGVjaXNpb24uZG93bmxvYWRJRCwgeyB9fSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgaWYg
KCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0
YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksCiAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVyLCBkb2N1
bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0aW9uLnJl
c291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAogICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSwgbGlzdGVuZXJJRCkpKQotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmll
ciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBy
ZXF1ZXN0SWRlbnRpZmllciwgdHJ1ZSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9
IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lDaGVjaygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDBh
NjEwMDlhNjQ4YjA0ZjA5NWMyOTg0NTYzNmY1MjkxMTlhY2I3NmYuLjhlMTQ1OTJlYTFjMDdkZTQ5
MzQ3ODg5YTQ5YmQ0NTE5MmM2NzNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0xNTcwLDYgKzE1NzAsOCBAQCB2b2lkIFdlYlBhZ2U6OnBs
YXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJzJiBsb2Fk
UGFyYW1ldAogCiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9h
ZFBhcmFtZXRlcnMpCiB7CisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihsb2Fk
UGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKwogICAgIFNlbmRTdG9w
UmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVyOwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklE
ID0gbG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklEOwpAQCAtMTYwNCw4ICsxNjA2LDEwIEBAIE5P
X1JFVFVSTiB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1ZXN0V2FpdGluZ0ZvclByb2Nlc3NMYXVuY2go
TG9hZFBhcmFtZXRlcnMmJiwgVVJMCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBi
b29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVy
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNo
YXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSkKIHsKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0xNjMy
LDcgKzE2MzYsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9h
ZFBhcmFtZXRlcnMpCiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0
YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIFVSTCBiYXNlVVJMID0gbG9h
ZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBV
UkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1w
bChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMp
LCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFy
YW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2Vy
RGF0YSwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAg
bG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMu
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNp
dGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5
cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJh
bWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluLCBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJh
bWV0ZXJzKQpAQCAtMTY0NCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRl
SFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIFVSTCBwcm92aXNpb25h
bExvYWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNp
b25hbExvYWRFcnJvclVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVy
cy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBtX21haW5G
cmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdI
YW5kbGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsgICAgCi0gICAgbG9hZERhdGFJbXBs
KGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyks
IFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJh
bWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0
ZXJzLnVzZXJEYXRhKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlv
bklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUo
bG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBs
b2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNl
VVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwo
eyB9KTsKIH0KIApAQCAtMzI1OCwxMiArMzI2MiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVy
SG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogICAgICAgICBw
bHVnaW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKEZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiYmIFBvbGljeURlY2lz
aW9uKQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgcG9saWN5
RGVjaXNpb24pCiB7CisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwb2xpY3lE
ZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICBXZWJGcmFtZSogZnJh
bWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBXVEZNb3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBXVEZNb3ZlKHBvbGljeURlY2lzaW9u
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y29udGludWVXaWxsU3VibWl0Rm9ybShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKQEAgLTcwMDYsNiArNzAxMSwxMSBA
QCB2b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUpCiAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNjg5NTMwZjM4MzZkNmY0Y2Ji
MGY1Njk3MmQzZmUxMTBlODEzMjU1Li41NTk3ZTdkOTM4ZjNmMjZjN2M2ODYyNzc4OTUzYzQ1ZmZi
ZDI3ZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xMjg2LDYgKzEyODYsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnRO
YXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0
UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3Mp
IHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IGFs
bG93czsgfQogCisgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wp
OworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIHsgcmV0dXJuIG1faXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIAogcHJpdmF0ZToKICAgICBXZWJQYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
CkBAIC0xMzc5LDcgKzEzODIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5nIHNvdXJjZUZvckZy
YW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwgYm9v
bCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlv
bnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpA
QCAtMjA2Niw2ICsyMDY5LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAgICAgU3Ry
aW5nIG1fdGhlbWVOYW1lOwogI2VuZGlmCisgICAgCisgICAgYm9vbCBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4geyB0cnVlIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCA5YmM0YWZiMjM3MjU3NDdmMjUzOThiZTA5MzRiYmNhNzUzMjA3NDhiLi4x
ZGVkZjM5MmRkNzk5YWM2YjdhZmNkNmUyYjE0NDQ3ZjhlZjVjMDViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE4
Niw3ICsxODYsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhf
dCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERpZFJlbW92ZUJhY2tG
b3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNr
Rm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0
OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lzaW9uKQor
ICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJh
bWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24g
cG9saWN5RGVjaXNpb24pCisKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAgQ2xlYXJT
ZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDRjYWM1M2E0MTNlMDAwN2QzYTE1ODUzMTRiNjAyOWNkMTUwMDE5NjkuLjQ5ZjU3YzNm
OTMyODE4OWUyZTQwOWNhYTIyMDJhMDU0MTBlYzFiNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wMi0yMCAg
S2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAt
Ym91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgbW9zdGx5IHRlc3QgaW5mcmFzdHJ1
Y3R1cmUgaW52b2x2aW5nIDMgZnVuY3Rpb25zLgorICAgICAgICBPbmUgc2V0cyBpbi1hcHAgYnJv
d3NlciBwcml2YWN5IGFzIGVuYWJsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBt
YW51YWxseSBmb3IgdGhlIHRlc3QuIE9uZSBlbnN1cmVzIHRoYXQgc2V0dGluZyB0aGUgd2ViVmll
dyBjYXRlZ29yeQorICAgICAgICB3b3JrcyBwcm9wZXJseSwgYW5kIHRoZSBsYXN0IG9uZSBjaGVj
a3MgZm9yIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGZvcgorICAgICAgICBhbiBhcHAtYm91bmQgbmF2
aWdhdGlvbi4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxl
OjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6
Z2V0V2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJl
Y2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
Omhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERp
ZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJv
bGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBDbGVhcmlu
ZyB0aGUgYnVuZGxlSUQgc2hvdWxkIGhhcHBlbiByaWdodCBiZWZvcmUgc2V0dGluZyBhIG5ldyBv
bmUsIAorICAgICAgICBvdGhlcndpc2UgaXQgY2xlYXJzIHRoZSBJRCBhZnRlciBpdCBpcyBzZXQg
YW5kIHJldHVybnMgYSBudWxsIElELgorCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6CisgICAgICAgIChXVFI6OkluQXBwQnJvd3NlclByaXZh
Y3lDYWxsYmFja0NvbnRleHQ6OkluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQpOgor
ICAgICAgICAoV1RSOjppbkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKToK
KyAgICAgICAgKFdUUjo6aW5BcHBCcm93c2VyUHJpdmFjeVZvaWRSZXN1bHRDYWxsYmFjayk6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24pOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5q
ZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFdlYlZp
ZXdDYXRlZ29yeSk6CisKIDIwMjAtMDItMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgV0tXZWJWaWV3IHdpdGggbm9uLXplcm8gb3JpZ2luIGhhcyB0
aGUgd3JvbmcgdG9wIGNvbnRlbnQgaW5zZXQgd2l0aCBOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXpl
Q29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRhNTUxMDJlNTI5YjIw
ZDM3ZjYwYmZiMjgxZTQ4N2QxN2VkNzc4MDIuLjcxZjYwMjkwNTMwYzE1OTE3NzdkYzY2YjVmN2Ri
ZGYzNTc4NTNmMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzU0LDYgKzM1NCw5
IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICAvLyBTdG9yYWdlIEFjY2VzcyBBUEkKICAg
ICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG9iamVjdCBjYWxsYmFjayk7CiAKKyAg
ICB2b2lkIGdldFdlYlZpZXdDYXRlZ29yeShvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNr
KTsKKwogICAgIC8vIE9wZW4gcGFuZWwKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKG9iamVj
dCBmaWxlc0FycmF5KTsKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKG9iamVj
dCBtZWRpYUljb24pOwpAQCAtMzg5LDYgKzM5Miw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsK
ICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVy
YU9yaWVudGF0aW9uKHVuc2lnbmVkIGxvbmcgb3JpZW50YXRpb24pOwogICAgIGJvb2xlYW4gaXNN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKyAgICBib29sZWFuIGhhc0Fw
cEJvdW5kU2Vzc2lvbigpOwogCiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KERPTVN0cmluZyBz
dHJpbmcpOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHVzZXJTY3JpcHRJ
bmplY3RlZENvdW50OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCA5NThhNzliYTQzNDhhOTc5MjI4MDNl
ZTIzNjE5MGI1MDJmZGYzYzFhLi43NzBmZTE4ZDlmMzAzNGQxOGM2ODc4NmI0MjZlZDQ5NzY5NjA1
YmE3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMzM2LDYgKzMzNiwxMSBAQCB2b2lkIEluamVjdGVk
QnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0U2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0NhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJDYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSkgeworICAgICAgICBt
X3Rlc3RSdW5uZXItPmNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNr
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFS
ZW1vdmFsTW9kZSIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRT
ZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKCk7CkBAIC00MjIsNiAr
NDI3LDE0IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+
Y2FsbERpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRv
VVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeSIp
KSB7CisgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CisgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgbV90
ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKHRvV1RGU3Ry
aW5nKHN0YXRpY19jYXN0PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiQ2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpIHsK
ICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxz
Q2FsbGJhY2soKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IGVjMTI2ZDY4ZTM1ZDVlNTcwZWUxNTJkZjY4MjBiNDAz
ZmE3N2YyY2QuLjE2MGYyMWMxMDNiNTM2OTNlNGIyMzA1MTUzNzJlOWRlZWFlYmM4MTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcApAQCAtNzYxLDYgKzc2MSw4IEBAIGVudW0gewogICAgIFRleHRGaWVsZERpZEJlZ2luRWRp
dGluZ0NhbGxiYWNrSUQsCiAgICAgVGV4dEZpZWxkRGlkRW5kRWRpdGluZ0NhbGxiYWNrSUQsCiAg
ICAgQ3VzdG9tTWVudUFjdGlvbkNhbGxiYWNrSUQsCisgICAgR2V0V2ViVmlld0NhdGVnb3J5Q2Fs
bGJhY2tJRCwKKyAgICBEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQs
CiAgICAgRmlyc3RVSVNjcmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAgLTI5MDQsNCArMjkw
Niw0NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldE9mZnNjcmVlbkNhbnZhc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIo
aW5qZWN0ZWRCdW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCBrZXku
Z2V0KCksIGVuYWJsZWQpOwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmdldFdlYlZpZXdDYXRlZ29y
eShKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdl
dFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKCJHZXRXZWJWaWV3Q2F0ZWdvcnkiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVz
c2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdl
dCgpLCBudWxscHRyKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVdlYlZp
ZXdDYXRlZ29yeUNhbGxiYWNrKFN0cmluZyBjYXRlZ29yeSkKK3sKKyAgICBXS0J1bmRsZUZyYW1l
UmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6
c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0g
V0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBhdXRv
IHJlc3VsdFN0cmluZyA9IG1ha2VTdHJpbmcoIlwiIiwgY2F0ZWdvcnksICJcIiIpOworICAgIAor
ICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0
LCBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcudXRmOCgp
LmRhdGEoKSkpLmdldCgpKTsKKworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0V2ViVmll
d0NhdGVnb3J5Q2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6
aGFzQXBwQm91bmRTZXNzaW9uKCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiSGFzQXBwQm91bmRTZXNzaW9uIikpOworICAg
IFdLVHlwZVJlZiByZXR1cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3lu
Y2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCAmcmV0dXJuRGF0YSk7Cisg
ICAgQVNTRVJUKFdLR2V0VHlwZUlEKHJldHVybkRhdGEpID09IFdLQm9vbGVhbkdldFR5cGVJRCgp
KTsKKworICAgIHJldHVybiBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4ocmV0dXJuRGF0YSkpLmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpz
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIlNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpOwor
ICAgIFdLUmV0YWluUHRyPFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9v
bGVhbkNyZWF0ZSh2YWx1ZSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHku
Z2V0KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZENhbGxiYWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNl
dEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2tJRCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaAppbmRleCA3MjEwMjFkZDZjYzg3NWI2YmZjMjY1OGQ5OWZmNTEyNDliOTU2ZTIy
Li5iNzdjYjZjNTUzZTI3ZjViYjJjNTg2YTBkNWI1ODZjMjZmZjBjYjVkIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDYz
LDYgKzQ2MywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmll
cyhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIGNhbGxEaWRSZWNlaXZlQWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXNDYWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAKKyAgICAK
KyAgICB2b2lkIGdldFdlYlZpZXdDYXRlZ29yeShKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2
b2lkIGNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5Q2FsbGJhY2soU3RyaW5nKTsKKwogICAg
IC8vIE9wZW4gcGFuZWwKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpTVmFsdWVSZWYpOwog
ICAgIHZvaWQgc2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb24oSlNWYWx1ZVJlZik7CkBAIC00OTQs
NiArNDk4LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CiAg
ICAgdm9pZCBzZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24odW5zaWduZWQpOwogICAgIGJvb2wgaXNN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKyAgICBib29sIGhhc0FwcEJv
dW5kU2Vzc2lvbigpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9v
bCwgSlNWYWx1ZVJlZik7CisgICAgdm9pZCBjYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWRDYWxsYmFjaygpOwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3RlZENvdW50KCkg
Y29uc3Q7CiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjIyMWRhMTcwMzkyOTExYmE2
MjVlNTc3YzhjZjkzY2FlYjM4ODc4ZC4uMjEzYjdlYjcxMzQ2ZjBlZmE0ZjE0OGNjM2RjNTk5YjA0
NGEyZjEyNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTgwNCw2ICs4MDQsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRz
T3B0aW9uc0ZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QKICAgICAgICAgbV9jcmVh
dGVkT3RoZXJQYWdlID0gZmFsc2U7CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
Y2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKKyNlbmRp
ZgorCiAgICAgY3JlYXRlV2ViVmlld1dpdGhPcHRpb25zKG9wdGlvbnMpOwogCiAgICAgaWYgKCFy
ZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlvbnMsIFJlc2V0U3RhZ2U6OkJlZm9yZVRl
c3QpKQpAQCAtMTA4NywxMCArMTA5MSw2IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3Rh
dGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAg
ICBzZXRIaWRkZW4oZmFsc2UpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY2xlYXJBcHBs
aWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSNlbmRpZgotCiAgICAg
aWYgKCFwbGF0Zm9ybVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMob3B0aW9ucykpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzEyNCw2ICszMTI0LDEwIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNsZWFyUHJldmFsZW50RG9tYWlucygpCiB7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xs
ZXI6OmdldFdlYlZpZXdDYXRlZ29yeSgpCit7Cit9CisKICNlbmRpZgogCiBzdHJ1Y3QgQ2xlYXJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uc0NhbGxiYWNrQ29udGV4dCB7CkBAIC0zNzEzLDYgKzM3
MTcsNDkgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6aXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlckVuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBXS1BhZ2VJc01vY2tSZWFsdGltZU1lZGlh
U291cmNlQ2VudGVyRW5hYmxlZChtX21haW5XZWJWaWV3LT5wYWdlKCkpOwogfQogCitzdHJ1Y3Qg
SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dCB7CisgICAgZXhwbGljaXQgSW5BcHBC
cm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlcikK
KyAgICAgICAgOiB0ZXN0Q29udHJvbGxlcihjb250cm9sbGVyKQorICAgIHsKKyAgICB9CisKKyAg
ICBUZXN0Q29udHJvbGxlciYgdGVzdENvbnRyb2xsZXI7CisgICAgYm9vbCBkb25lIHsgZmFsc2Ug
fTsKKyAgICBib29sIHJlc3VsdCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgdm9pZCBpbkFwcEJy
b3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKGJvb2wgcmVzdWx0LCB2b2lkKiB1c2Vy
RGF0YSkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SW5BcHBCcm93c2VyUHJp
dmFjeUNhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0LT5yZXN1bHQgPSBy
ZXN1bHQ7CisgICAgY29udGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCitzdGF0aWMgdm9pZCBpbkFwcEJyb3dzZXJQcml2YWN5
Vm9pZFJlc3VsdENhbGxiYWNrKHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4odXNlckRh
dGEpOworICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNvbnRleHQtPnRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsKK30KKworYm9vbCBUZXN0Q29udHJvbGxlcjo6aGFzQXBwQm91bmRT
ZXNzaW9uKCkKK3sKKyAgICBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0IGNvbnRl
eHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbihUZXN0
Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgpLCAmY29udGV4dCwgaW5BcHBCcm93c2VyUHJp
dmFjeUJvb2xlYW5SZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBu
b1RpbWVvdXQpOworICAgIHJldHVybiBjb250ZXh0LnJlc3VsdDsKK30KKworCit2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIHZhbHVlKQorewor
ICAgIEluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7Cisg
ICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoVGVzdENv
bnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgdmFsdWUsICZjb250ZXh0LCBpbkFwcEJyb3dz
ZXJQcml2YWN5Vm9pZFJlc3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUs
IG5vVGltZW91dCk7CisgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0SW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQoKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtQWRkVGVzdE9wdGlvbnMoVGVzdE9wdGlvbnMmKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDRlNjUxMTI5ZWMyOTRm
NmQ1YTU5YzQzNzFlMjk2MzVhMWIxZjk5NGMuLjFjN2Y3NWQ2OWNmOGM0NTUzMDBiYTM0NmEwZTVj
NTUxYzYyMjM2MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAg
LTI2MCw2ICsyNjAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcygpOwogICAgIHZvaWQgZ2V0UHJldmFsZW50RG9tYWlucygpOwogICAgIHZvaWQgY2xlYXJQ
cmV2YWxlbnREb21haW5zKCk7CisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoKTsKKyAgICB2
b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wpOwogCiAgICAgV0tBcnJheVJl
ZiBvcGVuUGFuZWxGaWxlVVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMu
Z2V0KCk7IH0KICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVS
THMpIHsgbV9vcGVuUGFuZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CkBAIC0yOTgsNiArMzAwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CiAgICAgdm9pZCBz
ZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24odWludDY0X3QpOwogICAgIGJvb2wgaXNNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGhhc0FwcEJvdW5k
U2Vzc2lvbigpOwogCiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMzIyNGYw
OGFhZTQ4NDE4OWYxZDQyMzVlMWU2YWY4MDZlZDEzNTcxNC4uYWY3MjMxZjgyNzljOTVmNWI1ZWNh
Y2ZiYWNjMTJjOGFiMGQ3NzRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5jcHAKQEAgLTc2MCw2ICs3NjAsMTMgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9j
a1RoaXJkUGFydHlDb29raWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgZmFsc2UpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSkgewor
ICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5
cGVJRCgpKTsKKyAgICAgICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29s
ZWFuUmVmPihtZXNzYWdlQm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkp
OworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJSdW5VSVByb2Nlc3NTY3JpcHQiKSkgewogICAgICAgICBX
S0RpY3Rpb25hcnlSZWYgbWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0
aW9uYXJ5UmVmPihtZXNzYWdlQm9keSk7CkBAIC04MDAsNiArODA3LDExIEBAIHZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVm
IG1lc3NhZ2VOYW1lCiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRPcGVu
UGFuZWxGaWxlVVJMcyhzdGF0aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiR2V0V2ViVmlld0NhdGVnb3J5IikpIHsKKyAgICAgICAgVGVz
dENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV0tTdHJp
bmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldE9wZW5QYW5lbEZpbGVVUkxz
TWVkaWFJY29uIikpIHsKQEAgLTEwMDIsNiArMTAxNCwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVS
ZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVj
dGVkQgogICAgICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVk
ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXJFbmFibGVkKCk7CiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShp
c01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCkpOwogICAgIH0KKyAgICAKKyAg
ICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkhhc0FwcEJv
dW5kU2Vzc2lvbiIpKSB7CisgICAgICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uID0gVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLmhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgICAgICByZXR1
cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaGFzQXBwQm91bmRTZXNzaW9uKSk7CisgICAgfQog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQ29ubmVjdE1vY2tHYW1lcGFkIikpIHsKQEAgLTE4NzAsNiArMTg4Nywx
MiBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKCkKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG51bGxwdHIpOwogfQogCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCgpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VO
YW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9Jbmpl
Y3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFn
ZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRp
b246OmRpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCkKIHsKICAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1v
ZGUiKSk7CkBAIC0xOTQ4LDcgKzE5NzEsMTMgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVj
ZWl2ZVByZXZhbGVudERvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogICAgIFdLUmV0
YWluUHRyPFdLTXV0YWJsZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxl
QXJyYXlDcmVhdGUoKSk7CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQogICAgICAg
ICBXS0FycmF5QXBwZW5kSXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKK30KKwor
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmIHdl
YlZpZXdDYXRlZ29yeSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5h
bWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2
ZVdlYlZpZXdDYXRlZ29yeSIpKTsKICAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4g
bWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYlZp
ZXdDYXRlZ29yeS51dGY4KCkuZGF0YSgpKSk7CiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdl
KCksIG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA1MDMzN2Q2NzVkZTA5MGFkZGY1Yjc2
YzgwMDcyYTE3ZmJhNGMxM2U2Li5lYzRmNTk2NjJjN2I1YmUwMzY2MTUwNzJjMjIwNTk2MmU4NDg1
NTY2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC04Nyw2ICs4
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zKTsKICAgICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0
cmluZyYpOworICAgIHZvaWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIAog
ICAgIHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5k
ZXggZDNmMmVmMWJjMzJlZTBkZjM4MmU2MzJjYmQ1MzBhMDQ3ZjcyZjhmOS4uNmY5NTViMGRhYjFj
NTVjNDkwZDZiNTJkNDM5YjVjYWQ5NDZjNTllZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzU2LDYgKzM1NiwzMiBA
QCB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQogICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERv
bWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwogfQogCit2b2lkIFRlc3RDb250
cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQoreworICAgIGF1dG8qIHBhcmVudFZpZXcgPSBt
YWluV2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZp
ZXdDYXRlZ29yeUZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxl
cjpeKF9XS1dlYlZpZXdDYXRlZ29yeSB3ZWJWaWV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgU3RyaW5n
IGNhdGVnb3J5OworICAgICAgICBzd2l0Y2ggKHdlYlZpZXdDYXRlZ29yeSkgeworICAgICAgICBj
YXNlIF9XS1dlYlZpZXdDYXRlZ29yeUFwcEJvdW5kRG9tYWluOgorICAgICAgICAgICAgY2F0ZWdv
cnkgPSAiQXBwQm91bmREb21haW4iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
X1dLV2ViVmlld0NhdGVnb3J5SHlicmlkQXBwOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiSHli
cmlkQXBwIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIF9XS1dlYlZpZXdDYXRl
Z29yeUluQXBwQnJvd3NlcjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkluQXBwQnJvd3NlciI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJC
cm93c2VyOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiV2ViQnJvd3NlciI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlV2ViVmlld0NhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICB9XTsKK30KKwogdm9pZCBUZXN0Q29u
dHJvbGxlcjo6aW5qZWN0VXNlclNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCiB7CiAgICAgYXV0
byB1c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3Vy
Y2U6IHRvV1RGU3RyaW5nKHNjcmlwdCkgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rp
b25UaW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMDYw
NWUxOGE2ZWE2NWE1NTYwNmNmZDI3ZDVjZDM4OTlkNGZjMDZlLi4zMDZhMjczOWQxYzExNGYxMjMx
ZThiY2IzMjM2MTQ1MzY5YTYzZGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDItMjAg
IEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBw
LWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNzaW9ucworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDI2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81OTQzNDAwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCB0d28gdGVzdHMuIE9uZSB0byB0ZXN0IHRoZSBw
cm9wZXIgY2F0ZWdvcml6YXRpb24gb2YgYXBwLWJvdW5kCisgICAgICAgIG5hdmlnYXRpb24sIGFu
ZCBvbmUgdG8gY2hlY2sgdGhhdCBzd2l0Y2hpbmcgc2Vzc2lvbnMgb2NjdXJzIHdoZW4KKyAgICAg
ICAgbmF2aWdhdGluZyB0byBhbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIFNpbmNlIHRo
ZXNlIHRlc3RzIHVzZSBJVFAgdG8gc2V0IHVzZXIgaW50ZXJhY3Rpb24sIHRoZXkgc2hvdWxkIG9u
bHkKKyAgICAgICAgYmUgcnVuIG9uIGlPUyBhbmQgbWFjLXdrMi4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNz
aW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMDItMjAgIEphc29uIExhd3JlbmNlICA8
bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIF0gY3J5cHRvL3N1YnRs
ZS9yc2EtaW5kZXhlZGRiLmh0bWwgaXMgZmxha3kgdGltaW5nIG91dC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IGFlZjdhMGE5YjQwOTRjZTI2NzUxNjhlZmQzZTdkMTg2MzUxMWEzNDMuLjdjNGIzOTdk
MmY1MzYyNWVkZjRhYjE2Zjc1MWJjOTg2ZTU3YTcwYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTU1LDYgKzE1NSw4IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi91c2VyYWdlbnQtcmVsb2FkLnBo
cCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1z
dG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1s
ZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4tdGV4
dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvIFsgU2tpcCBdCisKIAogIyBPbmx5IE1hYyBhbmQgaU9TIGhhdmUgYW4gaW1w
bGVtZW50YXRpb24gb2YgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzaygpLgogZmFzdC9o
YXJuZXNzL3Vpc2NyaXB0Y29udHJvbGxlciBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZTNlNjlmNTdkNzI5
MjBhYmUzYzk3ODZiNTI2MjhjZDllNjU4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21haW4g
Z2V0cyBjbGFzc2lmaWVkIGFzIHNvCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIFN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEFwcC1Cb3VuZC4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1kb21haW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1YzBlN2RiNGFkZDJkYTFj
Yjc2MmYzODBiMzdiZWNiYmY2NjgyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwKQEAg
LTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBp
bnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFuIEFwcC1Cb3Vu
ZCBEb21haW4gZ2V0cyBjbGFzc2lmaWVkIGFzIHNvJyk7CisgICAgICAgIGpzVGVzdElzQXN5bmMg
PSB0cnVlOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBm
dW5jdGlvbiBhc2tGb3JXZWJWaWV3Q2F0ZWdvcnkoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LmdldFdlYlZpZXdDYXRlZ29yeShmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY2F0ZWdvcnkgPT0gIkluQXBwQnJvd3NlciIpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIlN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEFwcC1Cb3VuZC4iKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZhaWx1
cmUsIGRvbWFpbiBub3QgY2xhc3NpZmllZCBhcyBBcHAtQm91bmQuIik7CisgICAgICAgICAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCI7CisgICAgICAgIGZ1bmN0aW9uIG5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFpbigpIHsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdpbiArICIv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDIiOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPSAi
I3N0ZXAyIikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdvcnkoZnVu
Y3Rpb24gKGNhdGVnb3J5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9ICJBcHBC
b3VuZERvbWFpbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbHVyZSwg
c3RhcnRpbmcgY2F0ZWdvcnkgbm90IEFwcEJvdW5kRG9tYWluIik7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBuYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNrRm9yV2ViVmlld0NhdGVnb3J5KCk7Cisg
ICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
c3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40ZmU4YTYzZTQ3N2E5YTBkY2MwMmQ2Mjc1ZWQ2YWIxMGM1Yjc5ZGYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nl
ci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFp
bi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBp
cyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21h
aW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFNob3VsZCBoYXZlIGFu
ZCBoYXMgdGhlIHNlc3Npb24gY29va2llLgorUEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBw
ZXJzaXN0ZW50IGNvb2tpZS4KK1BBU1MgT3JpZ2luIGhhcyBhcHAtYm91bmQgc2Vzc2lvbiBhZnRl
ciBuYXZpZ2F0aW9uLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21h
aW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9z
d2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzhjYmEwYjhhZDYyNGZhOGY5NGNjYTI0NTMyNjUzNDM1YmEzZjMyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sCkBA
IC0wLDAgKzEsMTE0IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGludGVybmFsOklzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ9dHJ1ZSBhcHBsaWNhdGlvbkJ1
bmRsZUlkZW50aWZpZXI9dGVzdGlkZW50aWZpZXIgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxo
ZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHRoZSBzZXNzaW9uIGlzIHN3aXRjaGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRp
b24gdG8gYW4gYXBwLWJvdW5kIGRvbWFpbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgIGNvbnN0IGFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7Cisg
ICAgY29uc3Qgbm9uQXBwQm91bmRPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAg
ICBjb25zdCBzZXNzaW9uQ29va2llTmFtZSA9ICJzZXNzaW9uQ29va2llIjsKKyAgICBjb25zdCBw
ZXJzaXN0ZW50Q29va2llTmFtZSA9ICJwZXJzaXN0ZW50Q29va2llIjsKKyAgICBjb25zdCB0d29N
aW51dGVzSW5TZWNvbmRzID0gMTIwOworCisgICAgZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZSgp
IHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gc2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7IHBh
dGg9LyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2V0UGVyc2lzdGVudENvb2tpZSgpIHsKKyAg
ICAgICAgZG9jdW1lbnQuY29va2llID0gcGVyc2lzdGVudENvb2tpZU5hbWUgKyAiPTE7IHBhdGg9
LzsgTWF4LUFnZT0iICsgdHdvTWludXRlc0luU2Vjb25kcyArICI7IjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBjaGVja0Nvb2tpZXMoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUsIHNob3VsZEhhdmVQ
ZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgIGxldCBoYXNTZXNzaW9uQ29va2llID0gKGRvY3Vt
ZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhzZXNzaW9uQ29va2llTmFtZSksCisgICAgICAgICAg
ICBoYXNQZXJzaXN0ZW50Q29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhw
ZXJzaXN0ZW50Q29va2llTmFtZSk7CisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29v
a2llICYmIGhhc1Nlc3Npb25Db29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQg
aGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hv
dWxkSGF2ZVNlc3Npb25Db29raWUgJiYgIWhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29v
a2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0
KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgaGFzU2Vz
c2lvbkNvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0
IGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJl
KGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2ll
LiIpOworCisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmIGhhc1Bl
cnNpc3RlbnRDb29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQg
aGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2
ZVBlcnNpc3RlbnRDb29raWUgJiYgIWhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQg
Y29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNU
ZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYg
aGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0
IGhhdmUgYnV0IGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHBl
cnNpc3RlbnQgY29va2llLiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7Cisg
ICAgICAgIHN3aXRjaCAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2Fz
ZSAiIjoKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKHRydWUsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIGFwcEJv
dW5kT3JpZ2luICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0
cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSB0
ZXN0IG1hbnVhbGx5IHNldHMgdGhlIGluQXBwQnJvd3NlclByaXZhY3kgZmxhZyBpbiB0aGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byByZS1l
c3RhYmxpc2ggYW4gYXBwLWJvdW5kIHNlc3Npb24gYnkKKyAgICAgICAgICAgICAgICAgICAgICAg
IC8vIG5hdmlnYXRpbmcgYXdheSB0aGVuIGJhY2sgdG8gdGhlIGFwcC1ib3VuZCBEb21haW4gYmVm
b3JlIHNldHRpbmcgY29va2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWYgPSBub25BcHBCb3VuZE9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCNz
dGVwMSI7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAxIjoKKyAgICAgICAg
ICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gYXBwQm91bmRPcmlnaW4gKyAiL2luLWFw
cC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91
bmQtZG9tYWluLmh0bWwjc3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAiI3N0ZXAyIjoKKyAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24u
b3JpZ2luICE9PSBhcHBCb3VuZE9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiU3RlcCAyIGlzIG5vdCBvbiAiICsgYXBwQm91bmRPcmlnaW4gKyAiLiIpOworICAgICAgICAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihhcHBC
b3VuZE9yaWdpbiwgdHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFNl
c3Npb25Db29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0UGVyc2lzdGVudENvb2tpZSgp
OworICAgICAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJPcmlnaW4gZGlkIG5vdCBzdGFydCB3aXRoIGFw
cC1ib3VuZCBzZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVh
dHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBz
ZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
bm9uQXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Np
b24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDMiOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAi
I3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gIiNzdGVw
NCIKKyAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBub25BcHBCb3VuZE9yaWdp
bikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAzIGlzIG5vdCBvbiAiICsg
bm9uQXBwQm91bmRPcmlnaW4pOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZUJsb2NraW5nKHJ1blRlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKKyAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXMo
ZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0g
YXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24t
b24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDUiOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAg
ICBjaGVja0Nvb2tpZXModHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5u
ZXIuaGFzQXBwQm91bmRTZXNzaW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
Ik9yaWdpbiBoYXMgYXBwLWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4iKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBo
YXMgbm8gYXBwLWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4iKTsKKyAgICAgICAgICAg
ICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmlu
ZGV4IDk4YWVkYzkzNzNhMzIxNGQ5MDEwMjU0OTM4NDU0MDZlOWYwZjFkZjAuLjlhNDVhZWFhOTY1
NzQ4YjVmODRlYTZhNDQ1NGNkOGU0MzU0OGU3NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lv
cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yNzk3LDYgKzI3OTcsOSBAQCBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvZGVueS1zdG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItaWYtYXV0by1kaXNtaXNz
LWRhdGFiYQogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mYWxz
ZS1ieS1kZWZhdWx0LWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZmFsc2UtYnktZGVmYXVsdC1lcGhlbWVyYWwtZGF0YWJh
c2UuaHRtbCBbIFBhc3MgXQogCisjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMsIG9u
bHkgd29yayBmb3IgaU9TIGFuZCBNYWMgV0syLgoraHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5LyBbIFBhc3MgXQorCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2lu
Y2UgdGhleSBvbmx5IHdvcmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMtaW4t
cHJpdmF0ZS1tb2RlLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RyaXAtcmVm
ZXJyZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy1pbi1wcml2YXRlLW1vZGUu
aHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDIwMmUxZjNlZjgxYTgzMDk5ODk5NzMxN2NhZmM5ZTAzMWU3ZThhMDUuLmI3
NzMwOGU4MDJjODJiMzAwZjg5ZGNlNDhmYzZlMzY4NTU4MDdhNzQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU4LDYgKzU4LDggQEAgd2Vi
a2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQt
cmVxdWVzdC9hbGxvd3BheW1lbnQKIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9zZXR0
aW5nLWFsbG93cGF5bWVudHJlcXVlc3QtdGltaW5nLmh0dHBzLnN1Yi5odG1sIFsgU2tpcCBdCiB3
ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVu
dC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0
Lmh0dHBzLnN1Yi5odG1sIFsgU2tpcCBdCiAKK2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS8gWyBQYXNzIF0KKwogIyBza2lwIGluIGZhdm9yIG9mIHRlc3RzIGluIGh0dHAvdGVzdHMv
cGF5bWVudHJlcXVlc3QKIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1y
ZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbCBbIFdvbnRGaXgg
XQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVu
dC1yZXF1ZXN0LXNob3ctbWV0aG9kLmh0dHBzLmh0bWwgWyBXb250Rml4IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391339</attachid>
            <date>2020-02-20 15:08:54 -0800</date>
            <delta_ts>2020-02-20 16:24:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200220150854.patch</filename>
            <type>text/plain</type>
            <size>118960</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkZDBiY2E4NzM5ZDc0NGYw
MzY4ZTFjN2UxN2JkMjk0NmIxNTUzNDkuLmRiNjdiNTY1MDk4NmRjM2I3NmIyYWNkZTI4YjhlNTcw
NTEwNDVmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIwICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtZG9tYWluLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1k
b21haW4uaHRtbAorCisgICAgICAgIFN1cHBvcnRzIG5ldHdvcmsgc2Vzc2lvbiBzd2l0Y2hpbmcg
Zm9yIG5hdmlnYXRpb25zIHRvIGFwcC1ib3VuZAorICAgICAgICBkb21haW5zLiBUaGlzIHJlcXVp
cmVzIHVwZGF0aW5nIHRoZSB3ZWJQYWdlIHdoZW4gYSBuYXZpZ2F0aW9uIG9jY3VycworICAgICAg
ICB0byBjaGVjayB3aGV0aGVyIGl0IGlzIHRvIGFuIGFwcC1ib3VuZCBkZXN0aW5hdGlvbi4gSW4g
Y2FzZSBvZiBhCisgICAgICAgIHByb2Nlc3Mgc3dhcCwgdGhpcyBoYXMgdG8gYmUgZG9uZSBib3Ro
IGluIFBvbGljeURlY2lzaW9uU2VuZGVyIGFuZAorICAgICAgICBpbiB0aGUgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmxvYWREYXRhIGFuZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QK
KyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtdXN0IHNlbmQg
dGhlIEluLUFwcCBCcm93c2VyIHByaXZhY3kgZmxhZyB0byB0aGUKKyAgICAgICAgTmV0d29yayBw
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICBQYXNzZXMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gZmxhZyB0byB0
aGUgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNBcHBCb3VuZFNl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNlc3Npb24pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0FwcEJv
dW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpo
YXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQSBsYXJnZSBwb3J0aW9u
IG9mIHRoaXMgcGF0Y2ggaXMgdGhyZWUgZnVuY3Rpb25zIGZvciB0ZXN0aW5nLCBvbmUgc2V0cyAK
KyAgICAgICAgdGhlIGluLWFwcCBicm93c2VyIHByaXZhY3kgZmxhZyBmb3IgdGhlIHRlc3QgY2Fz
ZSwgb25lIGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24sIGFuZCBvbmUKKyAgICAgICAg
Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgY2F0ZWdvcnkgd2FzIGNvcnJlY3RseSBzZXQgdG8gYXBw
LWJvdW5kIGRvbWFpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFBhc3Nl
cyB0aGUgSW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIHZhbHVlIGZyb20gTlNVc2VyRGVmYXVs
dHMgdG8gdGhlIG5ldHdvcmsgc2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAg
ICBDcmVhdGVzIGEgbmV3IHNlc3Npb24gKG9yIHJldHVybnMgdGhlIGV4aXN0aW5nIGFwcC1ib3Vu
ZCBzZXNzaW9uKSBpZgorICAgICAgICB0aGUgbmF2aWdhdGlvbiBpcyBhcHAtYm91bmQuIFRoaXMg
aXMgdGhlIG1haW4gY2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBTaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Yg
YSBwcm9jZXNzIHN3YXAsIHdlIG11c3QgYWRkIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGJvb2xlYW4gaW4gTG9hZFBhcmFtZXRlcnMgdG8gZW5zdXJlIGl0IGdldHMg
c2VudCB0bworICAgICAgICB0aGUgbmV3IHdlYlBhZ2UgdmlhIHRoZSBQcm92aXNpb25hbFBhZ2VQ
cm94eS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2Vu
ZGVyOjpzZW5kKToKKyAgICAgICAgRml4ZXMgYSBjYXBpdGFsaXphdGlvbiBlcnJvci4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzQXBwQm91bmREb21haW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgVGhlc2Ug
ZnVuY3Rpb25zIGRldGVybWluZSBpZiB0aGUgY2F0ZWdvcnkgaXMgYXBwQm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFdLV2ViVmlldyB3aXRoIG5vbi16ZXJvIG9yaWdpbiBoYXMgdGhlIHdyb25n
IHRvcCBjb250ZW50IGluc2V0IHdpdGggTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRW
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKaW5kZXggODIxMjM2ZTc5MDZkZGM4M2FlYjY5NjdjOGVlYjhjMThmZDA2YTkxMi4uODA1MGQx
MWZmOGU3MTdlMTk3NWE2NGJiZjA0YmU2ZTU2ZGUwYzdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdAogewogICAgIEFTU0VSVCghcGFyYW1ldGVycy5yZXF1ZXN0
LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVy
biBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVy
cy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFy
YW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlv
biwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1l
dGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyKTsKKyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFt
ZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25u
ZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2
aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICNl
bmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVh
dGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IGRlNzRkMzNhODFmNjJkNDU4MDZiNjg5NWZmM2JhZWNi
ZmM1NjZhMTcuLjI0YTkzNzM1MTBlMTAzMTJiMzllMTM3MzA1OGY2OGJlMTZjNTQ1NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAgUHJlY29u
bmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKICAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHRydWUgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA5YmZhNDhmYjE4ODc1YTNkMGIwYWQ3OTkzMWNjYmNj
MWZjYzdlNDgwLi40OTIwMDc3NmIwY2E5Mjg0NDkyN2Q0MWE1Mjc2ZGEzOTQwODExOGE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAt
MjYwMyw0ICsyNjAzLDIzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0U2VydmljZVdvcmtl
ckZldGNoVGltZW91dEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8CiAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzczo6aGFzQXBwQm91bmRTZXNzaW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBib29sIHJlc3VsdCA9IGZhbHNlOwor
ICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Np
b25JRCkpCisgICAgICAgIHJlc3VsdCA9IG5ldHdvcmtTZXNzaW9uLT5oYXNBcHBCb3VuZFNlc3Np
b24oKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQpOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CisgICAgICAgIG5ldHdvcmtTZXNzaW9uLT5zZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4
MzRmNmVlNTdjMmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zMGExMzI1N2JkNWU1Njk0NGI3
ZGIyYjNhMjY3NDEzYWY2YzNiMTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29u
ZHMgc2VydmljZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdv
cmtlckZldGNoVGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2Vk
KFdlYkNvcmU6OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRT
ZXNzaW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBj
b25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lv
bklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGVkZGZjZGJhMzlhMzA3
ZWY1ZTFkMDdhZjEzNWYyNDdmMTNlZWMxYWMuLmM4ZDAwOGZkOTFlZWZjMDJkN2JlMWRiNWU4YTQ3
YmIzOTM4MDM2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTY4LDQgKzE2OCw3IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBSZXNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKCkgLT4gKCkgU3luY2hyb25vdXMKIAogICAgIFJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYworICAgIAorICAgIEhh
c0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0Fw
cEJvdW5kU2Vzc2lvbikgQXN5bmMKKyAgICBTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUpIC0+ICgpIEFzeW5jCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IGRhMjIwOWI4N2VhMzM1MzUyYjE4NGE4N2ZkYWE5
MGUzMDE5ZTc1MzYuLjI3MjdhMTI3YjRhMWZhZTE2MzZhZDk2YmJiNzhlMTFjZjU2N2YyNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMTksNiArMTE5LDkgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICBlbmNvZGVyIDw8IG1haW5Eb2N1bWVudFVSTDsKICAgICBlbmNvZGVyIDw8IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKKyAgICAKKyAgICBlbmNvZGVy
IDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisKIH0KIAogT3B0aW9uYWw8TmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM+IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMjk0LDYgKzI5NywxMiBAQCBPcHRpb25h
bDxOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUAogICAgIHJlc3VsdC51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKIAorICAgIE9w
dGlvbmFsPGJvb2w+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgZGVjb2RlciA+
PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlmICghaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXN1bHQu
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
aAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2YmY2NDQ5NTNhLi4wZjdkNjgw
M2Y5MTE0Nzc5MzFlNWVjYzk2OWEwODRmMjFjZTM2YWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oCkBAIC03Myw2ICs3Myw5IEBAIHB1YmxpYzoKICAgICBVUkwgbWFpbkRvY3VtZW50VVJMOwog
ICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI7CiAjZW5kaWYKKyAgICAKKyAgICBib29sIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47CisgICAgCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZGVyLmNwcAppbmRleCBmZjNhYmQ5OTM4OTFlN2JhMDhkZmY4YTIzYmU3ZjA5YjhhZjkzODM1Li5m
NTk4ZDc5NjY4OTBlNzdkZDExNGMxMmQ3ZmFlMTYzNTZjZDVjNTRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0zMjgsNiArMzI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29y
a0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgbV9jb25u
ZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlc291cmNlTG9hZERpZFNlbmRSZXF1ZXN0
KG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5mbygpLCByZXF1ZXN0
KSwgMCk7CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOworICAg
IHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IG1fcGFyYW1ldGVycy5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtlVW5p
cXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnkoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChkZXNj
cmlwdGlvbj0lIiBQVUJMSUNfTE9HX1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0
aW9uKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtTZXNzaW9uLmgKaW5kZXggOGIwYzFjYThjNTNlZjZiZjMxZGNkNDBkZDNhOTY1Y2ZlZTZl
NWM4OC4uMjA1ZjU4YWI4YWIzMjgxNTgzOGM4ZjIwY2E2ZWQ3MWZmMTRmNWRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTcsMTAgKzk3
LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0
aW5nRXZlbnQoYm9vbCBsb2cpIHsgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVz
dGluZ0V2ZW50ID0gbG9nOyB9CiAgICAgdmlydHVhbCBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJc29sYXRlZFNlc3Npb25zKCkgeyB9CisKICAgICB2b2lk
IHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sKTsKICAgICBib29sIHNo
b3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpOwog
I2VuZGlmCisgICAgCisgICAgdmlydHVhbCBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGJvb2wpIHsgfQogICAgIHZvaWQgc3RvcmVBZENsaWNrQXR0cmlidXRpb24oV2Vi
Q29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQgaGFuZGxlQWRDbGlja0F0dHJp
YnV0aW9uQ29udmVyc2lvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNpb24m
JiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlZGlyZWN0UmVxdWVzdCk7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9uKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwCmluZGV4IDIxZmM4NjliY2Q4MmMyOTVjYjY0NTY1NDQxMDc1OGMyNTljZjQ1YzEuLmEw
MzQ2ZDA3MzM2MjIwN2YwZTY5ZjgzYjA3Zjc0MzI3OGE3ZGFhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCB0ZXN0U3BlZWRNdWx0aXBsaWVyOwogICAgIGVuY29kZXIgPDwgc3VwcHJl
c3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOwogICAgIGVuY29kZXIgPDwg
YWxsb3dzU2VydmVyUHJlY29ubmVjdDsKKyAgICBlbmNvZGVyIDw8IGlzSW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQ7CiB9CiAKIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlcikKQEAgLTI2OSw2ICsyNzAsMTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWMK
ICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgaWYgKCFhbGxvd3NT
ZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAorICAg
IE9wdGlvbmFsPGJvb2w+IGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7CisgICAgZGVjb2Rl
ciA+PiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGlmICghaXNJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgIHJl
dHVybiB7ewogICAgICAgICAqc2Vzc2lvbklECkBAIC0zMTQsNiArMzIwLDcgQEAgT3B0aW9uYWw8
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3ZlKCp0ZXN0U3BlZWRNdWx0aXBsaWVyKQog
ICAgICAgICAsIFdURk1vdmUoKnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZSkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQorICAg
ICAgICAsIFdURk1vdmUoKmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpCiAgICAgfX07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3MmY3NTI2NzVlZDg3YjgyMjEw
MjFlMDZiNmE4YTNiNWY0NzhjOTA2Li5lOGU2ZTE5OGRkOTczNmYzODMyNzQxZDFlOTFmNGI1YzZh
NGQ5MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDMsNiArMTAzLDcg
QEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB1bnNpZ25l
ZCB0ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5lY3Rp
b25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93c1Nl
cnZlclByZWNvbm5lY3QgeyB0cnVlIH07CisgICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oCmluZGV4IGY0ODMxOWE3MWQ5MjU5OGMyZDE2MGE1MGJmODY0N2VlN2JiYTZhNzQuLjBi
ZDc2NTQxNDAwNjE3NDcxZGI2ZjE3Mjg4ZjM1ODZkZjEzM2U4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBOZXR3
b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25u
ZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRh
c2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5
VHJhY2tlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tD
b2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3VsZFBy
ZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRhc2tJ
c0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5VHJh
Y2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpOwogICAgIH0KIAogICAgIH5OZXR3
b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
V2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
biwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7CisgICAgTmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
KTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZh
Y2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25p
ZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0K
aW5kZXggNTlmNTZmNGI3M2JhZjBmNjNlNmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uMTg5NzYxNWM1
Nzk0OTAxNTUyYjdiNDk5NTRmZTIxYjViYTE1YzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBA
IC0yMjgsOSArMjI4LDkgQEAgc3RhdGljIGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24u
c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFBy
ZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29s
IGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Np
b24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91
bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBib29s
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vz
c2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCi0gICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFr
UHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3Jh
cHBlckZvclRhc2socmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kpKSkKKyAgICAsIG1fc2Vzc2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8TmV0
d29ya1Nlc3Npb25Db2NvYSY+KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1ZXN0
V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbikpKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCiAgICAgLCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
KGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25D
b2NvYS5oCmluZGV4IDRhZDJjMTAxYmU3YTllNzlmOGQzNTAyNjVkNzg4YzM4ZDAyZTU4NTguLjg0
MTFlNzFiNzkxZmI5NzY4YzA4OTk0ZGY0ZWI2ZmVlMDU0MGE3NDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CkBAIC05MywxNCArOTMsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9u
KGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIG92ZXJyaWRlOwogCi0gICAgU2Vzc2lvbldyYXBw
ZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYm9vbCBoYXNBcHBCb3Vu
ZFNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFNlc3Npb25XcmFwcGVyJiBzZXNzaW9u
V3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJvb2wpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoKSB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi4xMGM0NGEwNjExZWQ2NzI4
YzNhNDg0MzkwNDhiMTgyNWRmZDAxNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
IChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CkBAIC0x
MTk3LDYgKzExOTgsMTEgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNl
c3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmIChtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCisg
ICAgICAgICAgICByZXR1cm4gYXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAgICAg
Y2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICByZXR1
cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOwpAQCAtMTIwOSw2ICsxMjE1LDMyIEBA
IFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRh
c2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgfQogfQogCitTZXNzaW9uV3JhcHBlciYgTmV0
d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQoreworICAgIGlmICghbV9hcHBCb3Vu
ZFNlc3Npb24pIHsKKyAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24gPSBtYWtlVW5pcXVlPElzb2xh
dGVkU2Vzc2lvbj4oKTsKKyAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRoQ3Jl
ZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2Uu
c2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OlVzZSk7CisgICAgICAgIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0
aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aG91dENyZWRlbnRp
YWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSk7CisgICAgfQorCisgICAgYXV0byYgc2Vz
c2lvbldyYXBwZXIgPSBbJl0gKGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIC0+IFNlc3Np
b25XcmFwcGVyJiB7CisgICAgICAgIHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgorICAg
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiVXNpbmcgYXBwLWJvdW5kIE5TVVJMU2Vzc2lv
biB3aXRoIGNyZWRlbnRpYWwgc3RvcmFnZS4iKTsKKyAgICAgICAgICAgIHJldHVybiBtX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6CisgICAgICAgICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGhvdXQg
Y3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNz
aW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M6CisgICAgICAg
ICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5zZXNzaW9uKQorICAgICAgICAg
ICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKCk7CisgICAgICAgICAg
ICByZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICB9CisgICAgfSAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworCisgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVyOwor
fQorCiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNzaW9u
KFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluKQogewog
ICAgIGF1dG8mIGVudHJ5ID0gbV9pc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5RG9t
YWluLCBbdGhpc10gewpAQCAtMTI1OSw2ICsxMjkxLDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Npb25D
b2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvCiAgICAgcmV0dXJuIG1faXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21haW4pOwogfQog
Citib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0Cit7
CisgICAgaWYgKG1fYXBwQm91bmRTZXNzaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29sYXRl
ZFNlc3Npb25zKCkKIHsKICAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKQEAgLTEyODIs
NiArMTMyMSwxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRDYW5j
ZWwoKQogICAgICAgICBbc2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5k
ZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIH0KICAgICBtX2lzb2xhdGVkU2Vzc2lv
bnMuY2xlYXIoKTsKKworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50
aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJvdW5k
U2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52
YWxpZGF0ZWRdOworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50
aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJvdW5k
U2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9u
SW52YWxpZGF0ZWRdOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVu
dGlhbHMoKQpAQCAtMTI5NSw2ICsxMzM5LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpj
bGVhckNyZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9u
IHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmln
dXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdh
dGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAg
ICAgZm9yIChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAg
ICAgZW50cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9u
OmVudHJ5LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxp
ZD4oZW50cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUg
bWFpblF1ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Np
b24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0
KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Np
b24uZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3Bw
CmluZGV4IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRj
YTZjYTkyOWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9M
b2FkUGFyYW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6
ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVu
dW0obG9ja0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRM
aXN0KTsKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAg
ICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9y
bUVuY29kZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEp
CiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1v
dmUoKmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRh
dGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1l
dGVycy5oCmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjE0
YmRkNjg2NTkxNjllYWM1ZGQyNjgzYjk4NmE5NGRkZDIzZTM2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNjksNyArNjksOCBAQCBzdHJ1Y3QgTG9hZFBhcmFtZXRl
cnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6TG9j
a0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFj
a0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAgICBT
dHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotCisgICAgYm9vbCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFJl
dGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaAppbmRleCA3MTVjNTIxMjJmMDE5YTI5NjQ5YjFh
MWU1OGFhYTA5Y2Y5Nzg1ZDJlLi5hM2NlN2JlYTA3Y2NmYjY5ODk0Yzg0NTM5MDliZWY1NzA2NjQ5
YmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIGJvb2wgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHRydWUgfTsKICAgICBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElE
IHsgMCB9OwpAQCAtNDIsNiArNDMsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZv
aWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVy
IDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29k
ZXIgPDwgbmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01
NSw2ICs1NywxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFs
PGJvb2w+IGRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgICAgICBkZWNv
ZGVyID4+IGRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgICAgICBpZiAo
IWRlY29kZWRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQorICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxXZWJDb3JlOjpQb2xpY3lBY3Rpb24+
IGRlY29kZWRQb2xpY3lBY3Rpb247CiAgICAgICAgIGRlY29kZXIgPj4gZGVjb2RlZFBvbGljeUFj
dGlvbjsKQEAgLTc2LDcgKzgzLDcgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAgICAg
aWYgKCFkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSkKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKLSAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWRJZGVudGlmaWVy
KSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1vdmUoKmRlY29kZWROYXZpZ2F0
aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdURk1vdmUoKmRlY29kZWRXZWJz
aXRlUG9saWNpZXNEYXRhKSB9fTsKKyAgICAgICAgcmV0dXJuIHt7IFdURk1vdmUoKmRlY29kZWRJ
ZGVudGlmaWVyKSwgV1RGTW92ZSgqZGVjb2RlZElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
LCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92ZSgqZGVjb2RlZE5hdmlnYXRp
b25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RGTW92ZSgqZGVjb2RlZFdlYnNp
dGVQb2xpY2llc0RhdGEpIH19OwogCiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IDYxZTA5
Zjg4YjBmZmZlMWUwOWFiNmM4ZDYzOTJhMzY3YWIwMmM2MWEuLjRlMDQzYzAwNTU4OGJmNzg2MGMy
NzRmM2NkOThmZTc4ZmNmNzQ2OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNTI3LDYgKzUyNywxMyBA
QCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdAogI2VuZGlmCiB9CiAKK3ZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1
bmN0aW9uIGNhbGxiYWNrKQoreworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZiktPmhh
c0FwcEJvdW5kU2Vzc2lvbihbY29udGV4dCwgY2FsbGJhY2tdKGJvb2wgaGFzQXBwQm91bmRTZXNz
aW9uKSB7CisgICAgICAgIGNhbGxiYWNrKGhhc0FwcEJvdW5kU2Vzc2lvbiwgY29udGV4dCk7Cisg
ICAgfSk7Cit9CisKIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURh
dGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZv
clRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNjk2LDMgKzcwMywxMCBAQCB2b2lkIFdLV2Vic2l0ZURh
dGFTdG9yZVJlc2V0UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9p
ZCogY29udAogICAgICAgICAgICAgY2FsbGJhY2soY29udGV4dCk7CiAgICAgfSk7CiB9CisKK3Zv
aWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9u
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIFdlYktpdDo6dG9JbXBsKGRhdGFTdG9yZVJlZikt
PnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGVuYWJsZWQsIFtjb250ZXh0LCBjb21wbGV0
aW9uSGFuZGxlcl0geworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihjb250ZXh0KTsKKyAgICB9
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmgKaW5kZXggMjhkNmE4NzdkNmI3NzVhODgzYTRlMGRkY2UwMDhjMTFhNWFm
Zjc2Ny4uZTg2YTZmOTA3OWVhNTc5OTlmZjdmZjU0NmU4Mjg5NTk3NTk0YTk3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVm
LmgKQEAgLTExNyw2ICsxMTcsOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlvbikodm9pZCogZnVuYwogV0tfRVhQT1JU
IHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwKFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGRvdWJsZSBzZWNvbmRzLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXBGdW5jdGlv
bik7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0
ZWRTZXNzaW9uRnVuY3Rpb24pKGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uLCB2b2lkKiBmdW5jdGlv
bkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc0hh
c0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBXS1N0
cmluZ1JlZiBob3N0LCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNz
SGFzSXNvbGF0ZWRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spOwordHlwZWRlZiB2b2lkICgqV0tX
ZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24pKGJvb2wgaGFzQXBwQm91
bmRTZXNzaW9uLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vz
c2lvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9y
ZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rp
bmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZl
cnJlckZvclRlc3RpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBl
bmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxl
dGlvbkhhbmRsZXIpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNGb3JUZXN0aW5nRnVu
Y3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CkBAIC0xNTcsNiArMTU5LDkgQEAgV0tfRVhQ
T1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0Q2FjaGVNb2RlbFN5bmNocm9ub3VzbHlGb3JU
ZXN0aW5nKFdLV2Vic2l0ZUQKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVJlc2V0
UXVvdGFDYWxsYmFjaykodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdL
V2Vic2l0ZURhdGFTdG9yZVJlc2V0UXVvdGEoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9y
ZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNr
IGNhbGxiYWNrKTsKIAordHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWRGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dL
X0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9p
ZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWRGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCA0MzJjMjA3YzgxZjE0MzNlZGIzNDk1ZmNjNTdhYzU3
MjVjOGUyNzZhLi40N2E1MWUwODYzYzAzYzY2YjBjZTZkNDk1ODQ0MGNiNzc1M2U4MDliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVE
YXRhU3RvcmUubW0KQEAgLTQ3Myw2ICs0NzMsMjMgQEAgLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHYK
ICNlbmRpZgogfQogCistICh2b2lkKV9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6KFdLV2ViVmlldyAq
KXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYlZpZXdDYXRlZ29yeSBj
YXRlZ29yeSkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIXdlYlZpZXcpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoX1dLV2ViVmlld0NhdGVnb3J5V2ViQnJvd3Nlcik7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHdlYlBhZ2VQcm94eSA9IFt3ZWJWaWV3IF9w
YWdlXTsKKyAgICBpZiAoIXdlYlBhZ2VQcm94eSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gY2F0ZWdvcnkgPSB3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53ZWJW
aWV3Q2F0ZWdvcnkoKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0b1dLV2ViVmlld0NhdGVnb3J5
KGNhdGVnb3J5KSk7Cit9CisKIC0gKHZvaWQpX3NjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGU6
KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IDdkM2ZkNWZk
NjhjZDJjZGQ0MjAxNWI1YmFiYTFkYjk3OWY0ODE1Y2QuLmVmMGY3ODM3ZjM1Njk5MGFlMDEzMzlj
MzlmNTExYjcwOTlmODA0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMjMsNiAr
MjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKKyNpbXBv
cnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tX
ZWJzaXRlRGF0YVN0b3JlLmg+CiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCkBAIC02NCw2ICs2
NSw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0Zvcjoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAtICh2b2lkKV9nZXRQcmV2YWxlbnREb21haW5zRm9y
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5
PE5TU3RyaW5nICo+ICpkb21haW5zKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfY2xlYXJQcmV2
YWxlbnREb21haW5zRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9nZXRXZWJWaWV3Q2F0
ZWdvcnlGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KF9XS1dlYlZpZXdDYXRlZ29yeSBjYXRlZ29yeSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKICsgKHZvaWQpX2Fs
bG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2lucyBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjEzLjQpLCBpb3MoMTEuMykpOwogLSAoYm9vbClfaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3Jr
ZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCksIGlvcygxMi4wKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IGUwMTYyYWQ1Nzk5ZjRmOWUxOTc0ZjM0YWQ1MjhiYmRhYTM5MTE1N2EuLjRiZDIz
MmFjYWQzMWYxYTdiNDg2MTA3NjEyNmE2NGE1ZTU4MmI5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MTQ0Nyw2ICsxNDQ3LDI3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRRdW90YShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyCiAgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRRdW90YShzZXNzaW9uSUQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6aGFzQXBwQm91bmRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc0FwcEJvdW5kU2Vzc2lvbihzZXNzaW9uSUQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBi
b29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoc2Vzc2lvbklELCB2YWx1ZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggZTQxMzA5ZmY4YTM5OTNmZTVhZTU3NDUyNmY2YjI2MDk4MzRkNmNhZC4uMDJiY2NmNTlj
MjM3ODc4YzA3MzZiNjcyZGU4ZDIzM2U3ZDE4OWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTIxNiw2ICsy
MTYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNvdXJjZUxvYWREaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYpOwogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkQ29tcGxldGVXaXRoRXJy
b3IoV2ViUGFnZVByb3h5SWRlbnRpZmllciwgUmVzb3VyY2VMb2FkSW5mbyYmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiYpOwogCisgICAgdm9pZCBoYXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgCiBwcml2YXRlOgogICAgIC8vIEF1eGlsaWFyeVByb2Nl
c3NQcm94eQogICAgIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJOZXR3b3JraW5nIl9zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggZWIwYTk5MTdmMDgxNTA1MTI1YWU0NDg0MWUyYzNl
ZTk2MmI3M2I5NC4uNTIyOTY3ZTYxNDZiNjJmYWMzYTQxZTQ2Zjc4NzFjNTBhMjI2NWVhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApA
QCAtMTQ4LDE0ICsxNDgsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVdlYlBhZ2UoKQogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGcmVlemVMYXllclRy
ZWVEdWVUb1N3aXBlQW5pbWF0aW9uKCkpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VQcm94eUlEPSUiIFBSSXU2
NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwg
bV93ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAKLSAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwg
ZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSwg
bmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOworICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vz
cy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5j
b2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6OlllcywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSk7CiB9CiAKLXZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQ
Ukl1NjQsIG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50
NjQoKSk7CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAg
IGlmIChuYXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRM
aXN0KCkgPT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZp
Z2F0aW9uLmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNv
cmVQcm9jZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1f
cGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxh
c3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmMoRnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21h
aW5GcmFtZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRp
b25JRCAhPSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQs
IERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNp
c2lvbiB7IGlkZW50aWZpZXIsIHRydWUsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBu
YXZpZ2F0aW9uSUQsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuaAppbmRleCBiMTFkZTFjNDI1OTBjNjBjZjFhZjA2ODNjNzcyNTg2ZjZhYmEzNmI0Li4x
MmIyZjk5NDNlNzQ3Mjg1MjdhMTM3OTU0OGI0ZDZkYWJlMjdlNTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTkxLDggKzkxLDggQEAg
cHVibGljOgogICAgIExheWVySG9zdGluZ0NvbnRleHRJRCBjb250ZXh0SURGb3JWaXNpYmlsaXR5
UHJvcGFnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHRJREZvclZpc2liaWxpdHlQcm9w
YWdhdGlvbjsgfQogI2VuZGlmCiAKLSAgICB2b2lkIGxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsK
LSAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGEoQVBJOjpOYXZpZ2F0
aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEsIGJvb2wsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6
Om51bGxvcHQpOworICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBnb1Rv
QmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmKTsKICAgICB2b2lkIGNhbmNlbCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2NWNkYmZmY2Qx
MzM5YzJlYjk2MWE0Y2EzYTY4NjM0MTIzM2QxMTFlLi4zNmM1MzJmZjExMTQ5MzBmZjI5YWVjOTI1
ZGNhYmExYWVhYmViNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTI3NCw2ICsyNzQsMTIgQEAKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0Lmgi
CiAjZW5kaWYKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL1dlYlBhZ2VQcm94eUFkZGl0aW9ucy5oPgorI2Vsc2UKKyNkZWZpbmUgV0VCX1BB
R0VfUFJPWFlfQURESVRJT05TCisjZW5kaWYKKwogLy8gVGhpcyBjb250cm9scyB3aGF0IHN0cmF0
ZWd5IHdlIHVzZSBmb3IgbW91c2Ugd2hlZWwgY29hbGVzY2luZy4KICNkZWZpbmUgTUVSR0VfV0hF
RUxfRVZFTlRTIDEKIApAQCAtMTI2NCwxMSArMTI3MCwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFNobwogICAgIGlmIChzaG91bGRVc2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0
aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldEZvcmVncm91bmRBY3Rpdml0eShwcm9jZXNz
KCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcyku
bW92ZVRvVW5pcXVlUHRyKCkpOwogCi0gICAgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8pOworICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24u
Z2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVz
ZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCkpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCit2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgYm9vbCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcykKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMjkwLDYgKzEyOTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0
b3J5ID0gbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tC
YWNrRm9yd2FyZExpc3QgPSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBs
b2FkUGFyYW1ldGVycy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9u
LmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
OwogICAgIG1heWJlSW5pdGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJs
LCBtX3BhZ2VMb2FkU3RhdGUucmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMu
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KGxvYWRQYXJhbWV0ZXJzKTsKQEAgLTEzODQsMTEgKzEzOTEsMTEgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGMKICAgICBpZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2
aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJv
Y2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24i
X3MpLm1vdmVUb1VuaXF1ZVB0cigpKTsKIAotICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1J
TUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7
CisgICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBt
X3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJM
LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOwogICAgIHJldHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRp
b25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIApAQCAtMTQwOCw2ICsx
NDE1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJE
YXRhID0gVXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YSkuZ2V0KCkpOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUo
d2Vic2l0ZVBvbGljaWVzKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1l
dGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbjsKKwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OwogCiAgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVS
TCk7CkBAIC0zMDUyLDEwICszMDYxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUG9saWN5RGVjaXNpb25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVu
Y3Rpb24pKSk7CiAgICAgfQogCi0gICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgUG9saWN5
RGVjaXNpb24pCisgICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgcG9saWN5RGVjaXNpb24p
CiAgICAgewogICAgICAgICBpZiAobV9zZW5kRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRG
dW5jdGlvbihXVEZNb3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgICAgICAgICBtX3NlbmRGdW5j
dGlvbihXVEZNb3ZlKHBvbGljeURlY2lzaW9uKSk7CiAgICAgfQogCiAgICAgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTMwNzAs
NiArMzA3OSwyOSBAQCBwcml2YXRlOgogICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiB9OwogCisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJvdW5kRG9tYWluKFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKK3sKKyAgICBXRUJfUEFHRV9QUk9YWV9BRERJ
VElPTlMKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldElzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1
ZXN0VVJMKQoreworICAgIGlmIChtX3ByZWZlcmVuY2VzLT5pc0luQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKCkpIHsKKyAgICAgICAgaWYgKGlzTWFpbkZyYW1lKSB7CisgICAgICAgICAgICBSZWdp
c3RyYWJsZURvbWFpbiBjdXJyZW50RG9tYWluIHsgcmVxdWVzdFVSTCB9OworICAgICAgICAgICAg
aWYgKCFpc0FwcEJvdW5kRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHJlcXVlc3RVUkwpKSkgewor
ICAgICAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZp
ZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKKyAgICAgICAgICAgICAgICBtX2lzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29y
eShXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgICAgIG1faXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHRydWU7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
d2Vic2l0ZURhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC0zMTU3
LDcgKzMxODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBXZWJQYWdlUHJveHk6
OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0
aW9uKiBuYXZpZ2F0aW9uLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgV2lsbENvbnRpbnVl
TG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVj
aXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERv
d25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5
RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxODAsNyArMzIxMiw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbioKICAgICAgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QgPSB7IH07CiAgICAgfQogCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsg
c2VuZGVyLT5pZGVudGlmaWVyKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0p
OworICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQ
YWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMyNTcsOSArMzI4OSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0
aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAg
ICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwog
ICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRl
RGF0YSgpKQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRp
b24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29u
dGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+
ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRh
dGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgICAgICBtX3Byb3Zp
c2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVu
dC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0
YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJh
c2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVz
b3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2Ut
PmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1
cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
LCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9y
Q29udHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAg
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1f
cHJvdmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNDkzNiw4ICs0OTY4
LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwog
Ci0gICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZp
ZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNv
cHlSZWYoKV0gKGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlE
LCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CisgICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQs
IGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0
IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBw
b2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJh
bWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9u
RGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELApAQCAtNDk2
MSw5ICs0OTkzLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYgKG5hdmlnYXRp
b25JRCAmJiAhZnJvbUFQSSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQ
SVJlcXVlc3QodHJhbnNhY3Rpb24pOwogCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihmcmFtZS5pc01haW5GcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmICghY2hl
Y2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVx
dWVzdC51cmwoKSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNl
IGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGlj
eURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpu
dWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTkwLDcgKzUyMjQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3Jp
Z2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAg
ICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2Vl
ZCB3aXRoIHRoZSBsb2FkLgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRl
ci0+aWRlbnRpZmllcigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9h
ZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24g
eyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQ
b2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9w
dCB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCkBAIC01MjA3
LDggKzUyNDEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cgogICAgICAgICBSRUxFQVNFX0FT
U0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5n
LCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lE
ZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8m
IFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNp
b24pKTsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRl
KGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7Cisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAK
ICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIFdU
Rjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTUyNTYsOCArNTI5MCw4IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJu
aW5nKTsKIAotICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVh
dGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9
IFdURk1vdmUocHJvY2VzcyldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsK
KyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50
aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3Zl
KHByb2Nlc3MpXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihm
cmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAg
IH0pOwogICAgICAgICAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb24uZ2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZjIyMDVkODVkNGIwOTI0YWVk
YzNmMWE3MGUyMmRkM2Q0YmQxYTY3MS4uOTQxNjA3NjcyYTljMjI1YTcyYzJlNDA3MDQ4YWJjMDUz
NWVkMzdiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MTQs
OCArMTYxNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9u
JiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xp
Y3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQ
STo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6
OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6
Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBib29sLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0LCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBib29sLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJh
Y2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50
cyYpPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9v
bCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAogICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94
eUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKQEAgLTIyNTUsNiArMjI1NSwxMCBAQCBw
cml2YXRlOgogCiAgICAgdm9pZCB0cnlDbG9zZVRpbWVkT3V0KCk7CiAgICAgdm9pZCBtYWtlU3Rv
cmFnZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9y
aWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0
ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgICAgICAK
KyAgICBib29sIGlzQXBwQm91bmREb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4pOwor
ICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1l
LCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbigpIHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAg
ICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV93ZWJQYWdlSUQ7CkBAIC0yNzM5LDYgKzI3NDMsOCBAQCBwcml2YXRlOgogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZp
bmlzaERvY3VtZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgorICAgICAgICAK
KyAgICBib29sIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IHRydWUgfTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1t
CmluZGV4IGUxNjUxYzgzMjFiYTUzY2I4NzI5ZjVjZjM1ZWM3OTM4NzUxYzk4MGMuLjRjNGZiODU1
YmFiZjE5MzNiNWU4MzZjZTJlNzVkMTdmMDZkNTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0
YVN0b3JlQ29jb2EubW0KQEAgLTE0NSw2ICsxNDUsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVj
dG9yeSwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGJvb2wg
c2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlzU2FmYXJp
OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IFtkZWZhdWx0cyBib29s
Rm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2Vi
UHJlZmVyZW5jZXNLZXk6OmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRLZXkoKS5jcmVhdGVD
RlN0cmluZygpLmdldCgpXV07CisgICAgCiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
cGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IHsK
ICAgICAgICAgbV9zZXNzaW9uSUQsCkBAIC0xNzgsNiArMTgwLDcgQEAgV2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29u
ZmlndXJhdGlvbi0+dGVzdFNwZWVkTXVsdGlwbGllcigpLAogICAgICAgICBtX2NvbmZpZ3VyYXRp
b24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpLAogICAg
ICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbG93c1NlcnZlclByZWNvbm5lY3QoKSwKKyAgICAgICAg
aXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZAogICAgIH07CiAgICAgbmV0d29ya2luZ0hhc0Jl
Z3VuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYmRiNzIwMDFiMmE3MzRjOTViMmY1ZjRlZjMy
N2FiMTViY2YzYzZhMi4uZTM2ZjA4ZjJmYTE5ZTZmYTljYTg1NGM2NTMwMmE4NWRmY2VkNmZlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIyNTUsNCArMjI1NSwyOCBAQCBXVEY6OlN0cmluZyBXZWJz
aXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkK
IH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAor
eworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAg
ICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3Mo
KSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmhhc0FwcEJvdW5kU2Vzc2lvbihtX3Nl
c3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJU
KHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQorCit2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgdmFsdWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBm
b3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNzKCkpIHsKKyAg
ICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCht
X3Nlc3Npb25JRCwgdmFsdWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAg
ICAgIEFTU0VSVChwcm9jZXNzUG9vbHMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICBBU1NFUlQoIWNvbXBsZXRpb25IYW5kbGVyKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IGYwODI5ZjEyYjU3MDQ3OTY5MTBhNDY5YzVhOGU3MjIwMWE1
MTI5NWUuLjdmYWE0YjU5MjY1YWYzZWZkNDFjZjBiNDFiMzVkMTNhMjYxMjMxYTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTI5Myw2ICsyOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5n
IGRlZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCBy
ZXNldFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBoYXNBcHBC
b3VuZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAg
dm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIGVuYWJsZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmZXRjaERhdGFBbmRB
cHBseShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0
Y2hPcHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJz
aXRlRGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBhMzU3ZTIyYThmZmJl
MmNjNDQwNmNlNTgxZWRiNWI1YWVkYWE2MmYzLi5hZWQ5ZjNhYWI3NDY1MDNjM2ExNzcwZTE0MDVj
ZWQ5NDNlNzg2OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMjYsMTQgKzMyNiwxNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VM
b2FkZXImIHJlc291cmNlTAogICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5
ID0gZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBh
cmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNw
b25zZUhlYWRlcnMoKTsKICAgICB9CisgICAgCisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGll
bnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNlTG9hZGVyLmZyYW1lKCktPmxvYWRl
cigpLmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlm
ICh3ZWJQYWdlKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogCiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAg
bG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCku
dXJsKCk7CiAgICAgICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllciwgdGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBhYmxlIHRv
IGdldCBpdCB1c2luZyB3ZWJQYWdlSWQuCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKSk7Ci0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJD
bGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAg
ICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRy
OwogICAgICAgICBpZiAod2ViUGFnZSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyKCk7CiAgICAgfQpAQCAtNjAxLDYgKzYwNCwxMCBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgdW5zaQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJz
ID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAg
bG9hZFBhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnM7CisgICAgCisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKCk7CisKICAgICBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1lLT5jb3Jl
RnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBAIC02Njgs
MTMgKzY3NSwxNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1l
JiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICAgICAgbG9hZFBh
cmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNw
b25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUs
IGxvYWRQYXJhbWV0ZXJzKTsKLQorICAgIAorICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CisgICAg
YXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAg
bG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9F
WFRFTlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50
LT50b3BEb2N1bWVudCgpLnVybCgpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3Npbmcg
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQ
YWdlSWQgdG8gTmV0d29ya1Byb2Nlc3MuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5j
bGllbnQoKSk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQg
PyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgV2ViUGFn
ZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAg
aWYgKHdlYlBhZ2UpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEyMTJlZWFiNTcw
N2FkZWUxZTY3NjVkYTJmZTY5YjNkZTc3YzI5ZWIuLjc2M2M5OWUwZDUyNTBlYzIxN2YyZmY1Nzhi
ZjI5ZWQxMTM1YTgwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODM2
LDcgKzgzNiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVu
ZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShm
dW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29y
ZUZyYW1lKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKICAg
ICAgICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFBvbGlj
eUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmll
ciwgdHJ1ZSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCkBAIC05OTMsMTEgKzk5MywxMSBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29u
c3QgTmF2aWdhdAogICAgICAgICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVy
LT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QsCiAgICAgICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVx
dWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSksCiAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocG9saWN5RGVjaXNpb24pKSkgewotICAgICAg
ICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGlj
eURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7
IH0sIHsgfSB9KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCB0cnVlLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBw
b2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25sb2FkSUQs
IHsgfX0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVu
ZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lE
ZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBwb2xpY3lEZWNpc2lvbi5wb2xp
Y3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMDA1LDcgKzEwMDUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2
aWdhdAogICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLAogICAgICAgICByZXF1ZXN0SWRl
bnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdh
dGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9LCByZWRpcmVjdFJlc3BvbnNlLCBV
c2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVz
KHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQpKSkKLSAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVx
dWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAg
ICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGlj
eURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIHRydWUsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2Vs
UG9saWN5Q2hlY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCAwYTYxMDA5YTY0OGIwNGYwOTVjMjk4NDU2MzZmNTI5MTE5YWNiNzZmLi44ZTE0
NTkyZWExYzA3ZGU0OTM0Nzg4OWE0OWJkNDUxOTJjNjczYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU3MCw2ICsxNTcwLDggQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFy
YW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFy
YW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogeworICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisK
ICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGlu
Z05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKQEAgLTE2MDQsOCAr
MTYwNiwxMCBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQ
cm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgYm9vbCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kpCiB7CisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKwogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5l
c3NUaW1lciBzdG9wcGVyOwogCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlv
bklEOwpAQCAtMTYzMiw3ICsxNjM2LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkRGF0YShMb2FkUGFy
YW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogCiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1l
dGVycy5kYXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBVUkwg
YmFzZVVSTCA9IGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcuaXNFbXB0eSgpID8gV1RGOjpi
bGFua1VSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nKTsKLSAg
ICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVy
cy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vi
c2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1F
VHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kpOworICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxv
YWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFy
YW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJh
bWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVS
TCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFtZXRl
cnMmJiBsb2FkUGFyYW1ldGVycykKQEAgLTE2NDQsNyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6
bG9hZEFsdGVybmF0ZUhUTUwoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKICAgICBV
UkwgcHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwgPSBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25hbExv
YWRFcnJvclVSTFN0cmluZy5pc0VtcHR5KCkgPyBVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFt
ZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcpOwogICAgIGF1dG8gc2hhcmVkQnVm
ZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4o
bG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7
CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExv
YWRFcnJvckJlaW5nSGFuZGxlZFVSTChwcm92aXNpb25hbExvYWRFcnJvclVSTCk7ICAgIAotICAg
IGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJz
LnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJz
aXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVU
eXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJM
LCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSk7CisgICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0
ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hh
cmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29k
aW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRh
LCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICBtX21h
aW5GcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVp
bmdIYW5kbGVkVVJMKHsgfSk7CiB9CiAKQEAgLTMyNTgsMTIgKzMyNjIsMTMgQEAgdm9pZCBXZWJQ
YWdlOjpzZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSkKICAgICAgICAgcGx1Z2luVmlldy0+c2V0TGF5ZXJIb3N0aW5nTW9kZShtX2xheWVySG9zdGlu
Z01vZGUpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24m
JiBQb2xpY3lEZWNpc2lvbikKK3ZvaWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNp
c2lvbiYmIHBvbGljeURlY2lzaW9uKQogeworICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4ocG9saWN5RGVjaXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAg
V2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgV1RGTW92ZShQb2xpY3lEZWNpc2lvbikpOwor
ICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgV1RGTW92ZShw
b2xpY3lEZWNpc2lvbikpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmNvbnRpbnVlV2lsbFN1Ym1pdEZv
cm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpCkBAIC03MDA2
LDYgKzcwMTEsMTEgQEAgdm9pZCBXZWJQYWdlOjpzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0
IFN0cmluZyYgbWVkaWFUeXBlKQogICAgIG1fcGFnZS0+c2V0TmVlZHNSZWNhbGNTdHlsZUluQWxs
RnJhbWVzKCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbihib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit7CisgICAgbV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VE
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTY4OTUz
MGYzODM2ZDZmNGNiYjBmNTY5NzJkM2ZlMTEwZTgxMzI1NS4uNTU5N2U3ZDkzOGYzZjI2YzdjNjg2
Mjc3ODk1M2M0NWZmYmQyN2Y0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTI4Niw2ICsxMjg2LDkgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkFs
bG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNl
bnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZy
b21Nb3N0UmVjZW50TmF2aWdhdGlvbjsgfQogICAgIHZvaWQgc2V0QWxsb3dzQ29udGVudEphdmFT
Y3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFT
Y3JpcHQgYWxsb3dzKSB7IG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5h
dmlnYXRpb24gPSBhbGxvd3M7IH0KIAorICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbihib29sKTsKKyAgICBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSB7
IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KKyAgICAKIHByaXZhdGU6
CiAgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKIApAQCAtMTM3OSw3ICsxMzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFN0cmlu
ZyBzb3VyY2VGb3JGcmFtZShXZWJGcmFtZSopOwogCi0gICAgdm9pZCBsb2FkRGF0YUltcGwodWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNv
bnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBVc2VyRGF0YSYs
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CisgICAgdm9pZCBsb2FkRGF0
YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiwgUmVmPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
Z05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiBmYWlsaW5nVVJMLCBjb25zdCBV
c2VyRGF0YSYsIGJvb2wsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiAK
ICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKQEAgLTIwNjYsNiArMjA2OSw4IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0o
R1RLKQogICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKICNlbmRpZgorICAgIAorICAgIGJvb2wgbV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgdHJ1ZSB9OwogfTsKIAogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOWJjNGFmYjIzNzI1NzQ3ZjI1Mzk4YmUwOTM0YmJj
YTc1MzIwNzQ4Yi4uMWRlZGYzOTJkZDc5OWFjNmI3YWZjZDZlMmIxNDQ0N2Y4ZWY1YzA1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0xODYsNyArMTg2LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJzaXRlUG9saWNpZXMo
c3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9saWNpZXMpCi0gICAg
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lEZWNpc2lvbiBQb2xp
Y3lEZWNpc2lvbikKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBv
bGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uKQorCiAgICAgQ29udGludWVXaWxsU3VibWl0Rm9y
bShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IAogICAgIENsZWFyU2VsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA0Y2FjNTNhNDEzZTAwMDdkM2ExNTg1MzE0YjYwMjljZDE1MDAx
OTY5Li40OWY1N2MzZjkzMjgxODllMmU0MDljYWEyMjAyYTA1NDEwZWMxYjViIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAK
KzIwMjAtMDItMjAgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisK
KyAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBT
ZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4MDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTQzNDAwNj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIG1vc3RseSB0
ZXN0IGluZnJhc3RydWN0dXJlIGludm9sdmluZyAzIGZ1bmN0aW9ucy4KKyAgICAgICAgT25lIHNl
dHMgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBhcyBlbmFibGVkIGluIHRoZSBuZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgbWFudWFsbHkgZm9yIHRoZSB0ZXN0LiBPbmUgZW5zdXJlcyB0aGF0IHNldHRp
bmcgdGhlIHdlYlZpZXcgY2F0ZWdvcnkKKyAgICAgICAgd29ya3MgcHJvcGVybHksIGFuZCB0aGUg
bGFzdCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiBmb3IKKyAgICAgICAgYW4g
YXBwLWJvdW5kIG5hdmlnYXRpb24uCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6CisgICAgICAgIChXVFI6OlRlc3RSdW5u
ZXI6OmNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5Q2FsbGJhY2spOgorICAgICAgICAoV1RS
OjpUZXN0UnVubmVyOjpoYXNBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRlc3RS
dW5uZXI6OmNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KToKKyAg
ICAgICAgQ2xlYXJpbmcgdGhlIGJ1bmRsZUlEIHNob3VsZCBoYXBwZW4gcmlnaHQgYmVmb3JlIHNl
dHRpbmcgYSBuZXcgb25lLCAKKyAgICAgICAgb3RoZXJ3aXNlIGl0IGNsZWFycyB0aGUgSUQgYWZ0
ZXIgaXQgaXMgc2V0IGFuZCByZXR1cm5zIGEgbnVsbCBJRC4KKworICAgICAgICAoV1RSOjpUZXN0
Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorICAgICAgICAoV1RSOjpJbkFw
cEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0OjpJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJh
Y2tDb250ZXh0KToKKyAgICAgICAgKFdUUjo6aW5BcHBCcm93c2VyUHJpdmFjeUJvb2xlYW5SZXN1
bHRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OmluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0
Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6aGFzQXBwQm91bmRTZXNz
aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmg6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNN
ZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246
OmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKFdUUjo6VGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKToKKyAgICAgICAgKFdUUjo6VGVz
dEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9s
bGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorCiAyMDIwLTAyLTIwICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFdLV2ViVmlldyB3aXRoIG5vbi16ZXJv
IG9yaWdpbiBoYXMgdGhlIHdyb25nIHRvcCBjb250ZW50IGluc2V0IHdpdGggTlNXaW5kb3dTdHls
ZU1hc2tGdWxsU2l6ZUNvbnRlbnRWaWV3CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0
YTU1MTAyZTUyOWIyMGQzN2Y2MGJmYjI4MWU0ODdkMTdlZDc3ODAyLi43MWY2MDI5MDUzMGMxNTkx
Nzc3ZGM2NmI1ZjdkYmRmMzU3ODUzZjJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAg
LTM1NCw2ICszNTQsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgLy8gU3RvcmFnZSBB
Y2Nlc3MgQVBJCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhvYmplY3QgY2Fs
bGJhY2spOwogCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkob2JqZWN0IGNhbGxiYWNrKTsK
KyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2xlYW4gdmFsdWUsIG9i
amVjdCBjYWxsYmFjayk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFu
ZWxGaWxlcyhvYmplY3QgZmlsZXNBcnJheSk7CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01l
ZGlhSWNvbihvYmplY3QgbWVkaWFJY29uKTsKQEAgLTM4OSw2ICszOTIsNyBAQCBpbnRlcmZhY2Ug
VGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lk
IHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAg
ICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAg
Ym9vbGVhbiBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlw
dChET01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOTU4YTc5YmE0
MzQ4YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYS4uNzcwZmUxOGQ5ZjMwMzRkMThjNjg3ODZi
NDI2ZWQ0OTc2OTYwNWJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMzNiw2ICszMzYsMTEgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNz
Q2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikp
IHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmlyc3RQYXJ0
eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRp
c3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygp
OwpAQCAtNDIyLDYgKzQyNywxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBt
X3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdURk1v
dmUoZG9tYWlucykpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVXZWJW
aWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAgICBB
U1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOwor
CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxs
YmFjayh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHND
YWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Np
b25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlYzEyNmQ2OGUzNWQ1ZTU3MGVl
MTUyZGY2ODIwYjQwM2ZhNzdmMmNkLi4xNjBmMjFjMTAzYjUzNjkzZTRiMjMwNTE1MzcyZTlkZWVh
ZWJjODE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc2MSw2ICs3NjEsOCBAQCBlbnVtIHsKICAgICBUZXh0Rmll
bGREaWRCZWdpbkVkaXRpbmdDYWxsYmFja0lELAogICAgIFRleHRGaWVsZERpZEVuZEVkaXRpbmdD
YWxsYmFja0lELAogICAgIEN1c3RvbU1lbnVBY3Rpb25DYWxsYmFja0lELAorICAgIEdldFdlYlZp
ZXdDYXRlZ29yeUNhbGxiYWNrSUQsCisgICAgRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWRDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9OwogCkBA
IC0yOTA0LDQgKzI5MDYsNDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPZmZzY3JlZW5DYW52YXNF
bmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VG
b3JUZXN0UnVubmVyKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBpbmplY3RlZEJ1bmRsZS5wYWdl
R3JvdXAoKSwga2V5LmdldCgpLCBlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpnZXRX
ZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RSdW5u
ZXJDYWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAg
CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0V2ViVmlld0NhdGVnb3J5IikpOworICAgIFdL
QnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBt
ZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERp
ZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayhTdHJpbmcgY2F0ZWdvcnkpCit7CisgICAg
V0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRS
ZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUp
OworCisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBtYWtlU3RyaW5nKCJcIiIsIGNhdGVnb3J5LCAi
XCIiKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05T
dHJpbmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVzdWx0
U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxi
YWNrKEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQorCitib29s
IFRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgYXV0byBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhc0FwcEJvdW5kU2Vz
c2lvbiIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5k
bGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNp
bmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJl
dHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xl
YW5HZXRUeXBlSUQoKSk7CisKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhz
dGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSwgSlNW
YWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFj
ayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQsIGNvbXBsZXRpb25I
YW5kbGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9w
dFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0g
YWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkU2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJD
YWxsYmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNzIxMDIxZGQ2Y2M4NzViNmJmYzI2NThkOTlm
ZjUxMjQ5Yjk1NmUyMi4uYjc3Y2I2YzU1M2UyN2Y1YmIyYzU4NmEwZDViNTg2YzI2ZmYwY2I1ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmgKQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBjYWxsRGlkUmVj
ZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnMpOwogCisgICAgCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKFN0
cmluZyk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhK
U1ZhbHVlUmVmKTsKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTVmFsdWVS
ZWYpOwpAQCAtNDk0LDYgKzQ5OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0TW9ja01lZGlh
RGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVuc2lnbmVkKTsK
ICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAg
Ym9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGJvb2wsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5q
ZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1Jl
Zik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGIyMjFk
YTE3MDM5MjkxMWJhNjI1ZTU3N2M4Y2Y5M2NhZWIzODg3OGQuLjIxM2I3ZWI3MTM0NmYwZWZhNGYx
NDhjYzNkYzU5OWIwNDRhMmYxMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuY3BwCkBAIC04MDQsNiArODA0LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3Vy
ZVZpZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAg
ICAgICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IGZhbHNlOwogICAgIH0KIAorI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJy
aWRlKCk7CisjZW5kaWYKKwogICAgIGNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhvcHRpb25zKTsK
IAogICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zLCBSZXNldFN0
YWdlOjpCZWZvcmVUZXN0KSkKQEAgLTEwODcsMTAgKzEwOTEsNiBAQCBib29sIFRlc3RDb250cm9s
bGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b25zLCBSZQogCiAgICAgc2V0SGlkZGVuKGZhbHNlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0j
ZW5kaWYKLQogICAgIGlmICghcGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKG9w
dGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTMxMjQsNiArMzEyNCwxMCBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQogewogfQogCit2b2lk
IFRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQoreworfQorCiAjZW5kaWYKIAog
c3RydWN0IENsZWFyU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbnNDYWxsYmFja0NvbnRleHQgewpA
QCAtMzcxMyw2ICszNzE3LDQ5IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OmlzTW9ja1JlYWx0aW1l
TWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gV0tQYWdlSXNNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQobV9tYWluV2ViVmlldy0+cGFnZSgpKTsK
IH0KIAorc3RydWN0IEluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQgeworICAgIGV4
cGxpY2l0IEluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQoVGVzdENvbnRyb2xsZXIm
IGNvbnRyb2xsZXIpCisgICAgICAgIDogdGVzdENvbnRyb2xsZXIoY29udHJvbGxlcikKKyAgICB7
CisgICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRlc3RDb250cm9sbGVyOworICAgIGJvb2wg
ZG9uZSB7IGZhbHNlIH07CisgICAgYm9vbCByZXN1bHQgeyBmYWxzZSB9OworfTsKKworc3RhdGlj
IHZvaWQgaW5BcHBCcm93c2VyUHJpdmFjeUJvb2xlYW5SZXN1bHRDYWxsYmFjayhib29sIHJlc3Vs
dCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PElu
QXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4
dC0+cmVzdWx0ID0gcmVzdWx0OworICAgIGNvbnRleHQtPmRvbmUgPSB0cnVlOworICAgIGNvbnRl
eHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworc3RhdGljIHZvaWQgaW5BcHBC
cm93c2VyUHJpdmFjeVZvaWRSZXN1bHRDYWxsYmFjayh2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBh
dXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29u
dGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0LT5kb25lID0gdHJ1ZTsKKyAgICBjb250ZXh0
LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6
Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgSW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNr
Q29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3Vu
ZFNlc3Npb24oVGVzdENvbnRyb2xsZXI6OndlYnNpdGVEYXRhU3RvcmUoKSwgJmNvbnRleHQsIGlu
QXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2FsbGJhY2spOworICAgIHJ1blVudGlsKGNv
bnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICByZXR1cm4gY29udGV4dC5yZXN1bHQ7Cit9CisK
Kwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9v
bCB2YWx1ZSkKK3sKKyAgICBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0IGNvbnRl
eHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3JlKCksIHZhbHVlLCAmY29udGV4
dCwgaW5BcHBCcm93c2VyUHJpdmFjeVZvaWRSZXN1bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwo
Y29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNl
dEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCk7Cit9CisKICNpZiAhUExBVEZPUk0oQ09DT0Ep
CiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFkZFRlc3RPcHRpb25zKFRlc3RPcHRpb25z
JikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAppbmRleCA0
ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1YTFiMWY5OTRjLi4xYzdmNzVkNjljZjhjNDU1
MzAwYmEzNDZhMGU1YzU1MWM2MjIzNjE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCkBAIC0yNjAsNiArMjYwLDggQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoKTsKICAgICB2b2lkIGdldFByZXZhbGVudERvbWFpbnMoKTsKICAg
ICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOworICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVn
b3J5KCk7CisgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sKTsKIAog
ICAgIFdLQXJyYXlSZWYgb3BlblBhbmVsRmlsZVVSTHMoKSBjb25zdCB7IHJldHVybiBtX29wZW5Q
YW5lbEZpbGVVUkxzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0Fy
cmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmlsZVVSTHMgPSBmaWxlVVJMczsgfQpAQCAt
Mjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygp
OwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVpbnQ2NF90KTsKICAgICBib29s
IGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCkgY29uc3Q7CisgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChXS1N0
cmluZ1JlZik7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3Bw
CmluZGV4IDMyMjRmMDhhYWU0ODQxODlmMWQ0MjM1ZTFlNmFmODA2ZWQxMzU3MTQuLmFmNzIzMWY4
Mjc5Yzk1ZjViNWVjYWNmYmFjYzEyYzhhYjBkNzc0ZTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC03NjAsNiArNzYwLDEzIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1l
c3NhZ2VOYW1lCiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0
aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSks
IGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBX
S0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdLQm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRp
Y19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkpOworICAgICAgICBUZXN0Q29udHJvbGxl
cjo6c2luZ2xldG9uKCkuc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tCb29sZWFuR2V0
VmFsdWUodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUnVuVUlQcm9jZXNzU2NyaXB0Iikp
IHsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IHN0YXRp
Y19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJvZHkpOwpAQCAtODAwLDYgKzgwNywxMSBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0T3BlblBhbmVsRmlsZVVSTHMoc3RhdGljX2Nhc3Q8V0tBcnJheVJlZj4obWVzc2Fn
ZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkdldFdlYlZpZXdDYXRlZ29yeSIpKSB7
CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nZXRXZWJWaWV3Q2F0ZWdvcnko
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRPcGVu
UGFuZWxGaWxlVVJMc01lZGlhSWNvbiIpKSB7CkBAIC0xMDAyLDYgKzEwMTQsMTEgQEAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNl
Q2VudGVyRW5hYmxlZCA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5pc01vY2tSZWFsdGlt
ZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpOwogICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQpKTsKICAg
ICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJIYXNBcHBCb3VuZFNlc3Npb24iKSkgeworICAgICAgICBib29sIGhhc0FwcEJvdW5kU2Vz
c2lvbiA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5oYXNBcHBCb3VuZFNlc3Npb24oKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGhhc0FwcEJvdW5kU2Vzc2lv
bikpOworICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFs
VG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNvbm5lY3RNb2NrR2FtZXBhZCIpKSB7CkBAIC0x
ODcwLDYgKzE4ODcsMTIgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0U2hvdWxkQmxvY2tU
aGlyZFBhcnR5Q29va2llcygpCiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxl
KFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3Nh
Z2VOYW1lLmdldCgpLCBudWxscHRyKTsKIH0KIAordm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKQoreworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5n
UmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
IkNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKTsKKyAgICBXS1BhZ2VQb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCiB2b2lk
IFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgp
CiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRl
RGF0YVJlbW92YWxNb2RlIikpOwpAQCAtMTk0OCw3ICsxOTcxLDEzIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cykKICAgICBXS1JldGFpblB0cjxXS011dGFibGVBcnJheVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9w
dFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOwogICAgIGZvciAoYXV0byYgZG9tYWluIDogZG9t
YWlucykKICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0obWVzc2FnZUJvZHkuZ2V0KCksIGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5n
ZXQoKSk7Cit9CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdv
cnkoU3RyaW5nJiB3ZWJWaWV3Q2F0ZWdvcnkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdS
ZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
Q2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkiKSk7CiAgICAgCisgICAgV0tSZXRhaW5QdHI8
V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyh3ZWJWaWV3Q2F0ZWdvcnkudXRmOCgpLmRhdGEoKSkpOwogICAgIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwog
fQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNTAzMzdkNjc1
ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2ZiYTRjMTNlNi4uZWM0ZjU5NjYyYzdiNWJlMDM2NjE1MDcy
YzIyMDU5NjJlODQ4NTU2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
aApAQCAtODcsNiArODcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50
ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhW
ZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9t
YWlucyhWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZp
ZXdDYXRlZ29yeShTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKCk7CiAKICAgICB2b2lkIGRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwog
ICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJv
bGxlckNvY29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCmluZGV4IGQzZjJlZjFiYzMyZWUwZGYzODJlNjMyY2JkNTMwYTA0N2Y3MmY4Zjku
LjZmOTU1YjBkYWIxYzU1YzQ5MGQ2YjUyZDQzOWI1Y2FkOTQ2YzU5ZWUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM1
Niw2ICszNTYsMzIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5z
KCkKICAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xl
YXJQcmV2YWxlbnREb21haW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAor
dm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKK3sKKyAgICBhdXRvKiBw
YXJlbnRWaWV3ID0gbWFpbldlYlZpZXcoKTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAg
IHJldHVybjsKKworICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29t
cGxldGlvbkhhbmRsZXI6XihfV0tXZWJWaWV3Q2F0ZWdvcnkgd2ViVmlld0NhdGVnb3J5KSB7Cisg
ICAgICAgIFN0cmluZyBjYXRlZ29yeTsKKyAgICAgICAgc3dpdGNoICh3ZWJWaWV3Q2F0ZWdvcnkp
IHsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlBcHBCb3VuZERvbWFpbjoKKyAgICAg
ICAgICAgIGNhdGVnb3J5ID0gIkFwcEJvdW5kRG9tYWluIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIF9XS1dlYlZpZXdDYXRlZ29yeUh5YnJpZEFwcDoKKyAgICAgICAgICAgIGNh
dGVnb3J5ID0gIkh5YnJpZEFwcCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBf
V0tXZWJWaWV3Q2F0ZWdvcnlJbkFwcEJyb3dzZXI6CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJJ
bkFwcEJyb3dzZXIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgX1dLV2ViVmll
d0NhdGVnb3J5V2ViQnJvd3NlcjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIldlYkJyb3dzZXIi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50SW52b2Nh
dGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShjYXRlZ29yeSk7CisgICAgfV07Cit9CisK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0
KQogewogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2Nd
IGluaXRXaXRoU291cmNlOiB0b1dURlN0cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2Vy
U2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYzA2MDVlMThhNmVhNjVhNTU2MDZjZmQyN2Q1Y2QzODk5ZDRmYzA2ZS4uMzA2YTI3
MzlkMWMxMTRmMTIzMWU4YmNiMzIzNjE0NTM2OWE2M2RhMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBA
CisyMDIwLTAyLTIwICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgor
CisgICAgICAgIEFwcC1ib3VuZCBkb21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsg
U2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIwODAyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdHdvIHRlc3RzLiBPbmUg
dG8gdGVzdCB0aGUgcHJvcGVyIGNhdGVnb3JpemF0aW9uIG9mIGFwcC1ib3VuZAorICAgICAgICBu
YXZpZ2F0aW9uLCBhbmQgb25lIHRvIGNoZWNrIHRoYXQgc3dpdGNoaW5nIHNlc3Npb25zIG9jY3Vy
cyB3aGVuCisgICAgICAgIG5hdmlnYXRpbmcgdG8gYW4gYXBwLWJvdW5kIGRvbWFpbi4KKworICAg
ICAgICBTaW5jZSB0aGVzZSB0ZXN0cyB1c2UgSVRQIHRvIHNldCB1c2VyIGludGVyYWN0aW9uLCB0
aGV5IHNob3VsZCBvbmx5CisgICAgICAgIGJlIHJ1biBvbiBpT1MgYW5kIG1hYy13azIuCisKKyAg
ICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDIwLTAyLTIwICBKYXNv
biBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiBd
IGNyeXB0by9zdWJ0bGUvcnNhLWluZGV4ZWRkYi5odG1sIGlzIGZsYWt5IHRpbWluZyBvdXQuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhZWY3YTBhOWI0MDk0Y2UyNjc1MTY4ZWZkM2U3ZDE4NjM1MTFh
MzQzLi43YzRiMzk3ZDJmNTM2MjVlZGY0YWIxNmY3NTFiYzk4NmU1N2E3MGEwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTE1NSw2ICsxNTUsOCBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vdXNlcmFn
ZW50LXJlbG9hZC5waHAgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0
YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRk
Yi9JREJPYmplY3QtbGVhay5odG1sIFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQt
Y2hhbmdlLWluLXRleHQtZmllbGQtd2hlbi10eXBpbmcuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0
cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFNraXAgXQorCiAKICMgT25seSBNYWMgYW5kIGlP
UyBoYXZlIGFuIGltcGxlbWVudGF0aW9uIG9mIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rh
c2soKS4KIGZhc3QvaGFybmVzcy91aXNjcmlwdGNvbnRyb2xsZXIgWyBTa2lwIF0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtZG9tYWluLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NGUzZTY5ZjU3ZDcyOTIwYWJlM2M5Nzg2YjUyNjI4Y2Q5ZTY1OGQ3Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3Vu
ZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdHMgdGhhdCBhbiBBcHAt
Qm91bmQgRG9tYWluIGdldHMgY2xhc3NpZmllZCBhcyBzbworCitPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCisKKworUEFTUyBTdWNjZXNzLCBkb21haW4gY2xhc3NpZmllZCBhcyBBcHAtQm91bmQu
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkNWMw
ZTdkYjRhZGQyZGExY2I3NjJmMzgwYjM3YmVjYmJmNjY4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRv
bWFpbi5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRl
c3QtcnVubmVyIFsgaW50ZXJuYWw6SXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZD10cnVlIGFw
cGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcj10ZXN0aWRlbnRpZmllciBdIC0tPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbignVGVzdHMgdGhh
dCBhbiBBcHAtQm91bmQgRG9tYWluIGdldHMgY2xhc3NpZmllZCBhcyBzbycpOworICAgICAgICBq
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9yV2ViVmlld0NhdGVnb3J5KCkgeworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdvcnkoZnVuY3Rpb24gKGNhdGVnb3J5KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09ICJJbkFwcEJyb3dzZXIiKQorICAgICAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJTdWNjZXNzLCBkb21haW4gY2xhc3NpZmllZCBhcyBBcHAt
Qm91bmQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJGYWlsdXJlLCBkb21haW4gbm90IGNsYXNzaWZpZWQgYXMgQXBwLUJvdW5kLiIpOwor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7
CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiA9ICJodHRwOi8v
bG9jYWxob3N0OjgwMDAiOworICAgICAgICBmdW5jdGlvbiBuYXZpZ2F0ZVRvTm9uQXBwQm91bmRE
b21haW4oKSB7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRp
b25PcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1s
I3N0ZXAyIjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0
aW9uLmhhc2ggIT0gIiNzdGVwMiIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0V2ViVmll
d0NhdGVnb3J5KGZ1bmN0aW9uIChjYXRlZ29yeSkgeworICAgICAgICAgICAgICAgIGlmIChjYXRl
Z29yeSAhPSAiQXBwQm91bmREb21haW4iKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkZhaWx1cmUsIHN0YXJ0aW5nIGNhdGVnb3J5IG5vdCBBcHBCb3VuZERvbWFpbiIpOworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgbmF2aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluKCk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFza0ZvcldlYlZpZXdD
YXRlZ29yeSgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3Vu
ZC1kb21haW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlOGE2M2U0NzdhOWEwZGNjMDJkNjI3NWVk
NmFiMTBjNWI3OWRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFw
cC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNlc3Npb24gaXMgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0byBhbiBh
cHAtYm91bmQgZG9tYWluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBT
aG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUg
YW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgYXBwLWJvdW5k
IHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1h
cHAtYm91bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9t
YWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM4Y2JhMGI4YWQ2MjRmYThmOTRjY2EyNDUzMjY1MzQzNWJh
M2YzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1k
b21haW4uaHRtbApAQCAtMCwwICsxLDExNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQt
dGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUg
YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbCBs
YW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlw
dCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBk
ZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBm
cmFtZSBuYXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uIik7CisgICAganNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICBjb25zdCBhcHBCb3VuZE9yaWdpbiA9ICJodHRwOi8vMTI3LjAu
MC4xOjgwMDAiOworICAgIGNvbnN0IG5vbkFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CisgICAgY29uc3Qgc2Vzc2lvbkNvb2tpZU5hbWUgPSAic2Vzc2lvbkNvb2tpZSI7
CisgICAgY29uc3QgcGVyc2lzdGVudENvb2tpZU5hbWUgPSAicGVyc2lzdGVudENvb2tpZSI7Cisg
ICAgY29uc3QgdHdvTWludXRlc0luU2Vjb25kcyA9IDEyMDsKKworICAgIGZ1bmN0aW9uIHNldFNl
c3Npb25Db29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlc3Npb25Db29raWVO
YW1lICsgIj0xOyBwYXRoPS8iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFBlcnNpc3RlbnRD
b29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBlcnNpc3RlbnRDb29raWVOYW1l
ICsgIj0xOyBwYXRoPS87IE1heC1BZ2U9IiArIHR3b01pbnV0ZXNJblNlY29uZHMgKyAiOyI7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKHNob3VsZEhhdmVTZXNzaW9uQ29va2ll
LCBzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICBsZXQgaGFzU2Vzc2lvbkNv
b2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMoc2Vzc2lvbkNvb2tpZU5hbWUp
LAorICAgICAgICAgICAgaGFzUGVyc2lzdGVudENvb2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAi
IikuaW5jbHVkZXMocGVyc2lzdGVudENvb2tpZU5hbWUpOworCisgICAgICAgIGlmIChzaG91bGRI
YXZlU2Vzc2lvbkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKQorICAgICAgICAgICAgdGVzdFBh
c3NlZCgiU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAg
IGVsc2UgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmICFoYXNTZXNzaW9uQ29va2llKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRo
ZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2Us
IGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVTZXNzaW9uQ29v
a2llICYmIGhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3Vs
ZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZlIHRoZSBz
ZXNzaW9uIGNvb2tpZS4iKTsKKworCisgICAgICAgIGlmIChzaG91bGRIYXZlUGVyc2lzdGVudENv
b2tpZSAmJiBoYXNQZXJzaXN0ZW50Q29va2llKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hv
dWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgIGVsc2Ug
aWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmICFoYXNQZXJzaXN0ZW50Q29va2llKSB7
CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRo
ZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFs
c2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVQZXJzaXN0
ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlNob3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24n
dCBoYXZlIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBy
dW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAg
ICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2luKQorICAg
ICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBpcyBub3Qgc3RhcnRpbmcgb3V0
IG9uICIgKyBhcHBCb3VuZE9yaWdpbiArICIuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBTaW5jZSB0aGUgdGVzdCBtYW51YWxseSBzZXRzIHRoZSBpbkFwcEJyb3dzZXJQcml2YWN5IGZs
YWcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nlc3MsIHdl
IG5lZWQgdG8gcmUtZXN0YWJsaXNoIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGJ5CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBuYXZpZ2F0aW5nIGF3YXkgdGhlbiBiYWNrIHRvIHRoZSBhcHAtYm91
bmQgRG9tYWluIGJlZm9yZSBzZXR0aW5nIGNvb2tpZXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQt
ZG9tYWluLmh0bWwjc3RlcDEiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVw
MSI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGFwcEJvdW5kT3Jp
Z2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRp
b24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlN0ZXAgMiBpcyBub3Qgb24gIiArIGFwcEJvdW5kT3JpZ2luICsgIi4i
KTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50
ZXJhY3Rpb24oYXBwQm91bmRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFBlcnNp
c3RlbnRDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRy
dWUpOworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNlc3Npb24o
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGRpZCBub3Qg
c3RhcnQgd2l0aCBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhh
cyBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaHJlZiA9IG5vbkFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0
ZXAzIjsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aGFzaCA9ICIjc3RlcDQiCisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlLCBmYWxz
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gbm9u
QXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0ZXAgMyBp
cyBub3Qgb24gIiArIG5vbkFwcEJvdW5kT3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhydW5UZXN0KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAg
Y2hlY2tDb29raWVzKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaHJlZiA9IGFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3
aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXA1
IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6Cisg
ICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAgICAgICAg
IGlmICh0ZXN0UnVubmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRp
b24uIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJPcmlnaW4gaGFzIG5vIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRpb24uIik7
CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBoYXNoLiIpOworICAgICAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA5OGFlZGM5MzczYTMyMTRkOTAxMDI1NDkzODQ1NDA2ZTlmMGYxZGYw
Li45YTQ1YWVhYTk2NTc0OGI1Zjg0ZWE2YTQ0NTRjZDhlNDM1NDhlNzVhIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5Nyw2ICsyNzk3LDkgQEAgaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWlm
LWF1dG8tZGlzbWlzcy1kYXRhYmEKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZmFsc2UtYnktZGVmYXVsdC1kYXRhYmFzZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZhbHNlLWJ5LWRlZmF1bHQtZXBo
ZW1lcmFsLWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhw
ZWN0YXRpb25zLCBvbmx5IHdvcmsgZm9yIGlPUyBhbmQgTWFjIFdLMi4KK2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhw
ZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHkt
cmVkaXJlY3RzLWluLXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVzdHMtaW4t
cHJpdmF0ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAyMDJlMWYzZWY4MWE4MzA5OTg5OTczMTdjYWZjOWUw
MzFlN2U4YTA1Li5iNzczMDhlODAyYzgyYjMwMGY4OWRjZTQ4ZmM2ZTM2ODU1ODA3YTc0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OCw2
ICs1OCw4IEBAIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50CiB3ZWJraXQub3JnL2IvMTc1NjExIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVu
dHJlcXVlc3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0LXRpbWluZy5odHRwcy5zdWIuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3BheW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3NldHRpbmctYWxsb3dw
YXltZW50cmVxdWVzdC5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQogCitodHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvIFsgUGFzcyBdCisKICMgc2tpcCBpbiBmYXZvciBvZiB0ZXN0cyBp
biBodHRwL3Rlc3RzL3BheW1lbnRyZXF1ZXN0CiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlcXVlc3QtYWJvcnQtbWV0aG9kLmh0dHBzLmh0
bWwgWyBXb250Rml4IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1y
ZXF1ZXN0L3BheW1lbnQtcmVxdWVzdC1zaG93LW1ldGhvZC5odHRwcy5odG1sIFsgV29udEZpeCBd
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391355</attachid>
            <date>2020-02-20 16:24:21 -0800</date>
            <delta_ts>2020-02-21 11:56:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200220162420.patch</filename>
            <type>text/plain</type>
            <size>118989</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MDY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGNkZDBiY2E4NzM5ZDc0NGYw
MzY4ZTFjN2UxN2JkMjk0NmIxNTUzNDkuLmRiNjdiNTY1MDk4NmRjM2I3NmIyYWNkZTI4YjhlNTcw
NTEwNDVmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIwICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9h
cHAtYm91bmQtZG9tYWluLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1k
b21haW4uaHRtbAorCisgICAgICAgIFN1cHBvcnRzIG5ldHdvcmsgc2Vzc2lvbiBzd2l0Y2hpbmcg
Zm9yIG5hdmlnYXRpb25zIHRvIGFwcC1ib3VuZAorICAgICAgICBkb21haW5zLiBUaGlzIHJlcXVp
cmVzIHVwZGF0aW5nIHRoZSB3ZWJQYWdlIHdoZW4gYSBuYXZpZ2F0aW9uIG9jY3VycworICAgICAg
ICB0byBjaGVjayB3aGV0aGVyIGl0IGlzIHRvIGFuIGFwcC1ib3VuZCBkZXN0aW5hdGlvbi4gSW4g
Y2FzZSBvZiBhCisgICAgICAgIHByb2Nlc3Mgc3dhcCwgdGhpcyBoYXMgdG8gYmUgZG9uZSBib3Ro
IGluIFBvbGljeURlY2lzaW9uU2VuZGVyIGFuZAorICAgICAgICBpbiB0aGUgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmxvYWREYXRhIGFuZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QK
KyAgICAgICAgZnVuY3Rpb25zLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBtdXN0IHNlbmQg
dGhlIEluLUFwcCBCcm93c2VyIHByaXZhY3kgZmxhZyB0byB0aGUKKyAgICAgICAgTmV0d29yayBw
cm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKToKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EpOgor
ICAgICAgICBQYXNzZXMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gZmxhZyB0byB0
aGUgTmV0d29ya1Nlc3Npb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNBcHBCb3VuZFNl
c3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246Omhhc0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNlc3Npb24pOgorICAg
ICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbToKKyAgICAgICAg
KC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlGb3I6Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc0FwcEJv
dW5kU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldElu
QXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpo
YXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0
b3JlOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgQSBsYXJnZSBwb3J0aW9u
IG9mIHRoaXMgcGF0Y2ggaXMgdGhyZWUgZnVuY3Rpb25zIGZvciB0ZXN0aW5nLCBvbmUgc2V0cyAK
KyAgICAgICAgdGhlIGluLWFwcCBicm93c2VyIHByaXZhY3kgZmxhZyBmb3IgdGhlIHRlc3QgY2Fz
ZSwgb25lIGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24sIGFuZCBvbmUKKyAgICAgICAg
Y2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgY2F0ZWdvcnkgd2FzIGNvcnJlY3RseSBzZXQgdG8gYXBw
LWJvdW5kIGRvbWFpbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnBhcmFtZXRlcnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIFBhc3Nl
cyB0aGUgSW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIHZhbHVlIGZyb20gTlNVc2VyRGVmYXVs
dHMgdG8gdGhlIG5ldHdvcmsgc2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2Nv
YS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nl
c3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Nlc3Npb25Db2NvYTo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6aW52YWxpZGF0ZUFuZENhbmNlbCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMpOgorICAgICAg
ICBDcmVhdGVzIGEgbmV3IHNlc3Npb24gKG9yIHJldHVybnMgdGhlIGV4aXN0aW5nIGFwcC1ib3Vu
ZCBzZXNzaW9uKSBpZgorICAgICAgICB0aGUgbmF2aWdhdGlvbiBpcyBhcHAtYm91bmQuIFRoaXMg
aXMgdGhlIG1haW4gY2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBTaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKToKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YUlt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKToKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2Yg
YSBwcm9jZXNzIHN3YXAsIHdlIG11c3QgYWRkIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGJvb2xlYW4gaW4gTG9hZFBhcmFtZXRlcnMgdG8gZW5zdXJlIGl0IGdldHMg
c2VudCB0bworICAgICAgICB0aGUgbmV3IHdlYlBhZ2UgdmlhIHRoZSBQcm92aXNpb25hbFBhZ2VQ
cm94eS4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2Vu
ZGVyOjpzZW5kKToKKyAgICAgICAgRml4ZXMgYSBjYXBpdGFsaXphdGlvbiBlcnJvci4KKworICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzQXBwQm91bmREb21haW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojppc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKToKKyAgICAgICAgVGhlc2Ug
ZnVuY3Rpb25zIGRldGVybWluZSBpZiB0aGUgY2F0ZWdvcnkgaXMgYXBwQm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIwICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29t
PgogCiAgICAgICAgIFdLV2ViVmlldyB3aXRoIG5vbi16ZXJvIG9yaWdpbiBoYXMgdGhlIHdyb25n
IHRvcCBjb250ZW50IGluc2V0IHdpdGggTlNXaW5kb3dTdHlsZU1hc2tGdWxsU2l6ZUNvbnRlbnRW
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRh
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKaW5kZXggODIxMjM2ZTc5MDZkZGM4M2FlYjY5NjdjOGVlYjhjMThmZDA2YTkxMi4uODA1MGQx
MWZmOGU3MTdlMTk3NWE2NGJiZjA0YmU2ZTU2ZGUwYzdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcApAQCAtNTAsNyArNTAsNyBAQCBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYgc2Vzc2lvbiwgTmV0d29ya0RhdAogewogICAgIEFTU0VSVCghcGFyYW1ldGVycy5yZXF1ZXN0
LnVybCgpLnByb3RvY29sSXNCbG9iKCkpOwogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIHJldHVy
biBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVy
cy5yZXF1ZXN0LCBwYXJhbWV0ZXJzLndlYkZyYW1lSUQsIHBhcmFtZXRlcnMud2ViUGFnZUlELCBw
YXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFy
YW1ldGVycy5zaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0
ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5LCBwYXJhbWV0ZXJzLmlzTWFpbkZyYW1lTmF2aWdhdGlv
biwgcGFyYW1ldGVycy5pc01haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgcGFyYW1l
dGVycy5uZXR3b3JrQWN0aXZpdHlUcmFja2VyKTsKKyAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBhcmFtZXRlcnMucmVxdWVzdCwgcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBhZ2VJRCwgcGFyYW1ldGVycy5zdG9yZWRD
cmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFt
ZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xl
YXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgcGFyYW1ldGVycy5zaG91bGRQcmVjb25u
ZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5hdmlnYXRpb24sIHBhcmFtZXRlcnMuaXNN
YWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIHBhcmFtZXRlcnMubmV0d29ya0FjdGl2
aXR5VHJhY2tlciwgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICNl
bmRpZgogI2lmIFVTRShTT1VQKQogICAgIHJldHVybiBOZXR3b3JrRGF0YVRhc2tTb3VwOjpjcmVh
dGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3QsIHBhcmFtZXRlcnMuc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5LCBwYXJh
bWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVO
YXZpZ2F0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IGRlNzRkMzNhODFmNjJkNDU4MDZiNjg5NWZmM2JhZWNi
ZmM1NjZhMTcuLjcyMTdiYjRhNWMxYjNhYTE1N2ZiMzlkMTlkYjliODdjNGZiMDNhMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaApAQCAtNjEsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBibG9iRmlsZVJlZmVyZW5jZXM7CiAgICAgUHJlY29u
bmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHkgeyBQcmVjb25uZWN0T25seTo6Tm8gfTsKICAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OworICAgIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IGZhbHNlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2Jj
YzFmY2M3ZTQ4MC4uNDkyMDA3NzZiMGNhOTI4NDQ5MjdkNDFhNTI3NmRhMzk0MDgxMThhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAg
LTI2MDMsNCArMjYwMywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3Jr
ZXJGZXRjaFRpbWVvdXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRp
b25IYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsK
KyAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKQorICAgICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNz
aW9uKCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBib29sIHZhbHVlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBuZXR3b3JrU2Vzc2lvbi0+c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQodmFsdWUpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OworICAgIH0gZWxzZSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggM2Fj
ODM0ZjZlZTU3YzJkYTI0MGRkN2NmZjI0MzMwZTc1ODQzZDhhOC4uMzBhMTMyNTdiZDVlNTY5NDRi
N2RiMmIzYTI2NzQxM2FmNmMzYjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMzQyLDYgKzM0Miw4IEBAIHB1YmxpYzoKICAgICBTZWNv
bmRzIHNlcnZpY2VXb3JrZXJGZXRjaFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJGZXRjaFRpbWVvdXQ7IH0KIAogICAgIHZvaWQgY29va2llQWNjZXB0UG9saWN5Q2hhbmdl
ZChXZWJDb3JlOjpIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKKyAgICB2b2lkIGhhc0FwcEJvdW5k
U2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
Y29uc3Q7CisgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChQQUw6OlNlc3Np
b25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMw
N2VmNWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0
N2JiMzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29y
a2VyRmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNl
dFF1b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBI
YXNBcHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNB
cHBCb3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFh
OTBlMzAxOWU3NTM2Li43N2YyNDM4ZGFhYzgzMGUyMmU0MTk5M2Y4NmExMjc3MTdlNDViMWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIp
IGNvbnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2Rl
ciA8PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFs
PE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVyczo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXIgPSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0
aW9uYWw8Ym9vbD4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKyAgICBkZWNvZGVyID4+
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CisgICAgaWYgKCFpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gKmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5o
CmluZGV4IDJjYzg3MjkwMGU0ZDQ0YjA3ZGE0ZjQwY2VmNjA2NjZiZjY0NDk1M2EuLmMyZDUzY2Q1
ZWQwMTQzMjAwOTZlZjg5MDk2NGMzMDk4ZGUzZGUxNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmgKQEAgLTczLDYgKzczLDggQEAgcHVibGljOgogICAgIFVSTCBtYWluRG9jdW1lbnRVUkw7CiAg
ICAgT3B0aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRD
b250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgorICAgIAorICAgIGJvb2wgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZGVyLmNwcAppbmRleCBmZjNhYmQ5OTM4OTFlN2JhMDhkZmY4YTIzYmU3ZjA5YjhhZjkzODM1
Li5mNTk4ZDc5NjY4OTBlNzdkZDExNGMxMmQ3ZmFlMTYzNTZjZDVjNTRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC0zMjgsNiArMzI4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICAgICAgbV9j
b25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlJlc291cmNlTG9hZERpZFNlbmRSZXF1
ZXN0KG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgcmVzb3VyY2VMb2FkSW5mbygpLCByZXF1
ZXN0KSwgMCk7CiAKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwor
ICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IG1fcGFyYW1ldGVy
cy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1fbmV0d29ya0xvYWQgPSBtYWtl
VW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm5ldHdvcmtTZXNzaW9uLT5ibG9iUmVnaXN0cnko
KSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAogICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEdvaW5nIHRvIHRoZSBuZXR3b3JrIChk
ZXNjcmlwdGlvbj0lIiBQVUJMSUNfTE9HX1NUUklORyAiKSIsIG1fbmV0d29ya0xvYWQtPmRlc2Ny
aXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtTZXNzaW9uLmgKaW5kZXggOGIwYzFjYThjNTNlZjZiZjMxZGNkNDBkZDNhOTY1Y2Zl
ZTZlNWM4OC4uMjA1ZjU4YWI4YWIzMjgxNTgzOGM4ZjIwY2E2ZWQ3MWZmMTRmNWRjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTcsMTAg
Kzk3LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dU
ZXN0aW5nRXZlbnQoYm9vbCBsb2cpIHsgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9n
VGVzdGluZ0V2ZW50ID0gbG9nOyB9CiAgICAgdmlydHVhbCBib29sIGhhc0lzb2xhdGVkU2Vzc2lv
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJc29sYXRlZFNlc3Npb25zKCkgeyB9CisKICAgICB2
b2lkIHNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhib29sKTsKICAgICBib29s
IHNob3VsZERvd25ncmFkZVJlZmVycmVyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKFdlYkNvcmU6OlRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUp
OwogI2VuZGlmCisgICAgCisgICAgdmlydHVhbCBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wpIHsgfQogICAgIHZvaWQgc3RvcmVBZENsaWNrQXR0cmlidXRpb24o
V2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uJiYpOwogICAgIHZvaWQgaGFuZGxlQWRDbGlja0F0
dHJpYnV0aW9uQ29udmVyc2lvbihXZWJDb3JlOjpBZENsaWNrQXR0cmlidXRpb246OkNvbnZlcnNp
b24mJiwgY29uc3QgVVJMJiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlZGlyZWN0UmVxdWVzdCk7CiAgICAgdm9pZCBkdW1wQWRDbGlja0F0dHJpYnV0aW9uKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCmluZGV4IDIxZmM4NjliY2Q4MmMyOTVjYjY0NTY1NDQxMDc1OGMyNTljZjQ1YzEu
LmEwMzQ2ZDA3MzM2MjIwN2YwZTY5ZjgzYjA3Zjc0MzI3OGE3ZGFhMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRl
cnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC04NCw2ICs4NCw3IEBAIHZvaWQgTmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCB0ZXN0U3BlZWRNdWx0aXBsaWVyOwogICAgIGVuY29kZXIgPDwgc3Vw
cHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlOwogICAgIGVuY29kZXIg
PDwgYWxsb3dzU2VydmVyUHJlY29ubmVjdDsKKyAgICBlbmNvZGVyIDw8IGlzSW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQ7CiB9CiAKIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlcikKQEAgLTI2OSw2ICsyNzAsMTEgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Np
b25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWMKICAgICBkZWNvZGVyID4+IGFsbG93c1NlcnZlclByZWNvbm5lY3Q7CiAgICAgaWYgKCFhbGxv
d3NTZXJ2ZXJQcmVjb25uZWN0KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIAor
ICAgIE9wdGlvbmFsPGJvb2w+IGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7CisgICAgZGVj
b2RlciA+PiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGlmICghaXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IHJldHVybiB7ewogICAgICAgICAqc2Vzc2lvbklECkBAIC0zMTQsNiArMzIwLDcgQEAgT3B0aW9u
YWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM+IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjpkZWMKICAgICAgICAgLCBXVEZNb3ZlKCp0ZXN0U3BlZWRNdWx0aXBsaWVy
KQogICAgICAgICAsIFdURk1vdmUoKnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5
c3RlbUNoYW5nZSkKICAgICAgICAgLCBXVEZNb3ZlKCphbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KQor
ICAgICAgICAsIFdURk1vdmUoKmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpCiAgICAgfX07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCA3MmY3NTI2NzVlZDg3Yjgy
MjEwMjFlMDZiNmE4YTNiNWY0NzhjOTA2Li5lOGU2ZTE5OGRkOTczNmYzODMyNzQxZDFlOTFmNGI1
YzZhNGQ5MWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0xMDMsNiArMTAz
LDcgQEAgc3RydWN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzIHsKICAgICB1bnNp
Z25lZCB0ZXN0U3BlZWRNdWx0aXBsaWVyIHsgMSB9OwogICAgIGJvb2wgc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIHsgZmFsc2UgfTsKICAgICBib29sIGFsbG93
c1NlcnZlclByZWNvbm5lY3QgeyB0cnVlIH07CisgICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCmluZGV4IGY0ODMxOWE3MWQ5MjU5OGMyZDE2MGE1MGJmODY0N2VlN2JiYTZhNzQu
LjBiZDc2NTQxNDAwNjE3NDcxZGI2ZjE3Mjg4ZjM1ODZkZjEzM2U4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgKQEAgLTQyLDkgKzQyLDkgQEAgc3RydWN0IFNlc3Npb25XcmFwcGVyOwogCiBjbGFzcyBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25p
ZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdT
bmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRp
YyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hv
dWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQ
U1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
blJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0
YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0
YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2
aXR5VHJhY2tlcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3b3JrRGF0YVRh
c2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJRCwgc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29udGVudEVuY29k
aW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgZGF0YVRh
c2tJc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgbmV0d29ya0FjdGl2aXR5
VHJhY2tlciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpOwogICAgIH0KIAogICAgIH5O
ZXR3b3JrRGF0YVRhc2tDb2NvYSgpOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29y
a0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2Rp
bmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1l
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7CisgICAgTmV0d29ya0RhdGFUYXNr
Q29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29y
ZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmlu
Z1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQ
cmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9v
bCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZl
cmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50
U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
bW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNlNmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uMTg5NzYx
NWM1Nzk0OTAxNTUyYjdiNDk5NTRmZTIxYjViYTE1YzQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
CkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGljIGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Np
b24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpD
b250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBz
aG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
biwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBi
b29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAgICAgOiBOZXR3b3JrRGF0YVRhc2so
c2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCi0gICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VX
ZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdvcmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9u
V3JhcHBlckZvclRhc2socmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kpKSkKKyAgICAsIG1fc2Vzc2lvbldyYXBwZXIobWFrZVdlYWtQdHIoc3RhdGljX2Nhc3Q8
TmV0d29ya1Nlc3Npb25Db2NvYSY+KHNlc3Npb24pLnNlc3Npb25XcmFwcGVyRm9yVGFzayhyZXF1
ZXN0V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikpKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3Bh
Z2VJRChwYWdlSUQpCiAgICAgLCBtX2lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZy
YW1lKGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Np
b25Db2NvYS5oCmluZGV4IDRhZDJjMTAxYmU3YTllNzlmOGQzNTAyNjVkNzg4YzM4ZDAyZTU4NTgu
Ljg0MTFlNzFiNzkxZmI5NzY4YzA4OTk0ZGY0ZWI2ZmVlMDU0MGE3NDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCkBAIC05MywxNCArOTMsMTkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzSXNvbGF0ZWRTZXNz
aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGNsZWFySXNvbGF0ZWRTZXNzaW9ucygpIG92ZXJyaWRlOwogCi0gICAgU2Vzc2lvbldy
YXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24oKSBjb25zdCBvdmVycmlkZTsKIAorICAgIFNlc3Npb25XcmFwcGVyJiBzZXNz
aW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJvb2wpOworICAgIHZvaWQgc2V0SW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoKSB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0K
KyAgICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNz
aW9uV3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBw
ZXImIGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAK
ICNpZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YlNvY2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBm
aW5hbDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFw
PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNz
aW9uPj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNl
c3Npb24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9u
V2l0aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhv
dXRDcmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNl
Y29uZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RF
dmFsdWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRl
eCBkZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi4xMGM0NGEwNjExZWQ2
NzI4YzNhNDg0MzkwNDhiMTgyNWRmZDAxNzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5
LDYgKzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5l
dHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0
bGVMYXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNl
cnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0
ZXJzLmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewog
ICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vz
c1Jhd0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNvY29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhl
bWVyYWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQog
Ci1TZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JU
YXNrKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3Jh
cHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CkBA
IC0xMTk3LDYgKzExOTgsMTEgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtTZXNzaW9uQ29jb2E6
OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmIChtX2lzSW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQpIHsKKyAgICAgICAgaWYgKGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4p
CisgICAgICAgICAgICByZXR1cm4gYXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5KTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSB7CiAg
ICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgogICAgICAgICBy
ZXR1cm4gbV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOwpAQCAtMTIwOSw2ICsxMjE1LDMy
IEBAIFNlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZv
clRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgfQogfQogCitTZXNzaW9uV3JhcHBlciYg
TmV0d29ya1Nlc3Npb25Db2NvYTo6YXBwQm91bmRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQoreworICAgIGlmICghbV9hcHBC
b3VuZFNlc3Npb24pIHsKKyAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24gPSBtYWtlVW5pcXVlPElz
b2xhdGVkU2Vzc2lvbj4oKTsKKyAgICAgICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRo
Q3JlZGVudGlhbFN0b3JhZ2UuaW5pdGlhbGl6ZShtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3Jh
Z2Uuc2Vzc2lvbi5nZXQoKS5jb25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k6OlVzZSk7CisgICAgICAgIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9u
V2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmluaXRpYWxpemUobV9zZXNzaW9uV2l0aG91dENyZWRl
bnRpYWxTdG9yYWdlLnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSk7CisgICAgfQorCisgICAgYXV0byYg
c2Vzc2lvbldyYXBwZXIgPSBbJl0gKGF1dG8gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIC0+IFNl
c3Npb25XcmFwcGVyJiB7CisgICAgICAgIHN3aXRjaCAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kp
IHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOgor
ICAgICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiVXNpbmcgYXBwLWJvdW5kIE5TVVJMU2Vz
c2lvbiB3aXRoIGNyZWRlbnRpYWwgc3RvcmFnZS4iKTsKKyAgICAgICAgICAgIHJldHVybiBtX2Fw
cEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZTsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2U6CisgICAgICAgICAg
ICBMT0coTmV0d29ya1Nlc3Npb24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGhv
dXQgY3JlZGVudGlhbCBzdG9yYWdlLiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRT
ZXNzaW9uLT5zZXNzaW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3M6CisgICAg
ICAgICAgICBpZiAoIW1fZXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbi5zZXNzaW9uKQorICAgICAg
ICAgICAgICAgIGluaXRpYWxpemVFcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uKCk7CisgICAgICAg
ICAgICByZXR1cm4gbV9lcGhlbWVyYWxTdGF0ZWxlc3NTZXNzaW9uOworICAgICAgICB9CisgICAg
fSAoc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworCisgICAgcmV0dXJuIHNlc3Npb25XcmFwcGVy
OworfQorCiBTZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6aXNvbGF0ZWRTZXNz
aW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmaXJzdFBhcnR5RG9tYWluKQog
ewogICAgIGF1dG8mIGVudHJ5ID0gbV9pc29sYXRlZFNlc3Npb25zLmVuc3VyZShmaXJzdFBhcnR5
RG9tYWluLCBbdGhpc10gewpAQCAtMTI1OSw2ICsxMjkxLDEzIEBAIGJvb2wgTmV0d29ya1Nlc3Np
b25Db2NvYTo6aGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIGRvCiAgICAgcmV0dXJuIG1faXNvbGF0ZWRTZXNzaW9ucy5jb250YWlucyhkb21haW4pOwog
fQogCitib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6Omhhc0FwcEJvdW5kU2Vzc2lvbigpIGNvbnN0
Cit7CisgICAgaWYgKG1fYXBwQm91bmRTZXNzaW9uKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJJc29s
YXRlZFNlc3Npb25zKCkKIHsKICAgICBtX2lzb2xhdGVkU2Vzc2lvbnMuY2xlYXIoKTsKQEAgLTEy
ODIsNiArMTMyMSwxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmludmFsaWRhdGVBbmRD
YW5jZWwoKQogICAgICAgICBbc2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFn
ZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOwogICAgIH0KICAgICBtX2lzb2xhdGVkU2Vz
c2lvbnMuY2xlYXIoKTsKKworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9u
SW52YWxpZGF0ZWRdOworICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVk
ZW50aWFsU3RvcmFnZS5zZXNzaW9uIGludmFsaWRhdGVBbmRDYW5jZWxdOworICAgIFttX2FwcEJv
dW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhvdXRDcmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNz
aW9uSW52YWxpZGF0ZWRdOwogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3Jl
ZGVudGlhbHMoKQpAQCAtMTI5NSw2ICsxMzM5LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29h
OjpjbGVhckNyZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNz
aW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAg
ICAgICAgZW50cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0
aW9uOmVudHJ5LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2Fz
dDxpZD4oZW50cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVl
dWUgbWFpblF1ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNl
c3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24u
Z2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNl
c3Npb24uZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFp
blF1ZXVlXV07CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
TG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4
ZWRjYTZjYTkyOWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29k
ZUVudW0obG9ja0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0Zvcndh
cmRMaXN0KTsKICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsK
KyAgICBlbmNvZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0
Zm9ybUVuY29kZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRh
dGEpCiAgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdU
Rk1vdmUoKmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIs
IGRhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5oCmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEu
LjE1MDY2Y2NiMDU3M2IxNGVhOTYxYjBhMmM1NDMyN2M4NzNkNzk3YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvTG9hZFBhcmFtZXRlcnMuaApAQCAtNjksNyArNjksOCBAQCBzdHJ1Y3QgTG9hZFBhcmFt
ZXRlcnMgewogICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5IHsgV2ViQ29yZTo6
TG9ja0hpc3Rvcnk6Ok5vIH07CiAgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2Nr
QmFja0ZvcndhcmRMaXN0IHsgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8gfTsKICAg
ICBTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwotCisgICAgYm9vbCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgZmFsc2UgfTsKKyAgICAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBkYXRhRGV0ZWN0aW9uQ29udGV4dDsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24u
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKaW5kZXggNzE1YzUyMTIy
ZjAxOWEyOTY0OWIxYTFlNThhYWEwOWNmOTc4NWQyZS4uYTNjZTdiZWEwN2NjZmI2OTg5NGM4NDUz
OTA5YmVmNTcwNjY0OWJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5
RGVjaXNpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgUG9saWN5RGVjaXNp
b24gewogICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsgfTsK
KyAgICBib29sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyB0cnVlIH07CiAgICAgV2Vi
Q29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6
SWdub3JlIH07CiAgICAgdWludDY0X3QgbmF2aWdhdGlvbklEIHsgMCB9OwogICAgIERvd25sb2Fk
SUQgZG93bmxvYWRJRCB7IDAgfTsKQEAgLTQyLDYgKzQzLDcgQEAgc3RydWN0IFBvbGljeURlY2lz
aW9uIHsKICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKICAg
ICAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47CiAgICAgICAgIGVuY29kZXIgPDwgcG9saWN5QWN0aW9uOwog
ICAgICAgICBlbmNvZGVyIDw8IG5hdmlnYXRpb25JRDsKICAgICAgICAgZW5jb2RlciA8PCBkb3du
bG9hZElEOwpAQCAtNTUsNiArNTcsMTEgQEAgc3RydWN0IFBvbGljeURlY2lzaW9uIHsKICAgICAg
ICAgZGVjb2RlciA+PiBkZWNvZGVkSWRlbnRpZmllcjsKICAgICAgICAgaWYgKCFkZWNvZGVkSWRl
bnRpZmllcikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgIAorICAg
ICAgICBPcHRpb25hbDxib29sPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
KyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsK
KyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+IGRl
Y29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw3ICs4Myw3IEBAIHN0cnVjdCBQb2xpY3lEZWNpc2lv
biB7CiAgICAgICAgIGlmICghZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpCiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgIHJldHVybiB7eyBXVEZNb3ZlKCpkZWNv
ZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRQb2xpY3lBY3Rpb24pLCBXVEZNb3ZlKCpk
ZWNvZGVkTmF2aWdhdGlvbklEKSwgV1RGTW92ZSgqZGVjb2RlZERvd25sb2FkSUQpLCBXVEZNb3Zl
KCpkZWNvZGVkV2Vic2l0ZVBvbGljaWVzRGF0YSkgfX07CisgICAgICAgIHJldHVybiB7eyBXVEZN
b3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1vdmUoKmRl
Y29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdURk1vdmUo
KmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKIAogICAgIH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cAppbmRleCA2MWUwOWY4OGIwZmZmZTFlMDlhYjZjOGQ2MzkyYTM2N2FiMDJjNjFhLi40ZTA0M2Mw
MDU1ODhiZjc4NjBjMjc0ZjNjZDk4ZmU3OGZjZjc0NjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTUy
Nyw2ICs1MjcsMTMgQEAgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0
ZWRTZXNzaW9uKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3QKICNlbmRpZgogfQogCit2b2lk
IFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb25GdW5jdGlvbiBjYWxsYmFjaykKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChkYXRh
U3RvcmVSZWYpLT5oYXNBcHBCb3VuZFNlc3Npb24oW2NvbnRleHQsIGNhbGxiYWNrXShib29sIGhh
c0FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBjYWxsYmFjayhoYXNBcHBCb3VuZFNlc3Npb24s
IGNvbnRleHQpOworICAgIH0pOworfQorCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdy
YWRlUmVmZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTY5NiwzICs3MDMsMTAgQEAgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIHZvaWQqIGNvbnQKICAgICAgICAgICAgIGNhbGxiYWNrKGNvbnRleHQpOwogICAg
IH0pOwogfQorCit2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgZW5hYmxlZCwg
dm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWRGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChk
YXRhU3RvcmVSZWYpLT5zZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChlbmFibGVkLCBbY29u
dGV4dCwgY29tcGxldGlvbkhhbmRsZXJdIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY29u
dGV4dCk7CisgICAgfSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDI4ZDZhODc3ZDZiNzc1YTg4M2E0ZTBk
ZGNlMDA4YzExYTVhZmY3NjcuLmU4NmE2ZjkwNzllYTU3OTk5ZmY3ZmY1NDZlODI4OTU5NzU5NGE5
N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURh
dGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5oCkBAIC0xMTcsNiArMTE3LDggQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJz
aXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4QWdlQ2FwRnVuY3Rpb24pKHZvaWQqIGZ1
bmMKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBkb3VibGUgc2Vjb25k
cywgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0NhY2hlTWF4
QWdlQ2FwRnVuY3Rpb24pOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlz
dGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uKShib29sIGhhc0lzb2xhdGVkU2Vzc2lvbiwg
dm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFT
dG9yZVJlZiwgV0tTdHJpbmdSZWYgaG9zdCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbkZ1bmN0aW9uIGNhbGxiYWNrKTsKK3R5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbkZ1bmN0aW9uKShi
b29sIGhhc0FwcEJvdW5kU2Vzc2lvbiwgdm9pZCogZnVuY3Rpb25Db250ZXh0KTsKK1dLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbihXS1dlYnNpdGVEYXRh
U3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVI
YXNBcHBCb3VuZFNlc3Npb25GdW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dl
YnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRlUmVm
ZXJyZXJGb3JUZXN0aW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxk
RG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYsIGJvb2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1
bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVyKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
Rm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwpAQCAtMTU3LDYgKzE1
OSw5IEBAIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldENhY2hlTW9kZWxTeW5j
aHJvbm91c2x5Rm9yVGVzdGluZyhXS1dlYnNpdGVECiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVE
YXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2spKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19F
WFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhKFdLV2Vic2l0ZURhdGFTdG9y
ZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVJlc2V0
UXVvdGFDYWxsYmFjayBjYWxsYmFjayk7CiAKK3R5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFT
dG9yZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9u
Q29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29s
IGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIpOworCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggNDMyYzIwN2M4MWYxNDMzZWRi
MzQ5NWZjYzU3YWM1NzI1YzhlMjc2YS4uNDdhNTFlMDg2M2MwM2M2NmIwY2U2ZDQ5NTg0NDBjYjc3
NTNlODA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC00NzMsNiArNDczLDIzIEBAIC0gKHZvaWQpX2dl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRp
b25IYW5kbGVyOih2CiAjZW5kaWYKIH0KIAorLSAodm9pZClfZ2V0V2ViVmlld0NhdGVnb3J5Rm9y
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJW
aWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgaWYgKCF3ZWJW
aWV3KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29yeVdlYkJy
b3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byB3ZWJQYWdlUHJveHkg
PSBbd2ViVmlldyBfcGFnZV07CisgICAgaWYgKCF3ZWJQYWdlUHJveHkpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoX1dLV2ViVmlld0NhdGVnb3J5V2ViQnJvd3Nlcik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIGNhdGVnb3J5ID0gd2ViUGFnZVByb3h5LT5jb25maWd1
cmF0aW9uKCkud2ViVmlld0NhdGVnb3J5KCk7CisgICAgY29tcGxldGlvbkhhbmRsZXIodG9XS1dl
YlZpZXdDYXRlZ29yeShjYXRlZ29yeSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJs
b2NraW5nVXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApp
bmRleCA3ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2Yz
NTY5OTBhZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRl
LmgKQEAgLTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgpAQCAtNjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vi
c2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFs
ZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZv
aWQpX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClf
Z2V0V2ViVmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5k
bGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiArICh2b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVy
ZWRTZXJ2aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEz
OTExNTdhLi40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5jcHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlc2V0UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVv
dGEoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NI
RUNLCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZj
YWQuLjAyYmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CkBAIC0yMTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVj
ZWl2ZVJlc3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENv
bXBsZXRlV2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8m
JiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNz
aW9uKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBB
dXhpbGlhcnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEy
NWFlNDQ4NDFlMmMzZWU5NjJiNzNiOTQuLjUyMjk2N2U2MTQ2YjYyZmFjM2E0MWU0NmY3ODcxYzUw
YTIyNjVlYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBh
Z2VQcm94eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmluaXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RnJlZXplTGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
K3ZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlUHJv
eHlJRD0lIiBQUkl1NjQgIiB3ZWJQYWdlSUQ9JSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigp
LnRvVUludDY0KCksIG1fd2ViUGFnZUlELnRvVUludDY0KCkpOwogCi0gICAgbV9wYWdlLmxvYWRE
YXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQs
IG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5hdmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwg
TUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigp
LnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCi12b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
Ym9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNp
ZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlUHJveHlJRD0lIiBQUkl1NjQgIiB3
ZWJQYWdlSUQ9JSIgUFJJdTY0LCBtX3BhZ2UuaWRlbnRpZmllcigpLnRvVUludDY0KCksIG1fd2Vi
UGFnZUlELnRvVUludDY0KCkpOwogCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXMKICAgICBpZiAobmF2aWdhdGlvbi5mcm9tSXRlbSgpICYmIG5hdmlnYXRpb24ubG9j
a0JhY2tGb3J3YXJkTGlzdCgpID09IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6OlllcykK
ICAgICAgICAgbmF2aWdhdGlvbi5mcm9tSXRlbSgpLT5zZXRMYXN0UHJvY2Vzc0lkZW50aWZpZXIo
bV9wcm9jZXNzLT5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAKLSAgICBtX3BhZ2UubG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJ
RCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwgbmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlv
bkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNp
ZXMpKTsKKyAgICBtX3BhZ2UubG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2aWdhdGlvbiwgV1RGTW92ZShyZXF1ZXN0KSwg
bmF2aWdhdGlvbi5sYXN0TmF2aWdhdGlvbkFjdGlvbigpLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
KTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQpAQCAtMzQ1
LDcgKzM0NSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jKEZyYW1lSWRlbnRpZmllciBmCiAgICAgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgaWYgKCFpc01haW5G
cmFtZSB8fCAobV9tYWluRnJhbWUgJiYgbV9tYWluRnJhbWUtPmZyYW1lSUQoKSAhPSBmcmFtZUlE
KSB8fCBuYXZpZ2F0aW9uSUQgIT0gbV9uYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAgcmVwbHkoUG9s
aWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb246Oklnbm9yZSwg
bmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgcmVw
bHkoUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCB0cnVlLCBXZWJDb3JlOjpQb2xpY3lBY3Rp
b246Oklnbm9yZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmgKaW5kZXggYjExZGUxYzQyNTkwYzYwY2YxYWYwNjgzYzc3MjU4
NmY2YWJhMzZiNC4uMTJiMmY5OTQzZTc0NzI4NTI3YTEzNzk1NDhiNGQ2ZGFiZTI3ZTUwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05
MSw4ICs5MSw4IEBAIHB1YmxpYzoKICAgICBMYXllckhvc3RpbmdDb250ZXh0SUQgY29udGV4dElE
Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZXh0SURGb3JW
aXNpYmlsaXR5UHJvcGFnYXRpb247IH0KICNlbmRpZgogCi0gICAgdm9pZCBsb2FkRGF0YShBUEk6
Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1J
TUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWREYXRh
KEFQSTo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBib29sLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmID0gV1RGOjpudWxsb3B0KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IGJvb2wsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwog
ICAgIHZvaWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9p
ZCBjYW5jZWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggNjVjZGJmZmNkMTMzOWMyZWI5NjFhNGNhM2E2ODYzNDEyMzNkMTExZS4uMzZjNTMyZmYxMTE0
OTMwZmYyOWFlYzkyNWRjYWJhMWFlYWJlYjZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC0yNzQsNiArMjc0LDEyIEBACiAjaW5jbHVkZSAiRGF0YURldGVj
dGlvblJlc3VsdC5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2lu
Y2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisj
ZGVmaW5lIFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKIC8vIFRoaXMgY29udHJv
bHMgd2hhdCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVm
aW5lIE1FUkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTEyNjQsMTEgKzEyNzAsMTEgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9y
Q2xpZW50TmF2aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0
aXZpdHkocHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5h
dmlnYXRpb24iX3MpLm1vdmVUb1VuaXF1ZVB0cigpKTsKIAotICAgIGxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRp
b24uZ2V0KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlE
LCBuYXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIGJvb2wg
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAt
MTI5MCw2ICsxMjk2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBsb2FkUGFyYW1l
dGVycy5sb2NrSGlzdG9yeSA9IG5hdmlnYXRpb24ubG9ja0hpc3RvcnkoKTsKICAgICBsb2FkUGFy
YW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0ID0gbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRM
aXN0KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
ID0gbmF2aWdhdGlvbi5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKKyAgICBsb2Fk
UGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbjsKICAgICBtYXliZUluaXRpYWxpemVTYW5kYm94RXh0ZW5zaW9uSGFuZGxl
KHByb2Nlc3MsIHVybCwgbV9wYWdlTG9hZFN0YXRlLnJlc291cmNlRGlyZWN0b3J5VVJMKCksIGxv
YWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwogCiAgICAgYWRkUGxhdGZvcm1M
b2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CkBAIC0xMzg0LDExICsxMzkxLDExIEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAgaWYgKHNob3VsZFVzZUZvcmVncm91bmRQcmlvcml0
eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Rm9yZWdyb3Vu
ZEFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVu
dCBuYXZpZ2F0aW9uIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKSk7CiAKLSAgICBsb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0
aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kpOworICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNz
LmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNv
ZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8s
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGOjpudWxsb3B0LCBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJp
bmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGlj
aWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAK
QEAgLTE0MDgsNiArMTQxNSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZp
Z2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBsb2FkUGFy
YW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEpLmdldCgpKTsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNp
ZXMgPSBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7Cisg
ICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW47CisKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
KnRoaXMsIGJhc2VVUkwpOwpAQCAtMzA1MiwxMCArMzA2MSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFBvbGljeURlY2lzaW9uU2VuZGVyKGlkZW50aWZpZXIsIFdU
Rk1vdmUoc2VuZEZ1bmN0aW9uKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2VuZChQb2xpY3lEZWNp
c2lvbiYmIFBvbGljeURlY2lzaW9uKQorICAgIHZvaWQgc2VuZChQb2xpY3lEZWNpc2lvbiYmIHBv
bGljeURlY2lzaW9uKQogICAgIHsKICAgICAgICAgaWYgKG1fc2VuZEZ1bmN0aW9uKQotICAgICAg
ICAgICAgbV9zZW5kRnVuY3Rpb24oV1RGTW92ZShQb2xpY3lEZWNpc2lvbikpOworICAgICAgICAg
ICAgbV9zZW5kRnVuY3Rpb24oV1RGTW92ZShwb2xpY3lEZWNpc2lvbikpOwogICAgIH0KIAogICAg
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CkBAIC0zMDcwLDYgKzMwNzksMjkgQEAgcHJpdmF0ZToKICAgICBQb2xpY3lDaGVja0lkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogfTsKIAorCitib29sIFdlYlBhZ2VQcm94eTo6aXNBcHBCb3Vu
ZERvbWFpbihXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCit7CisgICAgV0VCX1BB
R0VfUFJPWFlfQURESVRJT05TCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNNYWluRnJhbWUsIGNv
bnN0IFVSTCYgcmVxdWVzdFVSTCkKK3sKKyAgICBpZiAobV9wcmVmZXJlbmNlcy0+aXNJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChpc01haW5GcmFtZSkgeworICAg
ICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gY3VycmVudERvbWFpbiB7IHJlcXVlc3RVUkwgfTsK
KyAgICAgICAgICAgIGlmICghaXNBcHBCb3VuZERvbWFpbihSZWdpc3RyYWJsZURvbWFpbihyZXF1
ZXN0VVJMKSkpIHsKKyAgICAgICAgICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdD
YXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkluQXBwQnJvd3Nlcik7CisgICAgICAgICAgICAgICAg
bV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRX
ZWJWaWV3Q2F0ZWdvcnkoV2ViVmlld0NhdGVnb3J5OjpBcHBCb3VuZERvbWFpbik7CisgICAgICAg
ICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB0cnVlOworICAgICAgICB9Cisg
ICAgfQorfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNp
ZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUmVmPFdlYnNp
dGVEYXRhU3RvcmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuY29weVJl
ZigpOwpAQCAtMzE1Nyw3ICszMTg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24s
IEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIs
IFdpbGxDb250aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vz
cykKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgc2VuZGVyLT5z
ZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVy
LT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQo
KSwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTgwLDcg
KzMyMTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xp
Y3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgICAgIG1fZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9OwogICAgIH0KIAotICAgIHNlbmRlci0+c2VuZChQb2xp
Y3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXIt
PmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24sIG5h
dmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdU
Rk1vdmUod2Vic2l0ZVBvbGljaWVzKSB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1p
dFByb3Zpc2lvbmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVu
dFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRh
aW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4g
Zm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0z
MjU3LDkgKzMyODksOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICAvLyBGSVhN
RTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVs
ZWdhdGUsIGV0YwogICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCku
aXNFbXB0eSgpKTsKICAgICAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlv
bi0+c3Vic3RpdHV0ZURhdGEoKSkKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2Fk
RGF0YShuYXZpZ2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3Rp
dHV0ZURhdGEtPmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vi
c3RpdHV0ZURhdGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0
ZURhdGEtPnVzZXJEYXRhLmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0
ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwg
c3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0
aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5h
dmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkg
fSwgbnVsbHB0ciwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgICAgIG1fcHJv
dmlzaW9uYWxQYWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBu
YXZpZ2F0aW9uLT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICB9OwogICAgIGlm
IChtX2luc3BlY3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25h
bFBhZ2UpKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGlu
Z0NhbGxiYWNrKCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKQEAg
LTQ5MzYsOCArNDk2OCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiAgICAgYXV0byogZnJh
bWUgPSBwcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nl
c3MsIGZyYW1lKTsKIAotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNy
ZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNz
ID0gcHJvY2Vzcy5jb3B5UmVmKCldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwor
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5
UmVmKCldIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwg
bGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAgIH0pOwogCiAgICAg
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1l
LCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2
aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1Bh
Z2VJRCwKQEAgLTQ5NjEsOSArNDk5MywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
IGlmIChuYXZpZ2F0aW9uSUQgJiYgIWZyb21BUEkpCiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5j
bGVhclBlbmRpbmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKIAorICAgIHNldElzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4oZnJhbWUuaXNNYWluRnJhbWUoKSwgcmVxdWVzdC51cmwoKSk7CisK
ICAgICBpZiAoIWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNz
KHByb2Nlc3MsIHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVz
b3VyY2UgYmVjYXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRl
ci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNl
bmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9h
ZElEKCksIFdURjo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE5
MCw3ICs1MjI0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHkKICAgICAgICAgb3JpZ2luYXRp
bmdQYWdlSUQsIG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1
ZXN0Qm9keSksIFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29w
eVJlZigpKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHN5bmNocm9u
b3VzbHksIHByb2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVj
aXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgp
LCBXVEY6Om51bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLApAQCAtNTIwNyw4ICs1MjQxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXIKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNz
U3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJy
b3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAgICAgIGF1dG8gc2Vu
ZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURd
IChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IFBvbGljeURlY2lzaW9uKSk7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25T
ZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChjb25zdCBhdXRvJiBwb2xpY3lE
ZWNpc2lvbikgeworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSk7CiAg
ICAgICAgIH0pOwogCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9u
LCBudWxscHRyLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7CkBAIC01MjU2LDggKzUy
OTAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICBSRUxFQVNFX0FTU0VSVChw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2Fm
ZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lv
blNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVy
SUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0byYgUG9saWN5RGVjaXNp
b24pIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiks
IHdlYlBhZ2VJRCk7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6
OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9j
ZXNzID0gV1RGTW92ZShwcm9jZXNzKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7Cisg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdl
SUQpOwogICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUo
c2VuZGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGYyMjA1
ZDg1ZDRiMDkyNGFlZGMzZjFhNzBlMjJkZDNkNGJkMWE2NzEuLmZkMGI3OWU1Y2Q3NmYxYzlhZjVj
MmYyMGMxOTlkNDcyYzJjMjAyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCkBAIC0xNjE0LDggKzE2MTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hv
d01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQ
STo6TmF2aWdhdGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYg
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGFXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgYm9vbCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2
b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgYm9vbCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7
CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBXZWJCYWNrRm9y
d2FyZExpc3RDb3VudHMmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJQYWdlUHJveHlJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCkBAIC0yMjU1LDYg
KzIyNTUsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdHJ5Q2xvc2VUaW1lZE91dCgpOwogICAg
IHZvaWQgbWFrZVN0b3JhZ2VTcGFjZVJlcXVlc3QoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2
NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVp
bnQ2NF90IGV4cGVjdGVkVXNhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYm
KTsKKyAgICAgICAgCisgICAgYm9vbCBpc0FwcEJvdW5kRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluKTsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9v
bCBpc01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKTsKKyAgICBib29sIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW47IH0KIAogICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpAQCAtMjczOSw2ICsyNzQzLDgg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1v
bm90b25pY1RpbWUgbV9kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7
CiAjZW5kaWYKKyAgICAgICAgCisgICAgYm9vbCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4geyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJz
aXRlRGF0YVN0b3JlQ29jb2EubW0KaW5kZXggZTE2NTFjODMyMWJhNTNjYjg3MjlmNWNmMzVlYzc5
Mzg3NTFjOTgwYy4uNGM0ZmI4NTViYWJmMTkzM2I1ZTgzNmNlMmU3NWQxN2YwNmQ1MDc5YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0
ZURhdGFTdG9yZUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQpAQCAtMTQ1LDYgKzE0NSw4IEBAIFdl
YnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkV3JpdGVEaXJlY3Rv
cnkobmV0d29ya0NhY2hlRGlyZWN0b3J5LCBuZXR3b3JrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUpOwogCiAgICAgYm9vbCBzaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gaXNTYWZhcmk7CisgICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnRlcm5hbERlYnVnJUAiLCBXZWJQcmVmZXJlbmNlc0tleTo6aXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZEtleSgpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCldXTsKKyAgICAKICAgICBXZWJzaXRl
RGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzID0gewogICAgICAgICBtX3Nlc3Npb25JRCwKQEAgLTE3OCw2ICsxODAs
NyBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0
ZXJzKCkKICAgICAgICAgbV9jb25maWd1cmF0aW9uLT50ZXN0U3BlZWRNdWx0aXBsaWVyKCksCiAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi0+c3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlKCksCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+YWxsb3dzU2VydmVyUHJl
Y29ubmVjdCgpLAorICAgICAgICBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkCiAgICAgfTsK
ICAgICBuZXR3b3JraW5nSGFzQmVndW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCBiZGI3MjAw
MWIyYTczNGM5NWIyZjVmNGVmMzI3YWIxNWJjZjNjNmEyLi5lMzZmMDhmMmZhMTllNmZhOWNhODU0
YzY1MzAyYTg1ZGZjZWQ2ZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMjI1NSw0ICsyMjU1LDI4
IEBAIFdURjo6U3RyaW5nIFdlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHREZXZpY2VJZEhhc2hTYWx0
c1N0b3JhZ2VEaXJlY3RvcnkoKQogfQogI2VuZGlmCiAKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6
aGFzQXBwQm91bmRTZXNzaW9uKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpIGNvbnN0Cit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nl
c3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+aGFz
QXBwQm91bmRTZXNzaW9uKG1fc2Vzc2lvbklELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CisgICAgICAgICAgICBBU1NFUlQocHJvY2Vzc1Bvb2xzKCkuc2l6ZSgpID09IDEpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKCFjb21wbGV0aW9uSGFu
ZGxlcik7Cit9CisKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMo
KSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0
d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPnNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAx
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCghY29t
cGxldGlvbkhhbmRsZXIpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggZjA4MjlmMTJiNTcwNDc5
NjkxMGE0NjljNWE4ZTcyMjAxYTUxMjk1ZS4uN2ZhYTRiNTkyNjVhZjNlZmQ0MWNmMGI0MWIzNWQx
M2EyNjEyMzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0
b3J5KCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJv
b2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAg
ICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
CmluZGV4IGEzNTdlMjJhOGZmYmUyY2M0NDA2Y2U1ODFlZGI1YjVhZWRhYTYyZjMuLmFlZDlmM2Fh
Yjc0NjUwM2MzYTE3NzBlMTQwNWNlZDk0M2U3ODY5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTMyNiwx
NCArMzI2LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3
b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgICAgIGlmIChhdXRvKiBj
b250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkp
CiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50
U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KKyAgICAKKyAgICBhdXRv
KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VM
b2FkZXIuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0g
d2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6
IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2Uo
KSA6IG51bGxwdHI7CisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKCk7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGlmIChk
b2N1bWVudCkgewogICAgICAgICBsb2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1
bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKICAgICAgICAgLy8gRklYTUU6IEluc3RlYWQgb2Yg
cGFzc2luZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCB0aGUgTmV0d29ya1Byb2Nl
c3Mgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGl0IHVzaW5nIHdlYlBhZ2VJZC4KLSAgICAgICAgYXV0
byogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHJlc291cmNl
TG9hZGVyLmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpKTsKLSAgICAgICAgYXV0byogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFt
ZSgpIDogbnVsbHB0cjsKLSAgICAgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJh
bWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmICh3ZWJQYWdlKQogICAgICAgICAgICAg
bG9hZFBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9IHdlYlBhZ2Ut
PnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIoKTsKICAgICB9CkBAIC02MDEsNiArNjA0
LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVy
cy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVh
ZGVycygpOwogICAgIH0KICAgICBsb2FkUGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3RIZWFkZXJz
ID0gb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsKKyAgICAKKyAgICBpZiAod2ViUGFnZSkKKyAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2Ut
PmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKwogICAgIGFkZFBhcmFtZXRlcnNGcm9t
RnJhbWUod2ViRnJhbWUtPmNvcmVGcmFtZSgpLCBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBkYXRh
LnNocmluaygwKTsKQEAgLTY2OCwxMyArNjc1LDE2IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
CiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50
U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KICAgICBhZGRQYXJhbWV0
ZXJzRnJvbUZyYW1lKCZmcmFtZSwgbG9hZFBhcmFtZXRlcnMpOwotCisgICAgCisgICAgYXV0byog
d2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLmxvYWRl
cigpLmNsaWVudCgpKTsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8q
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlm
ICh3ZWJQYWdlKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOworICAgIAog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRv
Y3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CiAgICAgLy8gRklYTUU6
IEluc3RlYWQgb2YgcGFzc2luZyB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCB3ZSBz
aG91bGQganVzdCBwYXNzIHdlYlBhZ2VJZCB0byBOZXR3b3JrUHJvY2Vzcy4KLSAgICBXZWJGcmFt
ZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xp
ZW50KGZyYW1lLmxvYWRlcigpLmNsaWVudCgpKTsKLSAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
bnVsbHB0cjsKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKICAgICBpZiAod2ViUGFnZSkKICAgICAgICAgbG9hZFBhcmFtZXRlcnMu
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciA9IHdlYlBhZ2UtPnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKaW5kZXggMTIxMmVlYWI1NzA3YWRlZTFlNjc2NWRhMmZlNjliM2RlNzdjMjllYi4uNmNmNzY5
Nzg1MWZkZTE5ZjFlNjliM2JjMTVlZmIyZGZiM2I5MDA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnMK
ICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihp
ZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rp
b246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJl
c3BvbnNlLCByZXF1ZXN0LAogICAgICAgICBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmli
dXRlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKLSAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgaWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5
RGVjaXNpb24geyBpZGVudGlmaWVyLCB0cnVlLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9
LCB7IH0gfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRp
b25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKQEAgLTk5MywxMSArOTkz
LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgICAgICByZXF1ZXN0SWRlbnRp
ZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlv
bkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAgICAgIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lE
ZWNpc2lvbikpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgUG9saWN5
QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVz
dElkZW50aWZpZXIsIGZhbHNlLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX2ZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lE
ZWNpc2lvbi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGlj
eURlY2lzaW9uLmRvd25sb2FkSUQsIHsgfX0pOworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBwb2xpY3lEZWNpc2lv
bi5pZGVudGlmaWVyLCBwb2xpY3lEZWNpc2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBwb2xpY3lEZWNpc2lvbi5wb2xpY3lBY3Rpb24sIDAsIHBvbGljeURlY2lzaW9uLmRvd25sb2Fk
SUQsIHsgfX0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDA1LDcgKzEwMDUsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIGlmICghd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMobV9m
cmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUp
LAogICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25J
RCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmln
aW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVz
dCwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IHJlcXVlc3QuaHR0cEJvZHkoKSB9
LCByZWRpcmVjdFJlc3BvbnNlLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSksIGxpc3RlbmVySUQp
KSkKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIGZhbHNl
LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggMGE2MTAwOWE2NDhiMDRmMDk1YzI5ODQ1
NjM2ZjUyOTExOWFjYjc2Zi4uOGUxNDU5MmVhMWMwN2RlNDkzNDc4ODlhNDliZDQ1MTkyYzY3M2I2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTE1NzAsNiArMTU3MCw4IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBh
cmFtZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0CiAKIHZvaWQgV2ViUGFn
ZTo6bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKKyAgICBz
ZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0
b3BwZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZp
Z2F0aW9uSUQ7CkBAIC0xNjA0LDggKzE2MDYsMTAgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6
bG9hZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6Omxv
YWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2ll
cywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0
IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgU2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBX
ZWJQYWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IGJvb2wgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogeworICAgIHNldElzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisKICAg
ICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTE2MzIsNyArMTYzNiw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIAogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVycy5k
YXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRl
cnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmln
YXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwg
YmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRl
cm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNjQ0LDcgKzE2
NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gbG9hZFBh
cmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkg
OiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
KTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBh
cmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdh
dGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1v
dmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIp
LCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBi
YXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOworICAgIGxv
YWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRl
UG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBs
b2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQ
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCkBAIC0zMjU4LDEy
ICszMjYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBsdWdpblZpZXctPnNldExheWVySG9z
dGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCit2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKKyAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFdURk1v
dmUoUG9saWN5RGVjaXNpb24pKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFdURk1vdmUocG9saWN5RGVjaXNpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojpjb250aW51ZVdpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklEKQpAQCAtNzAwNiw2ICs3MDExLDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0T3Zl
cnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICBtX3BhZ2UtPnNl
dE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKQoreworICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGE2ODk1MzBmMzgzNmQ2ZjRjYmIwZjU2OTcyZDNmZTExMGU4MTMyNTUu
LjA3MDBkNjY0MTEwNDBkM2YxN2FiMDU0NzA3N2RhODMzMDY4OTY1ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEyODYsNiArMTI4Niw5IEBAIHB1
YmxpYzoKICAgICBXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3NDb250ZW50
SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb247IH0KICAgICB2b2lk
IHNldEFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uKFdlYkNv
cmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93cykgeyBtX2FsbG93c0NvbnRlbnRKYXZh
U2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uID0gYWxsb3dzOyB9CiAKKyAgICB2b2lkIHNl
dElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCk7CisgICAgYm9vbCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOyB9CisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEzNzksNyArMTM4
Miw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsK
IAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYs
IFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYg
ZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxk
Tm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Ym9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBib29sLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOwogCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5
Q2xvc2UoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CkBAIC0yMDY2LDYgKzIwNjks
OCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBTdHJpbmcgbV90aGVtZU5hbWU7
CiAjZW5kaWYKKyAgICAKKyAgICBib29sIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7
IGZhbHNlIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5
YmM0YWZiMjM3MjU3NDdmMjUzOThiZTA5MzRiYmNhNzUzMjA3NDhiLi4xZGVkZjM5MmRkNzk5YWM2
YjdhZmNkNmUyYjE0NDQ3ZjhlZjVjMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE4Niw3ICsxODYsOCBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRo
ZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1
Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkK
IAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHN0cnVj
dCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lzaW9uKQorICAgIERpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb24p
CisKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAgQ2xlYXJTZWxlY3Rpb24oKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDRjYWM1M2E0
MTNlMDAwN2QzYTE1ODUzMTRiNjAyOWNkMTUwMDE5NjkuLjQ5ZjU3YzNmOTMyODE4OWUyZTQwOWNh
YTIyMDJhMDU0MTBlYzFiNWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wMi0yMCAgS2F0ZSBDaGVuZXkgIDxr
YXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBz
aG91bGQgaGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU5NDM0MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgbW9zdGx5IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaW52b2x2aW5n
IDMgZnVuY3Rpb25zLgorICAgICAgICBPbmUgc2V0cyBpbi1hcHAgYnJvd3NlciBwcml2YWN5IGFz
IGVuYWJsZWQgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICBtYW51YWxseSBmb3IgdGhl
IHRlc3QuIE9uZSBlbnN1cmVzIHRoYXQgc2V0dGluZyB0aGUgd2ViVmlldyBjYXRlZ29yeQorICAg
ICAgICB3b3JrcyBwcm9wZXJseSwgYW5kIHRoZSBsYXN0IG9uZSBjaGVja3MgZm9yIGFuIGFwcC1i
b3VuZCBzZXNzaW9uIGZvcgorICAgICAgICBhbiBhcHAtYm91bmQgbmF2aWdhdGlvbi4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZVRvUGFnZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0V2ViVmlld0NhdGVn
b3J5KToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0
ZWdvcnlDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vz
c2lvbik6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkQ2FsbGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmll
d1N1cHBvcnRzT3B0aW9uc0ZvclRlc3QpOgorICAgICAgICBDbGVhcmluZyB0aGUgYnVuZGxlSUQg
c2hvdWxkIGhhcHBlbiByaWdodCBiZWZvcmUgc2V0dGluZyBhIG5ldyBvbmUsIAorICAgICAgICBv
dGhlcndpc2UgaXQgY2xlYXJzIHRoZSBJRCBhZnRlciBpdCBpcyBzZXQgYW5kIHJldHVybnMgYSBu
dWxsIElELgorCisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdD
YXRlZ29yeSk6CisgICAgICAgIChXVFI6OkluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRl
eHQ6OkluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjpp
bkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6
aW5BcHBCcm93c2VyUHJpdmFjeVZvaWRSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRl
c3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVByZXZhbGVu
dERvbWFpbnMpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZp
ZXdDYXRlZ29yeSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5t
bToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6CisK
IDIwMjAtMDItMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgV0tXZWJWaWV3IHdpdGggbm9uLXplcm8gb3JpZ2luIGhhcyB0aGUgd3JvbmcgdG9wIGNv
bnRlbnQgaW5zZXQgd2l0aCBOU1dpbmRvd1N0eWxlTWFza0Z1bGxTaXplQ29udGVudFZpZXcKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDRhNTUxMDJlNTI5YjIwZDM3ZjYwYmZiMjgxZTQ4
N2QxN2VkNzc4MDIuLjcxZjYwMjkwNTMwYzE1OTE3NzdkYzY2YjVmN2RiZGYzNTc4NTNmMmYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMzU0LDYgKzM1NCw5IEBAIGludGVyZmFjZSBU
ZXN0UnVubmVyIHsKICAgICAvLyBTdG9yYWdlIEFjY2VzcyBBUEkKICAgICB2b2lkIGdldEFsbFN0
b3JhZ2VBY2Nlc3NFbnRyaWVzKG9iamVjdCBjYWxsYmFjayk7CiAKKyAgICB2b2lkIGdldFdlYlZp
ZXdDYXRlZ29yeShvYmplY3QgY2FsbGJhY2spOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoYm9vbGVhbiB2YWx1ZSwgb2JqZWN0IGNhbGxiYWNrKTsKKwogICAgIC8vIE9w
ZW4gcGFuZWwKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKG9iamVjdCBmaWxlc0FycmF5KTsK
ICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKG9iamVjdCBtZWRpYUljb24pOwpA
QCAtMzg5LDYgKzM5Miw3IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICB2b2lkIHJlc2V0
TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVu
c2lnbmVkIGxvbmcgb3JpZW50YXRpb24pOwogICAgIGJvb2xlYW4gaXNNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKyAgICBib29sZWFuIGhhc0FwcEJvdW5kU2Vzc2lvbigp
OwogCiAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KERPTVN0cmluZyBzdHJpbmcpOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHVzZXJTY3JpcHRJbmplY3RlZENvdW50Owpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlLmNwcAppbmRleCA5NThhNzliYTQzNDhhOTc5MjI4MDNlZTIzNjE5MGI1MDJmZGYz
YzFhLi43NzBmZTE4ZDlmMzAzNGQxOGM2ODc4NmI0MjZlZDQ5NzY5NjA1YmE3IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcApAQCAtMzM2LDYgKzMzNiwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAg
ICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBh
cnR5Q29va2llc0NhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisgICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSkgeworICAgICAgICBtX3Rlc3RSdW5uZXItPmNh
bGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkNhbGxEaWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKSB7
CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZUNhbGxiYWNrKCk7CkBAIC00MjIsNiArNDI3LDE0IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVQ
cmV2YWxlbnREb21haW5zQ2FsbGJhY2soV1RGTW92ZShkb21haW5zKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVz
c2FnZU5hbWUsICJDYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeSIpKSB7CisgICAgICAgIEFT
U0VSVChtZXNzYWdlQm9keSk7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRChtZXNzYWdlQm9k
eSkgPT0gV0tTdHJpbmdHZXRUeXBlSUQoKSk7CisKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxs
RGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKHRvV1RGU3RyaW5nKHN0YXRpY19jYXN0
PFdLU3RyaW5nUmVmPihtZXNzYWdlQm9keSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAog
ICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERp
ZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrIikpIHsKICAgICAgICAgbV90ZXN0
UnVubmVyLT5jYWxsRGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2soKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5l
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwCmluZGV4IGVjMTI2ZDY4ZTM1ZDVlNTcwZWUxNTJkZjY4MjBiNDAzZmE3N2YyY2QuLjE2MGYy
MWMxMDNiNTM2OTNlNGIyMzA1MTUzNzJlOWRlZWFlYmM4MTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAtNzYxLDYg
Kzc2MSw4IEBAIGVudW0gewogICAgIFRleHRGaWVsZERpZEJlZ2luRWRpdGluZ0NhbGxiYWNrSUQs
CiAgICAgVGV4dEZpZWxkRGlkRW5kRWRpdGluZ0NhbGxiYWNrSUQsCiAgICAgQ3VzdG9tTWVudUFj
dGlvbkNhbGxiYWNrSUQsCisgICAgR2V0V2ViVmlld0NhdGVnb3J5Q2FsbGJhY2tJRCwKKyAgICBE
aWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQsCiAgICAgRmlyc3RVSVNj
cmlwdENhbGxiYWNrSUQgPSAxMDAKIH07CiAKQEAgLTI5MDQsNCArMjkwNiw0NyBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldE9mZnNjcmVlbkNhbnZhc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIFdL
QnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0ZWRCdW5kbGUu
YnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCBrZXkuZ2V0KCksIGVuYWJsZWQp
OwogfQogCit2b2lkIFRlc3RSdW5uZXI6OmdldFdlYlZpZXdDYXRlZ29yeShKU1ZhbHVlUmVmIGNh
bGxiYWNrKQoreworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKEdldFdlYlZpZXdDYXRlZ29y
eUNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKKyAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJH
ZXRXZWJWaWV3Q2F0ZWdvcnkiKSk7CisgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsK
K30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxi
YWNrKFN0cmluZyBjYXRlZ29yeSkKK3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9
IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFn
ZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdl
dEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBhdXRvIHJlc3VsdFN0cmluZyA9
IG1ha2VTdHJpbmcoIlwiIiwgY2F0ZWdvcnksICJcIiIpOworICAgIAorICAgIEpTVmFsdWVSZWYg
cmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhjb250ZXh0LCBhZG9wdChKU1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhyZXN1bHRTdHJpbmcudXRmOCgpLmRhdGEoKSkpLmdldCgp
KTsKKworICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soR2V0V2ViVmlld0NhdGVnb3J5Q2FsbGJh
Y2tJRCwgMSwgJnJlc3VsdCk7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6aGFzQXBwQm91bmRTZXNz
aW9uKCkKK3sKKyAgICBhdXRvIG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZygiSGFzQXBwQm91bmRTZXNzaW9uIikpOworICAgIFdLVHlwZVJlZiByZXR1
cm5EYXRhID0gbnVsbHB0cjsKKyAgICBXS0J1bmRsZVBhZ2VQb3N0U3luY2hyb25vdXNNZXNzYWdl
Rm9yVGVzdGluZyhJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkucGFnZSgpLT5wYWdlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBudWxscHRyLCAmcmV0dXJuRGF0YSk7CisgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKHJldHVybkRhdGEpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKworICAgIHJldHVy
biBXS0Jvb2xlYW5HZXRWYWx1ZShhZG9wdFdLKHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4ocmV0
dXJuRGF0YSkpLmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZChib29sIHZhbHVlLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGNhY2hlVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkQ2FsbGJhY2tJRCwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIlNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpOworICAgIFdLUmV0YWluUHRy
PFdLQm9vbGVhblJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSh2YWx1
ZSkpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigp
LmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOworfQorCit2
b2lkIFRlc3RSdW5uZXI6OmNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxi
YWNrKCkKK3sKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKERpZFNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkQ2FsbGJhY2tJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRl
eCA3MjEwMjFkZDZjYzg3NWI2YmZjMjY1OGQ5OWZmNTEyNDliOTU2ZTIyLi5iNzdjYjZjNTUzZTI3
ZjViYjJjNTg2YTBkNWI1ODZjMjZmZjBjYjVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaApAQCAtNDYzLDYgKzQ2MywxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhKU1ZhbHVlUmVmIGNh
bGxiYWNrKTsKICAgICB2b2lkIGNhbGxEaWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXND
YWxsYmFjayhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAKKyAgICAKKyAgICB2b2lkIGdldFdl
YlZpZXdDYXRlZ29yeShKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGNhbGxEaWRSZWNl
aXZlV2ViVmlld0NhdGVnb3J5Q2FsbGJhY2soU3RyaW5nKTsKKwogICAgIC8vIE9wZW4gcGFuZWwK
ICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzKEpTVmFsdWVSZWYpOwogICAgIHZvaWQgc2V0T3Bl
blBhbmVsRmlsZXNNZWRpYUljb24oSlNWYWx1ZVJlZik7CkBAIC00OTQsNiArNDk4LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CiAgICAgdm9pZCBzZXRNb2Nr
Q2FtZXJhT3JpZW50YXRpb24odW5zaWduZWQpOwogICAgIGJvb2wgaXNNb2NrUmVhbHRpbWVNZWRp
YVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKKyAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOwor
ICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCwgSlNWYWx1ZVJlZik7
CisgICAgdm9pZCBjYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygp
OwogCiAgICAgc2l6ZV90IHVzZXJTY3JpcHRJbmplY3RlZENvdW50KCkgY29uc3Q7CiAgICAgdm9p
ZCBpbmplY3RVc2VyU2NyaXB0KEpTU3RyaW5nUmVmKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAKaW5kZXggYjIyMWRhMTcwMzkyOTExYmE2MjVlNTc3YzhjZjkzY2Fl
YjM4ODc4ZC4uMjEzYjdlYjcxMzQ2ZjBlZmE0ZjE0OGNjM2RjNTk5YjA0NGEyZjEyNCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTgwNCw2ICs4MDQsMTAg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0ZvclRlc3Qo
Y29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QKICAgICAgICAgbV9jcmVhdGVkT3RoZXJQYWdlID0g
ZmFsc2U7CiAgICAgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgY2xlYXJBcHBsaWNhdGlv
bkJ1bmRsZUlkZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKKyNlbmRpZgorCiAgICAgY3JlYXRl
V2ViVmlld1dpdGhPcHRpb25zKG9wdGlvbnMpOwogCiAgICAgaWYgKCFyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKG9wdGlvbnMsIFJlc2V0U3RhZ2U6OkJlZm9yZVRlc3QpKQpAQCAtMTA4Nywx
MCArMTA5MSw2IEBAIGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRW
YWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBzZXRIaWRkZW4oZmFs
c2UpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgY2xlYXJBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXJUZXN0aW5nT3ZlcnJpZGUoKTsKLSNlbmRpZgotCiAgICAgaWYgKCFwbGF0Zm9ybVJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMob3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApAQCAtMzEyNCw2ICszMTI0LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyUHJl
dmFsZW50RG9tYWlucygpCiB7CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdD
YXRlZ29yeSgpCit7Cit9CisKICNlbmRpZgogCiBzdHJ1Y3QgQ2xlYXJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uc0NhbGxiYWNrQ29udGV4dCB7CkBAIC0zNzEzLDYgKzM3MTcsNDkgQEAgYm9vbCBU
ZXN0Q29udHJvbGxlcjo6aXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKSBj
b25zdAogICAgIHJldHVybiBXS1BhZ2VJc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5h
YmxlZChtX21haW5XZWJWaWV3LT5wYWdlKCkpOwogfQogCitzdHJ1Y3QgSW5BcHBCcm93c2VyUHJp
dmFjeUNhbGxiYWNrQ29udGV4dCB7CisgICAgZXhwbGljaXQgSW5BcHBCcm93c2VyUHJpdmFjeUNh
bGxiYWNrQ29udGV4dChUZXN0Q29udHJvbGxlciYgY29udHJvbGxlcikKKyAgICAgICAgOiB0ZXN0
Q29udHJvbGxlcihjb250cm9sbGVyKQorICAgIHsKKyAgICB9CisKKyAgICBUZXN0Q29udHJvbGxl
ciYgdGVzdENvbnRyb2xsZXI7CisgICAgYm9vbCBkb25lIHsgZmFsc2UgfTsKKyAgICBib29sIHJl
c3VsdCB7IGZhbHNlIH07Cit9OworCitzdGF0aWMgdm9pZCBpbkFwcEJyb3dzZXJQcml2YWN5Qm9v
bGVhblJlc3VsdENhbGxiYWNrKGJvb2wgcmVzdWx0LCB2b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBh
dXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29u
dGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgY29u
dGV4dC0+ZG9uZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOworfQorCitzdGF0aWMgdm9pZCBpbkFwcEJyb3dzZXJQcml2YWN5Vm9pZFJlc3VsdENhbGxi
YWNrKHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxJ
bkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4odXNlckRhdGEpOworICAgIGNvbnRl
eHQtPmRvbmUgPSB0cnVlOworICAgIGNvbnRleHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUo
KTsKK30KKworYm9vbCBUZXN0Q29udHJvbGxlcjo6aGFzQXBwQm91bmRTZXNzaW9uKCkKK3sKKyAg
ICBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAg
IFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbihUZXN0Q29udHJvbGxlcjo6d2Vi
c2l0ZURhdGFTdG9yZSgpLCAmY29udGV4dCwgaW5BcHBCcm93c2VyUHJpdmFjeUJvb2xlYW5SZXN1
bHRDYWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAg
IHJldHVybiBjb250ZXh0LnJlc3VsdDsKK30KKworCit2b2lkIFRlc3RDb250cm9sbGVyOjpzZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIHZhbHVlKQoreworICAgIEluQXBwQnJvd3Nl
clByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoVGVzdENvbnRyb2xsZXI6OndlYnNp
dGVEYXRhU3RvcmUoKSwgdmFsdWUsICZjb250ZXh0LCBpbkFwcEJyb3dzZXJQcml2YWN5Vm9pZFJl
c3VsdENhbGxiYWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7Cisg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQo
KTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRm
b3JtQWRkVGVzdE9wdGlvbnMoVGVzdE9wdGlvbnMmKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDRlNjUxMTI5ZWMyOTRmNmQ1YTU5YzQzNzFlMjk2
MzVhMWIxZjk5NGMuLjFjN2Y3NWQ2OWNmOGM0NTUzMDBiYTM0NmEwZTVjNTUxYzYyMjM2MTUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTI2MCw2ICsyNjAsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpOwogICAgIHZv
aWQgZ2V0UHJldmFsZW50RG9tYWlucygpOwogICAgIHZvaWQgY2xlYXJQcmV2YWxlbnREb21haW5z
KCk7CisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoKTsKKyAgICB2b2lkIHNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkKGJvb2wpOwogCiAgICAgV0tBcnJheVJlZiBvcGVuUGFuZWxGaWxl
VVJMcygpIGNvbnN0IHsgcmV0dXJuIG1fb3BlblBhbmVsRmlsZVVSTHMuZ2V0KCk7IH0KICAgICB2
b2lkIHNldE9wZW5QYW5lbEZpbGVVUkxzKFdLQXJyYXlSZWYgZmlsZVVSTHMpIHsgbV9vcGVuUGFu
ZWxGaWxlVVJMcyA9IGZpbGVVUkxzOyB9CkBAIC0yOTgsNiArMzAwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZpY2VzKCk7CiAgICAgdm9pZCBzZXRNb2NrQ2FtZXJhT3Jp
ZW50YXRpb24odWludDY0X3QpOwogICAgIGJvb2wgaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNl
bnRlckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbigpOwogCiAg
ICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0KFdLU3RyaW5nUmVmKTsKICAgICAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggMzIyNGYwOGFhZTQ4NDE4OWYxZDQy
MzVlMWU2YWY4MDZlZDEzNTcxNC4uYWY3MjMxZjgyNzljOTVmNWI1ZWNhY2ZiYWNjMTJjOGFiMGQ3
NzRlOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTc2
MCw2ICs3NjAsMTMgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9t
SW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLnNldFN0YXRpc3RpY3NTaG91bGRCbG9ja1RoaXJkUGFydHlDb29r
aWVzKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSkgeworICAgICAgICBBU1NFUlQo
V0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLQm9vbGVhbkdldFR5cGVJRCgpKTsKKyAgICAg
ICAgV0tCb29sZWFuUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihtZXNzYWdl
Qm9keSk7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZChXS0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSkpOworICAgICAgICByZXR1
cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2Fn
ZU5hbWUsICJSdW5VSVByb2Nlc3NTY3JpcHQiKSkgewogICAgICAgICBXS0RpY3Rpb25hcnlSZWYg
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihtZXNz
YWdlQm9keSk7CkBAIC04MDAsNiArODA3LDExIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRPcGVuUGFuZWxGaWxlVVJMcyhz
dGF0aWNfY2FzdDxXS0FycmF5UmVmPihtZXNzYWdlQm9keSkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiR2V0V2ViVmlld0NhdGVnb3J5IikpIHsKKyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLmdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgICAgICByZXR1cm47CisgICAgfQog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlNldE9wZW5QYW5lbEZpbGVVUkxzTWVkaWFJY29uIikpIHsK
QEAgLTEwMDIsNiArMTAxNCwxMSBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICBi
b29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkID0gVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLmlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7
CiAgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShpc01vY2tSZWFsdGltZU1l
ZGlhU291cmNlQ2VudGVyRW5hYmxlZCkpOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkhhc0FwcEJvdW5kU2Vzc2lvbiIpKSB7
CisgICAgICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uID0gVGVzdENvbnRyb2xsZXI6OnNpbmds
ZXRvbigpLmhhc0FwcEJvdW5kU2Vzc2lvbigpOworICAgICAgICByZXR1cm4gYWRvcHRXSyhXS0Jv
b2xlYW5DcmVhdGUoaGFzQXBwQm91bmRTZXNzaW9uKSk7CisgICAgfQogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
Q29ubmVjdE1vY2tHYW1lcGFkIikpIHsKQEAgLTE4NzAsNiArMTg4NywxMiBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKCkKICAgICBXS1Bh
Z2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
Lm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOwogfQog
Cit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgp
Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkIikpOworICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFt
ZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlKCkKIHsKICAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSk7CkBAIC0xOTQ4
LDcgKzE5NzEsMTMgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVByZXZhbGVudERv
bWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKQogICAgIFdLUmV0YWluUHRyPFdLTXV0YWJs
ZUFycmF5UmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlQXJyYXlDcmVhdGUoKSk7
CiAgICAgZm9yIChhdXRvJiBkb21haW4gOiBkb21haW5zKQogICAgICAgICBXS0FycmF5QXBwZW5k
SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhkb21haW4udXRmOCgpLmRhdGEoKSkpLmdldCgpKTsKK30KKwordm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmIHdlYlZpZXdDYXRlZ29yeSkK
K3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29y
eSIpKTsKICAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZUJvZHkgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYlZpZXdDYXRlZ29yeS51dGY4
KCkuZGF0YSgpKSk7CiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RD
b250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1l
LmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAppbmRleCA1MDMzN2Q2NzVkZTA5MGFkZGY1Yjc2YzgwMDcyYTE3ZmJhNGMx
M2U2Li5lYzRmNTk2NjJjN2I1YmUwMzY2MTUwNzJjMjIwNTk2MmU4NDg1NTY2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBkb21haW5zKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cyk7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYpOworICAgIHZv
aWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIAogICAgIHZvaWQgZGlkUmVt
b3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggZDNmMmVmMWJjMzJl
ZTBkZjM4MmU2MzJjYmQ1MzBhMDQ3ZjcyZjhmOS4uNmY5NTViMGRhYjFjNTVjNDkwZDZiNTJkNDM5
YjVjYWQ5NDZjNTllZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzU2LDYgKzM1NiwzMiBAQCB2b2lkIFRlc3RDb250
cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQogICAgIFtnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFpbnNGb3I6cGFyZW50
Vmlldy0+cGxhdGZvcm1WaWV3KCldOwogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRXZWJW
aWV3Q2F0ZWdvcnkoKQoreworICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWluV2ViVmlldygpOwor
ICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAgW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpw
YXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1dlYlZpZXdD
YXRlZ29yeSB3ZWJWaWV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgU3RyaW5nIGNhdGVnb3J5OworICAg
ICAgICBzd2l0Y2ggKHdlYlZpZXdDYXRlZ29yeSkgeworICAgICAgICBjYXNlIF9XS1dlYlZpZXdD
YXRlZ29yeUFwcEJvdW5kRG9tYWluOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiQXBwQm91bmRE
b21haW4iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVn
b3J5SHlicmlkQXBwOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiSHlicmlkQXBwIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIF9XS1dlYlZpZXdDYXRlZ29yeUluQXBwQnJvd3Nl
cjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkluQXBwQnJvd3NlciI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyOgorICAgICAg
ICAgICAgY2F0ZWdvcnkgPSAiV2ViQnJvd3NlciI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlV2ViVmlld0NhdGVn
b3J5KGNhdGVnb3J5KTsKKyAgICB9XTsKK30KKwogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5qZWN0
VXNlclNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCiB7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0g
YWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6IHRvV1RGU3RyaW5n
KHNjcmlwdCkgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1bWVu
dFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMDYwNWUxOGE2ZWE2NWE1NTYw
NmNmZDI3ZDVjZDM4OTlkNGZjMDZlLi4zMDZhMjczOWQxYzExNGYxMjMxZThiY2IzMjM2MTQ1MzY5
YTYzZGEwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDItMjAgIEthdGUgQ2hlbmV5ICA8
a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMg
c2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNzaW9ucworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDI2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81OTQzNDAwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCB0d28gdGVzdHMuIE9uZSB0byB0ZXN0IHRoZSBwcm9wZXIgY2F0ZWdvcml6
YXRpb24gb2YgYXBwLWJvdW5kCisgICAgICAgIG5hdmlnYXRpb24sIGFuZCBvbmUgdG8gY2hlY2sg
dGhhdCBzd2l0Y2hpbmcgc2Vzc2lvbnMgb2NjdXJzIHdoZW4KKyAgICAgICAgbmF2aWdhdGluZyB0
byBhbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIFNpbmNlIHRoZXNlIHRlc3RzIHVzZSBJ
VFAgdG8gc2V0IHVzZXIgaW50ZXJhY3Rpb24sIHRoZXkgc2hvdWxkIG9ubHkKKyAgICAgICAgYmUg
cnVuIG9uIGlPUyBhbmQgbWFjLXdrMi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21h
aW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlv
bi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRp
b24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMjAtMDItMjAgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBs
ZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIF0gY3J5cHRvL3N1YnRsZS9yc2EtaW5kZXhlZGRi
Lmh0bWwgaXMgZmxha3kgdGltaW5nIG91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGFlZjdhMGE5
YjQwOTRjZTI2NzUxNjhlZmQzZTdkMTg2MzUxMWEzNDMuLjdjNGIzOTdkMmY1MzYyNWVkZjRhYjE2
Zjc1MWJjOTg2ZTU3YTcwYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU1LDYgKzE1NSw4IEBA
IGh0dHAvdGVzdHMvbmF2aWdhdGlvbi91c2VyYWdlbnQtcmVsb2FkLnBocCBbIFNraXAgXQogc3Rv
cmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0
bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwgWyBTa2lw
IF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4tdGV4dC1maWVsZC13aGVuLXR5
cGluZy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvIFsg
U2tpcCBdCisKIAogIyBPbmx5IE1hYyBhbmQgaU9TIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gb2Yg
VUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzaygpLgogZmFzdC9oYXJuZXNzL3Vpc2NyaXB0
Y29udHJvbGxlciBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21h
aW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0ZTNlNjlmNTdkNzI5MjBhYmUzYzk3ODZiNTI2
MjhjZDllNjU4ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw3IEBACitUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21haW4gZ2V0cyBjbGFzc2lmaWVk
IGFzIHNvCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFN1Y2Nlc3MsIGRv
bWFpbiBjbGFzc2lmaWVkIGFzIEFwcC1Cb3VuZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4uaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
ZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ1YzBlN2RiNGFkZDJkYTFjYjc2MmYzODBiMzdiZWNi
YmY2NjgyMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpJc0luQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyPXRl
c3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21haW4gZ2V0cyBj
bGFzc2lmaWVkIGFzIHNvJyk7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAg
ICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5jdGlvbiBhc2tGb3JX
ZWJWaWV3Q2F0ZWdvcnkoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFdlYlZpZXdDYXRl
Z29yeShmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkg
PT0gIkluQXBwQnJvd3NlciIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlN1Y2Nl
c3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEFwcC1Cb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZhaWx1cmUsIGRvbWFpbiBub3Qg
Y2xhc3NpZmllZCBhcyBBcHAtQm91bmQuIik7CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0
IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7CisgICAgICAgIGZ1
bmN0aW9uIG5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFpbigpIHsKKyAgICAgICAgICAgIGRvY3Vt
ZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDIiOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFzaCAhPSAiI3N0ZXAyIikgeworICAg
ICAgICAgICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdvcnkoZnVuY3Rpb24gKGNhdGVnb3J5
KSB7CisgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9ICJBcHBCb3VuZERvbWFpbiIpIHsK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbHVyZSwgc3RhcnRpbmcgY2F0ZWdv
cnkgbm90IEFwcEJvdW5kRG9tYWluIik7CisgICAgICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
bm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuYXZpZ2F0
ZVRvTm9uQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgYXNrRm9yV2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgIH0KKyAgICA8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNz
aW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24t
b24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZmU4YTYzZTQ3N2E5YTBkY2MwMmQ2Mjc1ZWQ2YWIxMGM1Yjc5ZGYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRj
aC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9u
IHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIFNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHNlc3Np
b24gY29va2llLgorUEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tp
ZS4KK1BBU1MgT3JpZ2luIGhhcyBhcHAtYm91bmQgc2Vzc2lvbiBhZnRlciBuYXZpZ2F0aW9uLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0
Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1v
bi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzhjYmEw
YjhhZDYyNGZhOGY5NGNjYTI0NTMyNjUzNDM1YmEzZjMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9u
LW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sCkBAIC0wLDAgKzEsMTE0IEBA
Cis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOklzSW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ9dHJ1ZSBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI9
dGVzdGlkZW50aWZpZXIgXSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy9yZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+Cis8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBz
ZXNzaW9uIGlzIHN3aXRjaGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYW4gYXBwLWJv
dW5kIGRvbWFpbi4iKTsKKyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGFw
cEJvdW5kT3JpZ2luID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qgbm9uQXBw
Qm91bmRPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzZXNzaW9u
Q29va2llTmFtZSA9ICJzZXNzaW9uQ29va2llIjsKKyAgICBjb25zdCBwZXJzaXN0ZW50Q29va2ll
TmFtZSA9ICJwZXJzaXN0ZW50Q29va2llIjsKKyAgICBjb25zdCB0d29NaW51dGVzSW5TZWNvbmRz
ID0gMTIwOworCisgICAgZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZSgpIHsKKyAgICAgICAgZG9j
dW1lbnQuY29va2llID0gc2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LyI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gc2V0UGVyc2lzdGVudENvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQu
Y29va2llID0gcGVyc2lzdGVudENvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsgTWF4LUFnZT0iICsg
dHdvTWludXRlc0luU2Vjb25kcyArICI7IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nv
b2tpZXMoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUsIHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2ll
KSB7CisgICAgICAgIGxldCBoYXNTZXNzaW9uQ29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIi
KS5pbmNsdWRlcyhzZXNzaW9uQ29va2llTmFtZSksCisgICAgICAgICAgICBoYXNQZXJzaXN0ZW50
Q29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhwZXJzaXN0ZW50Q29va2ll
TmFtZSk7CisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmIGhhc1Nlc3Np
b25Db29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRo
ZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVNlc3Npb25D
b29raWUgJiYgIWhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNo
b3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBl
bHNlIGlmICghc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgaGFzU2Vzc2lvbkNvb2tpZSkgewor
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgc2Vzc2lv
biBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hK
U1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4n
dCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworCisKKyAgICAg
ICAgaWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUp
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0
ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29r
aWUgJiYgIWhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNo
b3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAg
fSBlbHNlIGlmICghc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENv
b2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0
aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZh
bHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRlc3RQYXNz
ZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhlIHBlcnNpc3RlbnQgY29va2ll
LiIpOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgIHN3aXRjaCAo
ZG9jdW1lbnQubG9jYXRpb24uaGFzaCkgeworICAgICAgICAgICAgY2FzZSAiIjoKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKHRydWUsIGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9y
aWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJUZXN0IGlzIG5vdCBzdGFydGluZyBvdXQgb24gIiArIGFwcEJvdW5kT3JpZ2luICsgIi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZSB0ZXN0IG1hbnVhbGx5IHNl
dHMgdGhlIGluQXBwQnJvd3NlclByaXZhY3kgZmxhZyBpbiB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIE5ldHdvcmsgcHJvY2Vzcywgd2UgbmVlZCB0byByZS1lc3RhYmxpc2ggYW4gYXBw
LWJvdW5kIHNlc3Npb24gYnkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hdmlnYXRpbmcg
YXdheSB0aGVuIGJhY2sgdG8gdGhlIGFwcC1ib3VuZCBEb21haW4gYmVmb3JlIHNldHRpbmcgY29v
a2llcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBu
b25BcHBCb3VuZE9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lv
bi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCNzdGVwMSI7CisgICAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAxIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVu
dC5sb2NhdGlvbi5ocmVmID0gYXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwj
c3RlcDIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAy
IjoKKyAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBhcHBC
b3VuZE9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAyIGlzIG5v
dCBvbiAiICsgYXBwQm91bmRPcmlnaW4gKyAiLiIpOworICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihhcHBCb3VuZE9yaWdpbiwgdHJ1
ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFNlc3Npb25Db29raWUoKTsK
KyAgICAgICAgICAgICAgICAgICAgc2V0UGVyc2lzdGVudENvb2tpZSgpOworICAgICAgICAgICAg
ICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF0
ZXN0UnVubmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJPcmlnaW4gZGlkIG5vdCBzdGFydCB3aXRoIGFwcC1ib3VuZCBzZXNzaW9u
LiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmlu
aXNoSlNUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBzZXNzaW9uLiIpOworICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmln
aW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlv
bi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDMiOworICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID0gIiNzdGVwNCIKKyAgICAgICAgICAg
ICAgICBjaGVja0Nvb2tpZXMoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoZG9j
dW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBub25BcHBCb3VuZE9yaWdpbikKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAzIGlzIG5vdCBvbiAiICsgbm9uQXBwQm91bmRPcmln
aW4pOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJs
b2NraW5nKHJ1blRlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSAiI3N0ZXA0IjoKKyAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gYXBwQm91bmRPcmlnaW4g
KyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10
by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDUiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXMo
dHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHRlc3RSdW5uZXIuaGFzQXBwQm91bmRT
ZXNzaW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9yaWdpbiBoYXMgYXBw
LWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBoYXMgbm8gYXBwLWJvdW5k
IHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhh
c2guIik7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNU
ZXN0KTsKKyAgICAgICAgfQorICAgIH0KKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk4YWVkYzkzNzNh
MzIxNGQ5MDEwMjU0OTM4NDU0MDZlOWYwZjFkZjAuLjlhNDVhZWFhOTY1NzQ4YjVmODRlYTZhNDQ1
NGNkOGU0MzU0OGU3NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCkBAIC0yNzk3LDYgKzI3OTcsOSBAQCBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvZGVueS1z
dG9yYWdlLWFjY2Vzcy11bmRlci1vcGVuZXItaWYtYXV0by1kaXNtaXNzLWRhdGFiYQogaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mYWxzZS1ieS1kZWZhdWx0LWRh
dGFiYXNlLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZmFsc2UtYnktZGVmYXVsdC1lcGhlbWVyYWwtZGF0YWJhc2UuaHRtbCBbIFBhc3Mg
XQogCisjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMsIG9ubHkgd29yayBmb3IgaU9T
IGFuZCBNYWMgV0syLgoraHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3Mg
XQorCiAjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMgc2luY2UgdGhleSBvbmx5IHdv
cmsgb24gaU9TIGFuZCBNYWMsIFdLMi4KIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RyaXAtcmVmZXJy
ZXItdG8tb3JpZ2luLWZvci10aGlyZC1wYXJ0eS1yZWRpcmVjdHMtaW4tcHJpdmF0ZS1tb2RlLmh0
bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RyaXAtcmVmZXJyZXItdG8tb3JpZ2lu
LWZvci10aGlyZC1wYXJ0eS1yZXF1ZXN0cy1pbi1wcml2YXRlLW1vZGUuaHRtbCBbIFBhc3MgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDIw
MmUxZjNlZjgxYTgzMDk5ODk5NzMxN2NhZmM5ZTAzMWU3ZThhMDUuLmI3NzMwOGU4MDJjODJiMzAw
Zjg5ZGNlNDhmYzZlMzY4NTU4MDdhNzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU4LDYgKzU4LDggQEAgd2Via2l0Lm9yZy9iLzE3NTYx
MSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC9hbGxvd3Bh
eW1lbnQKIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50cmVxdWVzdC9zZXR0aW5nLWFsbG93cGF5bWVu
dHJlcXVlc3QtdGltaW5nLmh0dHBzLnN1Yi5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvMTc1
NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93
cGF5bWVudHJlcXVlc3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0Lmh0dHBzLnN1Yi5odG1s
IFsgU2tpcCBdCiAKK2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0K
KwogIyBza2lwIGluIGZhdm9yIG9mIHRlc3RzIGluIGh0dHAvdGVzdHMvcGF5bWVudHJlcXVlc3QK
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L3BheW1lbnQt
cmVxdWVzdC1hYm9ydC1tZXRob2QuaHR0cHMuaHRtbCBbIFdvbnRGaXggXQogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LXNob3ct
bWV0aG9kLmh0dHBzLmh0bWwgWyBXb250Rml4IF0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391418</attachid>
            <date>2020-02-21 11:56:15 -0800</date>
            <delta_ts>2020-02-21 12:09:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200221115614.patch</filename>
            <type>text/plain</type>
            <size>120731</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOWNhNTM1YWMzMTIxNjIy
MWM3ZjcwN2VjZmRlNzFjMzNkZTUyNDQuLmI2OWU4NWE4MjIzM2Q1N2Y2ZmFjMGUyNTVjOWQxOGZj
ZDU4NTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sCisKKyAgICAgICAgU3VwcG9ydHMgbmV0d29yayBzZXNzaW9uIHN3aXRjaGluZyBm
b3IgbmF2aWdhdGlvbnMgdG8gYXBwLWJvdW5kCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcmVxdWly
ZXMgdXBkYXRpbmcgdGhlIFdlYlBhZ2Ugd2hlbiBhIG5hdmlnYXRpb24gb2NjdXJzCisgICAgICAg
IHRvIGNoZWNrIHdoZXRoZXIgaXQgaXMgdG8gYW4gYXBwLWJvdW5kIGRlc3RpbmF0aW9uLiBJbiBj
YXNlIG9mIGEKKyAgICAgICAgcHJvY2VzcyBzd2FwLCB0aGlzIGhhcyB0byBiZSBkb25lIGJvdGgg
aW4gUG9saWN5RGVjaXNpb25TZW5kZXIgYW5kCisgICAgICAgIGluIHRoZSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEgYW5kIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdAor
ICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG11c3Qgc2VuZCB0
aGUgSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBmbGFnIHRvIHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6Cisg
ICAgICAgIFBhc3NlcyB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBmbGFnIHRvIHRo
ZSBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91
bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBBIGxhcmdlIHBvcnRpb24g
b2YgdGhpcyBwYXRjaCBpcyB0aHJlZSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIG9uZSBzZXRzIAor
ICAgICAgICB0aGUgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIGZvciB0aGUgdGVzdCBjYXNl
LCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiwgYW5kIG9uZQorICAgICAgICBj
aGVja3MgdG8gbWFrZSBzdXJlIHRoZSBjYXRlZ29yeSB3YXMgY29ycmVjdGx5IHNldCB0byBhcHAt
Ym91bmQgZG9tYWluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgUGFzc2Vz
IHRoZSBJbi1hcHAgYnJvd3NlciBwcml2YWN5IGZsYWcgdmFsdWUgZnJvbSBOU1VzZXJEZWZhdWx0
cyB0byB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscyk6CisgICAgICAg
IENyZWF0ZXMgYSBuZXcgc2Vzc2lvbiAob3IgcmV0dXJucyB0aGUgZXhpc3RpbmcgYXBwLWJvdW5k
IHNlc3Npb24pIGlmCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIGlzIGFwcC1ib3VuZC4gVGhpcyBp
cyB0aGUgbWFpbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICBJbiB0aGUgY2FzZSBvZiBh
IHByb2Nlc3Mgc3dhcCwgd2UgbXVzdCBhZGQgdGhlCisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gYm9vbGVhbiBpbiBMb2FkUGFyYW1ldGVycyB0byBlbnN1cmUgaXQgZ2V0cyBz
ZW50IHRvCisgICAgICAgIHRoZSBuZXcgV2ViUGFnZSB2aWEgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5k
ZXI6OnNlbmQpOgorICAgICAgICBGaXhlcyBhIGNhcGl0YWxpemF0aW9uIGVycm9yLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgZGV0ZXJtaW5lIGlmIHRoZSBjYXRlZ29yeSBpcyBhcHAtYm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrIGFzIGl0IGlz
IGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2ZGRjODNhZWI2OTY3YzhlZWI4YzE4ZmQwNmE5MTIu
LjgwNTBkMTFmZjhlNzE3ZTE5NzVhNjRiYmYwNGJlNmU1NmRlMGM3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBh
cmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJhY2tlcik7CisgICAgcmV0dXJuIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxk
UHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0
ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTc0ZDMzYTgxZjYyZDQ1ODA2YjY4OTVm
ZjNiYWVjYmZjNTY2YTE3Li4xYmY4NDc1NzFmZTlkMGFjNmJlMGYwZGU5MTYwM2JiYzJiNmNkNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
KyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2JjYzFmY2M3ZTQ4MC4u
MzRkY2IyYmYyNGVhOTczMzNlMWEzZDBkNzY4YjBiM2I1ZjdhY2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MDMsNCArMjYw
MywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4MzRmNmVlNTdj
MmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zNDJkNmE2YmU5MzI2NTQyNWQ1ZGQyOWQ3ODli
NmU1MTgxOGNlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29uZHMgc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNo
VGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMwN2Vm
NWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0N2Ji
MzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBIYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFhOTBl
MzAxOWU3NTM2Li41NjI5N2I2NGIxMjMxMmYyZGY2YjZhMzg2YjE1YmM5M2ZlZjI2NDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2RlciA8
PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlm
ICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2
YmY2NDQ5NTNhLi5mMjIwMjY5Y2FkODE0ZWVjYjhlYWZiNDkzM2EzZmQ5YzllOWJlMTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lz
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisg
ICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmYzYWJkOTkzODkxZTdiYTA4ZGZmOGEy
M2JlN2YwOWI4YWY5MzgzNS4uZjU5OGQ3OTY2ODkwZTc3ZGQxMTRjMTJkN2ZhZTE2MzU2Y2Q1YzU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0
byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDhiMGMxY2E4YzUzZWY2YmYz
MWRjZDQwZGQzYTk2NWNmZWU2ZTVjODguLmI1ODNmMjliMjk1NDg4YTAwYzAxZWI1OTAwOGVkZTdj
ZWMxNWUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sKSB7IH0KICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOwogICAgIHZvaWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAyMWZjODY5YmNkODJjMjk1Y2I2NDU2NTQ0MTA3NThjMjU5Y2Y0NWMxLi5hMDM0NmQwNzMzNjIy
MDdmMGU2OWY4M2IwN2Y3NDMyNzhhN2RhYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBlbmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CisgICAgZW5jb2RlciA8PCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OwogfQogCiBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yNjksNiArMjcwLDExIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2Rl
ciA+PiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29u
bmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxi
b29sPiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGRlY29kZXIgPj4gaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZDsKKyAgICBpZiAoIWlzSW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgKnNlc3Npb25JRApAQCAtMzE0LDYgKzMyMCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgLCBX
VEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKKyAgICAgICAgLCBXVEZN
b3ZlKCppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogICAgIH19OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzJmNzUyNjc1ZWQ4N2I4MjIxMDIxZTA2YjZhOGEz
YjVmNDc4YzkwNi4uZThlNmUxOThkZDk3MzZmMzgzMjc0MWQxZTkxZjRiNWM2YTRkOTFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBmNDgzMTlhNzFkOTI1OThjMmQxNjBhNTBiZjg2NDdlZTdiYmE2YTc0Li41ZWNlMDE4ZDRkNjdk
MWEzNDViYjU3MGRlYzVhYmRlNzFjYWQ4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw5
ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNr
Q29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlm
ZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFn
ZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CiAgICAgfQog
CiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZp
bmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VS
TFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNl
NmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uYWIzMDZmNjRiNzA3ODE0ZDk3NDRmMjMwYWIwNDk5MjA1
Y2ZhNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0
cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSkpCisgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAppbmRleCA0YWQyYzEwMWJlN2E5ZTc5ZjhkMzUwMjY1ZDc4OGMzOGQwMmU1ODU4Li5kYTYx
ZmNjMDNkZTNhMDhlNDFiZDFmNTdiNzQ5NzMwM2U2YWM3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApA
QCAtOTMsMTQgKzkzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25XcmFwcGVy
JiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGJvb2wgaGFzQXBwQm91bmRT
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2FwcEJvdW5kU2Vzc2lvbjsgfQog
CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi5lZmRhMDA3ZTEwNzg5YzYy
NzBkZTNkZGQ2NGUyNjRlOGUzOWU0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkgewpAQCAtMTE5Nyw2ICsxMTk4LDkgQEAgU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmICht
X2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQorICAgICAgICByZXR1cm4g
YXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKwogICAgIHN3aXRjaCAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7CkBAIC0xMjA5LDYgKzEyMTMsMzIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIK
ICAgICB9CiB9CiAKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3Vu
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBtX2Fw
cEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOworICAgICAgICBt
X2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRp
b24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAg
ICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlKTsKKyAgICB9CisKKyAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0byBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKKyAgICAgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdl
LiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5n
IGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7Cisg
ICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKKyAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb247CisgICAgICAgIH0KKyAgICB9IChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisKKyAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7Cit9CisKIFNlc3Npb25XcmFwcGVyJiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCiB7CiAgICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzXSB7CkBAIC0xMjgyLDYg
KzEzMTIsMTMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2Vs
KCkKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9CiAgICAgbV9pc29sYXRlZFNlc3Npb25z
LmNsZWFyKCk7CisKKyAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgW21fYXBw
Qm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxp
ZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBb
bV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
biBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTI5NSw2ICsxMzMyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
biBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0
KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50
cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50
cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vz
c2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTky
OWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9j
a0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAg
aWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjI2MTIyMzY5
ZTFjMjM0NmY3OWZkNjY3OGNhZDYwNTUwZWM4YjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC02OSw3ICs3MCw4IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgeyBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0KKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDcxNWM1MjEyMmYwMTlhMjk2NDli
MWExZTU4YWFhMDljZjk3ODVkMmUuLjY0ZjRlMmQ2MDIyMGY2NjVlMjAwYTU1M2QyN2I1YTcwY2E4
NDM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzEsOCArMzEs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBZZXMsIE5vIH07CisKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9
OwpAQCAtNDIsNiArNDUsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwg
bmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1
OSwxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29k
ZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw5ICs4NSwyMCBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92
ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RG
TW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwotCisgICAgICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1v
dmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdU
Rk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKICAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sCisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllcywKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGZmZmUxZTA5YWI2Yzhk
NjM5MmEzNjdhYjAyYzYxYS4uNGUwNDNjMDA1NTg4YmY3ODYwYzI3NGYzY2Q5OGZlNzhmY2Y3NDY4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjcsNiArNTI3LDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzQXBwQm91bmRTZXNzaW9uKFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzQXBwQm91bmRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CkBAIC02OTYsMyArNzAzLDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyOGQ2YTg3N2Q2Yjc3NWE4ODNhNGUwZGRjZTAwOGMxMWE1YWZmNzY3Li5lODZhNmY5MDc5ZWE1
Nzk5OWZmN2ZmNTQ2ZTgyODk1OTc1OTRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE3LDYgKzExNyw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uKSh2b2lkKiBmdW5jCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiko
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVIYXNB
cHBCb3VuZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24sIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKQEAgLTE1Nyw2ICsxNTksOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRAog
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQzMmMyMDdjODFmMTQzM2VkYjM0OTVmY2M1N2FjNTcyNWM4ZTI3NmEuLjE3OWNkOTcx
YTIzZmUyNWE0YTM2M2RkZDcyY2QyZGEwNTBlMjhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDcz
LDYgKzQ3MywyMiBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29y
eVdlYkJyb3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIodG9XS1dlYlZpZXdDYXRlZ29yeSh3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53
ZWJWaWV3Q2F0ZWdvcnkoKSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2YzNTY5OTBh
ZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpAQCAt
NjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0V2Vi
Vmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEzOTExNTdh
Li40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZjYWQuLjAy
YmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlh
cnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEyNWFlNDQ4
NDFlMmMzZWU5NjJiNzNiOTQuLmQzOGVkNTU3YTg3ZTA1ODNiMjMzYWViOTViN2NhZTVkZTU5ZGZi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAot
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0
aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQs
IG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChu
YXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9u
LmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
RnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAh
PSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGIxMWRlMWM0MjU5MGM2MGNmMWFmMDY4
M2M3NzI1ODZmNmFiYTM2YjQuLjEwMmEzODZjMWY0MzhiYTk1ZjUwOWQ0NDQ3ZTY2YjcyOGNjYzkx
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtOTEsOCArOTEsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNv
bnRleHRJREZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4
dElERm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERh
dGEoQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNl
VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBs
b2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAg
IHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZv
aWQgZ29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5j
ZWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGYw
Yjc4NTkyNzliNDFmYzE3NWJkNGVjM2Y1YjEzZGE5ODI3NTZkOS4uMzZhZGYwZWI3ZWQ5MzYzNmY5
MjZjYjk5NGIyNGQ5ZGU2NTIzYjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0yNzQsNiArMjc0LDEyIEBACiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJl
c3VsdC5oIgogI2VuZGlmCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUg
PFdlYktpdEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisjZGVmaW5l
IFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hh
dCBzdHJhdGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1F
UkdFX1dIRUVMX0VWRU5UUyAxCiAKQEAgLTEyNjQsMTEgKzEyNzAsMTEgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTaG8KICAgICBpZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50
TmF2aWdhdGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHko
cHJvY2VzcygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRp
b24iX3MpLm1vdmVUb1VuaXF1ZVB0cigpKTsKIAotICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0
KCksIFdURk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJE
YXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZp
Z2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7CiAKQEAgLTEyOTAsNiArMTI5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
CiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5
KCk7CiAgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24u
bG9ja0JhY2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KCk7CisgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJv
eEV4dGVuc2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJjZURp
cmVjdG9yeVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAog
ICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwpAQCAtMTM4NCwx
MSArMTM5MSwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRVc2VG
b3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRp
b24tPnNldEZvcmVncm91bmRBY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3Vu
ZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykubW92ZVRvVW5pcXVlUHRyKCkpOwogCi0g
ICAgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBz
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRh
LCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVs
bG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRp
b247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIApAQCAtMTQwOCw2ICsxNDE1LDgg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0g
VXNlckRhdGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0
KCkpOwogICAgIGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5ID0gc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1ldGVycy5p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAg
ICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CkBA
IC0zMDUyLDEwICszMDYxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUG9saWN5RGVjaXNpb25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24p
KSk7CiAgICAgfQogCi0gICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNp
b24pCisgICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgcG9saWN5RGVjaXNpb24pCiAgICAg
ewogICAgICAgICBpZiAobV9zZW5kRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRGdW5jdGlv
bihXVEZNb3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihX
VEZNb3ZlKHBvbGljeURlY2lzaW9uKSk7CiAgICAgfQogCiAgICAgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTMwNzAsNiArMzA3
OSwzMSBAQCBwcml2YXRlOgogICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiB9OwogCisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJvdW5kRG9tYWluKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7CisgICAgV0VCX1BBR0VfUFJP
WFlfQURESVRJT05TCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5Ojpp
c0FwcEJvdW5kRG9tYWluKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBpc0Fw
cEJvdW5kRG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpOworfQorCit2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBj
b25zdCBVUkwmIHJlcXVlc3RVUkwpCit7CisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmlzSW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQoKSAmJiBpc01haW5GcmFtZSkgeworICAgICAgICBpZiAoIWlz
QXBwQm91bmREb21haW4ocmVxdWVzdFVSTCkpIHsKKyAgICAgICAgICAgIG1fY29uZmlndXJhdGlv
bi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKKyAg
ICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluOjpObzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkFw
cEJvdW5kRG9tYWluKTsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0g
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9s
aWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9u
U2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURh
dGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC0zMTU3LDcgKzMxOTEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24o
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVk
UG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZp
Z2F0aW9uLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgV2lsbENvbnRpbnVlTG9hZEluTmV3
UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBz
ZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQo
KSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24g
eyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxODAsNyArMzIxNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6
TmF2aWdhdGlvbioKICAgICAgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSB7
IH07CiAgICAgfQogCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5p
ZGVudGlmaWVyKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOworICAgIHNl
bmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
IH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0
aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRl
bnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMyNTcsOSArMzI5MSw5IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2Yg
cmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAgIEFT
U0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBp
ZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQot
ICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vi
c3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXpl
KCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2Rpbmcs
IHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCks
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFn
ZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCks
IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5
cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1
YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1
ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1
ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1
ZXN0KCkgfSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcykpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAgIG1faW5z
cGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9u
YWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNDkzOCw4ICs0OTcyLDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1l
KGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCi0gICAgYXV0
byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQ
YWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0g
KGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5l
cklELCBQb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xp
Y3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQs
IGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHBv
bGljeURlY2lzaW9uKSB7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNp
c2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0
eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdU
Rk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELApAQCAtNDk2Myw5ICs0OTk3
LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYgKG5hdmlnYXRpb25JRCAmJiAh
ZnJvbUFQSSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3Qo
dHJhbnNhY3Rpb24pOwogCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihmcmFt
ZS5pc01haW5GcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmICghY2hlY2tVUkxSZWNl
aXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVxdWVzdC51cmwo
KSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdu
b3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91
dHNpZGUgdGhlIHNhbmRib3giKTsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9u
IHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9h
ZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lz
aW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0p
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTkyLDcgKzUyMjgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eQogICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1
ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRp
cmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYg
dGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRo
ZSBsb2FkLgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRp
ZmllcigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdU
Rjo6bnVsbG9wdCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXIt
PmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rp
b246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCkBAIC01MjA5LDggKzUyNDUs
OCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZy
YW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6
Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJy
b3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIFBvbGljeURl
Y2lzaW9uKSB7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pKTsKKyAg
ICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZp
ZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJ
RCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJ
RCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9w
dCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTUyNTgsOCArNTI5NCw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NF
UlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAot
ICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRp
ZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUo
cHJvY2VzcyldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lSUQsIGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKKyAgICAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3
ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3Mp
XSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBs
aXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAg
ICAgICAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmln
YXRpb24uZ2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzkxZTQ5NjI1MzRlMTk2ZjhmY2MzM2VlZmFh
ZTk1ZTQwODFkMWNhMC4uYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3ZGUzZGJiNzU0ZjZjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MTMsOCArMTYxMyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYp
OwotICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEs
IFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRp
b24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNv
cmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2
b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZy
YW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LApAQCAtMjI1MSw2ICsyMjUxLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRy
eUNsb3NlVGltZWRPdXQoKTsKICAgICB2b2lkIG1ha2VTdG9yYWdlU3BhY2VSZXF1ZXN0KFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1
cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgICAgIAorICAgIGJvb2wgaXNBcHBCb3VuZERv
bWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIGJvb2wg
aXNBcHBCb3VuZERvbWFpbihjb25zdCBVUkwmKSBjb25zdDsKKyAgICB2b2lkIHNldElzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJik7CisgICAg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAgICAg
Y29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV93ZWJQYWdlSUQ7CkBAIC0yNzM0LDYgKzI3MzksOCBAQCBwcml2YXRlOgogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZpbmlz
aERvY3VtZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgorICAgICAgICAKKyAg
ICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGUxNjUx
YzgzMjFiYTUzY2I4NzI5ZjVjZjM1ZWM3OTM4NzUxYzk4MGMuLjRjNGZiODU1YmFiZjE5MzNiNWU4
MzZjZTJlNzVkMTdmMDZkNTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KQEAgLTE0NSw2ICsxNDUsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRl
RGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29y
a0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGJvb2wgc2hvdWxkSW5jbHVk
ZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlzU2FmYXJpOworICAgIGJvb2wg
aXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5jZXNL
ZXk6OmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpXV07CisgICAgCiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVyczsK
ICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IHsKICAgICAgICAgbV9z
ZXNzaW9uSUQsCkBAIC0xNzgsNiArMTgwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMg
V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+
dGVzdFNwZWVkTXVsdGlwbGllcigpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnN1cHByZXNz
ZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpLAogICAgICAgICBtX2NvbmZp
Z3VyYXRpb24tPmFsbG93c1NlcnZlclByZWNvbm5lY3QoKSwKKyAgICAgICAgaXNJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZAogICAgIH07CiAgICAgbmV0d29ya2luZ0hhc0JlZ3VuKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAKaW5kZXggYmRiNzIwMDFiMmE3MzRjOTViMmY1ZjRlZjMyN2FiMTViY2YzYzZh
Mi4uNDRiYWJiYTkzZTUwODE3OTU4NDJkMmYwMmMzNzc5NmFiN2Q1ZjQ1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKQEAgLTIyNTUsNCArMjI1NSwyOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3Jl
OjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgog
Cit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGZvciAo
YXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byog
bmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAg
ICAgICAgbmV0d29ya1Byb2Nlc3MtPmhhc0FwcEJvdW5kU2Vzc2lvbihtX3Nlc3Npb25JRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29s
cygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
ICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29s
cygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5u
ZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtwcm9jZXNzUG9vbCwg
Y2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgK
aW5kZXggZjA4MjlmMTJiNTcwNDc5NjkxMGE0NjljNWE4ZTcyMjAxYTUxMjk1ZS4uN2ZhYTRiNTky
NjVhZjNlZmQ0MWNmMGI0MWIzNWQxM2EyNjEyMzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjkzLDYg
KzI5Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3Jp
cHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxX
ZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0
cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+
JiYgYXBwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzNTdlMjJhOGZmYmUyY2M0NDA2Y2U1ODFlZGI1
YjVhZWRhYTYyZjMuLjczNTdmNTRkOTVjZjEyMjRiZTQ2Y2UzZGEzMjM3YThjYWJiZjFlZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTMyNiwxNCArMzI2LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VM
CiAgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNw
b25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwog
ICAgIH0KKyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IGZyYW1lID8gdG9X
ZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpIDogbnVsbHB0cjsK
KyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2Fk
ZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlmICh3ZWJQYWdlKQorICAg
ICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFn
ZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgbG9hZFBhcmFtZXRlcnMu
bWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CiAgICAgICAg
IC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllciwgdGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCB1c2luZyB3
ZWJQYWdlSWQuCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFt
ZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKSk7
Ci0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFt
ZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIHdlYlBh
Z2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgICAgICBpZiAo
d2ViUGFnZSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7
CiAgICAgfQpAQCAtNjAxLDYgKzYwNCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAg
ICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3Vy
aXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMu
b3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CisgICAgCisg
ICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisK
ICAgICBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBh
cmFtZXRlcnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBAIC02NjgsMTMgKzY3NSwxNiBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVz
cG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsK
ICAgICB9CiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUsIGxvYWRQYXJhbWV0ZXJz
KTsKLQorICAgIAorICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxv
YWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUg
PSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgp
IDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMu
aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKTsKKyAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAg
IGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgp
LnVybCgpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29y
a1Byb2Nlc3MuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAg
V2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRl
ckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IHdl
YkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgaWYgKHdlYlBhZ2UpCiAg
ICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3
ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEyMTJlZWFiNTcwN2FkZWUxZTY3NjVkYTJm
ZTY5YjNkZTc3YzI5ZWIuLjk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUt
PnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZy
YW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgaWRlbnRp
ZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKICAgICAgICAgY2FuU2hvd1Jl
c3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0
ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24s
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKQEAgLTk5MywxMSArOTkzLDExIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9j
dW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5y
ZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YS5nZXQoKSkuZ2V0KCkpKSwKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikp
KSB7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVu
ZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZp
ZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIHsgfSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURl
Y2lzaW9uIHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24ucG9saWN5
QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKKyAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24uaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9uLCAwLCBwb2xpY3lE
ZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAoIXdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RnJhbWUoY29yZUZyYW1lKSwKICAgICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9h
ZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VS
ZXF1ZXN0KCksIHJlcXVlc3QsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1
ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpLCBsaXN0ZW5lcklEKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJ
ZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6
SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
Y2FuY2VsUG9saWN5Q2hlY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCBjMDU0ZDUxOTg0YzgzNjI1N2QxNWNmNzUxMWRjZjI1MjViNzZhYmI1
Li4wNzA5NDI1N2NkMWVhZjFiNmUyNzk5MjU0NjkzNmM5OTg5ZjRiOTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU3MCw2ICsxNTcwLDgg
QEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBM
b2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChM
b2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogeworICAgIHNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1f
cGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKQEAgLTE2
MDQsOCArMTYwNiwxMCBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRp
bmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVm
ZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJs
ZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYg
dW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogeworICAgIHNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7
CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVu
ZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTE2MzIsNyArMTYzNiw3IEBAIHZv
aWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIAog
ICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1l
dGVycy5kYXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNl
VVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBh
cmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJz
Lm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVk
QnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5n
TmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1l
dGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YUltcGwobG9h
ZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RG
TW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRl
cnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEs
IGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdlYlBhZ2U6Omxv
YWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNjQ0
LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0
ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0g
bG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8g
VVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJM
U3RyaW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwg
bG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlz
aW9uYWxMb2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMu
bmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQs
IFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRC
dWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdO
YW1lLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOwor
ICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0
ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53
ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1J
TUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxl
VVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbik7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCkBAIC0z
MjU4LDEyICszMjYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXll
ckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBsdWdpblZpZXctPnNldExh
eWVySG9zdGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpk
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCit2b2lkIFdlYlBh
Z2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKKyAg
ICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IFdURk1vdmUoUG9saWN5RGVjaXNpb24pKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIFdURk1vdmUocG9saWN5RGVjaXNpb24pKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpjb250aW51ZVdpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtNzAwNiw2ICs3MDExLDExIEBAIHZvaWQgV2ViUGFnZTo6
c2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICBtX3Bh
Z2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCit2b2lkIFdlYlBhZ2U6
OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICBtX2lzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNjg5NTMwZjM4MzZk
NmY0Y2JiMGY1Njk3MmQzZmUxMTBlODEzMjU1Li5jN2NmMzhjNWJiYTIwMWNlZDc4OGNkMDNkNWEy
MDRkNGFjYTRmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC0xMjg2LDYgKzEyODYsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29u
dGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmln
YXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RS
ZWNlbnROYXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdEZy
b21Nb3N0UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBh
bGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlv
biA9IGFsbG93czsgfQogCisgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAK
QEAgLTEzNzksNyArMTM4Miw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJh
bWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VV
UkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjA2Niw2ICsyMDY5LDggQEAgcHJpdmF0ZToKICNpZiBQ
TEFURk9STShHVEspCiAgICAgU3RyaW5nIG1fdGhlbWVOYW1lOwogI2VuZGlmCisgICAgCisgICAg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiAjaWYgIVBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5YmM0YWZiMjM3MjU3NDdmMjUzOThiZTA5MzRiYmNh
NzUzMjA3NDhiLi4xZGVkZjM5MmRkNzk5YWM2YjdhZmNkNmUyYjE0NDQ3ZjhlZjVjMDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTE4Niw3ICsxODYsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERp
ZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhz
dHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKLSAgICBE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGlj
eURlY2lzaW9uKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9s
aWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb24pCisKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3Jt
KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQog
CiAgICAgQ2xlYXJTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDM4ZDJlMDcwYWJlNTY1YzZkYzE0MWRjZjg5NzhmYjIwNDNhNDhm
MWEuLjA3NzFkMDFkZDU1NjhjN2Y0YzJjMDU2YzQ0YTE4OGFkZjNkMzlmOTAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAor
MjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNl
c3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDgwMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0MDA2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBtb3N0bHkgdGVz
dCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZpbmcgMyBmdW5jdGlvbnMuCisgICAgICAgIE9uZSBzZXRz
IGluLWFwcCBicm93c2VyIHByaXZhY3kgYXMgZW5hYmxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNz
CisgICAgICAgIG1hbnVhbGx5IGZvciB0aGUgdGVzdC4gT25lIGVuc3VyZXMgdGhhdCBzZXR0aW5n
IHRoZSBXZWJWaWV3IGNhdGVnb3J5CisgICAgICAgIHdvcmtzIHByb3Blcmx5LCBhbmQgdGhlIGxh
c3Qgb25lIGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24gZm9yCisgICAgICAgIGFuIGFw
cC1ib3VuZCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5q
ZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0UnVubmVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVy
OjpjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6
VGVzdFJ1bm5lcjo6aGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5l
cjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpjYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjayk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zRm9yVGVzdCk6CisgICAg
ICAgIENsZWFyaW5nIHRoZSBidW5kbGVJRCBzaG91bGQgaGFwcGVuIHJpZ2h0IGJlZm9yZSBzZXR0
aW5nIGEgbmV3IG9uZSwgCisgICAgICAgIG90aGVyd2lzZSBpdCBjbGVhcnMgdGhlIElEIGFmdGVy
IGl0IGlzIHNldCBhbmQgcmV0dXJucyBhIG51bGwgSUQuCisKKyAgICAgICAgKFdUUjo6VGVzdENv
bnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpU
ZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKFdUUjo6SW5BcHBC
cm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dDo6SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNr
Q29udGV4dCk6CisgICAgICAgIChXVFI6OmluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0
Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjppbkFwcEJyb3dzZXJQcml2YWN5Vm9pZFJlc3VsdENh
bGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omhhc0FwcEJvdW5kU2Vzc2lv
bik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUp
OgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpk
aWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZv
Y2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RJ
bnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9j
b2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKwogMjAyMC0wMi0yMSAgQWFrYXNoIEphaW4gIDxhYWth
c2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gQWRkIGJ1aWxkIHN0ZXAgdG8gc2V0
IGNxLSBmbGFnIG9uIGJ1Z3ppbGxhIHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRl
eCA0YTU1MTAyZTUyOWIyMGQzN2Y2MGJmYjI4MWU0ODdkMTdlZDc3ODAyLi43MWY2MDI5MDUzMGMx
NTkxNzc3ZGM2NmI1ZjdkYmRmMzU3ODUzZjJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwK
QEAgLTM1NCw2ICszNTQsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgLy8gU3RvcmFn
ZSBBY2Nlc3MgQVBJCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhvYmplY3Qg
Y2FsbGJhY2spOwogCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkob2JqZWN0IGNhbGxiYWNr
KTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2xlYW4gdmFsdWUs
IG9iamVjdCBjYWxsYmFjayk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVu
UGFuZWxGaWxlcyhvYmplY3QgZmlsZXNBcnJheSk7CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxl
c01lZGlhSWNvbihvYmplY3QgbWVkaWFJY29uKTsKQEAgLTM4OSw2ICszOTIsNyBAQCBpbnRlcmZh
Y2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2
b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsK
ICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7Cisg
ICAgYm9vbGVhbiBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZvaWQgaW5qZWN0VXNlclNj
cmlwdChET01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOTU4YTc5
YmE0MzQ4YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYS4uNzcwZmUxOGQ5ZjMwMzRkMThjNjg3
ODZiNDI2ZWQ0OTc2OTYwNWJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMzNiw2ICszMzYsMTEg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0
aWNzQ2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
IikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdL
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmlyc3RQ
YXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFj
aygpOwpAQCAtNDIyLDYgKzQyNywxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZl
TWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAg
ICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdU
Rk1vdmUoZG9tYWlucykpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVX
ZWJWaWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAg
ICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkp
OworCisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlD
YWxsYmFjayh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9V
VEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlh
bHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNl
c3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlYzEyNmQ2OGUzNWQ1ZTU3
MGVlMTUyZGY2ODIwYjQwM2ZhNzdmMmNkLi4xNjBmMjFjMTAzYjUzNjkzZTRiMjMwNTE1MzcyZTlk
ZWVhZWJjODE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc2MSw2ICs3NjEsOCBAQCBlbnVtIHsKICAgICBUZXh0
RmllbGREaWRCZWdpbkVkaXRpbmdDYWxsYmFja0lELAogICAgIFRleHRGaWVsZERpZEVuZEVkaXRp
bmdDYWxsYmFja0lELAogICAgIEN1c3RvbU1lbnVBY3Rpb25DYWxsYmFja0lELAorICAgIEdldFdl
YlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsCisgICAgRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWRDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9Owog
CkBAIC0yOTA0LDQgKzI5MDYsNDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPZmZzY3JlZW5DYW52
YXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVu
Y2VGb3JUZXN0UnVubmVyKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBpbmplY3RlZEJ1bmRsZS5w
YWdlR3JvdXAoKSwga2V5LmdldCgpLCBlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpn
ZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RS
dW5uZXJDYWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELCBjYWxsYmFjayk7Cisg
ICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0V2ViVmlld0NhdGVnb3J5IikpOworICAg
IFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgp
LCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2Fs
bERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayhTdHJpbmcgY2F0ZWdvcnkpCit7Cisg
ICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUo
SW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRl
eHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJh
bWUpOworCisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBtYWtlU3RyaW5nKCJcIiIsIGNhdGVnb3J5
LCAiXCIiKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpT
T05TdHJpbmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVz
dWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBjYWxsVGVzdFJ1bm5lckNh
bGxiYWNrKEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQorCiti
b29sIFRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgYXV0byBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhc0FwcEJvdW5k
U2Vzc2lvbiIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tC
dW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwg
JnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jv
b2xlYW5HZXRUeXBlSUQoKSk7CisKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRX
SyhzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSwg
SlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxs
YmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQsIGNvbXBsZXRp
b25IYW5kbGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBh
ZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5
ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkU2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5u
ZXJDYWxsYmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNzIxMDIxZGQ2Y2M4NzViNmJmYzI2NThk
OTlmZjUxMjQ5Yjk1NmUyMi4uYjc3Y2I2YzU1M2UyN2Y1YmIyYzU4NmEwZDViNTg2YzI2ZmYwY2I1
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBjYWxsRGlk
UmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnMpOwogCisgICAgCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBj
YWxsYmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNr
KFN0cmluZyk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxl
cyhKU1ZhbHVlUmVmKTsKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTVmFs
dWVSZWYpOwpAQCAtNDk0LDYgKzQ5OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0TW9ja01l
ZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVuc2lnbmVk
KTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7Cisg
ICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0
SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmlu
Z1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGIy
MjFkYTE3MDM5MjkxMWJhNjI1ZTU3N2M4Y2Y5M2NhZWIzODg3OGQuLjZiMjZiOGZkNTcxNzdmYzE0
ZWMxNTc3MTVmZmM1M2VlMjM2ZmJmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCkBAIC04MDQsNiArODA0LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmVu
c3VyZVZpZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0
CiAgICAgICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IGZhbHNlOwogICAgIH0KIAorI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092
ZXJyaWRlKCk7CisjZW5kaWYKKwogICAgIGNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhvcHRpb25z
KTsKIAogICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zLCBSZXNl
dFN0YWdlOjpCZWZvcmVUZXN0KSkKQEAgLTEwODcsMTAgKzEwOTEsNiBAQCBib29sIFRlc3RDb250
cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb25zLCBSZQogCiAgICAgc2V0SGlkZGVuKGZhbHNlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09B
KQotICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7
Ci0jZW5kaWYKLQogICAgIGlmICghcGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVz
KG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExMTMsNiArMTExMyw4IEBA
IGJvb2wgVGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigp
OwogCisgICAgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoZmFsc2UpOworCiAgICAgbV9k
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24gPSBmYWxzZTsK
ICAgICBtX3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAg
bV9zaG91bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CkBA
IC0zMTI0LDYgKzMxMjYsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnRE
b21haW5zKCkKIHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5
KCkKK3sKK30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25zQ2FsbGJhY2tDb250ZXh0IHsKQEAgLTM3MTMsNiArMzcxOSw0OSBAQCBib29sIFRlc3RDb250
cm9sbGVyOjppc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpIGNvbnN0CiAg
ICAgcmV0dXJuIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKG1f
bWFpbldlYlZpZXctPnBhZ2UoKSk7CiB9CiAKK3N0cnVjdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2Fs
bGJhY2tDb250ZXh0IHsKKyAgICBleHBsaWNpdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tD
b250ZXh0KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgICAgICA6IHRlc3RDb250cm9s
bGVyKGNvbnRyb2xsZXIpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0
Q29udHJvbGxlcjsKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVzdWx0IHsg
ZmFsc2UgfTsKK307CisKK3N0YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVz
dWx0Q2FsbGJhY2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNv
bnRleHQgPSBzdGF0aWNfY2FzdDxJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4o
dXNlckRhdGEpOworICAgIGNvbnRleHQtPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0LT5k
b25lID0gdHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CisKK3N0YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sodm9p
ZCogdXNlckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PEluQXBwQnJv
d3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+ZG9u
ZSA9IHRydWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
Citib29sIFRlc3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24oKQoreworICAgIEluQXBw
QnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJz
aXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0
YVN0b3JlKCksICZjb250ZXh0LCBpbkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxi
YWNrKTsKKyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJu
IGNvbnRleHQucmVzdWx0OworfQorCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkKGJvb2wgdmFsdWUpCit7CisgICAgSW5BcHBCcm93c2VyUHJpdmFj
eUNhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVT
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFT
dG9yZSgpLCB2YWx1ZSwgJmNvbnRleHQsIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2Fs
bGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1
cnJlbnRJbnZvY2F0aW9uLT5kaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOworfQor
CiAjaWYgIVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGRU
ZXN0T3B0aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RDb250cm9sbGVyLmgKaW5kZXggNGU2NTExMjllYzI5NGY2ZDVhNTljNDM3MWUyOTYzNWExYjFm
OTk0Yy4uMWM3Zjc1ZDY5Y2Y4YzQ1NTMwMGJhMzQ2YTBlNWM1NTFjNjIyMzYxNSAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYwLDYgKzI2MCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CiAgICAgdm9pZCBnZXRQ
cmV2YWxlbnREb21haW5zKCk7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAg
ICB2b2lkIGdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoYm9vbCk7CiAKICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZpbGVVUkxzKCkg
Y29uc3QgeyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0
T3BlblBhbmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5QYW5lbEZpbGVV
UkxzID0gZmlsZVVSTHM7IH0KQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlv
bih1aW50NjRfdCk7CiAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5h
YmxlZCgpIGNvbnN0OworICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAKICAgICB2b2lk
IGluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAppbmRleCAzMjI0ZjA4YWFlNDg0MTg5ZjFkNDIzNWUxZTZh
ZjgwNmVkMTM1NzE0Li5hZjcyMzFmODI3OWM5NWY1YjVlY2FjZmJhY2MxMmM4YWIwZDc3NGU5IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzYwLDYgKzc2
MCwxMyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3Rl
ZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6
c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tC
b29sZWFuR2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJT
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5
cGVJRChtZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jv
b2xlYW5SZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsK
KyAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlJ1blVJUHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdl
Qm9keURpY3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5
KTsKQEAgLTgwMCw2ICs4MDcsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1l
c3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAg
VGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldE9wZW5QYW5lbEZpbGVVUkxzKHN0YXRpY19j
YXN0PFdLQXJyYXlSZWY+KG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cisg
ICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJH
ZXRXZWJWaWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuZ2V0V2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiU2V0T3BlblBhbmVsRmlsZVVSTHNNZWRpYUljb24iKSkgewpAQCAtMTAw
Miw2ICsxMDE0LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRp
ZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIGJvb2wgaXNN
b2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQgPSBUZXN0Q29udHJvbGxlcjo6c2lu
Z2xldG9uKCkuaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKICAgICAg
ICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJFbmFibGVkKSk7CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxU
b1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiSGFzQXBwQm91bmRTZXNzaW9uIikpIHsKKyAgICAg
ICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24gPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNy
ZWF0ZShoYXNBcHBCb3VuZFNlc3Npb24pKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25uZWN0
TW9ja0dhbWVwYWQiKSkgewpAQCAtMTg3MCw2ICsxODg3LDEyIEBAIHZvaWQgVGVzdEludm9jYXRp
b246OmRpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RN
ZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldl
YlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQg
VGVzdEludm9jYXRpb246OmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkKK3sKKyAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQiKSk7CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgp
LCBudWxscHRyKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBt
ZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxE
aWRTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKTsKQEAgLTE5NDgsNyArMTk3
MSwxMyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhW
ZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlQXJyYXlS
ZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBm
b3IgKGF1dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKG1l
c3NhZ2VCb2R5LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRv
bWFpbi51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpk
aWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYgd2ViVmlld0NhdGVnb3J5KQoreworICAg
IFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdD
cmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5IikpOwog
ICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0so
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcod2ViVmlld0NhdGVnb3J5LnV0ZjgoKS5kYXRh
KCkpKTsKICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xs
ZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2Nh
dGlvbi5oCmluZGV4IDUwMzM3ZDY3NWRlMDkwYWRkZjViNzZjODAwNzJhMTdmYmE0YzEzZTYuLmVj
NGY1OTY2MmM3YjViZTAzNjYxNTA3MmMyMjA1OTYyZTg0ODU1NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZv
aWQgZGlkU2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKKyAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJik7CisgICAgdm9pZCBkaWRT
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxT
ZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBkM2YyZWYxYmMzMmVlMGRmMzgy
ZTYzMmNiZDUzMGEwNDdmNzJmOGY5Li42Zjk1NWIwZGFiMWM1NWM0OTBkNmI1MmQ0MzliNWNhZDk0
NmM1OWVlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250
cm9sbGVyQ29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29u
dHJvbGxlckNvY29hLm1tCkBAIC0zNTYsNiArMzU2LDMyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmNsZWFyUHJldmFsZW50RG9tYWlucygpCiAgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5w
bGF0Zm9ybVZpZXcoKV07CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRl
Z29yeSgpCit7CisgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYg
KCFwYXJlbnRWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0V2ViVmlld0NhdGVnb3J5Rm9yOnBhcmVudFZp
ZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLV2ViVmlld0NhdGVnb3J5
IHdlYlZpZXdDYXRlZ29yeSkgeworICAgICAgICBTdHJpbmcgY2F0ZWdvcnk7CisgICAgICAgIHN3
aXRjaCAod2ViVmlld0NhdGVnb3J5KSB7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5
QXBwQm91bmREb21haW46CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJBcHBCb3VuZERvbWFpbiI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlIeWJy
aWRBcHA6CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJIeWJyaWRBcHAiOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5SW5BcHBCcm93c2VyOgorICAg
ICAgICAgICAgY2F0ZWdvcnkgPSAiSW5BcHBCcm93c2VyIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIF9XS1dlYlZpZXdDYXRlZ29yeVdlYkJyb3dzZXI6CisgICAgICAgICAgICBj
YXRlZ29yeSA9ICJXZWJCcm93c2VyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoY2F0
ZWdvcnkpOworICAgIH1dOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2Ny
aXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0
KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQg
Zm9yTWFpbkZyYW1lT25seTpOT10pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1Nzg0MDZjNjRkMjUxMmI3N2RjZjRmYTNh
NzAyNzI3ZmUzOTJjNWEuLmNjMDQ3ZWRmOTRlOTViZTJmMDVmNmI2MDliYjQ5YWJiMjEzMDM2MDkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJp
bmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQg
aGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5
NDM0MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAg
QWRkZWQgdHdvIHRlc3RzLiBPbmUgdG8gdGVzdCB0aGUgcHJvcGVyIGNhdGVnb3JpemF0aW9uIG9m
IGFwcC1ib3VuZAorICAgICAgICBuYXZpZ2F0aW9uLCBhbmQgb25lIHRvIGNoZWNrIHRoYXQgc3dp
dGNoaW5nIHNlc3Npb25zIG9jY3VycyB3aGVuCisgICAgICAgIG5hdmlnYXRpbmcgdG8gYW4gYXBw
LWJvdW5kIGRvbWFpbi4KKworICAgICAgICBTaW5jZSB0aGVzZSB0ZXN0cyB1c2UgSVRQIHRvIHNl
dCB1c2VyIGludGVyYWN0aW9uLCB0aGV5IHNob3VsZCBvbmx5CisgICAgICAgIGJlIHJ1biBvbiBp
T1MgYW5kIG1hYy13azIuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1kb21haW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBw
LWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFw
cC1ib3VuZC1kb21haW4uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
OgorCiAyMDIwLTAyLTIxICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgog
CiAgICAgICAgIFsgTWFjIHdrMiBdIGh0dHAvd3B0L2ZldGNoL2Rpc2FibGUtc3BlY3VsYXRpdmUt
Zm9yLXJlbG9hZC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBi
MzU2ODFlY2JlMDg3MTEzYTVhZjZmODU5YzQyMjAxZDRiOGJkZWY3Li5jODkyYmM3MDJhNTRjYjFl
ODlkZDdkYmNjZGQ2MjA3NGQ4ODc5NTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NSw2ICsx
NTUsOCBAQCBodHRwL3Rlc3RzL25hdmlnYXRpb24vdXNlcmFnZW50LXJlbG9hZC5waHAgWyBTa2lw
IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1j
cmFzaC5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1s
IFsgU2tpcCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQtY2hhbmdlLWluLXRleHQtZmllbGQt
d2hlbi10eXBpbmcuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5LyBbIFNraXAgXQorCiAKICMgT25seSBNYWMgYW5kIGlPUyBoYXZlIGFuIGltcGxlbWVudGF0
aW9uIG9mIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soKS4KIGZhc3QvaGFybmVzcy91
aXNjcmlwdGNvbnRyb2xsZXIgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91
bmQtZG9tYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTIzYTY5MWI4Y2U4MTI5MzVjNzgz
MGNlZDFmZTNlOGI2ZWJjOTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNyBAQAorVGVzdHMgdGhhdCBhbiBBcHAtQm91bmQgRG9tYWluIGdldHMgY2xh
c3NpZmllZCBhcyBzbworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdWNj
ZXNzLCBkb21haW4gY2xhc3NpZmllZCBhcyBJbi1BcHAgQnJvd3Nlci4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1k
b21haW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9hcHAtYm91bmQtZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNlMjFmNzg2MWFiYWZjNjk3NDMz
ODBiM2Q4NDJjNzAzYTllZjY3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwKQEAgLTAs
MCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRl
cm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBE
b21haW4gZ2V0cyBjbGFzc2lmaWVkIGFzIHNvJyk7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5j
dGlvbiBhc2tGb3JXZWJWaWV3Q2F0ZWdvcnkoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdl
dFdlYlZpZXdDYXRlZ29yeShmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoY2F0ZWdvcnkgPT0gIkluQXBwQnJvd3NlciIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLiIpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFp
bHVyZSwgZG9tYWluIG5vdCBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLiIpOworICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiA9ICJodHRwOi8vbG9jYWxo
b3N0OjgwMDAiOworICAgICAgICBmdW5jdGlvbiBuYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW4o
KSB7CisgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25Pcmln
aW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAy
IjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhh
c2ggIT0gIiNzdGVwMiIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0V2ViVmlld0NhdGVn
b3J5KGZ1bmN0aW9uIChjYXRlZ29yeSkgeworICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSAh
PSAiQXBwQm91bmREb21haW4iKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZh
aWx1cmUsIHN0YXJ0aW5nIGNhdGVnb3J5IG5vdCBBcHBCb3VuZERvbWFpbiIpOworICAgICAgICAg
ICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgbmF2aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFza0ZvcldlYlZpZXdDYXRlZ29y
eSgpOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21h
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlOGE2M2U0NzdhOWEwZGNjMDJkNjI3NWVkNmFiMTBj
NWI3OWRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3Vu
ZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNl
c3Npb24gaXMgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0byBhbiBhcHAtYm91
bmQgZG9tYWluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTaG91bGQg
aGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhh
cyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgYXBwLWJvdW5kIHNlc3Np
b24gYWZ0ZXIgbmF2aWdhdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91
bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXBy
aXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNGM4Y2JhMGI4YWQ2MjRmYThmOTRjY2EyNDUzMjY1MzQzNWJhM2YzMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4u
aHRtbApAQCAtMCwwICsxLDExNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1y
dW5uZXIgWyBpbnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGlj
YXRpb25CdW5kbGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbCBsYW5nPSJl
biI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9
Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlw
dGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBu
YXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uIik7CisgICAganNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICBjb25zdCBhcHBCb3VuZE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgw
MDAiOworICAgIGNvbnN0IG5vbkFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCI7CisgICAgY29uc3Qgc2Vzc2lvbkNvb2tpZU5hbWUgPSAic2Vzc2lvbkNvb2tpZSI7CisgICAg
Y29uc3QgcGVyc2lzdGVudENvb2tpZU5hbWUgPSAicGVyc2lzdGVudENvb2tpZSI7CisgICAgY29u
c3QgdHdvTWludXRlc0luU2Vjb25kcyA9IDEyMDsKKworICAgIGZ1bmN0aW9uIHNldFNlc3Npb25D
b29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlc3Npb25Db29raWVOYW1lICsg
Ij0xOyBwYXRoPS8iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFBlcnNpc3RlbnRDb29raWUo
KSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBlcnNpc3RlbnRDb29raWVOYW1lICsgIj0x
OyBwYXRoPS87IE1heC1BZ2U9IiArIHR3b01pbnV0ZXNJblNlY29uZHMgKyAiOyI7CisgICAgfQor
CisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKHNob3VsZEhhdmVTZXNzaW9uQ29va2llLCBzaG91
bGRIYXZlUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICBsZXQgaGFzU2Vzc2lvbkNvb2tpZSA9
IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMoc2Vzc2lvbkNvb2tpZU5hbWUpLAorICAg
ICAgICAgICAgaGFzUGVyc2lzdGVudENvb2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5j
bHVkZXMocGVyc2lzdGVudENvb2tpZU5hbWUpOworCisgICAgICAgIGlmIChzaG91bGRIYXZlU2Vz
c2lvbkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgi
U2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAgIGVsc2Ug
aWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmICFoYXNTZXNzaW9uQ29va2llKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRoZSBzZXNz
aW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlz
aEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVTZXNzaW9uQ29va2llICYm
IGhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZG4ndCBo
YXZlIGJ1dCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZlIHRoZSBzZXNzaW9u
IGNvb2tpZS4iKTsKKworCisgICAgICAgIGlmIChzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAm
JiBoYXNQZXJzaXN0ZW50Q29va2llKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkIGhh
dmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgIGVsc2UgaWYgKHNo
b3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmICFoYXNQZXJzaXN0ZW50Q29va2llKSB7CisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRoZSBwZXJz
aXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZp
bmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVQZXJzaXN0ZW50Q29v
a2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNo
b3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZl
IHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0
KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAg
ICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2luKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBpcyBub3Qgc3RhcnRpbmcgb3V0IG9uICIg
KyBhcHBCb3VuZE9yaWdpbiArICIuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5j
ZSB0aGUgdGVzdCBtYW51YWxseSBzZXRzIHRoZSBpbkFwcEJyb3dzZXJQcml2YWN5IGZsYWcgaW4g
dGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nlc3MsIHdlIG5lZWQg
dG8gcmUtZXN0YWJsaXNoIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGJ5CisgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBuYXZpZ2F0aW5nIGF3YXkgdGhlbiBiYWNrIHRvIHRoZSBhcHAtYm91bmQgRG9t
YWluIGJlZm9yZSBzZXR0aW5nIGNvb2tpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2Vy
LXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWlu
Lmh0bWwjc3RlcDEiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGFwcEJvdW5kT3JpZ2luICsg
Ii9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8t
YXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50Lmxv
Y2F0aW9uLm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoIlN0ZXAgMiBpcyBub3Qgb24gIiArIGFwcEJvdW5kT3JpZ2luICsgIi4iKTsKKyAg
ICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rp
b24oYXBwQm91bmRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFBlcnNpc3RlbnRD
b29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOwor
ICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNlc3Npb24oKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGRpZCBub3Qgc3RhcnQg
d2l0aCBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhhcyBhcHAt
Ym91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aHJlZiA9IG5vbkFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRj
aC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAzIjsK
KyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9
ICIjc3RlcDQiCisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gbm9uQXBwQm91
bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0ZXAgMyBpcyBub3Qg
b24gIiArIG5vbkFwcEJvdW5kT3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0
YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhydW5UZXN0KTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgY2hlY2tD
b29raWVzKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24u
aHJlZiA9IGFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1z
ZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXA1IjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CisgICAgICAg
ICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgIGlmICh0
ZXN0UnVubmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRpb24uIik7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJP
cmlnaW4gaGFzIG5vIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRpb24uIik7CisgICAg
ICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVW5rbm93biBoYXNoLiIpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCBhNjU1ZDVmODk5YTE2ZDNjN2UyYmRkMmVmNWRiM2VjZmRkYzA1OTkyLi5iOGM0
M2M0ODJlMmRmYTM1ZTI0Yzc1NzlmMDUyNzkwNDBhODg3NjQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5OSw2ICsyNzk5LDkgQEAgaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWlmLWF1dG8t
ZGlzbWlzcy1kYXRhYmEKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nl
c3MtZmFsc2UtYnktZGVmYXVsdC1kYXRhYmFzZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZhbHNlLWJ5LWRlZmF1bHQtZXBoZW1lcmFs
LWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRp
b25zLCBvbmx5IHdvcmsgZm9yIGlPUyBhbmQgTWFjIFdLMi4KK2h0dHAvdGVzdHMvaW4tYXBwLWJy
b3dzZXItcHJpdmFjeS8gWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRp
b25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJl
Y3RzLWluLXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0
cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVzdHMtaW4tcHJpdmF0
ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9ucwppbmRleCAxZDc2ZDFjYmZjOGZiMjc1NDBjNmY2M2Q0YzlmNTdjYjliM2U1
Mzk4Li4yZTU0MmVlMDk5NTQxOWFlYmE1YjY2ZWJhNWZjZWFhNTFlZjUwODgzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OCw2ICs1OCw5
IEBAIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9w
YXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50CiB3ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVl
c3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0LXRpbWluZy5odHRwcy5zdWIuaHRtbCBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3BheW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3NldHRpbmctYWxsb3dwYXltZW50
cmVxdWVzdC5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQogCisjIFNraXBwZWQgaW4gZ2VuZXJhbCBl
eHBlY3RhdGlvbnMsIG9ubHkgd29yayBmb3IgaU9TIGFuZCBNYWMgV0syLgoraHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3MgXQorCiAjIHNraXAgaW4gZmF2b3Igb2YgdGVz
dHMgaW4gaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhvZC5odHRw
cy5odG1sIFsgV29udEZpeCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1l
bnQtcmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbCBbIFdvbnRG
aXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391421</attachid>
            <date>2020-02-21 12:09:05 -0800</date>
            <delta_ts>2020-02-21 13:32:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200221120904.patch</filename>
            <type>text/plain</type>
            <size>120953</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOWNhNTM1YWMzMTIxNjIy
MWM3ZjcwN2VjZmRlNzFjMzNkZTUyNDQuLmI2OWU4NWE4MjIzM2Q1N2Y2ZmFjMGUyNTVjOWQxOGZj
ZDU4NTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sCisKKyAgICAgICAgU3VwcG9ydHMgbmV0d29yayBzZXNzaW9uIHN3aXRjaGluZyBm
b3IgbmF2aWdhdGlvbnMgdG8gYXBwLWJvdW5kCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcmVxdWly
ZXMgdXBkYXRpbmcgdGhlIFdlYlBhZ2Ugd2hlbiBhIG5hdmlnYXRpb24gb2NjdXJzCisgICAgICAg
IHRvIGNoZWNrIHdoZXRoZXIgaXQgaXMgdG8gYW4gYXBwLWJvdW5kIGRlc3RpbmF0aW9uLiBJbiBj
YXNlIG9mIGEKKyAgICAgICAgcHJvY2VzcyBzd2FwLCB0aGlzIGhhcyB0byBiZSBkb25lIGJvdGgg
aW4gUG9saWN5RGVjaXNpb25TZW5kZXIgYW5kCisgICAgICAgIGluIHRoZSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEgYW5kIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdAor
ICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG11c3Qgc2VuZCB0
aGUgSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBmbGFnIHRvIHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6Cisg
ICAgICAgIFBhc3NlcyB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBmbGFnIHRvIHRo
ZSBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91
bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBBIGxhcmdlIHBvcnRpb24g
b2YgdGhpcyBwYXRjaCBpcyB0aHJlZSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIG9uZSBzZXRzIAor
ICAgICAgICB0aGUgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIGZvciB0aGUgdGVzdCBjYXNl
LCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiwgYW5kIG9uZQorICAgICAgICBj
aGVja3MgdG8gbWFrZSBzdXJlIHRoZSBjYXRlZ29yeSB3YXMgY29ycmVjdGx5IHNldCB0byBhcHAt
Ym91bmQgZG9tYWluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgUGFzc2Vz
IHRoZSBJbi1hcHAgYnJvd3NlciBwcml2YWN5IGZsYWcgdmFsdWUgZnJvbSBOU1VzZXJEZWZhdWx0
cyB0byB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscyk6CisgICAgICAg
IENyZWF0ZXMgYSBuZXcgc2Vzc2lvbiAob3IgcmV0dXJucyB0aGUgZXhpc3RpbmcgYXBwLWJvdW5k
IHNlc3Npb24pIGlmCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIGlzIGFwcC1ib3VuZC4gVGhpcyBp
cyB0aGUgbWFpbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICBJbiB0aGUgY2FzZSBvZiBh
IHByb2Nlc3Mgc3dhcCwgd2UgbXVzdCBhZGQgdGhlCisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gYm9vbGVhbiBpbiBMb2FkUGFyYW1ldGVycyB0byBlbnN1cmUgaXQgZ2V0cyBz
ZW50IHRvCisgICAgICAgIHRoZSBuZXcgV2ViUGFnZSB2aWEgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5k
ZXI6OnNlbmQpOgorICAgICAgICBGaXhlcyBhIGNhcGl0YWxpemF0aW9uIGVycm9yLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgZGV0ZXJtaW5lIGlmIHRoZSBjYXRlZ29yeSBpcyBhcHAtYm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrIGFzIGl0IGlz
IGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2ZGRjODNhZWI2OTY3YzhlZWI4YzE4ZmQwNmE5MTIu
LjgwNTBkMTFmZjhlNzE3ZTE5NzVhNjRiYmYwNGJlNmU1NmRlMGM3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBh
cmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJhY2tlcik7CisgICAgcmV0dXJuIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxk
UHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0
ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTc0ZDMzYTgxZjYyZDQ1ODA2YjY4OTVm
ZjNiYWVjYmZjNTY2YTE3Li4xYmY4NDc1NzFmZTlkMGFjNmJlMGYwZGU5MTYwM2JiYzJiNmNkNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
KyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2JjYzFmY2M3ZTQ4MC4u
MzRkY2IyYmYyNGVhOTczMzNlMWEzZDBkNzY4YjBiM2I1ZjdhY2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MDMsNCArMjYw
MywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4MzRmNmVlNTdj
MmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zNDJkNmE2YmU5MzI2NTQyNWQ1ZGQyOWQ3ODli
NmU1MTgxOGNlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29uZHMgc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNo
VGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMwN2Vm
NWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0N2Ji
MzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBIYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFhOTBl
MzAxOWU3NTM2Li41NjI5N2I2NGIxMjMxMmYyZGY2YjZhMzg2YjE1YmM5M2ZlZjI2NDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2RlciA8
PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlm
ICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2
YmY2NDQ5NTNhLi5mMjIwMjY5Y2FkODE0ZWVjYjhlYWZiNDkzM2EzZmQ5YzllOWJlMTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lz
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisg
ICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmYzYWJkOTkzODkxZTdiYTA4ZGZmOGEy
M2JlN2YwOWI4YWY5MzgzNS4uZjU5OGQ3OTY2ODkwZTc3ZGQxMTRjMTJkN2ZhZTE2MzU2Y2Q1YzU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0
byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDhiMGMxY2E4YzUzZWY2YmYz
MWRjZDQwZGQzYTk2NWNmZWU2ZTVjODguLmI1ODNmMjliMjk1NDg4YTAwYzAxZWI1OTAwOGVkZTdj
ZWMxNWUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sKSB7IH0KICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOwogICAgIHZvaWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAyMWZjODY5YmNkODJjMjk1Y2I2NDU2NTQ0MTA3NThjMjU5Y2Y0NWMxLi5hMDM0NmQwNzMzNjIy
MDdmMGU2OWY4M2IwN2Y3NDMyNzhhN2RhYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBlbmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CisgICAgZW5jb2RlciA8PCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OwogfQogCiBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yNjksNiArMjcwLDExIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2Rl
ciA+PiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29u
bmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxi
b29sPiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGRlY29kZXIgPj4gaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZDsKKyAgICBpZiAoIWlzSW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgKnNlc3Npb25JRApAQCAtMzE0LDYgKzMyMCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgLCBX
VEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKKyAgICAgICAgLCBXVEZN
b3ZlKCppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogICAgIH19OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzJmNzUyNjc1ZWQ4N2I4MjIxMDIxZTA2YjZhOGEz
YjVmNDc4YzkwNi4uZThlNmUxOThkZDk3MzZmMzgzMjc0MWQxZTkxZjRiNWM2YTRkOTFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBmNDgzMTlhNzFkOTI1OThjMmQxNjBhNTBiZjg2NDdlZTdiYmE2YTc0Li41ZWNlMDE4ZDRkNjdk
MWEzNDViYjU3MGRlYzVhYmRlNzFjYWQ4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw5
ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNr
Q29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlm
ZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFn
ZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CiAgICAgfQog
CiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZp
bmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VS
TFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNl
NmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uYWIzMDZmNjRiNzA3ODE0ZDk3NDRmMjMwYWIwNDk5MjA1
Y2ZhNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0
cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSkpCisgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAppbmRleCA0YWQyYzEwMWJlN2E5ZTc5ZjhkMzUwMjY1ZDc4OGMzOGQwMmU1ODU4Li5kYTYx
ZmNjMDNkZTNhMDhlNDFiZDFmNTdiNzQ5NzMwM2U2YWM3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApA
QCAtOTMsMTQgKzkzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25XcmFwcGVy
JiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGJvb2wgaGFzQXBwQm91bmRT
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2FwcEJvdW5kU2Vzc2lvbjsgfQog
CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi5lZmRhMDA3ZTEwNzg5YzYy
NzBkZTNkZGQ2NGUyNjRlOGUzOWU0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkgewpAQCAtMTE5Nyw2ICsxMTk4LDkgQEAgU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmICht
X2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQorICAgICAgICByZXR1cm4g
YXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKwogICAgIHN3aXRjaCAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7CkBAIC0xMjA5LDYgKzEyMTMsMzIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIK
ICAgICB9CiB9CiAKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3Vu
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBtX2Fw
cEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOworICAgICAgICBt
X2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRp
b24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAg
ICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlKTsKKyAgICB9CisKKyAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0byBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKKyAgICAgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdl
LiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5n
IGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7Cisg
ICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKKyAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb247CisgICAgICAgIH0KKyAgICB9IChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisKKyAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7Cit9CisKIFNlc3Npb25XcmFwcGVyJiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCiB7CiAgICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzXSB7CkBAIC0xMjgyLDYg
KzEzMTIsMTMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2Vs
KCkKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9CiAgICAgbV9pc29sYXRlZFNlc3Npb25z
LmNsZWFyKCk7CisKKyAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgW21fYXBw
Qm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxp
ZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBb
bV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
biBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTI5NSw2ICsxMzMyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
biBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0
KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50
cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50
cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vz
c2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTky
OWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9j
a0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAg
aWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjI2MTIyMzY5
ZTFjMjM0NmY3OWZkNjY3OGNhZDYwNTUwZWM4YjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC02OSw3ICs3MCw4IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgeyBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0KKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDcxNWM1MjEyMmYwMTlhMjk2NDli
MWExZTU4YWFhMDljZjk3ODVkMmUuLjY0ZjRlMmQ2MDIyMGY2NjVlMjAwYTU1M2QyN2I1YTcwY2E4
NDM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzEsOCArMzEs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBZZXMsIE5vIH07CisKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9
OwpAQCAtNDIsNiArNDUsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwg
bmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1
OSwxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29k
ZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw5ICs4NSwyMCBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92
ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RG
TW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwotCisgICAgICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1v
dmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdU
Rk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKICAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sCisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllcywKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGZmZmUxZTA5YWI2Yzhk
NjM5MmEzNjdhYjAyYzYxYS4uNGUwNDNjMDA1NTg4YmY3ODYwYzI3NGYzY2Q5OGZlNzhmY2Y3NDY4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjcsNiArNTI3LDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzQXBwQm91bmRTZXNzaW9uKFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzQXBwQm91bmRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CkBAIC02OTYsMyArNzAzLDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyOGQ2YTg3N2Q2Yjc3NWE4ODNhNGUwZGRjZTAwOGMxMWE1YWZmNzY3Li5lODZhNmY5MDc5ZWE1
Nzk5OWZmN2ZmNTQ2ZTgyODk1OTc1OTRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE3LDYgKzExNyw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uKSh2b2lkKiBmdW5jCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiko
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVIYXNB
cHBCb3VuZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24sIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKQEAgLTE1Nyw2ICsxNTksOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRAog
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQzMmMyMDdjODFmMTQzM2VkYjM0OTVmY2M1N2FjNTcyNWM4ZTI3NmEuLjE3OWNkOTcx
YTIzZmUyNWE0YTM2M2RkZDcyY2QyZGEwNTBlMjhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDcz
LDYgKzQ3MywyMiBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29y
eVdlYkJyb3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIodG9XS1dlYlZpZXdDYXRlZ29yeSh3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53
ZWJWaWV3Q2F0ZWdvcnkoKSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2YzNTY5OTBh
ZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpAQCAt
NjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0V2Vi
Vmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEzOTExNTdh
Li40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZjYWQuLjAy
YmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlh
cnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEyNWFlNDQ4
NDFlMmMzZWU5NjJiNzNiOTQuLmQzOGVkNTU3YTg3ZTA1ODNiMjMzYWViOTViN2NhZTVkZTU5ZGZi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAot
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0
aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQs
IG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChu
YXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9u
LmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
RnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAh
PSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGIxMWRlMWM0MjU5MGM2MGNmMWFmMDY4
M2M3NzI1ODZmNmFiYTM2YjQuLmY3NTM4MTczN2YyOTYzODBiNGQwZjI5ODY0ZTNkYWVmN2ZiNWM3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAt
OTEsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJ
REZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGYwYjc4NTky
NzliNDFmYzE3NWJkNGVjM2Y1YjEzZGE5ODI3NTZkOS4uMzZhZGYwZWI3ZWQ5MzYzNmY5MjZjYjk5
NGIyNGQ5ZGU2NTIzYjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0yNzQsNiArMjc0LDEyIEBACiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5o
IgogI2VuZGlmCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktp
dEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisjZGVmaW5lIFdFQl9Q
QUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBzdHJh
dGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdFX1dI
RUVMX0VWRU5UUyAxCiAKQEAgLTEyNjQsMTEgKzEyNzAsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTaG8KICAgICBpZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdh
dGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJvY2Vz
cygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3Mp
Lm1vdmVUb1VuaXF1ZVB0cigpKTsKIAotICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdU
Rk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3Nl
ZCk7CiAKQEAgLTEyOTAsNiArMTI5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAg
bG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7
CisgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJjZURpcmVjdG9y
eVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwpAQCAtMTM4NCwxMSArMTM5
MSwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRVc2VGb3JlZ3Jv
dW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNl
dEZvcmVncm91bmRBY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2
aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykubW92ZVRvVW5pcXVlUHRyKCkpOwogCi0gICAgbG9h
ZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJ
RCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1F
VHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIApAQCAtMTQwOCw2ICsxNDE1LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRh
dGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1ldGVycy5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKwog
ICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJv
Y2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CkBAIC0zMDUy
LDEwICszMDYxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9s
aWN5RGVjaXNpb25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCisg
ICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgcG9saWN5RGVjaXNpb24pCiAgICAgewogICAg
ICAgICBpZiAobV9zZW5kRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZN
b3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZNb3Zl
KHBvbGljeURlY2lzaW9uKSk7CiAgICAgfQogCiAgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTMwNzAsNiArMzA3OSwzMSBA
QCBwcml2YXRlOgogICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJvdW5kRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7CisgICAgV0VCX1BBR0VfUFJPWFlfQURE
SVRJT05TCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJv
dW5kRG9tYWluKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBpc0FwcEJvdW5k
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwpCit7CisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmlzSW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQoKSAmJiBpc01haW5GcmFtZSkgeworICAgICAgICBpZiAoIWlzQXBwQm91
bmREb21haW4ocmVxdWVzdFVSTCkpIHsKKyAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0
V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKKyAgICAgICAg
ICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5k
RG9tYWluKTsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC0zMTU3LDcgKzMxOTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vz
cyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXIt
PmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RG
OjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5k
ZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTMxODAsNyArMzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbioKICAgICAgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSB7IH07CiAg
ICAgfQogCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlm
aWVyKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOworICAgIHNlbmRlci0+
c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMyNTcsOSArMzI5MSw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9u
ZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAgIEFTU0VSVCgh
bmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBpZiAoYXV0
byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQotICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0
ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwg
c3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0
aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9h
ZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0
aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1
YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1
dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3By
b3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsg
bmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5h
dmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkg
fSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2hv
dWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAgIG1faW5zcGVjdG9y
Q29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9uYWxQYWdl
LCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNDkzOCw4ICs0OTcyLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCi0gICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQs
IGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0
IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNp
c2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHBvbGljeURl
Y2lzaW9uKSB7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiks
IHdlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUo
ZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELApAQCAtNDk2Myw5ICs0OTk3LDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYgKG5hdmlnYXRpb25JRCAmJiAhZnJvbUFQ
SSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNh
Y3Rpb24pOwogCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihmcmFtZS5pc01h
aW5GcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZy
b21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVxdWVzdC51cmwoKSkpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3Jpbmcg
cmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUg
dGhlIHNhbmRib3giKTsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2Vu
ZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsg
c2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTkyLDcgKzUyMjgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eQogICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNs
aWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2Fk
LgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVs
bG9wdCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50
aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVz
ZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCkBAIC01MjA5LDggKzUyNDUsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTZWN1cgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5n
V2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9u
KSB7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pKTsKKyAgICAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzZW5kZXIpKTsKQEAgLTUyNTgsOCArNTI5NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
PT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAotICAgICAg
ICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwg
W3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vz
cyldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQs
IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKKyAgICAgICAgYXV0byBz
ZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdl
SUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29u
c3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5l
cklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAK
ICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24u
Z2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzkxZTQ5NjI1MzRlMTk2ZjhmY2MzM2VlZmFhZTk1ZTQw
ODFkMWNhMC4uYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3ZGUzZGJiNzU0ZjZjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MTMsOCArMTYxMyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwotICAg
IHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwg
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LApAQCAtMjI1MSw2ICsyMjUxLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRyeUNsb3Nl
VGltZWRPdXQoKTsKICAgICB2b2lkIG1ha2VTdG9yYWdlU3BhY2VSZXF1ZXN0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnRE
YXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CisgICAgICAgIAorICAgIGJvb2wgaXNBcHBCb3VuZERvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIGJvb2wgaXNBcHBC
b3VuZERvbWFpbihjb25zdCBVUkwmKSBjb25zdDsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJik7CisgICAgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAgICAgY29uc3Qg
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93
ZWJQYWdlSUQ7CkBAIC0yNzM0LDYgKzI3MzksOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgorICAgICAgICAKKyAgICBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGUxNjUxYzgzMjFi
YTUzY2I4NzI5ZjVjZjM1ZWM3OTM4NzUxYzk4MGMuLjRjNGZiODU1YmFiZjE5MzNiNWU4MzZjZTJl
NzVkMTdmMDZkNTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTE0NSw2ICsxNDUsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlzU2FmYXJpOworICAgIGJvb2wgaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6Omlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07
CisgICAgCiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IHsKICAgICAgICAgbV9zZXNzaW9u
SUQsCkBAIC0xNzgsNiArMTgwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+dGVzdFNw
ZWVkTXVsdGlwbGllcigpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25u
ZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRp
b24tPmFsbG93c1NlcnZlclByZWNvbm5lY3QoKSwKKyAgICAgICAgaXNJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZAogICAgIH07CiAgICAgbmV0d29ya2luZ0hhc0JlZ3VuKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggYmRiNzIwMDFiMmE3MzRjOTViMmY1ZjRlZjMyN2FiMTViY2YzYzZhMi4uNDRi
YWJiYTkzZTUwODE3OTU4NDJkMmYwMmMzNzc5NmFiN2Q1ZjQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTIyNTUsNCArMjI1NSwyOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPmhhc0FwcEJvdW5kU2Vzc2lvbihtX3Nlc3Npb25JRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNp
emUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0SW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
ZjA4MjlmMTJiNTcwNDc5NjkxMGE0NjljNWE4ZTcyMjAxYTUxMjk1ZS4uN2ZhYTRiNTkyNjVhZjNl
ZmQ0MWNmMGI0MWIzNWQxM2EyNjEyMzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjkzLDYgKzI5Myw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3Jr
UXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBw
bHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzNTdlMjJhOGZmYmUyY2M0NDA2Y2U1ODFlZGI1YjVhZWRh
YTYyZjMuLjczNTdmNTRkOTVjZjEyMjRiZTQ2Y2UzZGEzMjM3YThjYWJiZjFlZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTMyNiwxNCArMzI2LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAg
ICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhl
YWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0K
KyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IGZyYW1lID8gdG9XZWJGcmFt
ZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpIDogbnVsbHB0cjsKKyAgICBh
dXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/
IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRv
Y3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwg
dGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCB1c2luZyB3ZWJQYWdl
SWQuCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAg
ICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRl
ckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIHdlYlBhZ2UgPSB3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgICAgICBpZiAod2ViUGFn
ZSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAgICAg
fQpAQCAtNjAxLDYgKzYwNCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgICAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9s
aWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CisgICAgCisgICAgaWYg
KHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisKICAgICBh
ZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRl
cnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBAIC02NjgsMTMgKzY3NSwxNiBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VI
ZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9
CiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKLQor
ICAgIAorICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJG
cmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVs
bHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDog
bnVsbHB0cjsKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKTsKKyAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQ
YXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nl
c3MuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9X
ZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgaWYgKHdlYlBhZ2UpCiAgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdl
LT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEyMTJlZWFiNTcwN2FkZWUxZTY3NjVkYTJmZTY5YjNk
ZTc3YzI5ZWIuLjk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQo
KSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKICAgICAgICAgY2FuU2hvd1Jlc3BvbnNl
LCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklE
LCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7
IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKQEAgLTk5MywxMSArOTkzLDExIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0CiAgICAgICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRM
b2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSwKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Ci0g
ICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
UG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIHsgfSwgeyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsg
fSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9u
LCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKKyAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcG9s
aWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lv
bi5kb3dubG9hZElELCB7IH19KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAwNSw3
ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUo
Y29yZUZyYW1lKSwKICAgICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0
dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBs
aXN0ZW5lcklEKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlm
aWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2Vs
UG9saWN5Q2hlY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBjMDU0ZDUxOTg0YzgzNjI1N2QxNWNmNzUxMWRjZjI1MjViNzZhYmI1Li4wNzA5
NDI1N2NkMWVhZjFiNmUyNzk5MjU0NjkzNmM5OTg5ZjRiOTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU3MCw2ICsxNTcwLDggQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFy
YW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFy
YW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogeworICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisK
ICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGlu
Z05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKQEAgLTE2MDQsOCAr
MTYwNiwxMCBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQ
cm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogeworICAgIHNldElzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisKICAg
ICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTE2MzIsNyArMTYzNiw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIAogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVycy5k
YXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRl
cnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmln
YXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwg
YmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRl
cm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNjQ0LDcgKzE2
NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gbG9hZFBh
cmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkg
OiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
KTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBh
cmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdh
dGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1v
dmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIp
LCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBi
YXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOworICAgIGxv
YWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRl
UG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBs
b2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQ
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCkBAIC0zMjU4LDEy
ICszMjYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBsdWdpblZpZXctPnNldExheWVySG9z
dGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCit2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKKyAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFdURk1v
dmUoUG9saWN5RGVjaXNpb24pKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFdURk1vdmUocG9saWN5RGVjaXNpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojpjb250aW51ZVdpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklEKQpAQCAtNzAwNiw2ICs3MDExLDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0T3Zl
cnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICBtX3BhZ2UtPnNl
dE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNjg5NTMwZjM4MzZkNmY0Y2Ji
MGY1Njk3MmQzZmUxMTBlODEzMjU1Li5jN2NmMzhjNWJiYTIwMWNlZDc4OGNkMDNkNWEyMDRkNGFj
YTRmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xMjg2LDYgKzEyODYsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnRO
YXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0
UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3Mp
IHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IGFs
bG93czsgfQogCisgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEz
NzksNyArMTM4Miw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2Vi
RnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Ym9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
IAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwpAQCAtMjA2Niw2ICsyMDY5LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShHVEspCiAgICAgU3RyaW5nIG1fdGhlbWVOYW1lOwogI2VuZGlmCisgICAgCisgICAgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA5YmM0YWZiMjM3MjU3NDdmMjUzOThiZTA5MzRiYmNhNzUzMjA3
NDhiLi4xZGVkZjM5MmRkNzk5YWM2YjdhZmNkNmUyYjE0NDQ3ZjhlZjVjMDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTE4Niw3ICsxODYsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERpZFJlbW92
ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3Qg
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lz
aW9uKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVj
aXNpb24gcG9saWN5RGVjaXNpb24pCisKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAg
Q2xlYXJTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDM4ZDJlMDcwYWJlNTY1YzZkYzE0MWRjZjg5NzhmYjIwNDNhNDhmMWEuLjA3
NzFkMDFkZDU1NjhjN2Y0YzJjMDU2YzQ0YTE4OGFkZjNkMzlmOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0w
Mi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBtb3N0bHkgdGVzdCBpbmZy
YXN0cnVjdHVyZSBpbnZvbHZpbmcgMyBmdW5jdGlvbnMuCisgICAgICAgIE9uZSBzZXRzIGluLWFw
cCBicm93c2VyIHByaXZhY3kgYXMgZW5hYmxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAg
ICAgIG1hbnVhbGx5IGZvciB0aGUgdGVzdC4gT25lIGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRoZSBX
ZWJWaWV3IGNhdGVnb3J5CisgICAgICAgIHdvcmtzIHByb3Blcmx5LCBhbmQgdGhlIGxhc3Qgb25l
IGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24gZm9yCisgICAgICAgIGFuIGFwcC1ib3Vu
ZCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxs
RGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6aGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpj
YWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjayk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjplbnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIENs
ZWFyaW5nIHRoZSBidW5kbGVJRCBzaG91bGQgaGFwcGVuIHJpZ2h0IGJlZm9yZSBzZXR0aW5nIGEg
bmV3IG9uZSwgCisgICAgICAgIG90aGVyd2lzZSBpdCBjbGVhcnMgdGhlIElEIGFmdGVyIGl0IGlz
IHNldCBhbmQgcmV0dXJucyBhIG51bGwgSUQuCisKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKFdUUjo6SW5BcHBCcm93c2Vy
UHJpdmFjeUNhbGxiYWNrQ29udGV4dDo6SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4
dCk6CisgICAgICAgIChXVFI6OmluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2FsbGJh
Y2spOgorICAgICAgICAoV1RSOjppbkFwcEJyb3dzZXJQcml2YWN5Vm9pZFJlc3VsdENhbGxiYWNr
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRTZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0
V2ViVmlld0NhdGVnb3J5KToKKwogMjAyMC0wMi0yMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gQWRkIGJ1aWxkIHN0ZXAgdG8gc2V0IGNxLSBm
bGFnIG9uIGJ1Z3ppbGxhIHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0YTU1
MTAyZTUyOWIyMGQzN2Y2MGJmYjI4MWU0ODdkMTdlZDc3ODAyLi43MWY2MDI5MDUzMGMxNTkxNzc3
ZGM2NmI1ZjdkYmRmMzU3ODUzZjJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM1
NCw2ICszNTQsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgLy8gU3RvcmFnZSBBY2Nl
c3MgQVBJCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhvYmplY3QgY2FsbGJh
Y2spOwogCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkob2JqZWN0IGNhbGxiYWNrKTsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2xlYW4gdmFsdWUsIG9iamVj
dCBjYWxsYmFjayk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxG
aWxlcyhvYmplY3QgZmlsZXNBcnJheSk7CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01lZGlh
SWNvbihvYmplY3QgbWVkaWFJY29uKTsKQEAgLTM4OSw2ICszOTIsNyBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNl
dE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBi
b29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9v
bGVhbiBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChE
T01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1
c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOTU4YTc5YmE0MzQ4
YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYS4uNzcwZmUxOGQ5ZjMwMzRkMThjNjg3ODZiNDI2
ZWQ0OTc2OTYwNWJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMzNiw2ICszMzYsMTEgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2Fs
bERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpIHsK
KyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3Rp
Y3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwpA
QCAtNDIyLDYgKzQyNywxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rl
c3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdURk1vdmUo
ZG9tYWlucykpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVXZWJWaWV3
Q2F0ZWdvcnkiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworCisg
ICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFj
ayh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlYzEyNmQ2OGUzNWQ1ZTU3MGVlMTUy
ZGY2ODIwYjQwM2ZhNzdmMmNkLi4xNjBmMjFjMTAzYjUzNjkzZTRiMjMwNTE1MzcyZTlkZWVhZWJj
ODE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTc2MSw2ICs3NjEsOCBAQCBlbnVtIHsKICAgICBUZXh0RmllbGRE
aWRCZWdpbkVkaXRpbmdDYWxsYmFja0lELAogICAgIFRleHRGaWVsZERpZEVuZEVkaXRpbmdDYWxs
YmFja0lELAogICAgIEN1c3RvbU1lbnVBY3Rpb25DYWxsYmFja0lELAorICAgIEdldFdlYlZpZXdD
YXRlZ29yeUNhbGxiYWNrSUQsCisgICAgRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRD
YWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9OwogCkBAIC0y
OTA0LDQgKzI5MDYsNDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPZmZzY3JlZW5DYW52YXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JU
ZXN0UnVubmVyKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBpbmplY3RlZEJ1bmRsZS5wYWdlR3Jv
dXAoKSwga2V5LmdldCgpLCBlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpnZXRXZWJW
aWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJD
YWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0V2ViVmlld0NhdGVnb3J5IikpOworICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJl
Y2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayhTdHJpbmcgY2F0ZWdvcnkpCit7CisgICAgV0tC
dW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYg
Y29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwor
CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBtYWtlU3RyaW5nKCJcIiIsIGNhdGVnb3J5LCAiXCIi
KTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJp
bmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVzdWx0U3Ry
aW5nLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNr
KEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQorCitib29sIFRl
c3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhc0FwcEJvdW5kU2Vzc2lv
biIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQ
YWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVy
bkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5H
ZXRUeXBlSUQoKSk7CisKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0
aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSwgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhE
aWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkU2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNzIxMDIxZGQ2Y2M4NzViNmJmYzI2NThkOTlmZjUx
MjQ5Yjk1NmUyMi4uYjc3Y2I2YzU1M2UyN2Y1YmIyYzU4NmEwZDViNTg2YzI2ZmYwY2I1ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBjYWxsRGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMp
OwogCisgICAgCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFj
ayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKFN0cmlu
Zyk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhKU1Zh
bHVlUmVmKTsKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTVmFsdWVSZWYp
OwpAQCAtNDk0LDYgKzQ5OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2
aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVuc2lnbmVkKTsKICAg
ICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKGJvb2wsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0
ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGIyMjFkYTE3
MDM5MjkxMWJhNjI1ZTU3N2M4Y2Y5M2NhZWIzODg3OGQuLjZiMjZiOGZkNTcxNzdmYzE0ZWMxNTc3
MTVmZmM1M2VlMjM2ZmJmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC04MDQsNiArODA0LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZp
ZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAg
ICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IGZhbHNlOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRl
KCk7CisjZW5kaWYKKwogICAgIGNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhvcHRpb25zKTsKIAog
ICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zLCBSZXNldFN0YWdl
OjpCZWZvcmVUZXN0KSkKQEAgLTEwODcsMTAgKzEwOTEsNiBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZQogCiAgICAgc2V0SGlkZGVuKGZhbHNlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0jZW5k
aWYKLQogICAgIGlmICghcGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlv
bnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExMTMsNiArMTExMyw4IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCisg
ICAgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoZmFsc2UpOworCiAgICAgbV9kaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24gPSBmYWxzZTsKICAgICBt
X3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91
bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CkBAIC0zMTI0
LDYgKzMxMjYsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5z
KCkKIHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKK3sK
K30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2Fs
bGJhY2tDb250ZXh0IHsKQEAgLTM3MTMsNiArMzcxOSw0OSBAQCBib29sIFRlc3RDb250cm9sbGVy
Ojppc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKG1fbWFpbldl
YlZpZXctPnBhZ2UoKSk7CiB9CiAKK3N0cnVjdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tD
b250ZXh0IHsKKyAgICBleHBsaWNpdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0
KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNv
bnRyb2xsZXIpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJv
bGxlcjsKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVzdWx0IHsgZmFsc2Ug
fTsKK307CisKK3N0YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2Fs
bGJhY2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4odXNlckRh
dGEpOworICAgIGNvbnRleHQtPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0LT5kb25lID0g
dHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3N0
YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sodm9pZCogdXNl
ckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PEluQXBwQnJvd3NlclBy
aXZhY3lDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+ZG9uZSA9IHRy
dWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitib29s
IFRlc3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24oKQoreworICAgIEluQXBwQnJvd3Nl
clByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCksICZjb250ZXh0LCBpbkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKTsK
KyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJuIGNvbnRl
eHQucmVzdWx0OworfQorCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wgdmFsdWUpCit7CisgICAgSW5BcHBCcm93c2VyUHJpdmFjeUNhbGxi
YWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZChUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgp
LCB2YWx1ZSwgJmNvbnRleHQsIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sp
OworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOworfQorCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGRUZXN0T3B0
aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggNGU2NTExMjllYzI5NGY2ZDVhNTljNDM3MWUyOTYzNWExYjFmOTk0Yy4u
MWM3Zjc1ZDY5Y2Y4YzQ1NTMwMGJhMzQ2YTBlNWM1NTFjNjIyMzYxNSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CiAgICAgdm9pZCBnZXRQcmV2YWxl
bnREb21haW5zKCk7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lk
IGdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQoYm9vbCk7CiAKICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZpbGVVUkxzKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0T3BlblBh
bmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5QYW5lbEZpbGVVUkxzID0g
ZmlsZVVSTHM7IH0KQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldE1v
Y2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1aW50
NjRfdCk7CiAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgp
IGNvbnN0OworICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAKICAgICB2b2lkIGluamVj
dFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAzMjI0ZjA4YWFlNDg0MTg5ZjFkNDIzNWUxZTZhZjgwNmVk
MTM1NzE0Li5hZjcyMzFmODI3OWM5NWY1YjVlY2FjZmJhY2MxMmM4YWIwZDc3NGU5IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzYwLDYgKzc2MCwxMyBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFu
R2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jvb2xlYW5S
ZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJ
UHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAg
LTgwMCw2ICs4MDcsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldE9wZW5QYW5lbEZpbGVVUkxzKHN0YXRpY19jYXN0PFdL
QXJyYXlSZWY+KG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXZWJW
aWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0
V2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0T3BlblBhbmVsRmlsZVVSTHNNZWRpYUljb24iKSkgewpAQCAtMTAwMiw2ICsx
MDE0LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIGJvb2wgaXNNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKICAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJFbmFibGVkKSk7CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiSGFzQXBwQm91bmRTZXNzaW9uIikpIHsKKyAgICAgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24gPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFzQXBw
Qm91bmRTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSho
YXNBcHBCb3VuZFNlc3Npb24pKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25uZWN0TW9ja0dh
bWVwYWQiKSkgewpAQCAtMTg3MCw2ICsxODg3LDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSk7
CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxs
cHRyKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKTsKQEAgLTE5NDgsNyArMTk3MSwxMyBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlQXJyYXlSZWY+IG1l
c3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKG1lc3NhZ2VC
b2R5LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFpbi51
dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlV2ViVmlld0NhdGVnb3J5KFN0cmluZyYgd2ViVmlld0NhdGVnb3J5KQoreworICAgIFdLUmV0
YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoIkNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5IikpOwogICAgIAor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcod2ViVmlld0NhdGVnb3J5LnV0ZjgoKS5kYXRhKCkpKTsK
ICAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3Nh
Z2VCb2R5LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
CmluZGV4IDUwMzM3ZDY3NWRlMDkwYWRkZjViNzZjODAwNzJhMTdmYmE0YzEzZTYuLmVjNGY1OTY2
MmM3YjViZTAzNjYxNTA3MmMyMjA1OTYyZTg0ODU1NjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKQEAgLTg3LDYgKzg3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlk
U2V0SGFzSGFkVXNlckludGVyYWN0aW9uKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlQWxsU3RvcmFn
ZUFjY2Vzc0VudHJpZXMoVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogICAgIHZvaWQgZGlkUmVj
ZWl2ZVByZXZhbGVudERvbWFpbnMoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJik7CisgICAgdm9pZCBkaWRTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOwogCiAgICAgdm9pZCBkaWRSZW1vdmVBbGxTZXNzaW9u
Q3JlZGVudGlhbHMoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQppbmRleCBkM2YyZWYxYmMzMmVlMGRmMzgyZTYzMmNi
ZDUzMGEwNDdmNzJmOGY5Li42Zjk1NWIwZGFiMWM1NWM0OTBkNmI1MmQ0MzliNWNhZDk0NmM1OWVl
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxl
ckNvY29hLm1tCkBAIC0zNTYsNiArMzU2LDMyIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFy
UHJldmFsZW50RG9tYWlucygpCiAgICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgX2NsZWFyUHJldmFsZW50RG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9y
bVZpZXcoKV07CiB9CiAKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSgp
Cit7CisgICAgYXV0byogcGFyZW50VmlldyA9IG1haW5XZWJWaWV3KCk7CisgICAgaWYgKCFwYXJl
bnRWaWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24ud2Vic2l0ZURhdGFTdG9yZSBfZ2V0V2ViVmlld0NhdGVnb3J5Rm9yOnBhcmVudFZpZXctPnBs
YXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLV2ViVmlld0NhdGVnb3J5IHdlYlZp
ZXdDYXRlZ29yeSkgeworICAgICAgICBTdHJpbmcgY2F0ZWdvcnk7CisgICAgICAgIHN3aXRjaCAo
d2ViVmlld0NhdGVnb3J5KSB7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5QXBwQm91
bmREb21haW46CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJBcHBCb3VuZERvbWFpbiI7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlIeWJyaWRBcHA6
CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJIeWJyaWRBcHAiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5SW5BcHBCcm93c2VyOgorICAgICAgICAg
ICAgY2F0ZWdvcnkgPSAiSW5BcHBCcm93c2VyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIF9XS1dlYlZpZXdDYXRlZ29yeVdlYkJyb3dzZXI6CisgICAgICAgICAgICBjYXRlZ29y
eSA9ICJXZWJCcm93c2VyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoY2F0ZWdvcnkp
OworICAgIH1dOworfQorCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdL
U3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tV
c2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpOT10pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM1Nzg0MDZjNjRkMjUxMmI3N2RjZjRmYTNhNzAyNzI3
ZmUzOTJjNWEuLmNjMDQ3ZWRmOTRlOTViZTJmMDVmNmI2MDliYjQ5YWJiMjEzMDM2MDkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hl
bmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBz
ZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0MDA2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQWRkZWQg
dHdvIHRlc3RzLiBPbmUgdG8gdGVzdCB0aGUgcHJvcGVyIGNhdGVnb3JpemF0aW9uIG9mIGFwcC1i
b3VuZAorICAgICAgICBuYXZpZ2F0aW9uLCBhbmQgb25lIHRvIGNoZWNrIHRoYXQgc3dpdGNoaW5n
IHNlc3Npb25zIG9jY3VycyB3aGVuCisgICAgICAgIG5hdmlnYXRpbmcgdG8gYW4gYXBwLWJvdW5k
IGRvbWFpbi4KKworICAgICAgICBTaW5jZSB0aGVzZSB0ZXN0cyB1c2UgSVRQIHRvIHNldCB1c2Vy
IGludGVyYWN0aW9uLCB0aGV5IHNob3VsZCBvbmx5CisgICAgICAgIGJlIHJ1biBvbiBpT1MgYW5k
IG1hYy13azIuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIGh0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5k
LWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW4tYXBw
LWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3Vu
ZC1kb21haW4uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zOgorCiAy
MDIwLTAyLTIxICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgTWFjIHdrMiBdIGh0dHAvd3B0L2ZldGNoL2Rpc2FibGUtc3BlY3VsYXRpdmUtZm9yLXJl
bG9hZC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiMzU2ODFl
Y2JlMDg3MTEzYTVhZjZmODU5YzQyMjAxZDRiOGJkZWY3Li5jODkyYmM3MDJhNTRjYjFlODlkZDdk
YmNjZGQ2MjA3NGQ4ODc5NTY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE1NSw2ICsxNTUsOCBA
QCBodHRwL3Rlc3RzL25hdmlnYXRpb24vdXNlcmFnZW50LXJlbG9hZC5waHAgWyBTa2lwIF0KIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9vcGVuZGF0YWJhc2UtYWZ0ZXItc3RvcmFnZS1jcmFzaC5o
dG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9JREJPYmplY3QtbGVhay5odG1sIFsgU2tp
cCBdCiBmYXN0L2Zvcm1zL2NhbGwtdGV4dC1kaWQtY2hhbmdlLWluLXRleHQtZmllbGQtd2hlbi10
eXBpbmcuaHRtbCBbIFNraXAgXQoraHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBb
IFNraXAgXQorCiAKICMgT25seSBNYWMgYW5kIGlPUyBoYXZlIGFuIGltcGxlbWVudGF0aW9uIG9m
IFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soKS4KIGZhc3QvaGFybmVzcy91aXNjcmlw
dGNvbnRyb2xsZXIgWyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9t
YWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTIzYTY5MWI4Y2U4MTI5MzVjNzgzMGNlZDFm
ZTNlOGI2ZWJjOTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNyBAQAorVGVzdHMgdGhhdCBhbiBBcHAtQm91bmQgRG9tYWluIGdldHMgY2xhc3NpZmll
ZCBhcyBzbworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdWNjZXNzLCBk
b21haW4gY2xhc3NpZmllZCBhcyBJbi1BcHAgQnJvd3Nlci4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4u
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAt
Ym91bmQtZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmNlMjFmNzg2MWFiYWZjNjk3NDMzODBiM2Q4
NDJjNzAzYTllZjY3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwKQEAgLTAsMCArMSw0
MSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpJ
c0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCdUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21haW4g
Z2V0cyBjbGFzc2lmaWVkIGFzIHNvJyk7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
ICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKworICAgICAgICBmdW5jdGlvbiBh
c2tGb3JXZWJWaWV3Q2F0ZWdvcnkoKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFdlYlZp
ZXdDYXRlZ29yeShmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2F0
ZWdvcnkgPT0gIkluQXBwQnJvd3NlciIpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
IlN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLiIpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFpbHVyZSwg
ZG9tYWluIG5vdCBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLiIpOworICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KworICAgICAgICBjb25zdCBkZXN0aW5hdGlvbk9yaWdpbiA9ICJodHRwOi8vbG9jYWxob3N0Ojgw
MDAiOworICAgICAgICBmdW5jdGlvbiBuYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW4oKSB7Cisg
ICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gZGVzdGluYXRpb25PcmlnaW4gKyAi
L2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhhc2ggIT0g
IiNzdGVwMiIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuZ2V0V2ViVmlld0NhdGVnb3J5KGZ1
bmN0aW9uIChjYXRlZ29yeSkgeworICAgICAgICAgICAgICAgIGlmIChjYXRlZ29yeSAhPSAiQXBw
Qm91bmREb21haW4iKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIkZhaWx1cmUs
IHN0YXJ0aW5nIGNhdGVnb3J5IG5vdCBBcHBCb3VuZERvbWFpbiIpOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbmF2aWdhdGVUb05vbkFwcEJvdW5kRG9tYWluKCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFza0ZvcldlYlZpZXdDYXRlZ29yeSgpOwor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5
L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGZlOGE2M2U0NzdhOWEwZGNjMDJkNjI3NWVkNmFiMTBjNWI3OWRm
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dz
ZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21h
aW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIHRoYXQgdGhlIHNlc3Npb24g
aXMgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0byBhbiBhcHAtYm91bmQgZG9t
YWluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTaG91bGQgaGF2ZSBh
bmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUg
cGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgYXBwLWJvdW5kIHNlc3Npb24gYWZ0
ZXIgbmF2aWdhdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9t
YWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
c3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGM4Y2JhMGI4YWQ2MjRmYThmOTRjY2EyNDUzMjY1MzQzNWJhM2YzMgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbApA
QCAtMCwwICsxLDExNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIg
WyBpbnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkPXRydWUgYXBwbGljYXRpb25C
dW5kbGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8aHRtbCBsYW5nPSJlbiI+Cis8
aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10
ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3Jl
c291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBuYXZpZ2F0
aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uIik7CisgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICBjb25zdCBhcHBCb3VuZE9yaWdpbiA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiOwor
ICAgIGNvbnN0IG5vbkFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCI7Cisg
ICAgY29uc3Qgc2Vzc2lvbkNvb2tpZU5hbWUgPSAic2Vzc2lvbkNvb2tpZSI7CisgICAgY29uc3Qg
cGVyc2lzdGVudENvb2tpZU5hbWUgPSAicGVyc2lzdGVudENvb2tpZSI7CisgICAgY29uc3QgdHdv
TWludXRlc0luU2Vjb25kcyA9IDEyMDsKKworICAgIGZ1bmN0aW9uIHNldFNlc3Npb25Db29raWUo
KSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlc3Npb25Db29raWVOYW1lICsgIj0xOyBw
YXRoPS8iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFBlcnNpc3RlbnRDb29raWUoKSB7Cisg
ICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBlcnNpc3RlbnRDb29raWVOYW1lICsgIj0xOyBwYXRo
PS87IE1heC1BZ2U9IiArIHR3b01pbnV0ZXNJblNlY29uZHMgKyAiOyI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY2hlY2tDb29raWVzKHNob3VsZEhhdmVTZXNzaW9uQ29va2llLCBzaG91bGRIYXZl
UGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICBsZXQgaGFzU2Vzc2lvbkNvb2tpZSA9IChkb2N1
bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMoc2Vzc2lvbkNvb2tpZU5hbWUpLAorICAgICAgICAg
ICAgaGFzUGVyc2lzdGVudENvb2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMo
cGVyc2lzdGVudENvb2tpZU5hbWUpOworCisgICAgICAgIGlmIChzaG91bGRIYXZlU2Vzc2lvbkNv
b2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxk
IGhhdmUgYW5kIGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisgICAgICAgIGVsc2UgaWYgKHNo
b3VsZEhhdmVTZXNzaW9uQ29va2llICYmICFoYXNTZXNzaW9uQ29va2llKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRoZSBzZXNzaW9uIGNv
b2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVz
dCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmIGhhc1Nl
c3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZG4ndCBoYXZlIGJ1
dCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZlIHRoZSBzZXNzaW9uIGNvb2tp
ZS4iKTsKKworCisgICAgICAgIGlmIChzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAmJiBoYXNQ
ZXJzaXN0ZW50Q29va2llKQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkIGhhdmUgYW5k
IGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgIGVsc2UgaWYgKHNob3VsZEhh
dmVQZXJzaXN0ZW50Q29va2llICYmICFoYXNQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBoYXZlIHRoZSBwZXJzaXN0ZW50
IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYm
IGhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZG4n
dCBoYXZlIGJ1dCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZlIHRoZSBw
ZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5UZXN0KCkgewor
ICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gpIHsKKyAgICAgICAgICAgIGNh
c2UgIiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkb2N1
bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2luKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBpcyBub3Qgc3RhcnRpbmcgb3V0IG9uICIgKyBhcHBC
b3VuZE9yaWdpbiArICIuIik7CisgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
dHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5jZSB0aGUg
dGVzdCBtYW51YWxseSBzZXRzIHRoZSBpbkFwcEJyb3dzZXJQcml2YWN5IGZsYWcgaW4gdGhlCisg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nlc3MsIHdlIG5lZWQgdG8gcmUt
ZXN0YWJsaXNoIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGJ5CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBuYXZpZ2F0aW5nIGF3YXkgdGhlbiBiYWNrIHRvIHRoZSBhcHAtYm91bmQgRG9tYWluIGJl
Zm9yZSBzZXR0aW5nIGNvb2tpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5s
b2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZh
Y3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwj
c3RlcDEiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMSI6CisgICAgICAg
ICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGFwcEJvdW5kT3JpZ2luICsgIi9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJv
dW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9u
Lm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlN0ZXAgMiBpcyBub3Qgb24gIiArIGFwcEJvdW5kT3JpZ2luICsgIi4iKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oYXBw
Qm91bmRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZXRT
ZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNldFBlcnNpc3RlbnRDb29raWUo
KTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAg
ICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNlc3Npb24oKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGRpZCBub3Qgc3RhcnQgd2l0aCBh
cHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhhcyBhcHAtYm91bmQg
c2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9
IG5vbkFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNz
aW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAzIjsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
IiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9ICIjc3Rl
cDQiCisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gbm9uQXBwQm91bmRPcmln
aW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0ZXAgMyBpcyBub3Qgb24gIiAr
IG5vbkFwcEJvdW5kT3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3Rp
Y3NVcGRhdGVDb29raWVCbG9ja2luZyhydW5UZXN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVz
KGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9
IGFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9u
LW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXA1IjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNSI6CisgICAgICAgICAgICAg
ICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAgICAgICAgIGlmICh0ZXN0UnVu
bmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRpb24uIik7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJPcmlnaW4g
aGFzIG5vIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRpb24uIik7CisgICAgICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiVW5rbm93biBoYXNoLiIpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCBhNjU1ZDVmODk5YTE2ZDNjN2UyYmRkMmVmNWRiM2VjZmRkYzA1OTkyLi5iOGM0M2M0ODJl
MmRmYTM1ZTI0Yzc1NzlmMDUyNzkwNDBhODg3NjQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5OSw2ICsyNzk5LDkgQEAgaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWlmLWF1dG8tZGlzbWlz
cy1kYXRhYmEKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZmFs
c2UtYnktZGVmYXVsdC1kYXRhYmFzZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZhbHNlLWJ5LWRlZmF1bHQtZXBoZW1lcmFsLWRhdGFi
YXNlLmh0bWwgWyBQYXNzIF0KIAorIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zLCBv
bmx5IHdvcmsgZm9yIGlPUyBhbmQgTWFjIFdLMi4KK2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS8gWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhwZWN0YXRpb25zIHNp
bmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVkaXJlY3RzLWlu
LXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJl
ZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVzdHMtaW4tcHJpdmF0ZS1tb2Rl
Lmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVj
dGF0aW9ucwppbmRleCAxZDc2ZDFjYmZjOGZiMjc1NDBjNmY2M2Q0YzlmNTdjYjliM2U1Mzk4Li4y
ZTU0MmVlMDk5NTQxOWFlYmE1YjY2ZWJhNWZjZWFhNTFlZjUwODgzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OCw2ICs1OCw5IEBAIHdl
YmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50
LXJlcXVlc3QvYWxsb3dwYXltZW50CiB3ZWJraXQub3JnL2IvMTc1NjExIGltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVudHJlcXVlc3Qvc2V0
dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0LXRpbWluZy5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1l
bnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3NldHRpbmctYWxsb3dwYXltZW50cmVxdWVz
dC5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQogCisjIFNraXBwZWQgaW4gZ2VuZXJhbCBleHBlY3Rh
dGlvbnMsIG9ubHkgd29yayBmb3IgaU9TIGFuZCBNYWMgV0syLgoraHR0cC90ZXN0cy9pbi1hcHAt
YnJvd3Nlci1wcml2YWN5LyBbIFBhc3MgXQorCiAjIHNraXAgaW4gZmF2b3Igb2YgdGVzdHMgaW4g
aHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdAogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhvZC5odHRwcy5odG1s
IFsgV29udEZpeCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BheW1lbnQtcmVx
dWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbCBbIFdvbnRGaXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391426</attachid>
            <date>2020-02-21 13:32:11 -0800</date>
            <delta_ts>2020-02-21 14:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200221133210.patch</filename>
            <type>text/plain</type>
            <size>121313</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOWNhNTM1YWMzMTIxNjIy
MWM3ZjcwN2VjZmRlNzFjMzNkZTUyNDQuLmI2OWU4NWE4MjIzM2Q1N2Y2ZmFjMGUyNTVjOWQxOGZj
ZDU4NTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sCisKKyAgICAgICAgU3VwcG9ydHMgbmV0d29yayBzZXNzaW9uIHN3aXRjaGluZyBm
b3IgbmF2aWdhdGlvbnMgdG8gYXBwLWJvdW5kCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcmVxdWly
ZXMgdXBkYXRpbmcgdGhlIFdlYlBhZ2Ugd2hlbiBhIG5hdmlnYXRpb24gb2NjdXJzCisgICAgICAg
IHRvIGNoZWNrIHdoZXRoZXIgaXQgaXMgdG8gYW4gYXBwLWJvdW5kIGRlc3RpbmF0aW9uLiBJbiBj
YXNlIG9mIGEKKyAgICAgICAgcHJvY2VzcyBzd2FwLCB0aGlzIGhhcyB0byBiZSBkb25lIGJvdGgg
aW4gUG9saWN5RGVjaXNpb25TZW5kZXIgYW5kCisgICAgICAgIGluIHRoZSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEgYW5kIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdAor
ICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG11c3Qgc2VuZCB0
aGUgSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBmbGFnIHRvIHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6Cisg
ICAgICAgIFBhc3NlcyB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBmbGFnIHRvIHRo
ZSBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91
bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBBIGxhcmdlIHBvcnRpb24g
b2YgdGhpcyBwYXRjaCBpcyB0aHJlZSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIG9uZSBzZXRzIAor
ICAgICAgICB0aGUgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIGZvciB0aGUgdGVzdCBjYXNl
LCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiwgYW5kIG9uZQorICAgICAgICBj
aGVja3MgdG8gbWFrZSBzdXJlIHRoZSBjYXRlZ29yeSB3YXMgY29ycmVjdGx5IHNldCB0byBhcHAt
Ym91bmQgZG9tYWluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgUGFzc2Vz
IHRoZSBJbi1hcHAgYnJvd3NlciBwcml2YWN5IGZsYWcgdmFsdWUgZnJvbSBOU1VzZXJEZWZhdWx0
cyB0byB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscyk6CisgICAgICAg
IENyZWF0ZXMgYSBuZXcgc2Vzc2lvbiAob3IgcmV0dXJucyB0aGUgZXhpc3RpbmcgYXBwLWJvdW5k
IHNlc3Npb24pIGlmCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIGlzIGFwcC1ib3VuZC4gVGhpcyBp
cyB0aGUgbWFpbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICBJbiB0aGUgY2FzZSBvZiBh
IHByb2Nlc3Mgc3dhcCwgd2UgbXVzdCBhZGQgdGhlCisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gYm9vbGVhbiBpbiBMb2FkUGFyYW1ldGVycyB0byBlbnN1cmUgaXQgZ2V0cyBz
ZW50IHRvCisgICAgICAgIHRoZSBuZXcgV2ViUGFnZSB2aWEgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5k
ZXI6OnNlbmQpOgorICAgICAgICBGaXhlcyBhIGNhcGl0YWxpemF0aW9uIGVycm9yLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgZGV0ZXJtaW5lIGlmIHRoZSBjYXRlZ29yeSBpcyBhcHAtYm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrIGFzIGl0IGlz
IGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2ZGRjODNhZWI2OTY3YzhlZWI4YzE4ZmQwNmE5MTIu
LjgwNTBkMTFmZjhlNzE3ZTE5NzVhNjRiYmYwNGJlNmU1NmRlMGM3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBh
cmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJhY2tlcik7CisgICAgcmV0dXJuIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxk
UHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0
ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTc0ZDMzYTgxZjYyZDQ1ODA2YjY4OTVm
ZjNiYWVjYmZjNTY2YTE3Li4xYmY4NDc1NzFmZTlkMGFjNmJlMGYwZGU5MTYwM2JiYzJiNmNkNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
KyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2JjYzFmY2M3ZTQ4MC4u
MzRkY2IyYmYyNGVhOTczMzNlMWEzZDBkNzY4YjBiM2I1ZjdhY2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MDMsNCArMjYw
MywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4MzRmNmVlNTdj
MmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zNDJkNmE2YmU5MzI2NTQyNWQ1ZGQyOWQ3ODli
NmU1MTgxOGNlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29uZHMgc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNo
VGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMwN2Vm
NWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0N2Ji
MzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBIYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFhOTBl
MzAxOWU3NTM2Li41NjI5N2I2NGIxMjMxMmYyZGY2YjZhMzg2YjE1YmM5M2ZlZjI2NDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2RlciA8
PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlm
ICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2
YmY2NDQ5NTNhLi5mMjIwMjY5Y2FkODE0ZWVjYjhlYWZiNDkzM2EzZmQ5YzllOWJlMTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lz
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisg
ICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmYzYWJkOTkzODkxZTdiYTA4ZGZmOGEy
M2JlN2YwOWI4YWY5MzgzNS4uZjU5OGQ3OTY2ODkwZTc3ZGQxMTRjMTJkN2ZhZTE2MzU2Y2Q1YzU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0
byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDhiMGMxY2E4YzUzZWY2YmYz
MWRjZDQwZGQzYTk2NWNmZWU2ZTVjODguLmI1ODNmMjliMjk1NDg4YTAwYzAxZWI1OTAwOGVkZTdj
ZWMxNWUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sKSB7IH0KICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOwogICAgIHZvaWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAyMWZjODY5YmNkODJjMjk1Y2I2NDU2NTQ0MTA3NThjMjU5Y2Y0NWMxLi5hMDM0NmQwNzMzNjIy
MDdmMGU2OWY4M2IwN2Y3NDMyNzhhN2RhYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBlbmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CisgICAgZW5jb2RlciA8PCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OwogfQogCiBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yNjksNiArMjcwLDExIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2Rl
ciA+PiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29u
bmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxi
b29sPiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGRlY29kZXIgPj4gaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZDsKKyAgICBpZiAoIWlzSW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgKnNlc3Npb25JRApAQCAtMzE0LDYgKzMyMCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgLCBX
VEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKKyAgICAgICAgLCBXVEZN
b3ZlKCppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogICAgIH19OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzJmNzUyNjc1ZWQ4N2I4MjIxMDIxZTA2YjZhOGEz
YjVmNDc4YzkwNi4uZThlNmUxOThkZDk3MzZmMzgzMjc0MWQxZTkxZjRiNWM2YTRkOTFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBmNDgzMTlhNzFkOTI1OThjMmQxNjBhNTBiZjg2NDdlZTdiYmE2YTc0Li41ZWNlMDE4ZDRkNjdk
MWEzNDViYjU3MGRlYzVhYmRlNzFjYWQ4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw5
ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNr
Q29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlm
ZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFn
ZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CiAgICAgfQog
CiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZp
bmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VS
TFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNl
NmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uYWIzMDZmNjRiNzA3ODE0ZDk3NDRmMjMwYWIwNDk5MjA1
Y2ZhNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0
cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSkpCisgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAppbmRleCA0YWQyYzEwMWJlN2E5ZTc5ZjhkMzUwMjY1ZDc4OGMzOGQwMmU1ODU4Li5kYTYx
ZmNjMDNkZTNhMDhlNDFiZDFmNTdiNzQ5NzMwM2U2YWM3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApA
QCAtOTMsMTQgKzkzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25XcmFwcGVy
JiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGJvb2wgaGFzQXBwQm91bmRT
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2FwcEJvdW5kU2Vzc2lvbjsgfQog
CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi5lZmRhMDA3ZTEwNzg5YzYy
NzBkZTNkZGQ2NGUyNjRlOGUzOWU0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkgewpAQCAtMTE5Nyw2ICsxMTk4LDkgQEAgU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmICht
X2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQorICAgICAgICByZXR1cm4g
YXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKwogICAgIHN3aXRjaCAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7CkBAIC0xMjA5LDYgKzEyMTMsMzIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIK
ICAgICB9CiB9CiAKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3Vu
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBtX2Fw
cEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOworICAgICAgICBt
X2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRp
b24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAg
ICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlKTsKKyAgICB9CisKKyAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0byBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKKyAgICAgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdl
LiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5n
IGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7Cisg
ICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKKyAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb247CisgICAgICAgIH0KKyAgICB9IChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisKKyAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7Cit9CisKIFNlc3Npb25XcmFwcGVyJiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCiB7CiAgICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzXSB7CkBAIC0xMjgyLDYg
KzEzMTIsMTMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2Vs
KCkKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9CiAgICAgbV9pc29sYXRlZFNlc3Npb25z
LmNsZWFyKCk7CisKKyAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgW21fYXBw
Qm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxp
ZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBb
bV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
biBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTI5NSw2ICsxMzMyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
biBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0
KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50
cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50
cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vz
c2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTky
OWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9j
a0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAg
aWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjI2MTIyMzY5
ZTFjMjM0NmY3OWZkNjY3OGNhZDYwNTUwZWM4YjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC02OSw3ICs3MCw4IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgeyBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0KKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDcxNWM1MjEyMmYwMTlhMjk2NDli
MWExZTU4YWFhMDljZjk3ODVkMmUuLjY0ZjRlMmQ2MDIyMGY2NjVlMjAwYTU1M2QyN2I1YTcwY2E4
NDM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzEsOCArMzEs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBZZXMsIE5vIH07CisKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9
OwpAQCAtNDIsNiArNDUsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwg
bmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1
OSwxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29k
ZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw5ICs4NSwyMCBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92
ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RG
TW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwotCisgICAgICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1v
dmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdU
Rk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKICAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sCisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllcywKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGZmZmUxZTA5YWI2Yzhk
NjM5MmEzNjdhYjAyYzYxYS4uNGUwNDNjMDA1NTg4YmY3ODYwYzI3NGYzY2Q5OGZlNzhmY2Y3NDY4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjcsNiArNTI3LDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzQXBwQm91bmRTZXNzaW9uKFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzQXBwQm91bmRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CkBAIC02OTYsMyArNzAzLDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyOGQ2YTg3N2Q2Yjc3NWE4ODNhNGUwZGRjZTAwOGMxMWE1YWZmNzY3Li5lODZhNmY5MDc5ZWE1
Nzk5OWZmN2ZmNTQ2ZTgyODk1OTc1OTRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE3LDYgKzExNyw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uKSh2b2lkKiBmdW5jCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiko
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVIYXNB
cHBCb3VuZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24sIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKQEAgLTE1Nyw2ICsxNTksOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRAog
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQzMmMyMDdjODFmMTQzM2VkYjM0OTVmY2M1N2FjNTcyNWM4ZTI3NmEuLjE3OWNkOTcx
YTIzZmUyNWE0YTM2M2RkZDcyY2QyZGEwNTBlMjhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDcz
LDYgKzQ3MywyMiBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29y
eVdlYkJyb3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIodG9XS1dlYlZpZXdDYXRlZ29yeSh3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53
ZWJWaWV3Q2F0ZWdvcnkoKSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2YzNTY5OTBh
ZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpAQCAt
NjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0V2Vi
Vmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEzOTExNTdh
Li40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZjYWQuLjAy
YmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlh
cnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEyNWFlNDQ4
NDFlMmMzZWU5NjJiNzNiOTQuLmQzOGVkNTU3YTg3ZTA1ODNiMjMzYWViOTViN2NhZTVkZTU5ZGZi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAot
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0
aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQs
IG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChu
YXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9u
LmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
RnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAh
PSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGIxMWRlMWM0MjU5MGM2MGNmMWFmMDY4
M2M3NzI1ODZmNmFiYTM2YjQuLmY3NTM4MTczN2YyOTYzODBiNGQwZjI5ODY0ZTNkYWVmN2ZiNWM3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAt
OTEsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJ
REZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGYwYjc4NTky
NzliNDFmYzE3NWJkNGVjM2Y1YjEzZGE5ODI3NTZkOS4uMzZhZGYwZWI3ZWQ5MzYzNmY5MjZjYjk5
NGIyNGQ5ZGU2NTIzYjQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0yNzQsNiArMjc0LDEyIEBACiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5o
IgogI2VuZGlmCiAKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPFdlYktp
dEFkZGl0aW9ucy9XZWJQYWdlUHJveHlBZGRpdGlvbnMuaD4KKyNlbHNlCisjZGVmaW5lIFdFQl9Q
QUdFX1BST1hZX0FERElUSU9OUworI2VuZGlmCisKIC8vIFRoaXMgY29udHJvbHMgd2hhdCBzdHJh
dGVneSB3ZSB1c2UgZm9yIG1vdXNlIHdoZWVsIGNvYWxlc2NpbmcuCiAjZGVmaW5lIE1FUkdFX1dI
RUVMX0VWRU5UUyAxCiAKQEAgLTEyNjQsMTEgKzEyNzAsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBTaG8KICAgICBpZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdh
dGlvbigpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJvY2Vz
cygpLnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3Mp
Lm1vdmVUb1VuaXF1ZVB0cigpKTsKIAotICAgIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFy
ZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24uZ2V0KCksIFdU
Rk1vdmUocmVxdWVzdCksIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIHVzZXJEYXRhLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vKTsKKyAgICBsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9u
LmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCB1
c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbigpKTsKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3Nl
ZCk7CiAKQEAgLTEyOTAsNiArMTI5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAg
bG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCk7CiAg
ICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291cmNl
Rm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7
CisgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAgICAgbWF5YmVJbml0aWFsaXplU2FuZGJveEV4dGVu
c2lvbkhhbmRsZShwcm9jZXNzLCB1cmwsIG1fcGFnZUxvYWRTdGF0ZS5yZXNvdXJjZURpcmVjdG9y
eVVSTCgpLCBsb2FkUGFyYW1ldGVycy5zYW5kYm94RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGFk
ZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwpAQCAtMTM4NCwxMSArMTM5
MSwxMSBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogICAgIGlmIChzaG91bGRVc2VGb3JlZ3Jv
dW5kUHJpb3JpdHlGb3JDbGllbnROYXZpZ2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNl
dEZvcmVncm91bmRBY3Rpdml0eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2
aXR5KCJDbGllbnQgbmF2aWdhdGlvbiJfcykubW92ZVRvVW5pcXVlUHRyKCkpOwogCi0gICAgbG9h
ZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJ
RCwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0LCBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1F
VHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6Ok5vLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIFdURjo6bnVsbG9wdCwg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFn
ZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywg
Y29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb24iKTsKIApAQCAtMTQwOCw2ICsxNDE1LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRh
dGEocHJvY2Vzcy0+dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwog
ICAgIGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyA9IFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKTsKICAgICBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0g
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTsKKyAgICBsb2FkUGFyYW1ldGVycy5pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKKwog
ICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJv
Y2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CkBAIC0zMDUy
LDEwICszMDYxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUG9s
aWN5RGVjaXNpb25TZW5kZXIoaWRlbnRpZmllciwgV1RGTW92ZShzZW5kRnVuY3Rpb24pKSk7CiAg
ICAgfQogCi0gICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCisg
ICAgdm9pZCBzZW5kKFBvbGljeURlY2lzaW9uJiYgcG9saWN5RGVjaXNpb24pCiAgICAgewogICAg
ICAgICBpZiAobV9zZW5kRnVuY3Rpb24pCi0gICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZN
b3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgICAgICAgICBtX3NlbmRGdW5jdGlvbihXVEZNb3Zl
KHBvbGljeURlY2lzaW9uKSk7CiAgICAgfQogCiAgICAgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIoKSB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KQEAgLTMwNzAsNiArMzA3OSwzMSBA
QCBwcml2YXRlOgogICAgIFBvbGljeUNoZWNrSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiB9Owog
CisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJvdW5kRG9tYWluKGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBkb21haW4pIGNvbnN0Cit7CisgICAgV0VCX1BBR0VfUFJPWFlfQURE
SVRJT05TCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgV2ViUGFnZVByb3h5Ojppc0FwcEJv
dW5kRG9tYWluKGNvbnN0IFVSTCYgdXJsKSBjb25zdAoreworICAgIHJldHVybiBpc0FwcEJvdW5k
RG9tYWluKFJlZ2lzdHJhYmxlRG9tYWluKHVybCkpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBjb25zdCBV
UkwmIHJlcXVlc3RVUkwpCit7CisgICAgaWYgKG1fcHJlZmVyZW5jZXMtPmlzSW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQoKSAmJiBpc01haW5GcmFtZSkgeworICAgICAgICBpZiAoIWlzQXBwQm91
bmREb21haW4ocmVxdWVzdFVSTCkpIHsKKyAgICAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0
V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29yeTo6SW5BcHBCcm93c2VyKTsKKyAgICAgICAg
ICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluOjpObzsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5k
RG9tYWluKTsKKyAgICAgICAgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAgICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0
aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUs
IEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9y
ZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVmKCk7CkBAIC0zMTU3LDcgKzMxOTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5
QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBv
bGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwgV2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2Vz
cyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNzKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXIt
PmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RG
OjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5k
ZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTMxODAsNyArMzIxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdh
dGlvbioKICAgICAgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSB7IH07CiAg
ICAgfQogCi0gICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlm
aWVyKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOworICAgIHNlbmRlci0+
c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5
cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMyNTcsOSArMzI5MSw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBu
YXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9u
ZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAgICAgIEFTU0VSVCgh
bmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5pc0VtcHR5KCkpOwogICAgICAgICBpZiAoYXV0
byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9uLT5zdWJzdGl0dXRlRGF0YSgpKQotICAgICAg
ICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0
ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwg
c3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0
aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9h
ZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0
aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBzdWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1
YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3RpdHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1
dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3By
b3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsg
bmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9LCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOworICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5h
dmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkg
fSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNp
dGVQb2xpY2llcykpOwogICAgIH07CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2hv
dWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFsUGFnZSkpCiAgICAgICAgIG1faW5zcGVjdG9y
Q29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5nQ2FsbGJhY2soKm1fcHJvdmlzaW9uYWxQYWdl
LCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAtNDkzOCw4ICs0OTcyLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFtZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCi0gICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQs
IGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0
IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CisgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNp
c2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIHBvbGljeURl
Y2lzaW9uKSB7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiks
IHdlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUo
ZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlELApAQCAtNDk2Myw5ICs0OTk3LDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgaWYgKG5hdmlnYXRpb25JRCAmJiAhZnJvbUFQ
SSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNsZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNh
Y3Rpb24pOwogCisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihmcmFtZS5pc01h
aW5GcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKKwogICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZy
b21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3MocHJvY2VzcywgcmVxdWVzdC51cmwoKSkpIHsK
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzLCAiSWdub3Jpbmcg
cmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNvdXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUg
dGhlIHNhbmRib3giKTsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2Vu
ZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsg
c2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9s
aWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTkyLDcgKzUyMjgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eQogICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJl
c3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNs
aWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25vdXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2Fk
LgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigp
LCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVs
bG9wdCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50
aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVz
ZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCkBAIC01MjA5LDggKzUyNDUsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBTZWN1cgogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5n
V2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9u
KSB7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pKTsKKyAgICAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzZW5kZXIpKTsKQEAgLTUyNTgsOCArNTI5NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQg
PT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5V
U0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAotICAgICAg
ICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwg
W3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vz
cyldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQs
IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uKSwgd2ViUGFnZUlEKTsKKyAgICAgICAgYXV0byBz
ZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdl
SUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29u
c3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5l
cklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgICAgIH0pOwogICAgICAgICAK
ICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24u
Z2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzkxZTQ5NjI1MzRlMTk2ZjhmY2MzM2VlZmFhZTk1ZTQw
ODFkMWNhMC4uYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2MjYxYmM3ZGUzZGJiNzU0ZjZjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2MTMsOCArMTYxMyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93
bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwotICAg
IHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVs
bG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwg
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRzJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LApAQCAtMjI1MSw2ICsyMjUxLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRyeUNsb3Nl
VGltZWRPdXQoKTsKICAgICB2b2lkIG1ha2VTdG9yYWdlU3BhY2VSZXF1ZXN0KFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3Vy
cmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnRE
YXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7CisgICAgICAgIAorICAgIGJvb2wgaXNBcHBCb3VuZERvbWFpbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0OworICAgIGJvb2wgaXNBcHBC
b3VuZERvbWFpbihjb25zdCBVUkwmKSBjb25zdDsKKyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oYm9vbCBpc01haW5GcmFtZSwgY29uc3QgVVJMJik7CisgICAgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0
IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiAgICAgY29uc3Qg
SWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93
ZWJQYWdlSUQ7CkBAIC0yNzM0LDYgKzI3MzksOCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9ub3RvbmljVGltZSBtX2RpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsKICNlbmRpZgorICAgICAgICAKKyAgICBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCmluZGV4IGUxNjUxYzgzMjFi
YTUzY2I4NzI5ZjVjZjM1ZWM3OTM4NzUxYzk4MGMuLjRjNGZiODU1YmFiZjE5MzNiNWU4MzZjZTJl
NzVkMTdmMDZkNTA3OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAg
LTE0NSw2ICsxNDUsOCBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0
b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtDYWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hl
RGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAogICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2Fs
aG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IGlzU2FmYXJpOworICAgIGJvb2wgaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IFtkZWZhdWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1ZyVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6Omlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRLZXkoKS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07
CisgICAgCiAgICAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBw
YXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycyA9IHsKICAgICAgICAgbV9zZXNzaW9u
SUQsCkBAIC0xNzgsNiArMTgwLDcgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0
ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIG1fY29uZmlndXJhdGlvbi0+dGVzdFNw
ZWVkTXVsdGlwbGllcigpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25u
ZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRp
b24tPmFsbG93c1NlcnZlclByZWNvbm5lY3QoKSwKKyAgICAgICAgaXNJbkFwcEJyb3dzZXJQcml2
YWN5RW5hYmxlZAogICAgIH07CiAgICAgbmV0d29ya2luZ0hhc0JlZ3VuKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAKaW5kZXggYmRiNzIwMDFiMmE3MzRjOTViMmY1ZjRlZjMyN2FiMTViY2YzYzZhMi4uNDRi
YWJiYTkzZTUwODE3OTU4NDJkMmYwMmMzNzc5NmFiN2Q1ZjQ1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAK
QEAgLTIyNTUsNCArMjI1NSwyOCBAQCBXVEY6OlN0cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZh
dWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGlyZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAg
bmV0d29ya1Byb2Nlc3MtPmhhc0FwcEJvdW5kU2Vzc2lvbihtX3Nlc3Npb25JRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNp
emUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIEFT
U0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQorCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNl
dEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7
CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+c2V0SW5BcHBCcm93c2Vy
UHJpdmFjeUVuYWJsZWQobV9zZXNzaW9uSUQsIGVuYWJsZWQsIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXgg
ZjA4MjlmMTJiNTcwNDc5NjkxMGE0NjljNWE4ZTcyMjAxYTUxMjk1ZS4uN2ZhYTRiNTkyNjVhZjNl
ZmQ0MWNmMGI0MWIzNWQxM2EyNjEyMzFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMjkzLDYgKzI5Myw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpTdHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICB2b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhhc0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRl
RGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3Jr
UXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBw
bHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzNTdlMjJhOGZmYmUyY2M0NDA2Y2U1ODFlZGI1YjVhZWRh
YTYyZjMuLjczNTdmNTRkOTVjZjEyMjRiZTQ2Y2UzZGEzMjM3YThjYWJiZjFlZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTMyNiwxNCArMzI2LDE3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAg
ICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhl
YWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0K
KyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IGZyYW1lID8gdG9XZWJGcmFt
ZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpIDogbnVsbHB0cjsKKyAgICBh
dXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/
IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOworICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBs
b2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRv
Y3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CiAgICAgICAgIC8vIEZJ
WE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwg
dGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBhYmxlIHRvIGdldCBpdCB1c2luZyB3ZWJQYWdl
SWQuCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAg
ICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRl
ckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgICAgIGF1dG8qIHdlYlBhZ2UgPSB3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgICAgICBpZiAod2ViUGFn
ZSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAgICAg
fQpAQCAtNjAxLDYgKzYwNCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgICAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9s
aWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2lu
YWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnM7CisgICAgCisgICAgaWYg
KHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisKICAgICBh
ZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1lLT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRl
cnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBAIC02NjgsMTMgKzY3NSwxNiBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VI
ZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9
CiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgmZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKLQor
ICAgIAorICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJG
cmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVs
bHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDog
bnVsbHB0cjsKKyAgICBpZiAod2ViUGFnZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4oKTsKKyAgICAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQ
YXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgp
OwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFzcyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nl
c3MuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9X
ZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAgICAgaWYgKHdlYlBhZ2UpCiAgICAgICAg
IGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdl
LT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEyMTJlZWFiNTcwN2FkZWUxZTY3NjVkYTJmZTY5YjNk
ZTc3YzI5ZWIuLjk4YjE1Yjg3ZmMxM2RhMmRiZjQ0M2JhOThhNGQ4NmQ3YTlkMzU0MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVw
UG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQo
KSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgaWRlbnRpZmllciwg
bmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwKICAgICAgICAgY2FuU2hvd1Jlc3BvbnNl
LCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkp
KSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklE
LCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7
IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2lu
ZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKQEAgLTk5MywxMSArOTkzLDExIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihjb25zdCBOYXZpZ2F0CiAgICAgICAgICAgICByZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRM
b2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQo
KSkuZ2V0KCkpKSwKICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpSZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Ci0g
ICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
UG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUs
IDAsIHsgfSwgeyB9IH0pOworICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsg
fSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9m
cmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9u
IHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9u
LCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKKyAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcG9s
aWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5RGVjaXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lv
bi5kb3dubG9hZElELCB7IH19KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAwNSw3
ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAoIXdlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUo
Y29yZUZyYW1lKSwKICAgICAgICAgcmVxdWVzdElkZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5u
YXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0
dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBs
aXN0ZW5lcklEKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBQb2xpY3lBY3Rp
b246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQ
b2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlm
aWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdub3Jl
LCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2Vs
UG9saWN5Q2hlY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBjMDU0ZDUxOTg0YzgzNjI1N2QxNWNmNzUxMWRjZjI1MjViNzZhYmI1Li4wNzA5
NDI1N2NkMWVhZjFiNmUyNzk5MjU0NjkzNmM5OTg5ZjRiOTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTU3MCw2ICsxNTcwLDggQEAgdm9p
ZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVMb2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFy
YW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFy
YW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogeworICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisK
ICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGlu
Z05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRDsKQEAgLTE2MDQsOCAr
MTYwNiwxMCBAQCBOT19SRVRVUk4gdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQ
cm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYsIFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQogeworICAgIHNldElzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisKICAg
ICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05h
dmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTE2MzIsNyArMTYzNiw3IEBAIHZvaWQgV2Vi
UGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIAogICAgIGF1
dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVycy5k
YXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwgPSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3Ry
aW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwoKSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRl
cnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmln
YXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZN
b3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVy
KSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwg
YmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5z
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFt
ZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShz
aGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5j
b2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQ
YXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRl
cm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCkBAIC0xNjQ0LDcgKzE2
NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYg
bG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMID0gbG9hZFBh
cmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JVUkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkg
OiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
KTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBh
cmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9h
ZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxM
b2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdh
dGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1v
dmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIp
LCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBi
YXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEpOworICAgIGxv
YWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRl
UG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBl
LCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBs
b2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7CiAgICAgbV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQ
cm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxlZFVSTCh7IH0pOwogfQogCkBAIC0zMjU4LDEy
ICszMjYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAgICAgIHBsdWdpblZpZXctPnNldExheWVySG9z
dGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFBvbGljeURlY2lzaW9uJiYgUG9saWN5RGVjaXNpb24pCit2b2lkIFdlYlBhZ2U6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBwb2xpY3lEZWNpc2lvbikKIHsKKyAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBvbGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOwogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
bjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFdURk1v
dmUoUG9saWN5RGVjaXNpb24pKTsKKyAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFdURk1vdmUocG9saWN5RGVjaXNpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
Ojpjb250aW51ZVdpbGxTdWJtaXRGb3JtKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRf
dCBsaXN0ZW5lcklEKQpAQCAtNzAwNiw2ICs3MDExLDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0T3Zl
cnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSkKICAgICBtX3BhZ2UtPnNl
dE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElz
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sKKyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBhNjg5NTMwZjM4MzZkNmY0Y2Ji
MGY1Njk3MmQzZmUxMTBlODEzMjU1Li5jN2NmMzhjNWJiYTIwMWNlZDc4OGNkMDNkNWEyMDRkNGFj
YTRmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xMjg2LDYgKzEyODYsOSBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEph
dmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24o
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnRO
YXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0
UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxvd3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3Mp
IHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IGFs
bG93czsgfQogCisgICAgdm9pZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgCiBwcml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEz
NzksNyArMTM4Miw3IEBAIHByaXZhdGU6CiAKICAgICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2Vi
RnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Ym9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlN
RVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNv
bnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGlj
eTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQgbG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0
cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJh
c2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNlckRhdGEmLCBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9
IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsK
IAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRyeUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwpAQCAtMjA2Niw2ICsyMDY5LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9S
TShHVEspCiAgICAgU3RyaW5nIG1fdGhlbWVOYW1lOwogI2VuZGlmCisgICAgCisgICAgTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCA5YmM0YWZiMjM3MjU3NDdmMjUzOThiZTA5MzRiYmNhNzUzMjA3
NDhiLi4xZGVkZjM5MmRkNzk5YWM2YjdhZmNkNmUyYjE0NDQ3ZjhlZjVjMDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTE4Niw3ICsxODYsOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIERpZFJlbW92
ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3Qg
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdlYnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lz
aW9uKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVj
aXNpb24gcG9saWN5RGVjaXNpb24pCisKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAg
Q2xlYXJTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDM4ZDJlMDcwYWJlNTY1YzZkYzE0MWRjZjg5NzhmYjIwNDNhNDhmMWEuLjA3
NzFkMDFkZDU1NjhjN2Y0YzJjMDU2YzQ0YTE4OGFkZjNkMzlmOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0w
Mi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAg
ICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5
IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBtb3N0bHkgdGVzdCBpbmZy
YXN0cnVjdHVyZSBpbnZvbHZpbmcgMyBmdW5jdGlvbnMuCisgICAgICAgIE9uZSBzZXRzIGluLWFw
cCBicm93c2VyIHByaXZhY3kgYXMgZW5hYmxlZCBpbiB0aGUgbmV0d29yayBwcm9jZXNzCisgICAg
ICAgIG1hbnVhbGx5IGZvciB0aGUgdGVzdC4gT25lIGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRoZSBX
ZWJWaWV3IGNhdGVnb3J5CisgICAgICAgIHdvcmtzIHByb3Blcmx5LCBhbmQgdGhlIGxhc3Qgb25l
IGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Npb24gZm9yCisgICAgICAgIGFuIGFwcC1ib3Vu
ZCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVu
bmVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxs
RGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6aGFzQXBwQm91bmRTZXNzaW9uKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpj
YWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjayk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmg6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjplbnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zRm9yVGVzdCk6CisgICAgICAgIENs
ZWFyaW5nIHRoZSBidW5kbGVJRCBzaG91bGQgaGFwcGVuIHJpZ2h0IGJlZm9yZSBzZXR0aW5nIGEg
bmV3IG9uZSwgCisgICAgICAgIG90aGVyd2lzZSBpdCBjbGVhcnMgdGhlIElEIGFmdGVyIGl0IGlz
IHNldCBhbmQgcmV0dXJucyBhIG51bGwgSUQuCisKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKFdUUjo6SW5BcHBCcm93c2Vy
UHJpdmFjeUNhbGxiYWNrQ29udGV4dDo6SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4
dCk6CisgICAgICAgIChXVFI6OmluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2FsbGJh
Y2spOgorICAgICAgICAoV1RSOjppbkFwcEJyb3dzZXJQcml2YWN5Vm9pZFJlc3VsdENhbGxiYWNr
KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbik6Cisg
ICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpU
ZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAg
ICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRTZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0
aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0
V2ViVmlld0NhdGVnb3J5KToKKwogMjAyMC0wMi0yMSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10gQWRkIGJ1aWxkIHN0ZXAgdG8gc2V0IGNxLSBm
bGFnIG9uIGJ1Z3ppbGxhIHBhdGNoCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCA0YTU1
MTAyZTUyOWIyMGQzN2Y2MGJmYjI4MWU0ODdkMTdlZDc3ODAyLi43MWY2MDI5MDUzMGMxNTkxNzc3
ZGM2NmI1ZjdkYmRmMzU3ODUzZjJmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM1
NCw2ICszNTQsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgLy8gU3RvcmFnZSBBY2Nl
c3MgQVBJCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhvYmplY3QgY2FsbGJh
Y2spOwogCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkob2JqZWN0IGNhbGxiYWNrKTsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2xlYW4gdmFsdWUsIG9iamVj
dCBjYWxsYmFjayk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxG
aWxlcyhvYmplY3QgZmlsZXNBcnJheSk7CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01lZGlh
SWNvbihvYmplY3QgbWVkaWFJY29uKTsKQEAgLTM4OSw2ICszOTIsNyBAQCBpbnRlcmZhY2UgVGVz
dFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNl
dE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25lZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBi
b29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9v
bGVhbiBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChE
T01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1
c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggOTU4YTc5YmE0MzQ4
YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYS4uNzcwZmUxOGQ5ZjMwMzRkMThjNjg3ODZiNDI2
ZWQ0OTc2OTYwNWJhNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTMzNiw2ICszMzYsMTEgQEAgdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2Fs
bERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXNDYWxsYmFjaygpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpIHsK
KyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3Rp
Y3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwpA
QCAtNDIyLDYgKzQyNywxNCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rl
c3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFsZW50RG9tYWluc0NhbGxiYWNrKFdURk1vdmUo
ZG9tYWlucykpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFJlY2VpdmVXZWJWaWV3
Q2F0ZWdvcnkiKSkgeworICAgICAgICBBU1NFUlQobWVzc2FnZUJvZHkpOworICAgICAgICBBU1NF
UlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworCisg
ICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFj
ayh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4obWVzc2FnZUJvZHkpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxs
YmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25D
cmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCBlYzEyNmQ2OGUzNWQ1ZTU3MGVlMTUy
ZGY2ODIwYjQwM2ZhNzdmMmNkLi4xNjBmMjFjMTAzYjUzNjkzZTRiMjMwNTE1MzcyZTlkZWVhZWJj
ODE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
VGVzdFJ1bm5lci5jcHAKQEAgLTc2MSw2ICs3NjEsOCBAQCBlbnVtIHsKICAgICBUZXh0RmllbGRE
aWRCZWdpbkVkaXRpbmdDYWxsYmFja0lELAogICAgIFRleHRGaWVsZERpZEVuZEVkaXRpbmdDYWxs
YmFja0lELAogICAgIEN1c3RvbU1lbnVBY3Rpb25DYWxsYmFja0lELAorICAgIEdldFdlYlZpZXdD
YXRlZ29yeUNhbGxiYWNrSUQsCisgICAgRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRD
YWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRDYWxsYmFja0lEID0gMTAwCiB9OwogCkBAIC0y
OTA0LDQgKzI5MDYsNDcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRPZmZzY3JlZW5DYW52YXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBXS0J1bmRsZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JU
ZXN0UnVubmVyKGluamVjdGVkQnVuZGxlLmJ1bmRsZSgpLCBpbmplY3RlZEJ1bmRsZS5wYWdlR3Jv
dXAoKSwga2V5LmdldCgpLCBlbmFibGVkKTsKIH0KIAordm9pZCBUZXN0UnVubmVyOjpnZXRXZWJW
aWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJD
YWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELCBjYWxsYmFjayk7CisgICAgCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmlu
Z0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0V2ViVmlld0NhdGVnb3J5IikpOworICAgIFdLQnVu
ZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNz
YWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJl
Y2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayhTdHJpbmcgY2F0ZWdvcnkpCit7CisgICAgV0tC
dW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0
ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYg
Y29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwor
CisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBtYWtlU3RyaW5nKCJcIiIsIGNhdGVnb3J5LCAiXCIi
KTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJp
bmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcocmVzdWx0U3Ry
aW5nLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNr
KEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOworfQorCitib29sIFRl
c3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9
IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkhhc0FwcEJvdW5kU2Vzc2lv
biIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQ
YWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmds
ZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVy
bkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJRChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5H
ZXRUeXBlSUQoKSk7CisKKyAgICByZXR1cm4gV0tCb29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0
aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRhdGEpKS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVz
dFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSwgSlNWYWx1
ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhE
aWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdL
KFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRv
cHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1l
c3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBUZXN0UnVubmVyOjpjYWxsRGlkU2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygpCit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxs
YmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrSUQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNzIxMDIxZGQ2Y2M4NzViNmJmYzI2NThkOTlmZjUx
MjQ5Yjk1NmUyMi4uYjc3Y2I2YzU1M2UyN2Y1YmIyYzU4NmEwZDViNTg2YzI2ZmYwY2I1ZCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmgKQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBjYWxsRGlkUmVjZWl2
ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJhY2soVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMp
OwogCisgICAgCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFj
ayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrKFN0cmlu
Zyk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhKU1Zh
bHVlUmVmKTsKICAgICB2b2lkIHNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uKEpTVmFsdWVSZWYp
OwpAQCAtNDk0LDYgKzQ5OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2
aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0aW9uKHVuc2lnbmVkKTsKICAg
ICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKGJvb2wsIEpTVmFsdWVSZWYpOworICAgIHZvaWQgY2FsbERpZFNldEluQXBwQnJvd3Nl
clByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKIAogICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0
ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGIyMjFkYTE3
MDM5MjkxMWJhNjI1ZTU3N2M4Y2Y5M2NhZWIzODg3OGQuLjZiMjZiOGZkNTcxNzdmYzE0ZWMxNTc3
MTVmZmM1M2VlMjM2ZmJmMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC04MDQsNiArODA0LDEwIEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZp
ZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAg
ICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IGZhbHNlOwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRl
KCk7CisjZW5kaWYKKwogICAgIGNyZWF0ZVdlYlZpZXdXaXRoT3B0aW9ucyhvcHRpb25zKTsKIAog
ICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhvcHRpb25zLCBSZXNldFN0YWdl
OjpCZWZvcmVUZXN0KSkKQEAgLTEwODcsMTAgKzEwOTEsNiBAQCBib29sIFRlc3RDb250cm9sbGVy
OjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25z
LCBSZQogCiAgICAgc2V0SGlkZGVuKGZhbHNlKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0jZW5k
aWYKLQogICAgIGlmICghcGxhdGZvcm1SZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlv
bnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTExMTMsNiArMTExMyw4IEBAIGJvb2wg
VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9w
dGlvbnMmIG9wdGlvbnMsIFJlCiAKICAgICBjbGVhckFkQ2xpY2tBdHRyaWJ1dGlvbigpOwogCisg
ICAgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoZmFsc2UpOworCiAgICAgbV9kaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24gPSBmYWxzZTsKICAgICBt
X3NlcnZlclRydXN0RXZhbHVhdGlvbkNhbGxiYWNrQ2FsbHNDb3VudCA9IDA7CiAgICAgbV9zaG91
bGREaXNtaXNzSmF2YVNjcmlwdEFsZXJ0c0FzeW5jaHJvbm91c2x5ID0gZmFsc2U7CkBAIC0zMTI0
LDYgKzMxMjYsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5z
KCkKIHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKK3sK
K30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2Fs
bGJhY2tDb250ZXh0IHsKQEAgLTM3MTMsNiArMzcxOSw0OSBAQCBib29sIFRlc3RDb250cm9sbGVy
Ojppc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKG1fbWFpbldl
YlZpZXctPnBhZ2UoKSk7CiB9CiAKK3N0cnVjdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tD
b250ZXh0IHsKKyAgICBleHBsaWNpdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0
KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNv
bnRyb2xsZXIpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJv
bGxlcjsKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVzdWx0IHsgZmFsc2Ug
fTsKK307CisKK3N0YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2Fs
bGJhY2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4odXNlckRh
dGEpOworICAgIGNvbnRleHQtPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0LT5kb25lID0g
dHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3N0
YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sodm9pZCogdXNl
ckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PEluQXBwQnJvd3NlclBy
aXZhY3lDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+ZG9uZSA9IHRy
dWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitib29s
IFRlc3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24oKQoreworICAgIEluQXBwQnJvd3Nl
clByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCksICZjb250ZXh0LCBpbkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKTsK
KyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJuIGNvbnRl
eHQucmVzdWx0OworfQorCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wgdmFsdWUpCit7CisgICAgSW5BcHBCcm93c2VyUHJpdmFjeUNhbGxi
YWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZChUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgp
LCB2YWx1ZSwgJmNvbnRleHQsIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sp
OworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOworfQorCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGRUZXN0T3B0
aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggNGU2NTExMjllYzI5NGY2ZDVhNTljNDM3MWUyOTYzNWExYjFmOTk0Yy4u
MWM3Zjc1ZDY5Y2Y4YzQ1NTMwMGJhMzQ2YTBlNWM1NTFjNjIyMzYxNSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CiAgICAgdm9pZCBnZXRQcmV2YWxl
bnREb21haW5zKCk7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lk
IGdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQoYm9vbCk7CiAKICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZpbGVVUkxzKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0T3BlblBh
bmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5QYW5lbEZpbGVVUkxzID0g
ZmlsZVVSTHM7IH0KQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldE1v
Y2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1aW50
NjRfdCk7CiAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgp
IGNvbnN0OworICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAKICAgICB2b2lkIGluamVj
dFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAzMjI0ZjA4YWFlNDg0MTg5ZjFkNDIzNWUxZTZhZjgwNmVk
MTM1NzE0Li5jOWU5NGVlYjY2Y2U5NGMzN2JmOTAwYTg0ZDBmYzQ3MDkwNzliN2VmIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzYwLDYgKzc2MCwxMyBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFu
R2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jvb2xlYW5S
ZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJ
UHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAg
LTgwMCw2ICs4MDcsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldE9wZW5QYW5lbEZpbGVVUkxzKHN0YXRpY19jYXN0PFdL
QXJyYXlSZWY+KG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXZWJW
aWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0
V2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0T3BlblBhbmVsRmlsZVVSTHNNZWRpYUljb24iKSkgewpAQCAtMTAwMiw2ICsx
MDE0LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIGJvb2wgaXNNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKICAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJFbmFibGVkKSk7CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiSGFzQXBwQm91bmRTZXNzaW9uIikpIHsKKyAgICAgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24gPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFzQXBw
Qm91bmRTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSho
YXNBcHBCb3VuZFNlc3Npb24pKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25uZWN0TW9ja0dh
bWVwYWQiKSkgewpAQCAtMTg3MCw2ICsxODg3LDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSk7
CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxs
cHRyKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKTsKQEAgLTE5NDgsNyArMTk3MSwxNSBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlQXJyYXlSZWY+IG1l
c3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKG1lc3NhZ2VC
b2R5LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFpbi51
dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJiB3ZWJWaWV3Q2F0ZWdv
cnkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0
ZWdvcnkiKSk7CiAgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh3ZWJWaWV3Q2F0ZWdvcnku
dXRmOCgpLmRhdGEoKSkpOwogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2Zi
YTRjMTNlNi4uZWM0ZjU5NjYyYzdiNWJlMDM2NjE1MDcyYzIyMDU5NjJlODQ4NTU2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODcsNiArODcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmKTsKKyAg
ICB2b2lkIGRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCk7CiAKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGQzZjJlZjFi
YzMyZWUwZGYzODJlNjMyY2JkNTMwYTA0N2Y3MmY4ZjkuLjZmOTU1YjBkYWIxYzU1YzQ5MGQ2YjUy
ZDQzOWI1Y2FkOTQ2YzU5ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM1Niw2ICszNTYsMzIgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKICAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0
V2ViVmlld0NhdGVnb3J5KCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXco
KTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlG
b3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tXZWJW
aWV3Q2F0ZWdvcnkgd2ViVmlld0NhdGVnb3J5KSB7CisgICAgICAgIFN0cmluZyBjYXRlZ29yeTsK
KyAgICAgICAgc3dpdGNoICh3ZWJWaWV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgY2FzZSBfV0tXZWJW
aWV3Q2F0ZWdvcnlBcHBCb3VuZERvbWFpbjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkFwcEJv
dW5kRG9tYWluIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIF9XS1dlYlZpZXdD
YXRlZ29yeUh5YnJpZEFwcDoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkh5YnJpZEFwcCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlJbkFwcEJy
b3dzZXI6CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJJbkFwcEJyb3dzZXIiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5V2ViQnJvd3NlcjoKKyAg
ICAgICAgICAgIGNhdGVnb3J5ID0gIldlYkJyb3dzZXIiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdD
YXRlZ29yeShjYXRlZ29yeSk7CisgICAgfV07Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
amVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogewogICAgIGF1dG8gdXNlclNjcmlw
dCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOiB0b1dURlN0
cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9j
dW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzU3ODQwNmM2NGQyNTEy
Yjc3ZGNmNGZhM2E3MDI3MjdmZTM5MmM1YS4uY2MwNDdlZGY5NGU5NWJlMmYwNWY2YjYwOWJiNDlh
YmIyMTMwMzYwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBkb21h
aW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4K
KworICAgICAgICBBZGRlZCB0d28gdGVzdHMuIE9uZSB0byB0ZXN0IHRoZSBwcm9wZXIgY2F0ZWdv
cml6YXRpb24gb2YgYXBwLWJvdW5kCisgICAgICAgIG5hdmlnYXRpb24sIGFuZCBvbmUgdG8gY2hl
Y2sgdGhhdCBzd2l0Y2hpbmcgc2Vzc2lvbnMgb2NjdXJzIHdoZW4KKyAgICAgICAgbmF2aWdhdGlu
ZyB0byBhbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIFNpbmNlIHRoZXNlIHRlc3RzIHVz
ZSBJVFAgdG8gc2V0IHVzZXIgaW50ZXJhY3Rpb24sIHRoZXkgc2hvdWxkIG9ubHkKKyAgICAgICAg
YmUgcnVuIG9uIGlPUyBhbmQgbWFjLXdrMi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1k
b21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdh
dGlvbi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjAtMDItMjEgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBh
cHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0gaHR0cC93cHQvZmV0Y2gvZGlzYWJsZS1z
cGVjdWxhdGl2ZS1mb3ItcmVsb2FkLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGIzNTY4MWVjYmUwODcxMTNhNWFmNmY4NTljNDIyMDFkNGI4YmRlZjcuLmM4OTJi
YzcwMmE1NGNiMWU4OWRkN2RiY2NkZDYyMDc0ZDg4Nzk1NjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTU1LDYgKzE1NSw4IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi91c2VyYWdlbnQtcmVsb2Fk
LnBocCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRl
ci1zdG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVj
dC1sZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4t
dGV4dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvIFsgU2tpcCBdCisKIAogIyBPbmx5IE1hYyBhbmQgaU9TIGhhdmUgYW4g
aW1wbGVtZW50YXRpb24gb2YgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzaygpLgogZmFz
dC9oYXJuZXNzL3Vpc2NyaXB0Y29udHJvbGxlciBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1MjNhNjkxYjhj
ZTgxMjkzNWM3ODMwY2VkMWZlM2U4YjZlYmM5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21h
aW4gZ2V0cyBjbGFzc2lmaWVkIGFzIHNvCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIFN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWRvbWFpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjI1YzVmNDU5
MWZhMGUyYjc4NDBmNDJhMjQzNmNiMTY5NjBmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4u
aHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGludGVybmFsOklzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ9dHJ1ZSBhcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXI9dGVzdGlkZW50aWZpZXIgXSAtLT4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYW4g
QXBwLUJvdW5kIERvbWFpbiBnZXRzIGNsYXNzaWZpZWQgYXMgc28nKTsKKyAgICAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisg
ICAgICAgIGZ1bmN0aW9uIGFza0ZvcldlYlZpZXdDYXRlZ29yeSgpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZ2V0V2ViVmlld0NhdGVnb3J5KGZ1bmN0aW9uIChjYXRlZ29yeSkgeworICAgICAg
ICAgICAgICAgIGlmIChjYXRlZ29yeSAhPSAiSW5BcHBCcm93c2VyIikgeworICAgICAgICAgICAg
ICAgICAgICAgIGFza0ZvcldlYlZpZXdDYXRlZ29yeSgpOworICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
U3VjY2VzcywgZG9tYWluIGNsYXNzaWZpZWQgYXMgSW4tQXBwIEJyb3dzZXIuIik7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CisgICAgICAgIGZ1bmN0aW9uIG5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFpbigp
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdp
biArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDIi
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFz
aCAhPSAiI3N0ZXAyIikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdv
cnkoZnVuY3Rpb24gKGNhdGVnb3J5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9
ICJBcHBCb3VuZERvbWFpbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFp
bHVyZSwgc3RhcnRpbmcgY2F0ZWdvcnkgbm90IEFwcEJvdW5kRG9tYWluIik7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBuYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNrRm9yV2ViVmlld0NhdGVnb3J5
KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkZhaWx1cmUsIGRvbWFpbiBub3QgY2xhc3NpZmllZCBhcyBJ
bi1BcHAgQnJvd3Nlci4iKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJUZXN0IHRpbWVkIG91
dCBhZnRlciAyMCBzZWNvbmRzIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KQorICAgICAgICB9LCAyMDAwMCk7CisgICAgCisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFw
cC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJv
dW5kLWRvbWFpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlOGE2M2U0NzdhOWEwZGNjMDJk
NjI3NWVkNmFiMTBjNWI3OWRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9u
LXRvLWFwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNlc3Npb24gaXMgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0
byBhbiBhcHAtYm91bmQgZG9tYWluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxk
IGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgYXBw
LWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlv
bi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91
bmQtZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGM4Y2JhMGI4YWQ2MjRmYThmOTRjY2EyNDUzMjY1
MzQzNWJhM2YzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1i
b3VuZC1kb21haW4uaHRtbApAQCAtMCwwICsxLDExNCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
PXRydWUgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9u
IHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uIik7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBhcHBCb3VuZE9yaWdpbiA9ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IG5vbkFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3Qgc2Vzc2lvbkNvb2tpZU5hbWUgPSAic2Vzc2lvbkNv
b2tpZSI7CisgICAgY29uc3QgcGVyc2lzdGVudENvb2tpZU5hbWUgPSAicGVyc2lzdGVudENvb2tp
ZSI7CisgICAgY29uc3QgdHdvTWludXRlc0luU2Vjb25kcyA9IDEyMDsKKworICAgIGZ1bmN0aW9u
IHNldFNlc3Npb25Db29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlc3Npb25D
b29raWVOYW1lICsgIj0xOyBwYXRoPS8iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFBlcnNp
c3RlbnRDb29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBlcnNpc3RlbnRDb29r
aWVOYW1lICsgIj0xOyBwYXRoPS87IE1heC1BZ2U9IiArIHR3b01pbnV0ZXNJblNlY29uZHMgKyAi
OyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKHNob3VsZEhhdmVTZXNzaW9u
Q29va2llLCBzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICBsZXQgaGFzU2Vz
c2lvbkNvb2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMoc2Vzc2lvbkNvb2tp
ZU5hbWUpLAorICAgICAgICAgICAgaGFzUGVyc2lzdGVudENvb2tpZSA9IChkb2N1bWVudC5jb29r
aWUgKyAiIikuaW5jbHVkZXMocGVyc2lzdGVudENvb2tpZU5hbWUpOworCisgICAgICAgIGlmIChz
aG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKQorICAgICAgICAgICAg
dGVzdFBhc3NlZCgiU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7Cisg
ICAgICAgIGVsc2UgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmICFoYXNTZXNzaW9uQ29v
a2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBo
YXZlIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVTZXNz
aW9uQ29va2llICYmIGhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
IlNob3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQgZG9lc24ndCBoYXZl
IHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKworCisgICAgICAgIGlmIChzaG91bGRIYXZlUGVyc2lz
dGVudENvb2tpZSAmJiBoYXNQZXJzaXN0ZW50Q29va2llKQorICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAg
IGVsc2UgaWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llICYmICFoYXNQZXJzaXN0ZW50Q29v
a2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBo
YXZlIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1
cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVQ
ZXJzaXN0ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIlNob3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIp
OworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQg
ZG9lc24ndCBoYXZlIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gp
IHsKKyAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2lu
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBpcyBub3Qgc3RhcnRp
bmcgb3V0IG9uICIgKyBhcHBCb3VuZE9yaWdpbiArICIuIik7CisgICAgICAgICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgdGVzdCBtYW51YWxseSBzZXRzIHRoZSBpbkFwcEJyb3dzZXJQcml2
YWN5IGZsYWcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nl
c3MsIHdlIG5lZWQgdG8gcmUtZXN0YWJsaXNoIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGJ5CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0aW5nIGF3YXkgdGhlbiBiYWNrIHRvIHRoZSBh
cHAtYm91bmQgRG9tYWluIGJlZm9yZSBzZXR0aW5nIGNvb2tpZXMuCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAt
Ym91bmQtZG9tYWluLmh0bWwjc3RlcDEiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
IiNzdGVwMSI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGFwcEJv
dW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlN0ZXAgMiBpcyBub3Qgb24gIiArIGFwcEJvdW5kT3JpZ2lu
ICsgIi4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oYXBwQm91bmRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNl
dFBlcnNpc3RlbnRDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRy
dWUsIHRydWUpOworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNl
c3Npb24oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGRp
ZCBub3Qgc3RhcnQgd2l0aCBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiT3Jp
Z2luIGhhcyBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1l
bnQubG9jYXRpb24uaHJlZiA9IG5vbkFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1w
cml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5o
dG1sI3N0ZXAzIjsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgIiNzdGVwMyI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9j
YXRpb24uaGFzaCA9ICIjc3RlcDQiCisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKGZhbHNl
LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAh
PT0gbm9uQXBwQm91bmRPcmlnaW4pCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlN0
ZXAgMyBpcyBub3Qgb24gIiArIG5vbkFwcEJvdW5kT3JpZ2luKTsKKyAgICAgICAgICAgICAgICB0
ZXN0UnVubmVyLnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhydW5UZXN0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwNCI6CisgICAgICAgICAg
ICAgICAgY2hlY2tDb29raWVzKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgZG9jdW1l
bnQubG9jYXRpb24uaHJlZiA9IGFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1s
I3N0ZXA1IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVw
NSI6CisgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRydWUsIHRydWUpOworICAgICAgICAg
ICAgICAgIGlmICh0ZXN0UnVubmVyLmhhc0FwcEJvdW5kU2Vzc2lvbigpKQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5h
dmlnYXRpb24uIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJPcmlnaW4gaGFzIG5vIGFwcC1ib3VuZCBzZXNzaW9uIGFmdGVyIG5hdmlnYXRp
b24uIik7CisgICAgICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNU
ZXN0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiVW5rbm93biBoYXNoLiIpOworICAgICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgICAgIH0KKyAgICB9
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNjU1ZDVmODk5YTE2ZDNjN2UyYmRkMmVmNWRiM2VjZmRk
YzA1OTkyLi5iOGM0M2M0ODJlMmRmYTM1ZTI0Yzc1NzlmMDUyNzkwNDBhODg3NjQwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5OSw2ICsyNzk5LDkg
QEAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3Bl
bmVyLWlmLWF1dG8tZGlzbWlzcy1kYXRhYmEKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMt
c3RvcmFnZS1hY2Nlc3MtZmFsc2UtYnktZGVmYXVsdC1kYXRhYmFzZS5odG1sIFsgUGFzcyBdCiBo
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZhbHNlLWJ5LWRlZmF1
bHQtZXBoZW1lcmFsLWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBTa2lwcGVkIGluIGdlbmVy
YWwgZXhwZWN0YXRpb25zLCBvbmx5IHdvcmsgZm9yIGlPUyBhbmQgTWFjIFdLMi4KK2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVy
YWwgZXhwZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIu
CiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQt
cGFydHktcmVkaXJlY3RzLWluLXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVz
dHMtaW4tcHJpdmF0ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxZDc2ZDFjYmZjOGZiMjc1NDBjNmY2M2Q0
YzlmNTdjYjliM2U1Mzk4Li4yZTU0MmVlMDk5NTQxOWFlYmE1YjY2ZWJhNWZjZWFhNTFlZjUwODgz
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBA
IC01OCw2ICs1OCw5IEBAIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50CiB3ZWJraXQub3JnL2IvMTc1
NjExIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93
cGF5bWVudHJlcXVlc3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0LXRpbWluZy5odHRwcy5z
dWIuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3BheW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3NldHRpbmct
YWxsb3dwYXltZW50cmVxdWVzdC5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQogCisjIFNraXBwZWQg
aW4gZ2VuZXJhbCBleHBlY3RhdGlvbnMsIG9ubHkgd29yayBmb3IgaU9TIGFuZCBNYWMgV0syLgor
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3MgXQorCiAjIHNraXAgaW4g
ZmF2b3Igb2YgdGVzdHMgaW4gaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdAogaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0
LW1ldGhvZC5odHRwcy5odG1sIFsgV29udEZpeCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMu
aHRtbCBbIFdvbnRGaXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391429</attachid>
            <date>2020-02-21 14:43:57 -0800</date>
            <delta_ts>2020-02-21 15:44:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200221144356.patch</filename>
            <type>text/plain</type>
            <size>121307</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOWNhNTM1YWMzMTIxNjIy
MWM3ZjcwN2VjZmRlNzFjMzNkZTUyNDQuLmI2OWU4NWE4MjIzM2Q1N2Y2ZmFjMGUyNTVjOWQxOGZj
ZDU4NTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sCisKKyAgICAgICAgU3VwcG9ydHMgbmV0d29yayBzZXNzaW9uIHN3aXRjaGluZyBm
b3IgbmF2aWdhdGlvbnMgdG8gYXBwLWJvdW5kCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcmVxdWly
ZXMgdXBkYXRpbmcgdGhlIFdlYlBhZ2Ugd2hlbiBhIG5hdmlnYXRpb24gb2NjdXJzCisgICAgICAg
IHRvIGNoZWNrIHdoZXRoZXIgaXQgaXMgdG8gYW4gYXBwLWJvdW5kIGRlc3RpbmF0aW9uLiBJbiBj
YXNlIG9mIGEKKyAgICAgICAgcHJvY2VzcyBzd2FwLCB0aGlzIGhhcyB0byBiZSBkb25lIGJvdGgg
aW4gUG9saWN5RGVjaXNpb25TZW5kZXIgYW5kCisgICAgICAgIGluIHRoZSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEgYW5kIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdAor
ICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG11c3Qgc2VuZCB0
aGUgSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBmbGFnIHRvIHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6Cisg
ICAgICAgIFBhc3NlcyB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBmbGFnIHRvIHRo
ZSBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91
bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBBIGxhcmdlIHBvcnRpb24g
b2YgdGhpcyBwYXRjaCBpcyB0aHJlZSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIG9uZSBzZXRzIAor
ICAgICAgICB0aGUgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIGZvciB0aGUgdGVzdCBjYXNl
LCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiwgYW5kIG9uZQorICAgICAgICBj
aGVja3MgdG8gbWFrZSBzdXJlIHRoZSBjYXRlZ29yeSB3YXMgY29ycmVjdGx5IHNldCB0byBhcHAt
Ym91bmQgZG9tYWluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgUGFzc2Vz
IHRoZSBJbi1hcHAgYnJvd3NlciBwcml2YWN5IGZsYWcgdmFsdWUgZnJvbSBOU1VzZXJEZWZhdWx0
cyB0byB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscyk6CisgICAgICAg
IENyZWF0ZXMgYSBuZXcgc2Vzc2lvbiAob3IgcmV0dXJucyB0aGUgZXhpc3RpbmcgYXBwLWJvdW5k
IHNlc3Npb24pIGlmCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIGlzIGFwcC1ib3VuZC4gVGhpcyBp
cyB0aGUgbWFpbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICBJbiB0aGUgY2FzZSBvZiBh
IHByb2Nlc3Mgc3dhcCwgd2UgbXVzdCBhZGQgdGhlCisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gYm9vbGVhbiBpbiBMb2FkUGFyYW1ldGVycyB0byBlbnN1cmUgaXQgZ2V0cyBz
ZW50IHRvCisgICAgICAgIHRoZSBuZXcgV2ViUGFnZSB2aWEgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5k
ZXI6OnNlbmQpOgorICAgICAgICBGaXhlcyBhIGNhcGl0YWxpemF0aW9uIGVycm9yLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgZGV0ZXJtaW5lIGlmIHRoZSBjYXRlZ29yeSBpcyBhcHAtYm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrIGFzIGl0IGlz
IGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2ZGRjODNhZWI2OTY3YzhlZWI4YzE4ZmQwNmE5MTIu
LjgwNTBkMTFmZjhlNzE3ZTE5NzVhNjRiYmYwNGJlNmU1NmRlMGM3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBh
cmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJhY2tlcik7CisgICAgcmV0dXJuIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxk
UHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0
ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTc0ZDMzYTgxZjYyZDQ1ODA2YjY4OTVm
ZjNiYWVjYmZjNTY2YTE3Li4xYmY4NDc1NzFmZTlkMGFjNmJlMGYwZGU5MTYwM2JiYzJiNmNkNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
KyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2JjYzFmY2M3ZTQ4MC4u
MzRkY2IyYmYyNGVhOTczMzNlMWEzZDBkNzY4YjBiM2I1ZjdhY2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MDMsNCArMjYw
MywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4MzRmNmVlNTdj
MmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zNDJkNmE2YmU5MzI2NTQyNWQ1ZGQyOWQ3ODli
NmU1MTgxOGNlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29uZHMgc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNo
VGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMwN2Vm
NWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0N2Ji
MzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBIYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFhOTBl
MzAxOWU3NTM2Li41NjI5N2I2NGIxMjMxMmYyZGY2YjZhMzg2YjE1YmM5M2ZlZjI2NDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2RlciA8
PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlm
ICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2
YmY2NDQ5NTNhLi5mMjIwMjY5Y2FkODE0ZWVjYjhlYWZiNDkzM2EzZmQ5YzllOWJlMTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lz
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisg
ICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmYzYWJkOTkzODkxZTdiYTA4ZGZmOGEy
M2JlN2YwOWI4YWY5MzgzNS4uZjU5OGQ3OTY2ODkwZTc3ZGQxMTRjMTJkN2ZhZTE2MzU2Y2Q1YzU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0
byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDhiMGMxY2E4YzUzZWY2YmYz
MWRjZDQwZGQzYTk2NWNmZWU2ZTVjODguLmI1ODNmMjliMjk1NDg4YTAwYzAxZWI1OTAwOGVkZTdj
ZWMxNWUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sKSB7IH0KICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOwogICAgIHZvaWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAyMWZjODY5YmNkODJjMjk1Y2I2NDU2NTQ0MTA3NThjMjU5Y2Y0NWMxLi5hMDM0NmQwNzMzNjIy
MDdmMGU2OWY4M2IwN2Y3NDMyNzhhN2RhYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBlbmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CisgICAgZW5jb2RlciA8PCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OwogfQogCiBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yNjksNiArMjcwLDExIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2Rl
ciA+PiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29u
bmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxi
b29sPiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGRlY29kZXIgPj4gaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZDsKKyAgICBpZiAoIWlzSW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgKnNlc3Npb25JRApAQCAtMzE0LDYgKzMyMCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgLCBX
VEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKKyAgICAgICAgLCBXVEZN
b3ZlKCppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogICAgIH19OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzJmNzUyNjc1ZWQ4N2I4MjIxMDIxZTA2YjZhOGEz
YjVmNDc4YzkwNi4uZThlNmUxOThkZDk3MzZmMzgzMjc0MWQxZTkxZjRiNWM2YTRkOTFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBmNDgzMTlhNzFkOTI1OThjMmQxNjBhNTBiZjg2NDdlZTdiYmE2YTc0Li41ZWNlMDE4ZDRkNjdk
MWEzNDViYjU3MGRlYzVhYmRlNzFjYWQ4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw5
ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNr
Q29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlm
ZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFn
ZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CiAgICAgfQog
CiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZp
bmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VS
TFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNl
NmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uYWIzMDZmNjRiNzA3ODE0ZDk3NDRmMjMwYWIwNDk5MjA1
Y2ZhNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0
cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSkpCisgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAppbmRleCA0YWQyYzEwMWJlN2E5ZTc5ZjhkMzUwMjY1ZDc4OGMzOGQwMmU1ODU4Li5kYTYx
ZmNjMDNkZTNhMDhlNDFiZDFmNTdiNzQ5NzMwM2U2YWM3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApA
QCAtOTMsMTQgKzkzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25XcmFwcGVy
JiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGJvb2wgaGFzQXBwQm91bmRT
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2FwcEJvdW5kU2Vzc2lvbjsgfQog
CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi5lZmRhMDA3ZTEwNzg5YzYy
NzBkZTNkZGQ2NGUyNjRlOGUzOWU0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkgewpAQCAtMTE5Nyw2ICsxMTk4LDkgQEAgU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmICht
X2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQorICAgICAgICByZXR1cm4g
YXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKwogICAgIHN3aXRjaCAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7CkBAIC0xMjA5LDYgKzEyMTMsMzIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIK
ICAgICB9CiB9CiAKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3Vu
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBtX2Fw
cEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOworICAgICAgICBt
X2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRp
b24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAg
ICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlKTsKKyAgICB9CisKKyAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0byBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKKyAgICAgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdl
LiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5n
IGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7Cisg
ICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKKyAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb247CisgICAgICAgIH0KKyAgICB9IChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisKKyAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7Cit9CisKIFNlc3Npb25XcmFwcGVyJiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCiB7CiAgICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzXSB7CkBAIC0xMjgyLDYg
KzEzMTIsMTMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2Vs
KCkKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9CiAgICAgbV9pc29sYXRlZFNlc3Npb25z
LmNsZWFyKCk7CisKKyAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgW21fYXBw
Qm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxp
ZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBb
bV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
biBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTI5NSw2ICsxMzMyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
biBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0
KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50
cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50
cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vz
c2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTky
OWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9j
a0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAg
aWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjI2MTIyMzY5
ZTFjMjM0NmY3OWZkNjY3OGNhZDYwNTUwZWM4YjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC02OSw3ICs3MCw4IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgeyBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0KKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDcxNWM1MjEyMmYwMTlhMjk2NDli
MWExZTU4YWFhMDljZjk3ODVkMmUuLjY0ZjRlMmQ2MDIyMGY2NjVlMjAwYTU1M2QyN2I1YTcwY2E4
NDM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzEsOCArMzEs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBZZXMsIE5vIH07CisKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9
OwpAQCAtNDIsNiArNDUsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwg
bmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1
OSwxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29k
ZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw5ICs4NSwyMCBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92
ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RG
TW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwotCisgICAgICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1v
dmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdU
Rk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKICAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sCisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllcywKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGZmZmUxZTA5YWI2Yzhk
NjM5MmEzNjdhYjAyYzYxYS4uNGUwNDNjMDA1NTg4YmY3ODYwYzI3NGYzY2Q5OGZlNzhmY2Y3NDY4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjcsNiArNTI3LDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzQXBwQm91bmRTZXNzaW9uKFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzQXBwQm91bmRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CkBAIC02OTYsMyArNzAzLDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyOGQ2YTg3N2Q2Yjc3NWE4ODNhNGUwZGRjZTAwOGMxMWE1YWZmNzY3Li5lODZhNmY5MDc5ZWE1
Nzk5OWZmN2ZmNTQ2ZTgyODk1OTc1OTRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE3LDYgKzExNyw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uKSh2b2lkKiBmdW5jCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiko
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVIYXNB
cHBCb3VuZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24sIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKQEAgLTE1Nyw2ICsxNTksOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRAog
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQzMmMyMDdjODFmMTQzM2VkYjM0OTVmY2M1N2FjNTcyNWM4ZTI3NmEuLjE3OWNkOTcx
YTIzZmUyNWE0YTM2M2RkZDcyY2QyZGEwNTBlMjhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDcz
LDYgKzQ3MywyMiBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29y
eVdlYkJyb3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIodG9XS1dlYlZpZXdDYXRlZ29yeSh3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53
ZWJWaWV3Q2F0ZWdvcnkoKSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2YzNTY5OTBh
ZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpAQCAt
NjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0V2Vi
Vmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEzOTExNTdh
Li40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZjYWQuLjAy
YmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlh
cnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEyNWFlNDQ4
NDFlMmMzZWU5NjJiNzNiOTQuLmQzOGVkNTU3YTg3ZTA1ODNiMjMzYWViOTViN2NhZTVkZTU5ZGZi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAot
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0
aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQs
IG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChu
YXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9u
LmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
RnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAh
PSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGIxMWRlMWM0MjU5MGM2MGNmMWFmMDY4
M2M3NzI1ODZmNmFiYTM2YjQuLmY3NTM4MTczN2YyOTYzODBiNGQwZjI5ODY0ZTNkYWVmN2ZiNWM3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAt
OTEsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJ
REZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGYwYjc4NTky
NzliNDFmYzE3NWJkNGVjM2Y1YjEzZGE5ODI3NTZkOS4uMDJkOWIwOTYwMjBiY2YxZmVlZDIwMjhi
ODNmZDUxMzk2YThkYjQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xNjQsNiArMTY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtMjc0LDYgKzI3NSwxMiBAQAogI2luY2x1ZGUgIkRh
dGFEZXRlY3Rpb25SZXN1bHQuaCIKICNlbmRpZgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Cisj
ZWxzZQorI2RlZmluZSBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKKyNlbmRpZgorCiAvLyBUaGlz
IGNvbnRyb2xzIHdoYXQgc3RyYXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5n
LgogI2RlZmluZSBNRVJHRV9XSEVFTF9FVkVOVFMgMQogCkBAIC0xMjY0LDExICsxMjcxLDExIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKHNob3VsZFVzZUZvcmVncm91bmRQcmlv
cml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Rm9yZWdy
b3VuZEFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNs
aWVudCBuYXZpZ2F0aW9uIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKSk7CiAKLSAgICBsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBu
YXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CisgICAg
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSk7CiAgICAgcmV0dXJuIG5hdmlnYXRp
b247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMjkwLDYgKzEyOTcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0b3J5ID0gbmF2aWdhdGlv
bi5sb2NrSGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1heWJlSW5p
dGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3Rh
dGUucmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJz
KTsKQEAgLTEzODQsMTEgKzEzOTIsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBp
ZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAg
ICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxl
cigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpLm1vdmVUb1VuaXF1
ZVB0cigpKTsKIAotICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdU
Rjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFX
aXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2
aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJl
dHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKQEAgLTE0
MDgsNiArMTQxNiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBsb2FkUGFyYW1ldGVy
cy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEpLmdldCgpKTsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgbG9h
ZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CisKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMs
IGJhc2VVUkwpOwpAQCAtMzA1MiwxMCArMzA2MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBvbGljeURlY2lzaW9uU2VuZGVyKGlkZW50aWZpZXIsIFdURk1vdmUo
c2VuZEZ1bmN0aW9uKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2VuZChQb2xpY3lEZWNpc2lvbiYm
IFBvbGljeURlY2lzaW9uKQorICAgIHZvaWQgc2VuZChQb2xpY3lEZWNpc2lvbiYmIHBvbGljeURl
Y2lzaW9uKQogICAgIHsKICAgICAgICAgaWYgKG1fc2VuZEZ1bmN0aW9uKQotICAgICAgICAgICAg
bV9zZW5kRnVuY3Rpb24oV1RGTW92ZShQb2xpY3lEZWNpc2lvbikpOworICAgICAgICAgICAgbV9z
ZW5kRnVuY3Rpb24oV1RGTW92ZShwb2xpY3lEZWNpc2lvbikpOwogICAgIH0KIAogICAgIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CkBA
IC0zMDcwLDYgKzMwODAsMzEgQEAgcHJpdmF0ZToKICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIAorCitib29sIFdlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAg
IFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdl
YlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbihjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNBcHBCb3VuZERvbWFpbihSZWdpc3RyYWJsZURvbWFpbih1cmwpKTsKK30KKwor
dm9pZCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBp
c01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmIChpc01haW5GcmFt
ZSkgeworICAgICAgICBpZiAoIWlzQXBwQm91bmREb21haW4ocmVxdWVzdFVSTCkpIHsKKyAgICAg
ICAgICAgIG1fY29uZmlndXJhdGlvbi0+c2V0V2ViVmlld0NhdGVnb3J5KFdlYlZpZXdDYXRlZ29y
eTo6SW5BcHBCcm93c2VyKTsKKyAgICAgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObzsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29y
eShXZWJWaWV3Q2F0ZWdvcnk6OkFwcEJvdW5kRG9tYWluKTsKKyAgICAgICAgbV9pc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllczsKKyAg
ICB9Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbihQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRp
b24sIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6V2Vic2l0ZVBvbGljaWVzKiBwb2xpY2ll
cywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBSZWY8V2Vic2l0
ZURhdGFTdG9yZT4gd2Vic2l0ZURhdGFTdG9yZSA9IG1fd2Vic2l0ZURhdGFTdG9yZS5jb3B5UmVm
KCk7CkBAIC0zMTU3LDcgKzMxOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQQogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmIHdlYnNpdGVQb2xpY2llcywgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlciwg
V2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcyB3aWxsQ29udGludWVMb2FkSW5OZXdQcm9jZXNz
KQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBzZW5kZXItPnNl
bmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpJ
Z25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICBzZW5kZXIt
PnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbigpLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgRG93bmxvYWRJRCgp
LCBXVEY6Om51bGxvcHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTMxODAsNyAr
MzIxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGlj
eUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKICAgICAgICAgbV9kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVJlcXVlc3QgPSB7IH07CiAgICAgfQogCi0gICAgc2VuZGVyLT5zZW5kKFBvbGlj
eURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RGTW92ZSh3ZWJzaXRl
UG9saWNpZXMpIH0pOworICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+
aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCksIGFjdGlvbiwgbmF2
aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgV1RG
TW92ZSh3ZWJzaXRlUG9saWNpZXMpIH0pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0
UHJvdmlzaW9uYWxQYWdlKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIHVzZWRMZWdhY3lUTFMsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTMy
NTcsOSArMzI5Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgICAgIC8vIEZJWE1F
OiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxl
Z2F0ZSwgZXRjCiAgICAgICAgIEFTU0VSVCghbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKS5p
c0VtcHR5KCkpOwogICAgICAgICBpZiAoYXV0byYgc3Vic3RpdHV0ZURhdGEgPSBuYXZpZ2F0aW9u
LT5zdWJzdGl0dXRlRGF0YSgpKQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRE
YXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNvbnRlbnQuZGF0YSgpLCBzdWJzdGl0
dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0ZURhdGEtPk1JTUVUeXBlLCBzdWJz
dGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRhLT5iYXNlVVJMLCBzdWJzdGl0dXRl
RGF0YS0+dXNlckRhdGEuZ2V0KCksIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CisgICAgICAg
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZERhdGEobmF2aWdhdGlvbiwgeyBzdWJzdGl0dXRl
RGF0YS0+Y29udGVudC5kYXRhKCksIHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LnNpemUoKSB9LCBz
dWJzdGl0dXRlRGF0YS0+TUlNRVR5cGUsIHN1YnN0aXR1dGVEYXRhLT5lbmNvZGluZywgc3Vic3Rp
dHV0ZURhdGEtPmJhc2VVUkwsIHN1YnN0aXR1dGVEYXRhLT51c2VyRGF0YS5nZXQoKSwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+bG9hZFJlcXVlc3QobmF2
aWdhdGlvbiwgUmVzb3VyY2VSZXF1ZXN0IHsgbmF2aWdhdGlvbi0+Y3VycmVudFJlcXVlc3QoKSB9
LCBudWxscHRyLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5h
dmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0ciwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbigpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogICAgIH07CiAgICAgaWYg
KG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2hvdWxkUGF1c2VMb2FkaW5nKCptX3Byb3Zpc2lvbmFs
UGFnZSkpCiAgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0Q29udGludWVMb2FkaW5n
Q2FsbGJhY2soKm1fcHJvdmlzaW9uYWxQYWdlLCBXVEZNb3ZlKGNvbnRpbnVhdGlvbikpOwpAQCAt
NDkzOCw4ICs0OTczLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKICAgICBhdXRvKiBmcmFt
ZSA9IHByb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2Vz
cywgZnJhbWUpOwogCi0gICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3Jl
YXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7Cisg
ICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIs
IFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlS
ZWYoKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBs
aXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJRCk7CiAgICAgfSk7CiAKICAgICBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUs
IFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFn
ZUlELApAQCAtNDk2Myw5ICs0OTk4LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAg
aWYgKG5hdmlnYXRpb25JRCAmJiAhZnJvbUFQSSkKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLmNs
ZWFyUGVuZGluZ0FQSVJlcXVlc3QodHJhbnNhY3Rpb24pOwogCisgICAgc2V0SXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbihmcmFtZS5pc01haW5GcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKKwog
ICAgIGlmICghY2hlY2tVUkxSZWNlaXZlZEZyb21DdXJyZW50T3JQcmV2aW91c1dlYlByb2Nlc3Mo
cHJvY2VzcywgcmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChQcm9jZXNzLCAiSWdub3JpbmcgcmVxdWVzdCB0byBsb2FkIHRoaXMgbWFpbiByZXNv
dXJjZSBiZWNhdXNlIGl0IGlzIG91dHNpZGUgdGhlIHNhbmRib3giKTsKLSAgICAgICAgc2VuZGVy
LT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2Vu
ZGVyLT5zZW5kKFBvbGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2Fk
SUQoKSwgV1RGOjpudWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTky
LDcgKzUyMjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eQogICAgICAgICBvcmlnaW5hdGlu
Z1BhZ2VJRCwgb3JpZ2luYWxSZXF1ZXN0LCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVl
c3RCb2R5KSwgV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgdXNlckRhdGEsIHNlbmRlci5jb3B5
UmVmKCkpOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBkaWQgbm90IHJlc3BvbmQgc3luY2hyb25v
dXNseSwgcHJvY2VlZCB3aXRoIHRoZSBsb2FkLgotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNp
c2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlv
bklELCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9s
aWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZpZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbigpLCBQb2xpY3lBY3Rpb246OlVzZSwgbmF2aWdhdGlvbklELCBEb3dubG9hZElEKCks
IFdURjo6bnVsbG9wdCB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsCkBAIC01MjA5LDggKzUyNDYsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTZWN1cgogICAgICAg
ICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJv
d3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0g
KGNvbnN0IGF1dG8mIFBvbGljeURlY2lzaW9uKSB7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
UG9saWN5RGVjaXNpb24pKTsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGNvbnN0IGF1dG8mIHBvbGljeURl
Y2lzaW9uKSB7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pKTsKICAg
ICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24s
IG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTUyNTgsOCArNTI5
NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHBy
b2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgPT0gUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dDo6Tm8pOwogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZl
QnJvd3NpbmdXYXJuaW5nKTsKIAotICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9u
U2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3dlYlBhZ2VJRCwgZnJhbWVJRCwgbGlzdGVuZXJJ
RCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lv
bikgewotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uKSwg
d2ViUGFnZUlEKTsKKyAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nl
c3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0byYgcG9saWN5RGVjaXNpb24pIHsKKyAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBwb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJ
RCk7CiAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShz
ZW5kZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzkxZTQ5
NjI1MzRlMTk2ZjhmY2MzM2VlZmFhZTk1ZTQwODFkMWNhMC4uYjMxNTQ1NDhhMDhiNTg4ZGZiMzQ2
MjYxYmM3ZGUzZGJiNzU0ZjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTE2MTMsOCArMTYxMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2tTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKLSAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0
ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNo
b3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2
aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFj
a0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgV2ViQmFja0ZvcndhcmRMaXN0Q291bnRz
Jik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBib29s
IGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCiAgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViUGFnZVByb3h5
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LApAQCAtMjI1MSw2ICsyMjUxLDExIEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHRyeUNsb3NlVGltZWRPdXQoKTsKICAgICB2b2lkIG1ha2VTdG9y
YWdlU3BhY2VSZXF1ZXN0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3Jp
Z2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3Rl
ZFVzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CisgICAgICAgIAor
ICAgIGJvb2wgaXNBcHBCb3VuZERvbWFpbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYpIGNvbnN0OworICAgIGJvb2wgaXNBcHBCb3VuZERvbWFpbihjb25zdCBVUkwmKSBjb25zdDsK
KyAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBpc01haW5GcmFt
ZSwgY29uc3QgVVJMJik7CisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbjsgfQogCiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV93ZWJQYWdlSUQ7CkBAIC0yNzM0LDYgKzI3MzksOCBA
QCBwcml2YXRlOgogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgTW9u
b3RvbmljVGltZSBtX2RpZEZpbmlzaERvY3VtZW50TG9hZEZvck1haW5GcmFtZVRpbWVzdGFtcDsK
ICNlbmRpZgorICAgICAgICAKKyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBtX2lzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8g
fTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURhdGFTdG9y
ZUNvY29hLm1tCmluZGV4IGUxNjUxYzgzMjFiYTUzY2I4NzI5ZjVjZjM1ZWM3OTM4NzUxYzk4MGMu
LjRjNGZiODU1YmFiZjE5MzNiNWU4MzZjZTJlNzVkMTdmMDZkNTA3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0KQEAgLTE0NSw2ICsxNDUsOCBAQCBXZWJzaXRlRGF0YVN0
b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0b3JlOjpwYXJhbWV0ZXJzKCkKICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZFdyaXRlRGlyZWN0b3J5KG5ldHdvcmtD
YWNoZURpcmVjdG9yeSwgbmV0d29ya0NhY2hlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlKTsKIAog
ICAgIGJvb2wgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IGlzU2FmYXJpOworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCA9IFtkZWZh
dWx0cyBib29sRm9yS2V5OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW50ZXJuYWxEZWJ1
ZyVAIiwgV2ViUHJlZmVyZW5jZXNLZXk6OmlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRLZXko
KS5jcmVhdGVDRlN0cmluZygpLmdldCgpXV07CisgICAgCiAgICAgV2Vic2l0ZURhdGFTdG9yZVBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycyA9IHsKICAgICAgICAgbV9zZXNzaW9uSUQsCkBAIC0xNzgsNiArMTgwLDcgQEAgV2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAg
ICAgIG1fY29uZmlndXJhdGlvbi0+dGVzdFNwZWVkTXVsdGlwbGllcigpLAogICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZSgpLAogICAgICAgICBtX2NvbmZpZ3VyYXRpb24tPmFsbG93c1NlcnZlclByZWNvbm5lY3QoKSwK
KyAgICAgICAgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZAogICAgIH07CiAgICAgbmV0d29y
a2luZ0hhc0JlZ3VuKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggYmRiNzIwMDFiMmE3MzRjOTVi
MmY1ZjRlZjMyN2FiMTViY2YzYzZhMi4uNDRiYWJiYTkzZTUwODE3OTU4NDJkMmYwMmMzNzc5NmFi
N2Q1ZjQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTIyNTUsNCArMjI1NSwyOCBAQCBXVEY6OlN0
cmluZyBXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0RGV2aWNlSWRIYXNoU2FsdHNTdG9yYWdlRGly
ZWN0b3J5KCkKIH0KICNlbmRpZgogCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc0FwcEJvdW5k
U2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KSBjb25zdAoreworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkg
eworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbC0+bmV0d29y
a1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nlc3MtPmhhc0FwcEJvdW5kU2Vz
c2lvbihtX3Nlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAg
ICAgQVNTRVJUKHByb2Nlc3NQb29scygpLnNpemUoKSA9PSAxKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIEFTU0VSVCghY29tcGxldGlvbkhhbmRsZXIpOworfQor
Cit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJv
b2wgZW5hYmxlZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQoreworICAgIGF1dG8gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpj
cmVhdGUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgZm9yIChhdXRvJiBwcm9j
ZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKSB7CisgICAgICAgIGlmIChhdXRvKiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sLT5uZXR3b3JrUHJvY2VzcygpKSB7CisgICAgICAgICAgICBuZXR3
b3JrUHJvY2Vzcy0+c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQobV9zZXNzaW9uSUQsIGVu
YWJsZWQsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggZjA4MjlmMTJiNTcwNDc5NjkxMGE0NjljNWE4ZTcy
MjAxYTUxMjk1ZS4uN2ZhYTRiNTkyNjVhZjNlZmQ0MWNmMGI0MWIzNWQxM2EyNjEyMzFhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaApAQCAtMjkzLDYgKzI5Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV1RGOjpT
dHJpbmcgZGVmYXVsdEphdmFTY3JpcHRDb25maWd1cmF0aW9uRGlyZWN0b3J5KCk7CiAKICAgICB2
b2lkIHJlc2V0UXVvdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGhh
c0FwcEJvdW5kU2Vzc2lvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsK
KyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGZldGNoRGF0
YUFuZEFwcGx5KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBPcHRpb25TZXQ8V2Vic2l0ZURh
dGFGZXRjaE9wdGlvbj4sIFJlZlB0cjxXb3JrUXVldWU+JiYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFdlYnNpdGVEYXRhUmVjb3JkPik+JiYgYXBwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGEzNTdlMjJh
OGZmYmUyY2M0NDA2Y2U1ODFlZGI1YjVhZWRhYTYyZjMuLjczNTdmNTRkOTVjZjEyMjRiZTQ2Y2Uz
ZGEzMjM3YThjYWJiZjFlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTMyNiwxNCArMzI2LDE3IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNv
dXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBkb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpCiAgICAgICAgICAgICBs
b2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3kt
PnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KKyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRl
ckNsaWVudCA9IGZyYW1lID8gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOworICAg
IGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwor
ICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpOwog
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKICAgICBpZiAoZG9jdW1lbnQpIHsKICAg
ICAgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3Vt
ZW50KCkudXJsKCk7CiAgICAgICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBhc3NpbmcgdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgdGhlIE5ldHdvcmtQcm9jZXNzIHNob3VsZCBiZSBh
YmxlIHRvIGdldCBpdCB1c2luZyB3ZWJQYWdlSWQuCi0gICAgICAgIGF1dG8qIHdlYkZyYW1lTG9h
ZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci5mcmFtZSgp
LT5sb2FkZXIoKS5jbGllbnQoKSk7Ci0gICAgICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVM
b2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7
Ci0gICAgICAgIGF1dG8qIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBu
dWxscHRyOwogICAgICAgICBpZiAod2ViUGFnZSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyKCk7CiAgICAgfQpAQCAtNjAxLDYgKzYwNCwxMCBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBm
cmFtZUxvYWRlciwgdW5zaQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VI
ZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9
CiAgICAgbG9hZFBhcmFtZXRlcnMub3JpZ2luYWxSZXF1ZXN0SGVhZGVycyA9IG9yaWdpbmFsUmVx
dWVzdEhlYWRlcnM7CisgICAgCisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIGxvYWRQYXJhbWV0
ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluKCk7CisKICAgICBhZGRQYXJhbWV0ZXJzRnJvbUZyYW1lKHdlYkZyYW1l
LT5jb3JlRnJhbWUoKSwgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgZGF0YS5zaHJpbmsoMCk7CkBA
IC02NjgsMTMgKzY3NSwxNiBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzdGFydFBpbmdMb2Fk
KEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjbwogICAgICAgICAgICAg
bG9hZFBhcmFtZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5
LT5yZXNwb25zZUhlYWRlcnMoKTsKICAgICB9CiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSgm
ZnJhbWUsIGxvYWRQYXJhbWV0ZXJzKTsKLQorICAgIAorICAgIGF1dG8qIHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2FkZXIoKS5jbGllbnQoKSk7
CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQYWdlID0gd2Vi
RnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAod2ViUGFnZSkKKyAg
ICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBh
Z2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQogICAgIGxvYWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRv
Y3VtZW50LT50b3BEb2N1bWVudCgpLnVybCgpOwogICAgIC8vIEZJWE1FOiBJbnN0ZWFkIG9mIHBh
c3NpbmcgdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgd2Ugc2hvdWxkIGp1c3QgcGFz
cyB3ZWJQYWdlSWQgdG8gTmV0d29ya1Byb2Nlc3MuCi0gICAgV2ViRnJhbWVMb2FkZXJDbGllbnQq
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS5sb2Fk
ZXIoKS5jbGllbnQoKSk7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJD
bGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAg
V2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7
CiAgICAgaWYgKHdlYlBhZ2UpCiAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIgPSB3ZWJQYWdlLT51c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDEyMTJl
ZWFiNTcwN2FkZWUxZTY3NjVkYTJmZTY5YjNkZTc3YzI5ZWIuLjk4YjE1Yjg3ZmMxM2RhMmRiZjQ0
M2JhOThhNGQ4NmQ3YTlkMzU0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtODM2LDcgKzgzNiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zCiAgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoaWRlbnRpZmllciwgV1RG
TW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAgICAg
aWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
clJlc3BvbnNlKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoY29yZUZyYW1lKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVz
dCwKICAgICAgICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJ
RCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIs
IFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgbV9mcmFtZS0+
ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRl
bnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Okln
bm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwKQEAg
LTk5MywxMSArOTkzLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgICAgICAgICBy
ZXF1ZXN0SWRlbnRpZmllciwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwKICAgICAgICAg
ICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJl
Y3RSZXNwb25zZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwKICAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpS
ZXBseShwb2xpY3lEZWNpc2lvbikpKSB7Ci0gICAgICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRlbnRp
ZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lz
aW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywg
UG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwg
cG9saWN5RGVjaXNpb24ucG9saWN5QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElE
LCB7IH19KTsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3Rl
bmVySUQsIFBvbGljeURlY2lzaW9uIHsgcG9saWN5RGVjaXNpb24uaWRlbnRpZmllciwgcG9saWN5
RGVjaXNpb24uaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgcG9saWN5RGVjaXNpb24ucG9s
aWN5QWN0aW9uLCAwLCBwb2xpY3lEZWNpc2lvbi5kb3dubG9hZElELCB7IH19KTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTAwNSw3ICsxMDA1LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5h
dmlnYXQKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2Vj
dXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwKICAgICAgICAgcmVxdWVzdElk
ZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmln
YXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCiAgICAgICAgIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgeyByZXF1ZXN0Lmh0dHBCb2R5KCkgfSwgcmVkaXJlY3RSZXNwb25zZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpLCBsaXN0ZW5lcklEKSkpCi0gICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJl
cXVlc3RJZGVudGlmaWVyLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7Cisg
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lEZWNpc2lvbiB7IHJlcXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjo6Tm8sIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9saWN5Q2hlY2soKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBjMDU0ZDUxOTg0YzgzNjI1N2Qx
NWNmNzUxMWRjZjI1MjViNzZhYmI1Li4wNzA5NDI1N2NkMWVhZjFiNmUyNzk5MjU0NjkzNmM5OTg5
ZjRiOTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTU3MCw2ICsxNTcwLDggQEAgdm9pZCBXZWJQYWdlOjpwbGF0Zm9ybURpZFJlY2VpdmVM
b2FkUGFyYW1ldGVycyhjb25zdCBMb2FkUGFyYW1ldGVycyYgbG9hZFBhcmFtZXQKIAogdm9pZCBX
ZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogewor
ICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4obG9hZFBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGlt
ZXIgc3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IGxvYWRQYXJhbWV0ZXJz
Lm5hdmlnYXRpb25JRDsKQEAgLTE2MDQsOCArMTYwNiwxMCBAQCBOT19SRVRVUk4gdm9pZCBXZWJQ
YWdlOjpsb2FkUmVxdWVzdFdhaXRpbmdGb3JQcm9jZXNzTGF1bmNoKExvYWRQYXJhbWV0ZXJzJiYs
IFVSTAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzLCBSZWY8U2hhcmVkQnVmZmVyPiYmIHNoYXJlZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFzZVVSTCwg
Y29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpCit2
b2lkIFdlYlBhZ2U6OmxvYWREYXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcywgUmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwm
IGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KQogeworICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik7CisKICAgICBTZW5kU3RvcFJlc3BvbnNpdmVuZXNzVGltZXIg
c3RvcHBlcjsKIAogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAg
LTE2MzIsNyArMTYzNiw3IEBAIHZvaWQgV2ViUGFnZTo6bG9hZERhdGEoTG9hZFBhcmFtZXRlcnMm
JiBsb2FkUGFyYW1ldGVycykKIAogICAgIGF1dG8gc2hhcmVkQnVmZmVyID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obG9hZFBhcmFtZXRlcnMuZGF0
YS5kYXRhKCkpLCBsb2FkUGFyYW1ldGVycy5kYXRhLnNpemUoKSk7CiAgICAgVVJMIGJhc2VVUkwg
PSBsb2FkUGFyYW1ldGVycy5iYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSA/IFdURjo6YmxhbmtVUkwo
KSA6IFVSTChVUkwoKSwgbG9hZFBhcmFtZXRlcnMuYmFzZVVSTFN0cmluZyk7Ci0gICAgbG9hZERh
dGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xp
Y2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxv
YWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0ZXJz
LnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsK
KyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1l
dGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMu
d2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5N
SU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBVUkwoKSwgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIGxvYWRQYXJhbWV0ZXJzLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwog
fQogCiB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRlcm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9h
ZFBhcmFtZXRlcnMpCkBAIC0xNjQ0LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRBbHRl
cm5hdGVIVE1MKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgVVJMIHByb3Zp
c2lvbmFsTG9hZEVycm9yVVJMID0gbG9hZFBhcmFtZXRlcnMucHJvdmlzaW9uYWxMb2FkRXJyb3JV
UkxTdHJpbmcuaXNFbXB0eSgpID8gVVJMKCkgOiBVUkwoVVJMKCksIGxvYWRQYXJhbWV0ZXJzLnBy
b3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5nKTsKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJh
bWV0ZXJzLmRhdGEuZGF0YSgpKSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIG1f
bWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JC
ZWluZ0hhbmRsZWRVUkwocHJvdmlzaW9uYWxMb2FkRXJyb3JVUkwpOyAgICAKLSAgICBsb2FkRGF0
YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklELCBsb2FkUGFyYW1ldGVycy5zaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9hZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGlj
aWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2FkUGFyYW1ldGVycy5NSU1FVHlwZSwgbG9h
ZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBh
cmFtZXRlcnMudXNlckRhdGEpOworICAgIGxvYWREYXRhSW1wbChsb2FkUGFyYW1ldGVycy5uYXZp
Z2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgV1RG
TW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBXVEZNb3ZlKHNoYXJlZEJ1ZmZl
ciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1ldGVycy5lbmNvZGluZ05hbWUs
IGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSwgbG9hZFBh
cmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgbV9tYWluRnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5zZXRQcm92aXNpb25hbExvYWRFcnJvckJlaW5nSGFuZGxl
ZFVSTCh7IH0pOwogfQogCkBAIC0zMjU4LDEyICszMjYyLDEzIEBAIHZvaWQgV2ViUGFnZTo6c2V0
TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUpCiAgICAg
ICAgIHBsdWdpblZpZXctPnNldExheWVySG9zdGluZ01vZGUobV9sYXllckhvc3RpbmdNb2RlKTsK
IH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlm
aWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgUG9saWN5
RGVjaXNpb24pCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihGcmFtZUlk
ZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24mJiBw
b2xpY3lEZWNpc2lvbikKIHsKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKHBv
bGljeURlY2lzaW9uLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+ZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGxpc3RlbmVySUQsIFdURk1vdmUoUG9saWN5RGVjaXNpb24pKTsKKyAgICBmcmFt
ZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFdURk1vdmUocG9saWN5RGVj
aXNpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjb250aW51ZVdpbGxTdWJtaXRGb3JtKEZyYW1l
SWRlbnRpZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtNzAwNiw2ICs3MDEx
LDExIEBAIHZvaWQgV2ViUGFnZTo6c2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShjb25zdCBTdHJpbmcm
IG1lZGlhVHlwZSkKICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1lcygp
OwogfQogCit2b2lkIFdlYlBhZ2U6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKK3sK
KyAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAppbmRleCBhNjg5NTMwZjM4MzZkNmY0Y2JiMGY1Njk3MmQzZmUxMTBlODEzMjU1Li5jN2NmMzhj
NWJiYTIwMWNlZDc4OGNkMDNkNWEyMDRkNGFjYTRmMmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjg2LDYgKzEyODYsOSBAQCBwdWJsaWM6CiAg
ICAgV2ViQ29yZTo6QWxsb3dzQ29udGVudEphdmFTY3JpcHQgYWxsb3dzQ29udGVudEphdmFTY3Jp
cHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0NvbnRl
bnRKYXZhU2NyaXB0RnJvbU1vc3RSZWNlbnROYXZpZ2F0aW9uOyB9CiAgICAgdm9pZCBzZXRBbGxv
d3NDb250ZW50SmF2YVNjcmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbihXZWJDb3JlOjpBbGxv
d3NDb250ZW50SmF2YVNjcmlwdCBhbGxvd3MpIHsgbV9hbGxvd3NDb250ZW50SmF2YVNjcmlwdEZy
b21Nb3N0UmVjZW50TmF2aWdhdGlvbiA9IGFsbG93czsgfQogCisgICAgdm9pZCBzZXRJc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAgICBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCkg
Y29uc3QgeyByZXR1cm4gbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOyB9CisgICAgCiBw
cml2YXRlOgogICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAKQEAgLTEzNzksNyArMTM4Miw3IEBAIHByaXZhdGU6CiAKICAg
ICBTdHJpbmcgc291cmNlRm9yRnJhbWUoV2ViRnJhbWUqKTsKIAotICAgIHZvaWQgbG9hZERhdGFJ
bXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwgY29uc3QgVXNl
ckRhdGEmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5ID0gV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cpOworICAgIHZvaWQg
bG9hZERhdGFJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCBzaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYsIFJlZjxXZWJDb3Jl
OjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgZmFpbGluZ1VSTCwg
Y29uc3QgVXNlckRhdGEmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKIAogICAgIC8vIEFjdGlvbnMKICAgICB2b2lkIHRy
eUNsb3NlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpAQCAtMjA2Niw2ICsyMDY5
LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAgICAgU3RyaW5nIG1fdGhlbWVOYW1l
OwogI2VuZGlmCisgICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gbV9pc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07
CiB9OwogCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5YmM0YWZiMjM3
MjU3NDdmMjUzOThiZTA5MzRiYmNhNzUzMjA3NDhiLi4xZGVkZjM5MmRkNzk5YWM2YjdhZmNkNmUy
YjE0NDQ3ZjhlZjVjMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE4Niw3ICsxODYsOCBAQCBHZW5lcmF0ZVN5
bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRp
bmdDb21tYW5kVHlwZQogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShzdHJ1Y3QgV2ViQ29y
ZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhIHdl
YnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6RnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHN0cnVjdCBXZWJLaXQ6
OlBvbGljeURlY2lzaW9uIFBvbGljeURlY2lzaW9uKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgc3RydWN0IFdlYktpdDo6UG9saWN5RGVjaXNpb24gcG9saWN5RGVjaXNpb24pCisKICAgICBD
b250aW51ZVdpbGxTdWJtaXRGb3JtKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklEKQogCiAgICAgQ2xlYXJTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM4ZDJlMDcwYWJlNTY1YzZk
YzE0MWRjZjg5NzhmYjIwNDNhNDhmMWEuLjA3NzFkMDFkZDU1NjhjN2Y0YzJjMDU2YzQ0YTE4OGFk
ZjNkMzlmOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1MCBAQAorMjAyMC0wMi0yMSAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBBcHAtYm91bmQgZG9tYWlucyBzaG91bGQgaGF2
ZSBzZXBhcmF0ZSBOZXR3b3JrIFNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDgwMjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDM0
MDA2PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpcyBtb3N0bHkgdGVzdCBpbmZyYXN0cnVjdHVyZSBpbnZvbHZpbmcgMyBmdW5jdGlv
bnMuCisgICAgICAgIE9uZSBzZXRzIGluLWFwcCBicm93c2VyIHByaXZhY3kgYXMgZW5hYmxlZCBp
biB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIG1hbnVhbGx5IGZvciB0aGUgdGVzdC4gT25l
IGVuc3VyZXMgdGhhdCBzZXR0aW5nIHRoZSBXZWJWaWV3IGNhdGVnb3J5CisgICAgICAgIHdvcmtz
IHByb3Blcmx5LCBhbmQgdGhlIGxhc3Qgb25lIGNoZWNrcyBmb3IgYW4gYXBwLWJvdW5kIHNlc3Np
b24gZm9yCisgICAgICAgIGFuIGFwcC1ib3VuZCBuYXZpZ2F0aW9uLgorCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdl
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
Y3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkpOgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeUNhbGxi
YWNrKToKKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6aGFzQXBwQm91bmRTZXNzaW9uKToKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgor
ICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpjYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWRDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjplbnN1cmVWaWV3U3VwcG9ydHNP
cHRpb25zRm9yVGVzdCk6CisgICAgICAgIENsZWFyaW5nIHRoZSBidW5kbGVJRCBzaG91bGQgaGFw
cGVuIHJpZ2h0IGJlZm9yZSBzZXR0aW5nIGEgbmV3IG9uZSwgCisgICAgICAgIG90aGVyd2lzZSBp
dCBjbGVhcnMgdGhlIElEIGFmdGVyIGl0IGlzIHNldCBhbmQgcmV0dXJucyBhIG51bGwgSUQuCisK
KyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1
ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToK
KyAgICAgICAgKFdUUjo6SW5BcHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dDo6SW5BcHBC
cm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dCk6CisgICAgICAgIChXVFI6OmluQXBwQnJvd3Nl
clByaXZhY3lCb29sZWFuUmVzdWx0Q2FsbGJhY2spOgorICAgICAgICAoV1RSOjppbkFwcEJyb3dz
ZXJQcml2YWN5Vm9pZFJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xs
ZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpz
ZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9j
YXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgIChX
VFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyk6
CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5
KToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmg6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tOgorICAgICAg
ICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKwogMjAyMC0wMi0y
MSAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2V3c10g
QWRkIGJ1aWxkIHN0ZXAgdG8gc2V0IGNxLSBmbGFnIG9uIGJ1Z3ppbGxhIHBhdGNoCmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbAppbmRleCA0YTU1MTAyZTUyOWIyMGQzN2Y2MGJmYjI4MWU0ODdkMTdl
ZDc3ODAyLi43MWY2MDI5MDUzMGMxNTkxNzc3ZGM2NmI1ZjdkYmRmMzU3ODUzZjJmIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTM1NCw2ICszNTQsOSBAQCBpbnRlcmZhY2UgVGVzdFJ1
bm5lciB7CiAgICAgLy8gU3RvcmFnZSBBY2Nlc3MgQVBJCiAgICAgdm9pZCBnZXRBbGxTdG9yYWdl
QWNjZXNzRW50cmllcyhvYmplY3QgY2FsbGJhY2spOwogCisgICAgdm9pZCBnZXRXZWJWaWV3Q2F0
ZWdvcnkob2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lF
bmFibGVkKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjYWxsYmFjayk7CisKICAgICAvLyBPcGVuIHBh
bmVsCiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhvYmplY3QgZmlsZXNBcnJheSk7CiAgICAg
dm9pZCBzZXRPcGVuUGFuZWxGaWxlc01lZGlhSWNvbihvYmplY3QgbWVkaWFJY29uKTsKQEAgLTM4
OSw2ICszOTIsNyBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdm9pZCByZXNldE1vY2tN
ZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1bnNpZ25l
ZCBsb25nIG9yaWVudGF0aW9uKTsKICAgICBib29sZWFuIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9vbGVhbiBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAog
ICAgIHZvaWQgaW5qZWN0VXNlclNjcmlwdChET01TdHJpbmcgc3RyaW5nKTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudDsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKaW5kZXggOTU4YTc5YmE0MzQ4YTk3OTIyODAzZWUyMzYxOTBiNTAyZmRmM2MxYS4u
NzcwZmUxOGQ5ZjMwMzRkMThjNjg3ODZiNDI2ZWQ0OTc2OTYwNWJhNyAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKQEAgLTMzNiw2ICszMzYsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1l
c3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAg
bV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNv
b2tpZXNDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2FsbERpZFNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkIikpIHsKKyAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlk
U2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUiKSkgewogICAg
ICAgICBtX3Rlc3RSdW5uZXItPnN0YXRpc3RpY3NDYWxsRGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGVDYWxsYmFjaygpOwpAQCAtNDIyLDYgKzQyNywxNCBAQCB2b2lkIEluamVj
dGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwg
V0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlUHJldmFs
ZW50RG9tYWluc0NhbGxiYWNrKFdURk1vdmUoZG9tYWlucykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VO
YW1lLCAiQ2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBBU1NFUlQo
bWVzc2FnZUJvZHkpOworICAgICAgICBBU1NFUlQoV0tHZXRUeXBlSUQobWVzc2FnZUJvZHkpID09
IFdLU3RyaW5nR2V0VHlwZUlEKCkpOworCisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFJl
Y2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayh0b1dURlN0cmluZyhzdGF0aWNfY2FzdDxXS1N0
cmluZ1JlZj4obWVzc2FnZUJvZHkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBp
ZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRSZW1v
dmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjayIpKSB7CiAgICAgICAgIG1fdGVzdFJ1bm5l
ci0+Y2FsbERpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFsc0NhbGxiYWNrKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApp
bmRleCBlYzEyNmQ2OGUzNWQ1ZTU3MGVlMTUyZGY2ODIwYjQwM2ZhNzdmMmNkLi4xNjBmMjFjMTAz
YjUzNjkzZTRiMjMwNTE1MzcyZTlkZWVhZWJjODE1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTc2MSw2ICs3NjEs
OCBAQCBlbnVtIHsKICAgICBUZXh0RmllbGREaWRCZWdpbkVkaXRpbmdDYWxsYmFja0lELAogICAg
IFRleHRGaWVsZERpZEVuZEVkaXRpbmdDYWxsYmFja0lELAogICAgIEN1c3RvbU1lbnVBY3Rpb25D
YWxsYmFja0lELAorICAgIEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQsCisgICAgRGlkU2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFja0lELAogICAgIEZpcnN0VUlTY3JpcHRD
YWxsYmFja0lEID0gMTAwCiB9OwogCkBAIC0yOTA0LDQgKzI5MDYsNDcgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRPZmZzY3JlZW5DYW52YXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBXS0J1bmRs
ZU92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0UnVubmVyKGluamVjdGVkQnVuZGxlLmJ1bmRs
ZSgpLCBpbmplY3RlZEJ1bmRsZS5wYWdlR3JvdXAoKSwga2V5LmdldCgpLCBlbmFibGVkKTsKIH0K
IAordm9pZCBUZXN0UnVubmVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFj
aykKK3sKKyAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxs
YmFja0lELCBjYWxsYmFjayk7CisgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiR2V0V2Vi
Vmlld0NhdGVnb3J5IikpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGU6
OnNpbmdsZXRvbigpLmJ1bmRsZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayhT
dHJpbmcgY2F0ZWdvcnkpCit7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+
cGFnZSgpKTsKKyAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZh
U2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworCisgICAgYXV0byByZXN1bHRTdHJpbmcgPSBtYWtl
U3RyaW5nKCJcIiIsIGNhdGVnb3J5LCAiXCIiKTsKKyAgICAKKyAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoY29udGV4dCwgYWRvcHQoSlNTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcocmVzdWx0U3RyaW5nLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisK
KyAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKEdldFdlYlZpZXdDYXRlZ29yeUNhbGxiYWNrSUQs
IDEsICZyZXN1bHQpOworfQorCitib29sIFRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigp
Cit7CisgICAgYXV0byBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoIkhhc0FwcEJvdW5kU2Vzc2lvbiIpKTsKKyAgICBXS1R5cGVSZWYgcmV0dXJuRGF0
YSA9IG51bGxwdHI7CisgICAgV0tCdW5kbGVQYWdlUG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRl
c3RpbmcoSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnBhZ2UoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbnVsbHB0ciwgJnJldHVybkRhdGEpOworICAgIEFTU0VSVChXS0dldFR5cGVJ
RChyZXR1cm5EYXRhKSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisKKyAgICByZXR1cm4gV0tC
b29sZWFuR2V0VmFsdWUoYWRvcHRXSyhzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KHJldHVybkRh
dGEpKS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZENhbGxiYWNrSUQsIGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICBXS1JldGFpblB0cjxXS1N0cmlu
Z1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jv
b2xlYW5SZWY+IG1lc3NhZ2VCb2R5ID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUodmFsdWUpKTsK
KyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5idW5k
bGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpjYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFjaygp
Cit7CisgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZENhbGxiYWNrSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggNzIx
MDIxZGQ2Y2M4NzViNmJmYzI2NThkOTlmZjUxMjQ5Yjk1NmUyMi4uYjc3Y2I2YzU1M2UyN2Y1YmIy
YzU4NmEwZDViNTg2YzI2ZmYwY2I1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTQ2Myw2ICs0NjMsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoSlNWYWx1ZVJlZiBjYWxsYmFj
ayk7CiAgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzQ2FsbGJh
Y2soVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogCisgICAgCisgICAgdm9pZCBnZXRXZWJWaWV3
Q2F0ZWdvcnkoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisgICAgdm9pZCBjYWxsRGlkUmVjZWl2ZVdl
YlZpZXdDYXRlZ29yeUNhbGxiYWNrKFN0cmluZyk7CisKICAgICAvLyBPcGVuIHBhbmVsCiAgICAg
dm9pZCBzZXRPcGVuUGFuZWxGaWxlcyhKU1ZhbHVlUmVmKTsKICAgICB2b2lkIHNldE9wZW5QYW5l
bEZpbGVzTWVkaWFJY29uKEpTVmFsdWVSZWYpOwpAQCAtNDk0LDYgKzQ5OCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVy
YU9yaWVudGF0aW9uKHVuc2lnbmVkKTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3Vy
Y2VDZW50ZXJFbmFibGVkKCk7CisgICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICB2
b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKGJvb2wsIEpTVmFsdWVSZWYpOworICAg
IHZvaWQgY2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKIAog
ICAgIHNpemVfdCB1c2VyU2NyaXB0SW5qZWN0ZWRDb3VudCgpIGNvbnN0OwogICAgIHZvaWQgaW5q
ZWN0VXNlclNjcmlwdChKU1N0cmluZ1JlZik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuY3BwCmluZGV4IGIyMjFkYTE3MDM5MjkxMWJhNjI1ZTU3N2M4Y2Y5M2NhZWIzODg3
OGQuLjIxM2I3ZWI3MTM0NmYwZWZhNGYxNDhjYzNkYzU5OWIwNDRhMmYxMjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC04MDQsNiArODA0LDEwIEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmVuc3VyZVZpZXdTdXBwb3J0c09wdGlvbnNGb3JUZXN0KGNvbnN0
IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAgICAgIG1fY3JlYXRlZE90aGVyUGFnZSA9IGZhbHNl
OwogICAgIH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIGNsZWFyQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyVGVzdGluZ092ZXJyaWRlKCk7CisjZW5kaWYKKwogICAgIGNyZWF0ZVdlYlZp
ZXdXaXRoT3B0aW9ucyhvcHRpb25zKTsKIAogICAgIGlmICghcmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyhvcHRpb25zLCBSZXNldFN0YWdlOjpCZWZvcmVUZXN0KSkKQEAgLTEwODcsMTAgKzEw
OTEsNiBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVz
KGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zLCBSZQogCiAgICAgc2V0SGlkZGVuKGZhbHNlKTsK
IAotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGNsZWFyQXBwbGljYXRpb25CdW5kbGVJZGVudGlm
aWVyVGVzdGluZ092ZXJyaWRlKCk7Ci0jZW5kaWYKLQogICAgIGlmICghcGxhdGZvcm1SZXNldFN0
YXRlVG9Db25zaXN0ZW50VmFsdWVzKG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTMxMjQsNiArMzEyNCwxMCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVu
dERvbWFpbnMoKQogewogfQogCit2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRXZWJWaWV3Q2F0ZWdv
cnkoKQoreworfQorCiAjZW5kaWYKIAogc3RydWN0IENsZWFyU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbnNDYWxsYmFja0NvbnRleHQgewpAQCAtMzcxMyw2ICszNzE3LDQ5IEBAIGJvb2wgVGVzdENv
bnRyb2xsZXI6OmlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gV0tQYWdlSXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQo
bV9tYWluV2ViVmlldy0+cGFnZSgpKTsKIH0KIAorc3RydWN0IEluQXBwQnJvd3NlclByaXZhY3lD
YWxsYmFja0NvbnRleHQgeworICAgIGV4cGxpY2l0IEluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFj
a0NvbnRleHQoVGVzdENvbnRyb2xsZXImIGNvbnRyb2xsZXIpCisgICAgICAgIDogdGVzdENvbnRy
b2xsZXIoY29udHJvbGxlcikKKyAgICB7CisgICAgfQorCisgICAgVGVzdENvbnRyb2xsZXImIHRl
c3RDb250cm9sbGVyOworICAgIGJvb2wgZG9uZSB7IGZhbHNlIH07CisgICAgYm9vbCByZXN1bHQg
eyBmYWxzZSB9OworfTsKKworc3RhdGljIHZvaWQgaW5BcHBCcm93c2VyUHJpdmFjeUJvb2xlYW5S
ZXN1bHRDYWxsYmFjayhib29sIHJlc3VsdCwgdm9pZCogdXNlckRhdGEpCit7CisgICAgYXV0byog
Y29udGV4dCA9IHN0YXRpY19jYXN0PEluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQq
Pih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+cmVzdWx0ID0gcmVzdWx0OworICAgIGNvbnRleHQt
PmRvbmUgPSB0cnVlOworICAgIGNvbnRleHQtPnRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
K30KKworc3RhdGljIHZvaWQgaW5BcHBCcm93c2VyUHJpdmFjeVZvaWRSZXN1bHRDYWxsYmFjayh2
b2lkKiB1c2VyRGF0YSkKK3sKKyAgICBhdXRvKiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8SW5BcHBC
cm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dCo+KHVzZXJEYXRhKTsKKyAgICBjb250ZXh0LT5k
b25lID0gdHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CisKK2Jvb2wgVGVzdENvbnRyb2xsZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbigpCit7CisgICAgSW5B
cHBCcm93c2VyUHJpdmFjeUNhbGxiYWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dl
YnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNlc3Npb24oVGVzdENvbnRyb2xsZXI6OndlYnNpdGVE
YXRhU3RvcmUoKSwgJmNvbnRleHQsIGluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2Fs
bGJhY2spOworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICByZXR1
cm4gY29udGV4dC5yZXN1bHQ7Cit9CisKKwordm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQoYm9vbCB2YWx1ZSkKK3sKKyAgICBJbkFwcEJyb3dzZXJQcml2
YWN5Q2FsbGJhY2tDb250ZXh0IGNvbnRleHQoKnRoaXMpOworICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0
YVN0b3JlKCksIHZhbHVlLCAmY29udGV4dCwgaW5BcHBCcm93c2VyUHJpdmFjeVZvaWRSZXN1bHRD
YWxsYmFjayk7CisgICAgcnVuVW50aWwoY29udGV4dC5kb25lLCBub1RpbWVvdXQpOworICAgIG1f
Y3VycmVudEludm9jYXRpb24tPmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCk7Cit9
CisKICNpZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUFk
ZFRlc3RPcHRpb25zKFRlc3RPcHRpb25zJikgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuaAppbmRleCA0ZTY1MTEyOWVjMjk0ZjZkNWE1OWM0MzcxZTI5NjM1YTFi
MWY5OTRjLi4xYzdmNzVkNjljZjhjNDU1MzAwYmEzNDZhMGU1YzU1MWM2MjIzNjE1IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCkBAIC0yNjAsNiArMjYwLDggQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKTsKICAgICB2b2lkIGdl
dFByZXZhbGVudERvbWFpbnMoKTsKICAgICB2b2lkIGNsZWFyUHJldmFsZW50RG9tYWlucygpOwor
ICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVnb3J5KCk7CisgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZChib29sKTsKIAogICAgIFdLQXJyYXlSZWYgb3BlblBhbmVsRmlsZVVSTHMo
KSBjb25zdCB7IHJldHVybiBtX29wZW5QYW5lbEZpbGVVUkxzLmdldCgpOyB9CiAgICAgdm9pZCBz
ZXRPcGVuUGFuZWxGaWxlVVJMcyhXS0FycmF5UmVmIGZpbGVVUkxzKSB7IG1fb3BlblBhbmVsRmls
ZVVSTHMgPSBmaWxlVVJMczsgfQpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc2V0TW9ja01lZGlhRGV2aWNlcygpOwogICAgIHZvaWQgc2V0TW9ja0NhbWVyYU9yaWVudGF0
aW9uKHVpbnQ2NF90KTsKICAgICBib29sIGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJF
bmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKTsKIAogICAgIHZv
aWQgaW5qZWN0VXNlclNjcmlwdChXS1N0cmluZ1JlZik7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCmluZGV4IDMyMjRmMDhhYWU0ODQxODlmMWQ0MjM1ZTFl
NmFmODA2ZWQxMzU3MTQuLmM5ZTk0ZWViNjZjZTk0YzM3YmY5MDBhODRkMGZjNDcwOTA3OWI3ZWYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC03NjAsNiAr
NzYwLDEzIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgICAgIFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzU2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhX
S0Jvb2xlYW5HZXRWYWx1ZSh2YWx1ZSksIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IlNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkIikpIHsKKyAgICAgICAgQVNTRVJUKFdLR2V0
VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS0Jvb2xlYW5HZXRUeXBlSUQoKSk7CisgICAgICAgIFdL
Qm9vbGVhblJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PFdLQm9vbGVhblJlZj4obWVzc2FnZUJvZHkp
OworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoV0tCb29sZWFuR2V0VmFsdWUodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1l
LCAiUnVuVUlQcm9jZXNzU2NyaXB0IikpIHsKICAgICAgICAgV0tEaWN0aW9uYXJ5UmVmIG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4obWVzc2FnZUJv
ZHkpOwpAQCAtODAwLDYgKzgwNywxMSBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZl
TWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0T3BlblBhbmVsRmlsZVVSTHMoc3RhdGlj
X2Nhc3Q8V0tBcnJheVJlZj4obWVzc2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
KyAgICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwg
IkdldFdlYlZpZXdDYXRlZ29yeSIpKSB7CisgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0
b24oKS5nZXRXZWJWaWV3Q2F0ZWdvcnkoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJTZXRPcGVuUGFuZWxGaWxlVVJMc01lZGlhSWNvbiIpKSB7CkBAIC0x
MDAyLDYgKzEwMTQsMTEgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgYm9vbCBp
c01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCA9IFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5pc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpOwogICAg
ICAgICByZXR1cm4gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUoaXNNb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlckVuYWJsZWQpKTsKICAgICB9CisgICAgCisgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJIYXNBcHBCb3VuZFNlc3Npb24iKSkgeworICAg
ICAgICBib29sIGhhc0FwcEJvdW5kU2Vzc2lvbiA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24o
KS5oYXNBcHBCb3VuZFNlc3Npb24oKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0V0soV0tCb29sZWFu
Q3JlYXRlKGhhc0FwcEJvdW5kU2Vzc2lvbikpOworICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNvbm5l
Y3RNb2NrR2FtZXBhZCIpKSB7CkBAIC0xODcwLDYgKzE4ODcsMTIgQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZGlkU2V0U2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcygpCiAgICAgV0tQYWdlUG9z
dE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWlu
V2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxscHRyKTsKIH0KIAordm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKQorewor
ICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCIpKTsKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRy
b2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG51bGxwdHIpOworfQorCiB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRTZXRGaXJzdFBhcnR5
V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSgpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+
IG1lc3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2Fs
bERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIikpOwpAQCAtMTk0OCw3ICsx
OTcxLDE1IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5z
KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucykKICAgICBXS1JldGFpblB0cjxXS011dGFibGVBcnJh
eVJlZj4gbWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkpOwogICAg
IGZvciAoYXV0byYgZG9tYWluIDogZG9tYWlucykKICAgICAgICAgV0tBcnJheUFwcGVuZEl0ZW0o
bWVzc2FnZUJvZHkuZ2V0KCksIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
ZG9tYWluLnV0ZjgoKS5kYXRhKCkpKS5nZXQoKSk7CisKKyAgICBXS1BhZ2VQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCkt
PnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKK30KKwordm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmIHdlYlZp
ZXdDYXRlZ29yeSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUg
PSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkUmVjZWl2ZVdl
YlZpZXdDYXRlZ29yeSIpKTsKICAgICAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbWVz
c2FnZUJvZHkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHdlYlZpZXdD
YXRlZ29yeS51dGY4KCkuZGF0YSgpKSk7CiAgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uaAppbmRleCA1MDMzN2Q2NzVkZTA5MGFkZGY1Yjc2Yzgw
MDcyYTE3ZmJhNGMxM2U2Li5lYzRmNTk2NjJjN2I1YmUwMzY2MTUwNzJjMjIwNTk2MmU4NDg1NTY2
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCkBAIC04Nyw2ICs4Nyw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFNldEhhc0hhZFVzZXJJbnRlcmFjdGlvbigpOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zKTsKICAgICB2b2lkIGRpZFJlY2VpdmVQcmV2YWxlbnREb21haW5zKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk7CisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5KFN0cmlu
ZyYpOworICAgIHZvaWQgZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKTsKIAogICAg
IHZvaWQgZGlkUmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXgg
ZDNmMmVmMWJjMzJlZTBkZjM4MmU2MzJjYmQ1MzBhMDQ3ZjcyZjhmOS4uNmY5NTViMGRhYjFjNTVj
NDkwZDZiNTJkNDM5YjVjYWQ5NDZjNTllZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtMzU2LDYgKzM1NiwzMiBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhclByZXZhbGVudERvbWFpbnMoKQogICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhclByZXZhbGVudERvbWFp
bnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCldOwogfQogCit2b2lkIFRlc3RDb250cm9s
bGVyOjpnZXRXZWJWaWV3Q2F0ZWdvcnkoKQoreworICAgIGF1dG8qIHBhcmVudFZpZXcgPSBtYWlu
V2ViVmlldygpOworICAgIGlmICghcGFyZW50VmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdD
YXRlZ29yeUZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KF9XS1dlYlZpZXdDYXRlZ29yeSB3ZWJWaWV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgU3RyaW5nIGNh
dGVnb3J5OworICAgICAgICBzd2l0Y2ggKHdlYlZpZXdDYXRlZ29yeSkgeworICAgICAgICBjYXNl
IF9XS1dlYlZpZXdDYXRlZ29yeUFwcEJvdW5kRG9tYWluOgorICAgICAgICAgICAgY2F0ZWdvcnkg
PSAiQXBwQm91bmREb21haW4iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgX1dL
V2ViVmlld0NhdGVnb3J5SHlicmlkQXBwOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiSHlicmlk
QXBwIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIF9XS1dlYlZpZXdDYXRlZ29y
eUluQXBwQnJvd3NlcjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkluQXBwQnJvd3NlciI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93
c2VyOgorICAgICAgICAgICAgY2F0ZWdvcnkgPSAiV2ViQnJvd3NlciI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
V2ViVmlld0NhdGVnb3J5KGNhdGVnb3J5KTsKKyAgICB9XTsKK30KKwogdm9pZCBUZXN0Q29udHJv
bGxlcjo6aW5qZWN0VXNlclNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCiB7CiAgICAgYXV0byB1
c2VyU2NyaXB0ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6
IHRvV1RGU3RyaW5nKHNjcmlwdCkgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNTc4NDA2
YzY0ZDI1MTJiNzdkY2Y0ZmEzYTcwMjcyN2ZlMzkyYzVhLi5jYzA0N2VkZjk0ZTk1YmUyZjA1ZjZi
NjA5YmI0OWFiYjIxMzAzNjA5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDItMjEgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJv
dW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJhdGUgTmV0d29yayBTZXNzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4MDI2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81OTQzNDAwNj4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBG
dWxnaGFtLgorCisgICAgICAgIEFkZGVkIHR3byB0ZXN0cy4gT25lIHRvIHRlc3QgdGhlIHByb3Bl
ciBjYXRlZ29yaXphdGlvbiBvZiBhcHAtYm91bmQKKyAgICAgICAgbmF2aWdhdGlvbiwgYW5kIG9u
ZSB0byBjaGVjayB0aGF0IHN3aXRjaGluZyBzZXNzaW9ucyBvY2N1cnMgd2hlbgorICAgICAgICBu
YXZpZ2F0aW5nIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uCisKKyAgICAgICAgU2luY2UgdGhlc2Ug
dGVzdHMgdXNlIElUUCB0byBzZXQgdXNlciBpbnRlcmFjdGlvbiwgdGhleSBzaG91bGQgb25seQor
ICAgICAgICBiZSBydW4gb24gaU9TIGFuZCBtYWMtd2syLgorCisgICAgICAgICogVGVzdEV4cGVj
dGF0aW9uczoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBw
LWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1v
bi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24t
b24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMC0wMi0yMSAgSmFzb24gTGF3cmVuY2UgIDxsYXdy
ZW5jZS5qQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1hYyB3azIgXSBodHRwL3dwdC9mZXRjaC9k
aXNhYmxlLXNwZWN1bGF0aXZlLWZvci1yZWxvYWQuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggYjM1NjgxZWNiZTA4NzExM2E1YWY2Zjg1OWM0MjIwMWQ0YjhiZGVm
Ny4uYzg5MmJjNzAyYTU0Y2IxZTg5ZGQ3ZGJjY2RkNjIwNzRkODg3OTU2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCkBAIC0xNTUsNiArMTU1LDggQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3VzZXJhZ2Vu
dC1yZWxvYWQucGhwIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9tb2Rlcm4vb3BlbmRhdGFi
YXNlLWFmdGVyLXN0b3JhZ2UtY3Jhc2guaHRtbCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIv
SURCT2JqZWN0LWxlYWsuaHRtbCBbIFNraXAgXQogZmFzdC9mb3Jtcy9jYWxsLXRleHQtZGlkLWNo
YW5nZS1pbi10ZXh0LWZpZWxkLXdoZW4tdHlwaW5nLmh0bWwgWyBTa2lwIF0KK2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS8gWyBTa2lwIF0KKwogCiAjIE9ubHkgTWFjIGFuZCBpT1Mg
aGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNr
KCkuCiBmYXN0L2hhcm5lc3MvdWlzY3JpcHRjb250cm9sbGVyIFsgU2tpcCBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWRvbWFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93
c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTUy
M2E2OTFiOGNlODEyOTM1Yzc4MzBjZWQxZmUzZThiNmViYzk0NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQt
ZG9tYWluLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK1Rlc3RzIHRoYXQgYW4gQXBwLUJv
dW5kIERvbWFpbiBnZXRzIGNsYXNzaWZpZWQgYXMgc28KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgU3VjY2VzcywgZG9tYWluIGNsYXNzaWZpZWQgYXMgSW4tQXBwIEJyb3dz
ZXIuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXIt
cHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUy
MjVjNWY0NTkxZmEwZTJiNzg0MGY0MmEyNDM2Y2IxNjk2MGYxNjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5k
LWRvbWFpbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0
LXRlc3QtcnVubmVyIFsgaW50ZXJuYWw6SXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZD10cnVl
IGFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcj10ZXN0aWRlbnRpZmllciBdIC0tPgorPGh0bWw+
Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbignVGVzdHMg
dGhhdCBhbiBBcHAtQm91bmQgRG9tYWluIGdldHMgY2xhc3NpZmllZCBhcyBzbycpOworICAgICAg
ICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKKyAgICAgICAgZnVuY3Rpb24gYXNrRm9yV2ViVmlld0NhdGVnb3J5KCkgeworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdvcnkoZnVuY3Rpb24gKGNhdGVnb3J5KSB7
CisgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9ICJJbkFwcEJyb3dzZXIiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgYXNrRm9yV2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJTdWNjZXNzLCBkb21haW4gY2xhc3NpZmllZCBhcyBJbi1BcHAgQnJvd3Nlci4iKTsK
KyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgZGVzdGluYXRpb25PcmlnaW4gPSAiaHR0cDov
L2xvY2FsaG9zdDo4MDAwIjsKKyAgICAgICAgZnVuY3Rpb24gbmF2aWdhdGVUb05vbkFwcEJvdW5k
RG9tYWluKCkgeworICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGRlc3RpbmF0
aW9uT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4uaHRt
bCNzdGVwMiI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChkb2N1bWVudC5sb2Nh
dGlvbi5oYXNoICE9ICIjc3RlcDIiKSB7CisgICAgICAgICAgICB0ZXN0UnVubmVyLmdldFdlYlZp
ZXdDYXRlZ29yeShmdW5jdGlvbiAoY2F0ZWdvcnkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2F0
ZWdvcnkgIT0gIkFwcEJvdW5kRG9tYWluIikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJGYWlsdXJlLCBzdGFydGluZyBjYXRlZ29yeSBub3QgQXBwQm91bmREb21haW4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIG5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFpbigpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc2tGb3JXZWJWaWV3
Q2F0ZWdvcnkoKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgdGVzdFBhc3NlZCgiRmFpbHVyZSwgZG9tYWluIG5vdCBjbGFzc2lm
aWVkIGFzIEluLUFwcCBCcm93c2VyLiIpOworICAgICAgICAgICAgY29uc29sZS5sb2coIlRlc3Qg
dGltZWQgb3V0IGFmdGVyIDIwIHNlY29uZHMiKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpCisgICAgICAgIH0sIDIwMDAwKTsKKyAgICAKKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRp
b24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10
by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmU4YTYzZTQ3N2E5
YTBkY2MwMmQ2Mjc1ZWQ2YWIxMGM1Yjc5ZGYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBA
QAorVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9uIHRvcCBmcmFtZSBuYXZp
Z2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTIFNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHNlc3Npb24gY29va2llLgorUEFT
UyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4KK1BBU1MgT3JpZ2lu
IGhhcyBhcHAtYm91bmQgc2Vzc2lvbiBhZnRlciBuYXZpZ2F0aW9uLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1u
YXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRv
LWFwcC1ib3VuZC1kb21haW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGM2NjFhOTk3M2UyYjA1ZWY5MTlk
OTRhY2FmZWVlNDJlYzdiNTg4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24t
dG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8IURPQ1RZUEUgaHRt
bD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGludGVybmFsOklzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQ9dHJ1ZSBhcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXI9dGVzdGlkZW50aWZpZXIg
XSAtLT4KKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04
Ij4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9yZXNvdXJjZXMv
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8
c2NyaXB0PgorICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRoZSBzZXNzaW9uIGlzIHN3aXRj
aGVkIHVwb24gdG9wIGZyYW1lIG5hdmlnYXRpb24gdG8gYW4gYXBwLWJvdW5kIGRvbWFpbi4iKTsK
KyAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgIGNvbnN0IGFwcEJvdW5kT3JpZ2luID0g
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMCI7CisgICAgY29uc3Qgbm9uQXBwQm91bmRPcmlnaW4gPSAi
aHR0cDovL2xvY2FsaG9zdDo4MDAwIjsKKyAgICBjb25zdCBzZXNzaW9uQ29va2llTmFtZSA9ICJz
ZXNzaW9uQ29va2llIjsKKyAgICBjb25zdCBwZXJzaXN0ZW50Q29va2llTmFtZSA9ICJwZXJzaXN0
ZW50Q29va2llIjsKKyAgICBjb25zdCB0d29NaW51dGVzSW5TZWNvbmRzID0gMTIwOworCisgICAg
ZnVuY3Rpb24gZmluaXNoVGVzdCgpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRJbkFwcEJyb3dz
ZXJQcml2YWN5RW5hYmxlZChmYWxzZSwgZmluaXNoSlNUZXN0KTsKKyAgICB9CisgICAgCisgICAg
ZnVuY3Rpb24gc2V0U2Vzc2lvbkNvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0g
c2Vzc2lvbkNvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LyI7CisgICAgfQorCisgICAgZnVuY3Rpb24g
c2V0UGVyc2lzdGVudENvb2tpZSgpIHsKKyAgICAgICAgZG9jdW1lbnQuY29va2llID0gcGVyc2lz
dGVudENvb2tpZU5hbWUgKyAiPTE7IHBhdGg9LzsgTWF4LUFnZT0iICsgdHdvTWludXRlc0luU2Vj
b25kcyArICI7IjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBjaGVja0Nvb2tpZXMoc2hvdWxkSGF2
ZVNlc3Npb25Db29raWUsIHNob3VsZEhhdmVQZXJzaXN0ZW50Q29va2llKSB7CisgICAgICAgIGxl
dCBoYXNTZXNzaW9uQ29va2llID0gKGRvY3VtZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhzZXNz
aW9uQ29va2llTmFtZSksCisgICAgICAgICAgICBoYXNQZXJzaXN0ZW50Q29va2llID0gKGRvY3Vt
ZW50LmNvb2tpZSArICIiKS5pbmNsdWRlcyhwZXJzaXN0ZW50Q29va2llTmFtZSk7CisKKyAgICAg
ICAgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmIGhhc1Nlc3Npb25Db29raWUpCisgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tp
ZS4iKTsKKyAgICAgICAgZWxzZSBpZiAoc2hvdWxkSGF2ZVNlc3Npb25Db29raWUgJiYgIWhhc1Nl
c3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBk
b2Vzbid0IGhhdmUgdGhlIHNlc3Npb24gY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxl
RmVhdHVyZShmYWxzZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhh
dmVTZXNzaW9uQ29va2llICYmIGhhc1Nlc3Npb25Db29raWUpIHsKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIlNob3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHNlc3Npb24gY29va2llLiIpOworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3Qg
aGF2ZSB0aGUgc2Vzc2lvbiBjb29raWUuIik7CisKKworICAgICAgICBpZiAoc2hvdWxkSGF2ZVBl
cnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENvb2tpZSkKKyAgICAgICAgICAgIHRlc3RQ
YXNzZWQoIlNob3VsZCBoYXZlIGFuZCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAg
ICAgICBlbHNlIGlmIChzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSAmJiAhaGFzUGVyc2lzdGVu
dENvb2tpZSkgeworICAgICAgICAgICAgdGVzdEZhaWxlZCgiU2hvdWxkIGhhdmUgYnV0IGRvZXNu
J3QgaGF2ZSB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKGZhbHNlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgfSBlbHNlIGlmICghc2hvdWxkSGF2
ZVBlcnNpc3RlbnRDb29raWUgJiYgaGFzUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICAgICAg
dGVzdEZhaWxlZCgiU2hvdWxkbid0IGhhdmUgYnV0IGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUu
Iik7CisgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hUZXN0KTsKKyAg
ICAgICAgfSBlbHNlCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTaG91bGRuJ3QgaGF2ZSBhbmQg
ZG9lc24ndCBoYXZlIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICB9CisKKyAgICBmdW5j
dGlvbiBydW5UZXN0KCkgeworICAgICAgICBzd2l0Y2ggKGRvY3VtZW50LmxvY2F0aW9uLmhhc2gp
IHsKKyAgICAgICAgICAgIGNhc2UgIiI6CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCh0cnVlLCBmdW5jdGlvbiAoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2lu
KQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiVGVzdCBpcyBub3Qgc3RhcnRp
bmcgb3V0IG9uICIgKyBhcHBCb3VuZE9yaWdpbiArICIuIik7CisgICAgICAgICAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBTaW5jZSB0aGUgdGVzdCBtYW51YWxseSBzZXRzIHRoZSBpbkFwcEJyb3dzZXJQcml2
YWN5IGZsYWcgaW4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXR3b3JrIHByb2Nl
c3MsIHdlIG5lZWQgdG8gcmUtZXN0YWJsaXNoIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGJ5CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBuYXZpZ2F0aW5nIGF3YXkgdGhlbiBiYWNrIHRvIHRoZSBh
cHAtYm91bmQgRG9tYWluIGJlZm9yZSBzZXR0aW5nIGNvb2tpZXMuCisgICAgICAgICAgICAgICAg
ICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAt
Ym91bmQtZG9tYWluLmh0bWwjc3RlcDEiOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
IiNzdGVwMSI6CisgICAgICAgICAgICAgICAgZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IGFwcEJv
dW5kT3JpZ2luICsgIi9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5h
dmlnYXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sI3N0ZXAyIjsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgIiNzdGVwMiI6CisgICAgICAgICAgICAgICAgaWYg
KGRvY3VtZW50LmxvY2F0aW9uLm9yaWdpbiAhPT0gYXBwQm91bmRPcmlnaW4pCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoIlN0ZXAgMiBpcyBub3Qgb24gIiArIGFwcEJvdW5kT3JpZ2lu
ICsgIi4iKTsKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRV
c2VySW50ZXJhY3Rpb24oYXBwQm91bmRPcmlnaW4sIHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgICAgICAgICBzZXRTZXNzaW9uQ29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIHNl
dFBlcnNpc3RlbnRDb29raWUoKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tDb29raWVzKHRy
dWUsIHRydWUpOworICAgICAgICAgICAgICAgIGlmICghdGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNl
c3Npb24oKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiT3JpZ2luIGRp
ZCBub3Qgc3RhcnQgd2l0aCBhcHAtYm91bmQgc2Vzc2lvbi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaFRlc3QpOworICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIk9yaWdp
biBoYXMgYXBwLWJvdW5kIHNlc3Npb24uIik7CisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhyZWYgPSBub25BcHBCb3VuZE9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXItcHJp
dmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRt
bCNzdGVwMyI7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlICIjc3RlcDMiOgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0
aW9uLmhhc2ggPSAiI3N0ZXA0IgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyhmYWxzZSwg
ZmFsc2UpOworICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5vcmlnaW4gIT09
IG5vbkFwcEJvdW5kT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTdGVw
IDMgaXMgbm90IG9uICIgKyBub25BcHBCb3VuZE9yaWdpbik7CisgICAgICAgICAgICAgICAgdGVz
dFJ1bm5lci5zdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcocnVuVGVzdCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDQiOgorICAgICAgICAgICAg
ICAgIGNoZWNrQ29va2llcyhmYWxzZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRvY3VtZW50
LmxvY2F0aW9uLmhyZWYgPSBhcHBCb3VuZE9yaWdpbiArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFj
eS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCNz
dGVwNSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDUi
OgorICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBpZiAodGVzdFJ1bm5lci5oYXNBcHBCb3VuZFNlc3Npb24oKSkKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiT3JpZ2luIGhhcyBhcHAtYm91bmQgc2Vzc2lvbiBhZnRlciBuYXZp
Z2F0aW9uLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiT3JpZ2luIGhhcyBubyBhcHAtYm91bmQgc2Vzc2lvbiBhZnRlciBuYXZpZ2F0aW9u
LiIpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaFRlc3Qp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJVbmtub3duIGhhc2guIik7CisgICAgICAgICAgICAgICAgc2V0
RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0KKyAgICB9CisKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCBhNjU1ZDVmODk5YTE2ZDNjN2UyYmRkMmVmNWRiM2VjZmRkYzA1OTky
Li5iOGM0M2M0ODJlMmRmYTM1ZTI0Yzc1NzlmMDUyNzkwNDBhODg3NjQwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjc5OSw2ICsyNzk5LDkgQEAgaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2Rlbnktc3RvcmFnZS1hY2Nlc3MtdW5kZXItb3BlbmVyLWlm
LWF1dG8tZGlzbWlzcy1kYXRhYmEKIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZmFsc2UtYnktZGVmYXVsdC1kYXRhYmFzZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZhbHNlLWJ5LWRlZmF1bHQtZXBo
ZW1lcmFsLWRhdGFiYXNlLmh0bWwgWyBQYXNzIF0KIAorIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhw
ZWN0YXRpb25zLCBvbmx5IHdvcmsgZm9yIGlPUyBhbmQgTWFjIFdLMi4KK2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS8gWyBQYXNzIF0KKwogIyBTa2lwcGVkIGluIGdlbmVyYWwgZXhw
ZWN0YXRpb25zIHNpbmNlIHRoZXkgb25seSB3b3JrIG9uIGlPUyBhbmQgTWFjLCBXSzIuCiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHkt
cmVkaXJlY3RzLWluLXByaXZhdGUtbW9kZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0cmlwLXJlZmVycmVyLXRvLW9yaWdpbi1mb3ItdGhpcmQtcGFydHktcmVxdWVzdHMtaW4t
cHJpdmF0ZS1tb2RlLmh0bWwgWyBQYXNzIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxZDc2ZDFjYmZjOGZiMjc1NDBjNmY2M2Q0YzlmNTdj
YjliM2U1Mzk4Li4yZTU0MmVlMDk5NTQxOWFlYmE1YjY2ZWJhNWZjZWFhNTFlZjUwODgzIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC01OCw2
ICs1OCw5IEBAIHdlYmtpdC5vcmcvYi8xNzU2MTEgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9wYXltZW50LXJlcXVlc3QvYWxsb3dwYXltZW50CiB3ZWJraXQub3JnL2IvMTc1NjExIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvcGF5bWVudC1yZXF1ZXN0L2FsbG93cGF5bWVu
dHJlcXVlc3Qvc2V0dGluZy1hbGxvd3BheW1lbnRyZXF1ZXN0LXRpbWluZy5odHRwcy5zdWIuaHRt
bCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzE3NTYxMSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3BheW1lbnQtcmVxdWVzdC9hbGxvd3BheW1lbnRyZXF1ZXN0L3NldHRpbmctYWxsb3dw
YXltZW50cmVxdWVzdC5odHRwcy5zdWIuaHRtbCBbIFNraXAgXQogCisjIFNraXBwZWQgaW4gZ2Vu
ZXJhbCBleHBlY3RhdGlvbnMsIG9ubHkgd29yayBmb3IgaU9TIGFuZCBNYWMgV0syLgoraHR0cC90
ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5LyBbIFBhc3MgXQorCiAjIHNraXAgaW4gZmF2b3Ig
b2YgdGVzdHMgaW4gaHR0cC90ZXN0cy9wYXltZW50cmVxdWVzdAogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9wYXltZW50LXJlcXVlc3QvcGF5bWVudC1yZXF1ZXN0LWFib3J0LW1ldGhv
ZC5odHRwcy5odG1sIFsgV29udEZpeCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3BheW1lbnQtcmVxdWVzdC9wYXltZW50LXJlcXVlc3Qtc2hvdy1tZXRob2QuaHR0cHMuaHRtbCBb
IFdvbnRGaXggXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391430</attachid>
            <date>2020-02-21 15:44:17 -0800</date>
            <delta_ts>2020-02-21 19:43:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208026-20200221154416.patch</filename>
            <type>text/plain</type>
            <size>119319</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGExOWNhNTM1YWMzMTIxNjIy
MWM3ZjcwN2VjZmRlNzFjMzNkZTUyNDQuLmI2OWU4NWE4MjIzM2Q1N2Y2ZmFjMGUyNTVjOWQxOGZj
ZDU4NTBhZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQ3IEBACisyMDIwLTAyLTIxICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBk
b21haW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hh
bS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2Fw
cC1ib3VuZC1kb21haW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sCisKKyAgICAgICAgU3VwcG9ydHMgbmV0d29yayBzZXNzaW9uIHN3aXRjaGluZyBm
b3IgbmF2aWdhdGlvbnMgdG8gYXBwLWJvdW5kCisgICAgICAgIGRvbWFpbnMuIFRoaXMgcmVxdWly
ZXMgdXBkYXRpbmcgdGhlIFdlYlBhZ2Ugd2hlbiBhIG5hdmlnYXRpb24gb2NjdXJzCisgICAgICAg
IHRvIGNoZWNrIHdoZXRoZXIgaXQgaXMgdG8gYW4gYXBwLWJvdW5kIGRlc3RpbmF0aW9uLiBJbiBj
YXNlIG9mIGEKKyAgICAgICAgcHJvY2VzcyBzd2FwLCB0aGlzIGhhcyB0byBiZSBkb25lIGJvdGgg
aW4gUG9saWN5RGVjaXNpb25TZW5kZXIgYW5kCisgICAgICAgIGluIHRoZSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEgYW5kIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdAor
ICAgICAgICBmdW5jdGlvbnMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIG11c3Qgc2VuZCB0
aGUgSW4tQXBwIEJyb3dzZXIgcHJpdmFjeSBmbGFnIHRvIHRoZQorICAgICAgICBOZXR3b3JrIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmg6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYSk6Cisg
ICAgICAgIFBhc3NlcyB0aGUgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBmbGFnIHRvIHRo
ZSBOZXR3b3JrU2Vzc2lvbi4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vz
c2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRJbkFwcEJy
b3dzZXJQcml2YWN5RW5hYmxlZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6aGFzQXBwQm91bmRTZXNzaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb246OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNw
cDoKKyAgICAgICAgKFdLV2Vic2l0ZURhdGFTdG9yZUhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAg
ICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tOgorICAgICAgICAo
LVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFdlYlZpZXdDYXRlZ29yeUZvcjpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzQXBwQm91
bmRTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6Omhh
c0FwcEJvdW5kU2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3Rv
cmU6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICBBIGxhcmdlIHBvcnRpb24g
b2YgdGhpcyBwYXRjaCBpcyB0aHJlZSBmdW5jdGlvbnMgZm9yIHRlc3RpbmcsIG9uZSBzZXRzIAor
ICAgICAgICB0aGUgaW4tYXBwIGJyb3dzZXIgcHJpdmFjeSBmbGFnIGZvciB0aGUgdGVzdCBjYXNl
LCBvbmUgY2hlY2tzIGZvciBhbiBhcHAtYm91bmQgc2Vzc2lvbiwgYW5kIG9uZQorICAgICAgICBj
aGVja3MgdG8gbWFrZSBzdXJlIHRoZSBjYXRlZ29yeSB3YXMgY29ycmVjdGx5IHNldCB0byBhcHAt
Ym91bmQgZG9tYWluLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dl
YnNpdGVEYXRhU3RvcmVDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9y
ZTo6cGFyYW1ldGVycyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25D
cmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgUGFzc2Vz
IHRoZSBJbi1hcHAgYnJvd3NlciBwcml2YWN5IGZsYWcgdmFsdWUgZnJvbSBOU1VzZXJEZWZhdWx0
cyB0byB0aGUgbmV0d29yayBzZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNvY29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjphcHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrU2Vzc2lvbkNvY29hOjpoYXNBcHBCb3VuZFNlc3Npb24gY29uc3QpOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2VsKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xlYXJDcmVkZW50aWFscyk6CisgICAgICAg
IENyZWF0ZXMgYSBuZXcgc2Vzc2lvbiAob3IgcmV0dXJucyB0aGUgZXhpc3RpbmcgYXBwLWJvdW5k
IHNlc3Npb24pIGlmCisgICAgICAgIHRoZSBuYXZpZ2F0aW9uIGlzIGFwcC1ib3VuZC4gVGhpcyBp
cyB0aGUgbWFpbiBjaGFuZ2UgaW4gdGhpcyBwYXRjaC4KKworICAgICAgICAqIFNoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJzOjplbmNvZGUg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAg
ICAgKiBTaGFyZWQvTG9hZFBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkRGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZCk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpsb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhSW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWREYXRhKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6bG9hZEFsdGVybmF0ZUhUTUwpOgorICAgICAgICBJbiB0aGUgY2FzZSBvZiBh
IHByb2Nlc3Mgc3dhcCwgd2UgbXVzdCBhZGQgdGhlCisgICAgICAgIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gYm9vbGVhbiBpbiBMb2FkUGFyYW1ldGVycyB0byBlbnN1cmUgaXQgZ2V0cyBz
ZW50IHRvCisgICAgICAgIHRoZSBuZXcgV2ViUGFnZSB2aWEgdGhlIFByb3Zpc2lvbmFsUGFnZVBy
b3h5LgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5k
ZXI6OnNlbmQpOgorICAgICAgICBGaXhlcyBhIGNhcGl0YWxpemF0aW9uIGVycm9yLgorCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICBUaGVzZSBm
dW5jdGlvbnMgZGV0ZXJtaW5lIGlmIHRoZSBjYXRlZ29yeSBpcyBhcHAtYm91bmQgYW5kIHVwZGF0
ZSB0aGUKKyAgICAgICAgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBib29sZWFuIGFjY29y
ZGluZ2x5LgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgIChX
ZWJLaXQ6OlBvbGljeURlY2lzaW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQ
b2xpY3lEZWNpc2lvbjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmNTaGFyZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICBGb3IgYSBub24tcHJvY2VzcyBz
d2FwIGNhc2UsIHdlIGNhbiBzZW5kIHRoZQorICAgICAgICBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIHZhbHVlIGluIHRoZQorICAgICAgICBQb2xpY3lEZWNpc2lvbiBzdHJ1Y3QuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9j
ZXNzKToKKyAgICAgICAgU2VuZHMgdGhlIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gYm9v
bGVhbiB0byB0aGUgTmV0d29ya1Byb2Nlc3MKKyAgICAgICAgd2l0aCB0aGUgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0SXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbik6CisgICAgICAgIFRoZSBib29sZWFuIHZhbHVlIGZvciBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluIGlzIHN0b3JlZAorICAgICAgICBpbiB0aGUgd2ViUGFnZSBzbyBXZWJMb2FkZXJT
dHJhdGVneSBjYW4gYWNjZXNzIGl0IHRvIHNlbmQgdG8gdGhlCisgICAgICAgIE5ldHdvcmtQcm9j
ZXNzLgorCiAyMDIwLTAyLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmVtb3ZlIFdlYlBhZ2VQcm94eTo6bWFjaFNlbmRSaWdodENhbGxiYWNrIGFzIGl0IGlz
IGRlYWQgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0
YVRhc2suY3BwCmluZGV4IDgyMTIzNmU3OTA2ZGRjODNhZWI2OTY3YzhlZWI4YzE4ZmQwNmE5MTIu
LjgwNTBkMTFmZjhlNzE3ZTE5NzVhNjRiYmYwNGJlNmU1NmRlMGM3ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFUYXNrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTUwLDcgKzUw
LDcgQEAgUmVmPE5ldHdvcmtEYXRhVGFzaz4gTmV0d29ya0RhdGFUYXNrOjpjcmVhdGUoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXQKIHsKICAgICBBU1NFUlQoIXBhcmFtZXRlcnMu
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigpKTsKICNpZiBQTEFURk9STShDT0NPQSkKLSAg
ICByZXR1cm4gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmNyZWF0ZShzZXNzaW9uLCBjbGllbnQsIHBh
cmFtZXRlcnMucmVxdWVzdCwgcGFyYW1ldGVycy53ZWJGcmFtZUlELCBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgcGFyYW1ldGVycy5jb250
ZW50U25pZmZpbmdQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIHBhcmFtZXRlcnMuc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSwgcGFyYW1ldGVycy5pc01haW5GcmFtZU5h
dmlnYXRpb24sIHBhcmFtZXRlcnMuaXNNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IHBhcmFtZXRlcnMubmV0d29ya0FjdGl2aXR5VHJhY2tlcik7CisgICAgcmV0dXJuIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpjcmVhdGUoc2Vzc2lvbiwgY2xpZW50LCBwYXJhbWV0ZXJzLnJlcXVlc3Qs
IHBhcmFtZXRlcnMud2ViRnJhbWVJRCwgcGFyYW1ldGVycy53ZWJQYWdlSUQsIHBhcmFtZXRlcnMu
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHBhcmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5
LCBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBwYXJhbWV0ZXJzLnNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIHBhcmFtZXRlcnMuc2hvdWxk
UHJlY29ubmVjdE9ubHksIHBhcmFtZXRlcnMuaXNNYWluRnJhbWVOYXZpZ2F0aW9uLCBwYXJhbWV0
ZXJzLmlzTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBwYXJhbWV0ZXJzLm5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIsIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkKICAgICByZXR1cm4gTmV0d29ya0RhdGFUYXNrU291
cDo6Y3JlYXRlKHNlc3Npb24sIGNsaWVudCwgcGFyYW1ldGVycy5yZXF1ZXN0LCBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBwYXJhbWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGlj
eSwgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgcGFyYW1ldGVycy5z
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBwYXJhbWV0ZXJzLmlzTWFp
bkZyYW1lTmF2aWdhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAppbmRleCBkZTc0ZDMzYTgxZjYyZDQ1ODA2YjY4OTVm
ZjNiYWVjYmZjNTY2YTE3Li4xYmY4NDc1NzFmZTlkMGFjNmJlMGYwZGU5MTYwM2JiYzJiNmNkNzM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFy
YW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
TmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIu
aD4KQEAgLTYxLDYgKzYyLDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gYmxvYkZpbGVSZWZlcmVuY2VzOwogICAgIFByZWNvbm5l
Y3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5IHsgUHJlY29ubmVjdE9ubHk6Ok5vIH07CiAgICAg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcjsK
KyAgICBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKaW5kZXggOWJmYTQ4ZmIxODg3NWEzZDBiMGFkNzk5MzFjY2JjYzFmY2M3ZTQ4MC4u
MzRkY2IyYmYyNGVhOTczMzNlMWEzZDBkNzY4YjBiM2I1ZjdhY2Q5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTI2MDMsNCArMjYw
MywyMyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldFNlcnZpY2VXb3JrZXJGZXRjaFRpbWVv
dXRGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpIGNvbnN0Cit7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoYXV0
byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICByZXN1bHQgPSBuZXR3b3JrU2Vzc2lvbi0+aGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIocmVzdWx0KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKKyAgICAgICAgbmV0d29ya1Nlc3Npb24tPnNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKGVuYWJsZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCAzYWM4MzRmNmVlNTdj
MmRhMjQwZGQ3Y2ZmMjQzMzBlNzU4NDNkOGE4Li4zNDJkNmE2YmU5MzI2NTQyNWQ1ZGQyOWQ3ODli
NmU1MTgxOGNlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCkBAIC0zNDIsNiArMzQyLDggQEAgcHVibGljOgogICAgIFNlY29uZHMgc2Vydmlj
ZVdvcmtlckZldGNoVGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlckZldGNo
VGltZW91dDsgfQogCiAgICAgdm9pZCBjb29raWVBY2NlcHRQb2xpY3lDaGFuZ2VkKFdlYkNvcmU6
OkhUVFBDb29raWVBY2NlcHRQb2xpY3kpOworICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBjb25zdDsKKyAg
ICB2b2lkIHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29s
IGVuYWJsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBlZGRmY2RiYTM5YTMwN2Vm
NWUxZDA3YWYxMzVmMjQ3ZjEzZWVjMWFjLi5jOGQwMDhmZDkxZWVmYzAyZDdiZTFkYjVlOGE0N2Ji
MzkzODAzNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTE2OCw0ICsxNjgsNyBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUmVzZXRTZXJ2aWNlV29ya2Vy
RmV0Y2hUaW1lb3V0Rm9yVGVzdGluZygpIC0+ICgpIFN5bmNocm9ub3VzCiAKICAgICBSZXNldFF1
b3RhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKKyAgICAKKyAgICBIYXNB
cHBCb3VuZFNlc3Npb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBcHBC
b3VuZFNlc3Npb24pIEFzeW5jCisgICAgU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVlKSAtPiAoKSBBc3luYwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCBkYTIyMDliODdlYTMzNTM1MmIxODRhODdmZGFhOTBl
MzAxOWU3NTM2Li41NjI5N2I2NGIxMjMxMmYyZGY2YjZhMzg2YjE1YmM5M2ZlZjI2NDZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTE5LDYgKzExOSw4IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CiAgICAgZW5jb2RlciA8PCB1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisgICAgCisgICAgZW5jb2RlciA8
PCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogfQogCiBPcHRpb25hbDxOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycz4gTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29k
ZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0yOTQsNiArMjk2LDEyIEBAIE9wdGlvbmFsPE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzPiBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZGVjb2RlKElQCiAgICAgcmVzdWx0LnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
PSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICNlbmRpZgogCisgICAgT3B0aW9u
YWw8TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4+IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47CisgICAgZGVjb2RlciA+PiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOworICAgIGlm
ICghaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXN1bHQuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9ICppc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCAyY2M4NzI5MDBlNGQ0NGIwN2RhNGY0MGNlZjYwNjY2
YmY2NDQ5NTNhLi5mMjIwMjY5Y2FkODE0ZWVjYjhlYWZiNDkzM2EzZmQ5YzllOWJlMTJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lz
aW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1
cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycy5oPgpAQCAtNzMsNiArNzQsOCBAQCBwdWJsaWM6CiAg
ICAgVVJMIG1haW5Eb2N1bWVudFVSTDsKICAgICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogI2VuZGlmCisg
ICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmYzYWJkOTkzODkxZTdiYTA4ZGZmOGEy
M2JlN2YwOWI4YWY5MzgzNS4uZjU5OGQ3OTY2ODkwZTc3ZGQxMTRjMTJkN2ZhZTE2MzU2Y2Q1YzU0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMzI4LDYgKzMyOCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0
TG9hCiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZXNvdXJj
ZUxvYWREaWRTZW5kUmVxdWVzdChtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIHJlc291cmNl
TG9hZEluZm8oKSwgcmVxdWVzdCksIDApOwogCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RG
TW92ZShyZXF1ZXN0KTsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gPSBtX3BhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsKICAgICBtX25l
dHdvcmtMb2FkID0gbWFrZVVuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZuZXR3b3JrU2Vzc2lv
bi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7
CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBHb2luZyB0
byB0aGUgbmV0d29yayAoZGVzY3JpcHRpb249JSIgUFVCTElDX0xPR19TVFJJTkcgIikiLCBtX25l
dHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IDhiMGMxY2E4YzUzZWY2YmYz
MWRjZDQwZGQzYTk2NWNmZWU2ZTVjODguLmI1ODNmMjliMjk1NDg4YTAwYzAxZWI1OTAwOGVkZTdj
ZWMxNWUwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uLmgKQEAgLTEwMSw2ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREb3duZ3Jh
ZGVSZWZlcnJlcigpIGNvbnN0OwogICAgIHZvaWQgc2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZShXZWJDb3JlOjpUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKTsKICNlbmRpZgorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sKSB7IH0KICAgICB2b2lkIHN0b3JlQWRDbGlja0F0dHJpYnV0aW9uKFdlYkNvcmU6OkFkQ2xp
Y2tBdHRyaWJ1dGlvbiYmKTsKICAgICB2b2lkIGhhbmRsZUFkQ2xpY2tBdHRyaWJ1dGlvbkNvbnZl
cnNpb24oV2ViQ29yZTo6QWRDbGlja0F0dHJpYnV0aW9uOjpDb252ZXJzaW9uJiYsIGNvbnN0IFVS
TCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJl
cXVlc3QpOwogICAgIHZvaWQgZHVtcEFkQ2xpY2tBdHRyaWJ1dGlvbihDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRl
eCAyMWZjODY5YmNkODJjMjk1Y2I2NDU2NTQ0MTA3NThjMjU5Y2Y0NWMxLi5hMDM0NmQwNzMzNjIy
MDdmMGU2OWY4M2IwN2Y3NDMyNzhhN2RhYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcApAQCAtODQsNiArODQsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIg
PDwgdGVzdFNwZWVkTXVsdGlwbGllcjsKICAgICBlbmNvZGVyIDw8IHN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZTsKICAgICBlbmNvZGVyIDw8IGFsbG93c1NlcnZl
clByZWNvbm5lY3Q7CisgICAgZW5jb2RlciA8PCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
OwogfQogCiBPcHRpb25hbDxOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycz4gTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIp
CkBAIC0yNjksNiArMjcwLDExIEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJh
bWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjCiAgICAgZGVjb2Rl
ciA+PiBhbGxvd3NTZXJ2ZXJQcmVjb25uZWN0OwogICAgIGlmICghYWxsb3dzU2VydmVyUHJlY29u
bmVjdCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAKKyAgICBPcHRpb25hbDxi
b29sPiBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOworICAgIGRlY29kZXIgPj4gaXNJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZDsKKyAgICBpZiAoIWlzSW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICByZXR1cm4ge3sKICAg
ICAgICAgKnNlc3Npb25JRApAQCAtMzE0LDYgKzMyMCw3IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzPiBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjCiAgICAgICAgICwgV1RGTW92ZSgqdGVzdFNwZWVkTXVsdGlwbGllcikKICAgICAgICAgLCBX
VEZNb3ZlKCpzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpCiAg
ICAgICAgICwgV1RGTW92ZSgqYWxsb3dzU2VydmVyUHJlY29ubmVjdCkKKyAgICAgICAgLCBXVEZN
b3ZlKCppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogICAgIH19OwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNzJmNzUyNjc1ZWQ4N2I4MjIxMDIxZTA2YjZhOGEz
YjVmNDc4YzkwNi4uZThlNmUxOThkZDk3MzZmMzgzMjc0MWQxZTkxZjRiNWM2YTRkOTFhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHN0cnVjdCBO
ZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgdW5zaWduZWQgdGVzdFNwZWVk
TXVsdGlwbGllciB7IDEgfTsKICAgICBib29sIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRp
b25PblN5c3RlbUNoYW5nZSB7IGZhbHNlIH07CiAgICAgYm9vbCBhbGxvd3NTZXJ2ZXJQcmVjb25u
ZWN0IHsgdHJ1ZSB9OworICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRl
eCBmNDgzMTlhNzFkOTI1OThjMmQxNjBhNTBiZjg2NDdlZTdiYmE2YTc0Li41ZWNlMDE4ZDRkNjdk
MWEzNDViYjU3MGRlYzVhYmRlNzFjYWQ4NjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw5
ICs0Miw5IEBAIHN0cnVjdCBTZXNzaW9uV3JhcHBlcjsKIAogY2xhc3MgTmV0d29ya0RhdGFUYXNr
Q29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNrIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBO
ZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNo
b3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJv
b2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1h
aW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtE
YXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlm
ZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zv
ck1haW5GcmFtZU5hdmlnYXRpb24sIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5SZXNvdXJjZU5hdmln
YXRpb25Gb3JBbnlGcmFtZSwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbikKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5l
dHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFn
ZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdv
cmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlE
LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBkYXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKSk7CiAgICAgfQog
CiAgICAgfk5ldHdvcmtEYXRhVGFza0NvY29hKCk7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAg
ICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRl
bnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9y
QW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3VyY2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUs
IE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIGJvb2wgdHJ5UGFzc3dv
cmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZp
bmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VS
TFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVu
Y29kaW5nU25pZmYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggNTlmNTZmNGI3M2JhZjBmNjNl
NmJlNDUwN2JjNTg3ZmIzZGRkYTI2OC4uYWIzMDZmNjRiNzA3ODE0ZDk3NDRmMjMwYWIwNDk5MjA1
Y2ZhNWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0yMjgsOSArMjI4LDkgQEAgc3RhdGlj
IGlubGluZSBib29sIGNvbXB1dGVJc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24pCiAgICAgcmV0dXJuIHNlc3Npb24uc2Vzc2lvbklEKCkuaXNBbHdheXNPbkxv
Z2dpbmdBbGxvd2VkKCk7CiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBj
bGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBib29sIGRhdGFUYXNrSXNGb3JNYWluUmVzb3Vy
Y2VOYXZpZ2F0aW9uRm9yQW55RnJhbWUsIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0Rh
dGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3Jl
ZGVudGlhbHMsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxk
Q29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgYm9vbCBkYXRhVGFza0lzRm9yTWFpblJl
c291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBp
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Np
b24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uKQotICAgICwgbV9zZXNzaW9uV3JhcHBlcihtYWtlV2Vha1B0
cihzdGF0aWNfY2FzdDxOZXR3b3JrU2Vzc2lvbkNvY29hJj4oc2Vzc2lvbikuc2Vzc2lvbldyYXBw
ZXJGb3JUYXNrKHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
KSkpCisgICAgLCBtX3Nlc3Npb25XcmFwcGVyKG1ha2VXZWFrUHRyKHN0YXRpY19jYXN0PE5ldHdv
cmtTZXNzaW9uQ29jb2EmPihzZXNzaW9uKS5zZXNzaW9uV3JhcHBlckZvclRhc2socmVxdWVzdFdp
dGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pKSkKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQogICAgICwgbV9pc0Zvck1haW5SZXNvdXJjZU5hdmlnYXRpb25Gb3JBbnlGcmFtZShk
YXRhVGFza0lzRm9yTWFpblJlc291cmNlTmF2aWdhdGlvbkZvckFueUZyYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29j
b2EuaAppbmRleCA0YWQyYzEwMWJlN2E5ZTc5ZjhkMzUwMjY1ZDc4OGMzOGQwMmU1ODU4Li5kYTYx
ZmNjMDNkZTNhMDhlNDFiZDFmNTdiNzQ5NzMwM2U2YWM3OTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaApA
QCAtOTMsMTQgKzkzLDE5IEBAIHB1YmxpYzoKICAgICBib29sIGhhc0lzb2xhdGVkU2Vzc2lvbihj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjbGVhcklzb2xhdGVkU2Vzc2lvbnMoKSBvdmVycmlkZTsKIAotICAgIFNlc3Npb25XcmFwcGVy
JiBzZXNzaW9uV3JhcHBlckZvclRhc2soY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIGJvb2wgaGFzQXBwQm91bmRT
ZXNzaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2FwcEJvdW5kU2Vzc2lvbjsgfQog
CisgICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoYm9vbCBlbmFibGVkKSBvdmVycmlkZSB7IG1faXNJbkFwcEJyb3dzZXJQcml2YWN5
RW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ7IH0KKyAg
ICAKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb247IH0KICAgICBTZWNvbmRzIGxvYWRUaHJvdHRsZUxhdGVuY3koKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2xvYWRUaHJvdHRsZUxhdGVuY3k7IH0KICAgICBTZXNzaW9u
V3JhcHBlciYgaXNvbGF0ZWRTZXNzaW9uKFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbik7CisgICAgU2Vzc2lvbldyYXBwZXIm
IGFwcEJvdW5kU2Vzc2lvbihXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNp
ZiBIQVZFKE5TVVJMU0VTU0lPTl9XRUJTT0NLRVQpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlNv
Y2tldFRhc2s+IGNyZWF0ZVdlYlNvY2tldFRhc2soTmV0d29ya1NvY2tldENoYW5uZWwmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHByb3RvY29sKSBmaW5h
bDsKQEAgLTExNyw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIH07CiAKICAgICBIYXNoTWFwPFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBzdGQ6OnVuaXF1ZV9wdHI8SXNvbGF0ZWRTZXNzaW9u
Pj4gbV9pc29sYXRlZFNlc3Npb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJc29sYXRlZFNlc3Np
b24+IG1fYXBwQm91bmRTZXNzaW9uOwogCiAgICAgU2Vzc2lvbldyYXBwZXIgbV9zZXNzaW9uV2l0
aENyZWRlbnRpYWxTdG9yYWdlOwogICAgIFNlc3Npb25XcmFwcGVyIG1fc2Vzc2lvbldpdGhvdXRD
cmVkZW50aWFsU3RvcmFnZTsKQEAgLTEzMyw2ICsxMzksNyBAQCBwcml2YXRlOgogICAgIFNlY29u
ZHMgbV9sb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIGJvb2wgbV9mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25TZXJ2
aWNlVHlwZTsKKyAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQppbmRleCBk
ZTU5ZGM2YTQxODE4OWQyMDBmYjM5MzA1ODc2MGZlZmRjYjEyMDRlLi5lZmRhMDA3ZTEwNzg5YzYy
NzBkZTNkZGQ2NGUyNjRlOGUzOWU0MDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCkBAIC0xMDU5LDYg
KzEwNTksNyBAQCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vzc2lvbkNvY29hKE5ldHdv
cmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgTmV0d29yawogICAgICwgbV9sb2FkVGhyb3R0bGVM
YXRlbmN5KHBhcmFtZXRlcnMubG9hZFRocm90dGxlTGF0ZW5jeSkKICAgICAsIG1fZmFzdFNlcnZl
clRydXN0RXZhbHVhdGlvbkVuYWJsZWQocGFyYW1ldGVycy5mYXN0U2VydmVyVHJ1c3RFdmFsdWF0
aW9uRW5hYmxlZCkKICAgICAsIG1fZGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShwYXJhbWV0ZXJz
LmRhdGFDb25uZWN0aW9uU2VydmljZVR5cGUpCisgICAgLCBtX2lzSW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQocGFyYW1ldGVycy5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKQogewogICAg
IEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jh
d0Nvb2tpZXMpKTsKIApAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjppbml0aWFsaXplRXBoZW1lcmFsU3RhdGVsZXNzU2Vzc2lvbigpCiAgICAgbV9lcGhlbWVy
YWxTdGF0ZWxlc3NTZXNzaW9uLmluaXRpYWxpemUoY29uZmlndXJhdGlvbiwgKnRoaXMsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3MpOwogfQogCi1T
ZXNzaW9uV3JhcHBlciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNr
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCitTZXNzaW9uV3JhcHBl
ciYgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2Vzc2lvbldyYXBwZXJGb3JUYXNrKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKSkgewpAQCAtMTE5Nyw2ICsxMTk4LDkgQEAgU2Vzc2lvbldyYXBwZXImIE5l
dHdvcmtTZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpS
ZXNvdXIKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAjZW5kaWYKIAorICAgIGlmICht
X2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgJiYgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9PSBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzKQorICAgICAgICByZXR1cm4g
YXBwQm91bmRTZXNzaW9uKHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKwogICAgIHN3aXRjaCAo
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpIHsKICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRl
bnRpYWxzUG9saWN5OjpVc2U6CiAgICAgICAgIHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlh
bFN0b3JhZ2U7CkBAIC0xMjA5LDYgKzEyMTMsMzIgQEAgU2Vzc2lvbldyYXBwZXImIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayhjb25zdCBXZWJDb3JlOjpSZXNvdXIK
ICAgICB9CiB9CiAKK1Nlc3Npb25XcmFwcGVyJiBOZXR3b3JrU2Vzc2lvbkNvY29hOjphcHBCb3Vu
ZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kpCit7CisgICAgaWYgKCFtX2FwcEJvdW5kU2Vzc2lvbikgeworICAgICAgICBtX2Fw
cEJvdW5kU2Vzc2lvbiA9IG1ha2VVbmlxdWU8SXNvbGF0ZWRTZXNzaW9uPigpOworICAgICAgICBt
X2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5pbml0aWFsaXpl
KG1fc2Vzc2lvbldpdGhDcmVkZW50aWFsU3RvcmFnZS5zZXNzaW9uLmdldCgpLmNvbmZpZ3VyYXRp
b24sICp0aGlzLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAg
ICAgbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuaW5p
dGlhbGl6ZShtX3Nlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lvbi5nZXQoKS5j
b25maWd1cmF0aW9uLCAqdGhpcywgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRv
Tm90VXNlKTsKKyAgICB9CisKKyAgICBhdXRvJiBzZXNzaW9uV3JhcHBlciA9IFsmXSAoYXV0byBz
dG9yZWRDcmVkZW50aWFsc1BvbGljeSkgLT4gU2Vzc2lvbldyYXBwZXImIHsKKyAgICAgICAgc3dp
dGNoIChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSkgeworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U6CisgICAgICAgICAgICBMT0coTmV0d29ya1Nlc3Np
b24sICJVc2luZyBhcHAtYm91bmQgTlNVUkxTZXNzaW9uIHdpdGggY3JlZGVudGlhbCBzdG9yYWdl
LiIpOworICAgICAgICAgICAgcmV0dXJuIG1fYXBwQm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENy
ZWRlbnRpYWxTdG9yYWdlOworICAgICAgICBjYXNlIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpEb05vdFVzZToKKyAgICAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIlVzaW5n
IGFwcC1ib3VuZCBOU1VSTFNlc3Npb24gd2l0aG91dCBjcmVkZW50aWFsIHN0b3JhZ2UuIik7Cisg
ICAgICAgICAgICByZXR1cm4gbV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVu
dGlhbFN0b3JhZ2U7CisgICAgICAgIGNhc2UgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OkVwaGVtZXJhbFN0YXRlbGVzczoKKyAgICAgICAgICAgIGlmICghbV9lcGhlbWVyYWxTdGF0
ZWxlc3NTZXNzaW9uLnNlc3Npb24pCisgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZUVwaGVtZXJh
bFN0YXRlbGVzc1Nlc3Npb24oKTsKKyAgICAgICAgICAgIHJldHVybiBtX2VwaGVtZXJhbFN0YXRl
bGVzc1Nlc3Npb247CisgICAgICAgIH0KKyAgICB9IChzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7
CisKKyAgICByZXR1cm4gc2Vzc2lvbldyYXBwZXI7Cit9CisKIFNlc3Npb25XcmFwcGVyJiBOZXR3
b3JrU2Vzc2lvbkNvY29hOjppc29sYXRlZFNlc3Npb24oV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4pCiB7CiAgICAgYXV0byYgZW50cnkgPSBtX2lzb2xh
dGVkU2Vzc2lvbnMuZW5zdXJlKGZpcnN0UGFydHlEb21haW4sIFt0aGlzXSB7CkBAIC0xMjgyLDYg
KzEzMTIsMTMgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjppbnZhbGlkYXRlQW5kQ2FuY2Vs
KCkKICAgICAgICAgW3Nlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2UuZGVs
ZWdhdGUgc2Vzc2lvbkludmFsaWRhdGVkXTsKICAgICB9CiAgICAgbV9pc29sYXRlZFNlc3Npb25z
LmNsZWFyKCk7CisKKyAgICBpZiAobV9hcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgW21fYXBw
Qm91bmRTZXNzaW9uLT5zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlLnNlc3Npb24gaW52YWxp
ZGF0ZUFuZENhbmNlbF07CisgICAgICAgIFttX2FwcEJvdW5kU2Vzc2lvbi0+c2Vzc2lvbldpdGhD
cmVkZW50aWFsU3RvcmFnZS5kZWxlZ2F0ZSBzZXNzaW9uSW52YWxpZGF0ZWRdOworICAgICAgICBb
bV9hcHBCb3VuZFNlc3Npb24tPnNlc3Npb25XaXRob3V0Q3JlZGVudGlhbFN0b3JhZ2Uuc2Vzc2lv
biBpbnZhbGlkYXRlQW5kQ2FuY2VsXTsKKyAgICAgICAgW21fYXBwQm91bmRTZXNzaW9uLT5zZXNz
aW9uV2l0aG91dENyZWRlbnRpYWxTdG9yYWdlLmRlbGVnYXRlIHNlc3Npb25JbnZhbGlkYXRlZF07
CisgICAgfQogfQogCiB2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsZWFyQ3JlZGVudGlhbHMo
KQpAQCAtMTI5NSw2ICsxMzMyLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGVhckNy
ZWRlbnRpYWxzKCkKICAgICBtX3N0YXRlbGVzc1Nlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNlc3Np
b25XaXRoQ29uZmlndXJhdGlvbjptX3N0YXRlbGVzc1Nlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlv
biBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9zdGF0ZWxlc3NTZXNzaW9uRGVsZWdhdGUuZ2V0
KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07CiAgICAgZm9y
IChhdXRvJiBlbnRyeSA6IG1faXNvbGF0ZWRTZXNzaW9ucy52YWx1ZXMoKSkKICAgICAgICAgZW50
cnkuc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1cmF0aW9uOmVudHJ5
LnNlc3Npb24uZ2V0KCkuY29uZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4oZW50
cnkuZGVsZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1
ZXVlXV07CisgICAgbV9hcHBCb3VuZFNlc3Npb24uc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vz
c2lvbldpdGhDb25maWd1cmF0aW9uOm1fYXBwQm91bmRTZXNzaW9uLnNlc3Npb24uZ2V0KCkuY29u
ZmlndXJhdGlvbiBkZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9hcHBCb3VuZFNlc3Npb24uZGVs
ZWdhdGUuZ2V0KCkpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDA4ODFiOTBiZWFlM2JjNTdmMDJhMzI5MjViMmJiMDI3MTk0ZDJmZjUuLjI4OTY4ZWRjYTZjYTky
OWFlMWRiZWMzMDYxYzJlNGM1OTQzMjQwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFy
YW1ldGVycy5jcHAKQEAgLTU2LDYgKzU2LDcgQEAgdm9pZCBMb2FkUGFyYW1ldGVyczo6ZW5jb2Rl
KElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLmVuY29kZUVudW0obG9j
a0hpc3RvcnkpOwogICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KTsK
ICAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBlbmNv
ZGVyIDw8IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAKICAgICBwbGF0Zm9ybUVuY29k
ZShlbmNvZGVyKTsKIH0KQEAgLTEzMiw3ICsxMzMsMTAgQEAgYm9vbCBMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTG9hZFBhcmFtZXRlcnMmIGRhdGEpCiAgICAg
aWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBkYXRhLmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IFdURk1vdmUoKmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk7Ci0KKyAgICAKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGRhdGEuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKICAgICBpZiAoIXBsYXRmb3JtRGVjb2RlKGRlY29kZXIsIGRhdGEpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CmluZGV4IGI1ZDJkMjg4Y2ZjZTAxMzVjZjhhNGQxOGM4Y2ViMTY2ZmM0NDI4MWEuLjI2MTIyMzY5
ZTFjMjM0NmY3OWZkNjY3OGNhZDYwNTUwZWM4YjJhNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9h
ZFBhcmFtZXRlcnMuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiVXNlckRhdGEuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCkBAIC02OSw3ICs3MCw4IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgV2ViQ29yZTo6TG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgeyBXZWJDb3JlOjpM
b2NrSGlzdG9yeTo6Tm8gfTsKICAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tC
YWNrRm9yd2FyZExpc3QgeyBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogICAg
IFN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7Ci0KKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW46Ok5vIH07CisgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gZGF0YURldGVjdGlvbkNvbnRleHQ7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IDcxNWM1MjEyMmYwMTlhMjk2NDli
MWExZTU4YWFhMDljZjk3ODVkMmUuLjY0ZjRlMmQ2MDIyMGY2NjVlMjAwYTU1M2QyN2I1YTcwY2E4
NDM2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAtMzEsOCArMzEs
MTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2VudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4geyBZZXMsIE5vIH07CisKIHN0cnVjdCBQb2xpY3lEZWNpc2lvbiB7CiAgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIgeyB9OworICAgIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8gfTsKICAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpJZ25vcmUgfTsKICAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQgeyAwIH07CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEIHsgMCB9
OwpAQCAtNDIsNiArNDUsNyBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIHZvaWQgZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewogICAgICAgICBlbmNvZGVyIDw8IGlk
ZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKICAgICAgICAgZW5jb2RlciA8PCBwb2xpY3lBY3Rpb247CiAgICAgICAgIGVuY29kZXIgPDwg
bmF2aWdhdGlvbklEOwogICAgICAgICBlbmNvZGVyIDw8IGRvd25sb2FkSUQ7CkBAIC01NSw2ICs1
OSwxMSBAQCBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgICAgICBkZWNvZGVyID4+IGRlY29k
ZWRJZGVudGlmaWVyOwogICAgICAgICBpZiAoIWRlY29kZWRJZGVudGlmaWVyKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgCisgICAgICAgIE9wdGlvbmFsPE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluPiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgZGVjb2RlciA+PiBkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKKyAgICAgICAgaWYgKCFkZWNvZGVkSXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKKyAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UG9saWN5QWN0aW9uPiBkZWNvZGVkUG9saWN5QWN0aW9uOwogICAgICAgICBkZWNvZGVyID4+
IGRlY29kZWRQb2xpY3lBY3Rpb247CkBAIC03Niw5ICs4NSwyMCBAQCBzdHJ1Y3QgUG9saWN5RGVj
aXNpb24gewogICAgICAgICBpZiAoIWRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICByZXR1cm4ge3sgV1RGTW92ZSgq
ZGVjb2RlZElkZW50aWZpZXIpLCBXVEZNb3ZlKCpkZWNvZGVkUG9saWN5QWN0aW9uKSwgV1RGTW92
ZSgqZGVjb2RlZE5hdmlnYXRpb25JRCksIFdURk1vdmUoKmRlY29kZWREb3dubG9hZElEKSwgV1RG
TW92ZSgqZGVjb2RlZFdlYnNpdGVQb2xpY2llc0RhdGEpIH19OwotCisgICAgICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpkZWNvZGVkSWRlbnRpZmllciksIFdURk1vdmUoKmRlY29kZWRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKSwgV1RGTW92ZSgqZGVjb2RlZFBvbGljeUFjdGlvbiksIFdURk1v
dmUoKmRlY29kZWROYXZpZ2F0aW9uSUQpLCBXVEZNb3ZlKCpkZWNvZGVkRG93bmxvYWRJRCksIFdU
Rk1vdmUoKmRlY29kZWRXZWJzaXRlUG9saWNpZXNEYXRhKSB9fTsKICAgICB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPD4gc3RydWN0
IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4sCisgICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
OlllcywKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KKyAg
ICA+OworfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggNjFlMDlmODhiMGZmZmUxZTA5YWI2Yzhk
NjM5MmEzNjdhYjAyYzYxYS4uNGUwNDNjMDA1NTg4YmY3ODYwYzI3NGYzY2Q5OGZlNzhmY2Y3NDY4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVEYXRhU3RvcmVSZWYuY3BwCkBAIC01MjcsNiArNTI3LDEzIEBAIHZvaWQgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc0hhc0lzb2xhdGVkU2Vzc2lvbihXS1dlYnNpdGVEYXRhU3RvcmVSZWYg
ZGF0YVN0CiAjZW5kaWYKIH0KIAordm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBCb3VuZFNl
c3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJhY2spCit7
CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+aGFzQXBwQm91bmRTZXNzaW9uKFtj
b250ZXh0LCBjYWxsYmFja10oYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24pIHsKKyAgICAgICAgY2Fs
bGJhY2soaGFzQXBwQm91bmRTZXNzaW9uLCBjb250ZXh0KTsKKyAgICB9KTsKK30KKwogdm9pZCBX
S1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgZW5hYmxlZCwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uIGNv
bXBsZXRpb25IYW5kbGVyKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CkBAIC02OTYsMyArNzAzLDEwIEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YShX
S1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250CiAgICAgICAgICAg
ICBjYWxsYmFjayhjb250ZXh0KTsKICAgICB9KTsKIH0KKwordm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0
YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkRnVuY3Rpb24gY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgV2ViS2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c2V0SW5BcHBCcm93c2VyUHJp
dmFjeUVuYWJsZWQoZW5hYmxlZCwgW2NvbnRleHQsIGNvbXBsZXRpb25IYW5kbGVyXSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGNvbnRleHQpOworICAgIH0pOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRl
eCAyOGQ2YTg3N2Q2Yjc3NWE4ODNhNGUwZGRjZTAwOGMxMWE1YWZmNzY3Li5lODZhNmY5MDc5ZWE1
Nzk5OWZmN2ZmNTQ2ZTgyODk1OTc1OTRhOTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE3LDYgKzExNyw4
IEBAIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NDYWNoZU1h
eEFnZUNhcEZ1bmN0aW9uKSh2b2lkKiBmdW5jCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzQ2FjaGVNYXhBZ2VDYXAoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRh
dGFTdG9yZVJlZiwgZG91YmxlIHNlY29uZHMsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFT
dG9yZVNldFN0YXRpc3RpY3NDYWNoZU1heEFnZUNhcEZ1bmN0aW9uKTsKIHR5cGVkZWYgdm9pZCAo
KldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25GdW5jdGlvbiko
Ym9vbCBoYXNJc29sYXRlZFNlc3Npb24sIHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBP
UlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzSGFzSXNvbGF0ZWRTZXNzaW9uKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIFdLU3RyaW5nUmVmIGhvc3QsIHZvaWQq
IGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NIYXNJc29sYXRlZFNlc3Npb25G
dW5jdGlvbiBjYWxsYmFjayk7Cit0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVIYXNB
cHBCb3VuZFNlc3Npb25GdW5jdGlvbikoYm9vbCBoYXNBcHBCb3VuZFNlc3Npb24sIHZvaWQqIGZ1
bmN0aW9uQ29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVIYXNBcHBC
b3VuZFNlc3Npb24oV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29u
dGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uRnVuY3Rpb24gY2FsbGJh
Y2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZ0Z1bmN0aW9uKSh2b2lkKiBm
dW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1Nob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIGVuYWJsZWQsIHZvaWQqIGNvbnRl
eHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NTaG91bGREb3du
Z3JhZGVSZWZlcnJlckZvclRlc3RpbmdGdW5jdGlvbiBjb21wbGV0aW9uSGFuZGxlcik7CiB0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2hv
dWxkQmxvY2tUaGlyZFBhcnR5Q29va2llc0ZvclRlc3RpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rp
b25Db250ZXh0KTsKQEAgLTE1Nyw2ICsxNTksOSBAQCBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTZXRDYWNoZU1vZGVsU3luY2hyb25vdXNseUZvclRlc3RpbmcoV0tXZWJzaXRlRAog
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlUmVzZXRRdW90YUNhbGxiYWNrKSh2b2lk
KiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlUmVz
ZXRRdW90YShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0
LCBXS1dlYnNpdGVEYXRhU3RvcmVSZXNldFF1b3RhQ2FsbGJhY2sgY2FsbGJhY2spOwogCit0eXBl
ZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxl
ZEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJz
aXRlRGF0YVN0b3JlU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoV0tXZWJzaXRlRGF0YVN0
b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCBlbmFibGVkLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNp
dGVEYXRhU3RvcmVTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZEZ1bmN0aW9uIGNvbXBsZXRp
b25IYW5kbGVyKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1t
CmluZGV4IDQzMmMyMDdjODFmMTQzM2VkYjM0OTVmY2M1N2FjNTcyNWM4ZTI3NmEuLjE3OWNkOTcx
YTIzZmUyNWE0YTM2M2RkZDcyY2QyZGEwNTBlMjhjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtNDcz
LDYgKzQ3MywyMiBAQCAtICh2b2lkKV9nZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjooV0tX
ZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodgogI2VuZGlmCiB9CiAKKy0gKHZv
aWQpX2dldFdlYlZpZXdDYXRlZ29yeUZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoX1dLV2ViVmlld0NhdGVnb3J5IGNhdGVnb3J5KSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGlmICghd2ViVmlldykgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihfV0tXZWJWaWV3Q2F0ZWdvcnlXZWJCcm93c2VyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGF1dG8gd2ViUGFnZVByb3h5ID0gW3dlYlZpZXcgX3BhZ2VdOworICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKF9XS1dlYlZpZXdDYXRlZ29y
eVdlYkJyb3dzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tcGxldGlvbkhh
bmRsZXIodG9XS1dlYlZpZXdDYXRlZ29yeSh3ZWJQYWdlUHJveHktPmNvbmZpZ3VyYXRpb24oKS53
ZWJWaWV3Q2F0ZWdvcnkoKSkpOworfQorCiAtICh2b2lkKV9zY2hlZHVsZUNvb2tpZUJsb2NraW5n
VXBkYXRlOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaAppbmRleCA3
ZDNmZDVmZDY4Y2QyY2RkNDIwMTViNWJhYmExZGI5NzlmNDgxNWNkLi5lZjBmNzgzN2YzNTY5OTBh
ZTAxMzM5YzM5ZjUxMWI3MDk5ZjgwNDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAg
LTIzLDYgKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
CisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLV2Vic2l0ZURhdGFTdG9yZS5oPgogCiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgpAQCAt
NjQsNiArNjUsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURh
dGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXNGb3I6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogLSAodm9pZClfZ2V0UHJldmFsZW50RG9t
YWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNBcnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Ns
ZWFyUHJldmFsZW50RG9tYWluc0ZvcjooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfZ2V0V2Vi
Vmlld0NhdGVnb3J5Rm9yOihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJWaWV3Q2F0ZWdvcnkgY2F0ZWdvcnkpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiArICh2
b2lkKV9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnMgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKIC0gKGJvb2wpX2hhc1JlZ2lzdGVyZWRTZXJ2
aWNlV29ya2VyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpLCBpb3MoMTIuMCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBlMDE2MmFkNTc5OWY0ZjllMTk3NGYzNGFkNTI4YmJkYWEzOTExNTdh
Li40YmQyMzJhY2FkMzFmMWE3YjQ4NjEwNzYxMjZhNjRhNWU1ODJiOTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKQEAgLTE0NDcsNiArMTQ0NywyNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UXVvdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcgogICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0UXVvdGEoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6Omhhc0FwcEJvdW5kU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZh
bHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpIYXNBcHBCb3VuZFNlc3Npb24oc2Vzc2lvbklE
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQoreworICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgeworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEluQXBwQnJvd3NlclByaXZh
Y3lFbmFibGVkKHNlc3Npb25JRCwgdmFsdWUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNLCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oCmluZGV4IGU0MTMwOWZmOGEzOTkzZmU1YWU1NzQ1MjZmNmIyNjA5ODM0ZDZjYWQuLjAy
YmNjZjU5YzIzNzg3OGMwNzM2YjY3MmRlOGQyMzNlN2QxODlkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0y
MTYsNiArMjE2LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzb3VyY2VMb2FkRGlkUmVjZWl2ZVJl
c3BvbnNlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmKTsKICAgICB2b2lkIHJlc291cmNlTG9hZERpZENvbXBsZXRl
V2l0aEVycm9yKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFJlc291cmNlTG9hZEluZm8mJiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYmKTsKIAorICAgIHZvaWQgaGFzQXBwQm91bmRTZXNzaW9uKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlh
cnlQcm9jZXNzUHJveHkKICAgICBBU0NJSUxpdGVyYWwgcHJvY2Vzc05hbWUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAiTmV0d29ya2luZyJfczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGViMGE5OTE3ZjA4MTUwNTEyNWFlNDQ4
NDFlMmMzZWU5NjJiNzNiOTQuLmQzOGVkNTU3YTg3ZTA1ODNiMjMzYWViOTViN2NhZTVkZTU5ZGZi
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5jcHAKQEAgLTE0OCwxNCArMTQ4LDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RnJlZXpl
TGF5ZXJUcmVlRHVlVG9Td2lwZUFuaW1hdGlvbigpKTsKIH0KIAotdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9s
aWNpZXMpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJs
b2FkRGF0YTogcGFnZVByb3h5SUQ9JSIgUFJJdTY0ICIgd2ViUGFnZUlEPSUiIFBSSXU2NCwgbV9w
YWdlLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCBtX3dlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIAot
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJh
c2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olll
cywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0
aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcyksIG5hdmlnYXRpb24ubGFzdE5h
dmlnYXRpb25BY3Rpb24oKS5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAotdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQordm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9u
JiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBv
bGljaWVzKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
bG9hZFJlcXVlc3Q6IHBhZ2VQcm94eUlEPSUiIFBSSXU2NCAiIHdlYlBhZ2VJRD0lIiBQUkl1NjQs
IG1fcGFnZS5pZGVudGlmaWVyKCkudG9VSW50NjQoKSwgbV93ZWJQYWdlSUQudG9VSW50NjQoKSk7
CiAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogICAgIGlmIChu
YXZpZ2F0aW9uLmZyb21JdGVtKCkgJiYgbmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkg
PT0gV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzKQogICAgICAgICBuYXZpZ2F0aW9u
LmZyb21JdGVtKCktPnNldExhc3RQcm9jZXNzSWRlbnRpZmllcihtX3Byb2Nlc3MtPmNvcmVQcm9j
ZXNzSWRlbnRpZmllcigpKTsKIAotICAgIG1fcGFnZS5sb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZN
b3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZpZ2F0aW9uQWN0aW9uKCkuc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250
aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgIG1fcGFnZS5s
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2Vi
UGFnZUlELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHJlcXVlc3QpLCBuYXZpZ2F0aW9uLmxhc3ROYXZp
Z2F0aW9uQWN0aW9uKCkuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCkBAIC0zNDUsNyArMzQ1LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
RnJhbWVJZGVudGlmaWVyIGYKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBpZiAoIWlzTWFpbkZyYW1lIHx8IChtX21haW5GcmFt
ZSAmJiBtX21haW5GcmFtZS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpIHx8IG5hdmlnYXRpb25JRCAh
PSBtX25hdmlnYXRpb25JRCkgewotICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6SWdub3JlLCBuYXZpZ2F0aW9uSUQsIERvd25s
b2FkSUQoKSwgV1RGOjpudWxsb3B0IH0pOworICAgICAgICByZXBseShQb2xpY3lEZWNpc2lvbiB7
IGlkZW50aWZpZXIsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uOjpJZ25vcmUsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxv
cHQgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IGIxMWRlMWM0MjU5MGM2MGNmMWFmMDY4
M2M3NzI1ODZmNmFiYTM2YjQuLmY3NTM4MTczN2YyOTYzODBiNGQwZjI5ODY0ZTNkYWVmN2ZiNWM3
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5j
bHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVu
ZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzUmVwbGllcy5oIgpAQCAt
OTEsOCArOTIsOCBAQCBwdWJsaWM6CiAgICAgTGF5ZXJIb3N0aW5nQ29udGV4dElEIGNvbnRleHRJ
REZvclZpc2liaWxpdHlQcm9wYWdhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dElERm9y
VmlzaWJpbGl0eVByb3BhZ2F0aW9uOyB9CiAjZW5kaWYKIAotICAgIHZvaWQgbG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBX
VEY6Om51bGxvcHQpOwotICAgIHZvaWQgbG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CisgICAgdm9pZCBsb2FkRGF0
YShBUEk6Ok5hdmlnYXRpb24mLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmLCBjb25zdCBTdHJp
bmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VV
UkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQg
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgZ29U
b0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJik7CiAgICAgdm9pZCBjYW5jZWwoKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGYwYjc4NTky
NzliNDFmYzE3NWJkNGVjM2Y1YjEzZGE5ODI3NTZkOS4uZjk3MWY5NmY0ZGY4M2ViZjUwNWIyZGRj
NGFlMjdlNmNhN2Q1Y2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xNjQsNiArMTY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1B1YmxpY1N1ZmZpeC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyRW1iZWRkZWRPYmplY3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZFN0YXRpc3RpY3MuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NTTEtleUdlbmVyYXRvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NoYXJlRGF0YS5oPgpAQCAtMjc0LDYgKzI3NSwxMiBAQAogI2luY2x1ZGUgIkRh
dGFEZXRlY3Rpb25SZXN1bHQuaCIKICNlbmRpZgogCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NE
SykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvV2ViUGFnZVByb3h5QWRkaXRpb25zLmg+Cisj
ZWxzZQorI2RlZmluZSBXRUJfUEFHRV9QUk9YWV9BRERJVElPTlMKKyNlbmRpZgorCiAvLyBUaGlz
IGNvbnRyb2xzIHdoYXQgc3RyYXRlZ3kgd2UgdXNlIGZvciBtb3VzZSB3aGVlbCBjb2FsZXNjaW5n
LgogI2RlZmluZSBNRVJHRV9XSEVFTF9FVkVOVFMgMQogCkBAIC0xMjY0LDExICsxMjcxLDExIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKHNob3VsZFVzZUZvcmVncm91bmRQcmlv
cml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0Rm9yZWdy
b3VuZEFjdGl2aXR5KHByb2Nlc3MoKS50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNs
aWVudCBuYXZpZ2F0aW9uIl9zKS5tb3ZlVG9VbmlxdWVQdHIoKSk7CiAKLSAgICBsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG1fd2ViUGFnZUlELCBu
YXZpZ2F0aW9uLmdldCgpLCBXVEZNb3ZlKHJlcXVlc3QpLCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5LCB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObyk7CisgICAg
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dl
YlBhZ2VJRCwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8sIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSk7CiAgICAgcmV0dXJuIG5hdmlnYXRp
b247CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMjkwLDYgKzEyOTcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0b3J5ID0gbmF2aWdhdGlv
bi5sb2NrSGlzdG9yeSgpOwogICAgIGxvYWRQYXJhbWV0ZXJzLmxvY2tCYWNrRm9yd2FyZExpc3Qg
PSBuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3QoKTsKICAgICBsb2FkUGFyYW1ldGVycy5j
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBuYXZpZ2F0aW9uLmNsaWVudFJlZGlyZWN0
U291cmNlRm9ySGlzdG9yeSgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAgIG1heWJlSW5p
dGlhbGl6ZVNhbmRib3hFeHRlbnNpb25IYW5kbGUocHJvY2VzcywgdXJsLCBtX3BhZ2VMb2FkU3Rh
dGUucmVzb3VyY2VEaXJlY3RvcnlVUkwoKSwgbG9hZFBhcmFtZXRlcnMuc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7CiAKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJz
KTsKQEAgLTEzODQsMTEgKzEzOTIsMTEgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKICAgICBp
ZiAoc2hvdWxkVXNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpKQogICAg
ICAgICBuYXZpZ2F0aW9uLT5zZXRGb3JlZ3JvdW5kQWN0aXZpdHkocHJvY2VzcygpLnRocm90dGxl
cigpLmZvcmVncm91bmRBY3Rpdml0eSgiQ2xpZW50IG5hdmlnYXRpb24iX3MpLm1vdmVUb1VuaXF1
ZVB0cigpKTsKIAotICAgIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNv
cHlSZWYoKSwgbV93ZWJQYWdlSUQsIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdU
Rjo6bnVsbG9wdCwgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9hZERhdGFX
aXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBtX3dlYlBhZ2VJRCwgbmF2
aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpLCBXVEY6Om51bGxvcHQsIHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kpOwogICAgIHJl
dHVybiBuYXZpZ2F0aW9uOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KQordm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBj
b25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMsIFNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uIik7CiAKQEAgLTE0
MDgsNiArMTQxNiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICBsb2FkUGFyYW1ldGVy
cy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MtPnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEpLmdldCgpKTsKICAgICBsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMgPSBX
VEZNb3ZlKHdlYnNpdGVQb2xpY2llcyk7CiAgICAgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSA9IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CisgICAgbG9h
ZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CisKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJh
bWV0ZXJzKTsKIAogICAgIHByb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMs
IGJhc2VVUkwpOwpAQCAtMzA1MiwxMCArMzA2MiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBvbGljeURlY2lzaW9uU2VuZGVyKGlkZW50aWZpZXIsIFdURk1vdmUo
c2VuZEZ1bmN0aW9uKSkpOwogICAgIH0KIAotICAgIHZvaWQgc2VuZChQb2xpY3lEZWNpc2lvbiYm
IFBvbGljeURlY2lzaW9uKQorICAgIHZvaWQgc2VuZChQb2xpY3lEZWNpc2lvbiYmIHBvbGljeURl
Y2lzaW9uKQogICAgIHsKICAgICAgICAgaWYgKG1fc2VuZEZ1bmN0aW9uKQotICAgICAgICAgICAg
bV9zZW5kRnVuY3Rpb24oV1RGTW92ZShQb2xpY3lEZWNpc2lvbikpOworICAgICAgICAgICAgbV9z
ZW5kRnVuY3Rpb24oV1RGTW92ZShwb2xpY3lEZWNpc2lvbikpOwogICAgIH0KIAogICAgIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyKCkgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CkBA
IC0zMDcwLDYgKzMwODAsMzEgQEAgcHJpdmF0ZToKICAgICBQb2xpY3lDaGVja0lkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogfTsKIAorCitib29sIFdlYlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFp
bihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluKSBjb25zdAoreworICAg
IFdFQl9QQUdFX1BST1hZX0FERElUSU9OUworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFdl
YlBhZ2VQcm94eTo6aXNBcHBCb3VuZERvbWFpbihjb25zdCBVUkwmIHVybCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gaXNBcHBCb3VuZERvbWFpbihSZWdpc3RyYWJsZURvbWFpbih1cmwpKTsKK30KKwor
dm9pZCBXZWJQYWdlUHJveHk6OnNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBp
c01haW5GcmFtZSwgY29uc3QgVVJMJiByZXF1ZXN0VVJMKQoreworICAgIGlmIChtX3ByZWZlcmVu
Y2VzLT5pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkgJiYgaXNNYWluRnJhbWUpIHsKKyAg
ICAgICAgaWYgKCFpc0FwcEJvdW5kRG9tYWluKHJlcXVlc3RVUkwpKSB7CisgICAgICAgICAgICBt
X2NvbmZpZ3VyYXRpb24tPnNldFdlYlZpZXdDYXRlZ29yeShXZWJWaWV3Q2F0ZWdvcnk6OkluQXBw
QnJvd3Nlcik7CisgICAgICAgICAgICBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm87CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgbV9jb25maWd1cmF0aW9uLT5zZXRXZWJWaWV3Q2F0ZWdvcnkoV2ViVmll
d0NhdGVnb3J5OjpBcHBCb3VuZERvbWFpbik7CisgICAgICAgIG1faXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpZZXM7CisgICAgfQorfQor
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBQcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFdl
YkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6OldlYnNpdGVQb2xpY2llcyogcG9saWNpZXMsIFJlZjxQ
b2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgUmVmPFdlYnNpdGVEYXRhU3Rv
cmU+IHdlYnNpdGVEYXRhU3RvcmUgPSBtX3dlYnNpdGVEYXRhU3RvcmUuY29weVJlZigpOwpAQCAt
MzE1Nyw3ICszMTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEEKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2
aWdhdGlvbiogbmF2aWdhdGlvbiwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIsIFdpbGxDb250
aW51ZUxvYWRJbk5ld1Byb2Nlc3Mgd2lsbENvbnRpbnVlTG9hZEluTmV3UHJvY2VzcykKIHsKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgc2VuZGVyLT5zZW5kKFBvbGlj
eURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAw
LCBEb3dubG9hZElEKCksIFdURjo6bnVsbG9wdCB9KTsKKyAgICAgICAgc2VuZGVyLT5zZW5kKFBv
bGljeURlY2lzaW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oKSwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIERvd25sb2FkSUQoKSwgV1RGOjpu
dWxsb3B0IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMTgwLDcgKzMyMTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
YWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiAgICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2VSZXF1ZXN0ID0geyB9OwogICAgIH0KIAotICAgIHNlbmRlci0+c2VuZChQb2xpY3lEZWNpc2lv
biB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVz
KSB9KTsKKyAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBzZW5kZXItPmlkZW50aWZp
ZXIoKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpLCBhY3Rpb24sIG5hdmlnYXRpb24g
PyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lv
bmFsUGFnZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVy
LCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCB1c2VkTGVnYWN5VExTLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFz
SW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0zMjU3LDkgKzMy
OTIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgICAgICAvLyBGSVhNRTogV29yayBv
dXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0
YwogICAgICAgICBBU1NFUlQoIW5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgp
KTsKICAgICAgICAgaWYgKGF1dG8mIHN1YnN0aXR1dGVEYXRhID0gbmF2aWdhdGlvbi0+c3Vic3Rp
dHV0ZURhdGEoKSkKLSAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5sb2FkRGF0YShuYXZp
Z2F0aW9uLCB7IHN1YnN0aXR1dGVEYXRhLT5jb250ZW50LmRhdGEoKSwgc3Vic3RpdHV0ZURhdGEt
PmNvbnRlbnQuc2l6ZSgpIH0sIHN1YnN0aXR1dGVEYXRhLT5NSU1FVHlwZSwgc3Vic3RpdHV0ZURh
dGEtPmVuY29kaW5nLCBzdWJzdGl0dXRlRGF0YS0+YmFzZVVSTCwgc3Vic3RpdHV0ZURhdGEtPnVz
ZXJEYXRhLmdldCgpLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOworICAgICAgICAgICAgbV9w
cm92aXNpb25hbFBhZ2UtPmxvYWREYXRhKG5hdmlnYXRpb24sIHsgc3Vic3RpdHV0ZURhdGEtPmNv
bnRlbnQuZGF0YSgpLCBzdWJzdGl0dXRlRGF0YS0+Y29udGVudC5zaXplKCkgfSwgc3Vic3RpdHV0
ZURhdGEtPk1JTUVUeXBlLCBzdWJzdGl0dXRlRGF0YS0+ZW5jb2RpbmcsIHN1YnN0aXR1dGVEYXRh
LT5iYXNlVVJMLCBzdWJzdGl0dXRlRGF0YS0+dXNlckRhdGEuZ2V0KCksIGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmxvYWRSZXF1ZXN0KG5hdmlnYXRpb24s
IFJlc291cmNlUmVxdWVzdCB7IG5hdmlnYXRpb24tPmN1cnJlbnRSZXF1ZXN0KCkgfSwgbnVsbHB0
ciwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKKyAgICAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlLT5sb2FkUmVxdWVzdChuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZpZ2F0aW9u
LT5jdXJyZW50UmVxdWVzdCgpIH0sIG51bGxwdHIsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4oKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICB9OwogICAgIGlmIChtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnNob3VsZFBhdXNlTG9hZGluZygqbV9wcm92aXNpb25hbFBhZ2UpKQog
ICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldENvbnRpbnVlTG9hZGluZ0NhbGxiYWNr
KCptX3Byb3Zpc2lvbmFsUGFnZSwgV1RGTW92ZShjb250aW51YXRpb24pKTsKQEAgLTQ5MzgsOCAr
NDk3Myw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiAgICAgYXV0byogZnJhbWUgPSBwcm9j
ZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1l
KTsKIAotICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVu
dGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vz
cy5jb3B5UmVmKCldIChjb25zdCBhdXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJh
bWVJRCwgbGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOworICAgIGF1dG8g
c2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbd2ViUGFn
ZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gcHJvY2Vzcy5jb3B5UmVmKCldIChj
b25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikgeworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJ
RCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAgIH0pOwogCiAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3Zl
KGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFj
dGlvbkRhdGEpLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKQEAg
LTQ5NjMsOSArNDk5OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgIGlmIChuYXZp
Z2F0aW9uSUQgJiYgIWZyb21BUEkpCiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5jbGVhclBlbmRp
bmdBUElSZXF1ZXN0KHRyYW5zYWN0aW9uKTsKIAorICAgIHNldElzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4oZnJhbWUuaXNNYWluRnJhbWUoKSwgcmVxdWVzdC51cmwoKSk7CisKICAgICBpZiAo
IWNoZWNrVVJMUmVjZWl2ZWRGcm9tQ3VycmVudE9yUHJldmlvdXNXZWJQcm9jZXNzKHByb2Nlc3Ms
IHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2VzcywgIklnbm9yaW5nIHJlcXVlc3QgdG8gbG9hZCB0aGlzIG1haW4gcmVzb3VyY2UgYmVj
YXVzZSBpdCBpcyBvdXRzaWRlIHRoZSBzYW5kYm94Iik7Ci0gICAgICAgIHNlbmRlci0+c2VuZChQ
b2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBQb2xpY3lBY3Rpb246Oklnbm9y
ZSwgMCwgRG93bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgICAgIHNlbmRlci0+c2Vu
ZChQb2xpY3lEZWNpc2lvbiB7IHNlbmRlci0+aWRlbnRpZmllcigpLCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKCksIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCBEb3dubG9hZElEKCksIFdU
Rjo6bnVsbG9wdCB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTE5Miw3ICs1MjI5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHkKICAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQs
IG9yaWdpbmFsUmVxdWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXF1ZXN0Qm9keSks
IFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHVzZXJEYXRhLCBzZW5kZXIuY29weVJlZigpKTsK
IAogICAgIC8vIElmIHRoZSBjbGllbnQgZGlkIG5vdCByZXNwb25kIHN5bmNocm9ub3VzbHksIHBy
b2NlZWQgd2l0aCB0aGUgbG9hZC4KLSAgICBzZW5kZXItPnNlbmQoUG9saWN5RGVjaXNpb24geyBz
ZW5kZXItPmlkZW50aWZpZXIoKSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93
bmxvYWRJRCgpLCBXVEY6Om51bGxvcHQgfSk7CisgICAgc2VuZGVyLT5zZW5kKFBvbGljeURlY2lz
aW9uIHsgc2VuZGVyLT5pZGVudGlmaWVyKCksIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4o
KSwgUG9saWN5QWN0aW9uOjpVc2UsIG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCgpLCBXVEY6Om51
bGxvcHQgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLApAQCAt
NTIwOSw4ICs1MjQ2LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU2VjdXIKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQocHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCA9PSBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50OjpObyk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2Fy
bmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCi0gICAgICAgIGF1dG8gc2VuZGVyID0gUG9s
aWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChjb25zdCBh
dXRvJiBQb2xpY3lEZWNpc2lvbikgewotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIFBvbGljeURl
Y2lzaW9uKSk7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNy
ZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChjb25zdCBhdXRvJiBwb2xpY3lEZWNpc2lvbikg
eworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIHBvbGljeURlY2lzaW9uKSk7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRy
LCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7CkBAIC01MjU4LDggKzUyOTUsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgICAgICBSRUxFQVNFX0FTU0VSVChwcm9jZXNzU3dh
cFJlcXVlc3RlZEJ5Q2xpZW50ID09IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ6Ok5vKTsK
ICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5n
V2FybmluZyk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6
Y3JlYXRlKGlkZW50aWZpZXIsIFt3ZWJQYWdlSUQsIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nl
c3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoY29uc3QgYXV0byYgUG9saWN5RGVjaXNpb24pIHsKLSAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiksIHdlYlBhZ2VJ
RCk7CisgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShp
ZGVudGlmaWVyLCBbd2ViUGFnZUlELCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RG
TW92ZShwcm9jZXNzKV0gKGNvbnN0IGF1dG8mIHBvbGljeURlY2lzaW9uKSB7CisgICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgcG9saWN5RGVjaXNpb24pLCB3ZWJQYWdlSUQpOwogICAg
ICAgICB9KTsKICAgICAgICAgCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5
QWN0aW9uLCBuYXZpZ2F0aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDM5MWU0OTYyNTM0ZTE5
NmY4ZmNjMzNlZWZhYWU5NWU0MDgxZDFjYTAuLmIzMTU0NTQ4YTA4YjU4OGRmYjM0NjI2MWJjN2Rl
M2RiYjc1NGY2Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0x
NjEzLDggKzE2MTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCiAgICAg
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVUkxTY2hlbWVUYXNr
UGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIGxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEFQSTo6TmF2aWdh
dGlvbiYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlv
bmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGROb3RBbGxvdyk7Ci0gICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOworICAgIHZvaWQgbG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
QVBJOjpOYXZpZ2F0aW9uJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgPSBXVEY6Om51bGxvcHQsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RB
bGxvdyk7CisgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBBUEk6Ok5hdmlnYXRpb24m
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFs
VVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBPcHRpb25hbDxXZWJz
aXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJk
R29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdENvdW50cyYpPiYmKTsK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAogICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKQEAgLTIyNTEsNiArMjI1MSwxMSBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB0cnlDbG9zZVRpbWVkT3V0KCk7CiAgICAgdm9pZCBtYWtlU3RvcmFnZVNwYWNl
UmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxh
eU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdl
LCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOworICAgICAgICAKKyAgICBib29s
IGlzQXBwQm91bmREb21haW4oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKKyAgICBib29sIGlzQXBwQm91bmREb21haW4oY29uc3QgVVJMJikgY29uc3Q7CisgICAgdm9p
ZCBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGJvb2wgaXNNYWluRnJhbWUsIGNvbnN0
IFVSTCYpOworICAgIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKSBjb25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW47IH0KIAogICAgIGNvbnN0IElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fd2ViUGFnZUlEOwpAQCAtMjczNCw2ICsyNzM5LDggQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIE1vbm90b25pY1Rp
bWUgbV9kaWRGaW5pc2hEb2N1bWVudExvYWRGb3JNYWluRnJhbWVUaW1lc3RhbXA7CiAjZW5kaWYK
KyAgICAgICAgCisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gbV9pc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIHsgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5t
bQppbmRleCBlMTY1MWM4MzIxYmE1M2NiODcyOWY1Y2YzNWVjNzkzODc1MWM5ODBjLi40YzRmYjg1
NWJhYmYxOTMzYjVlODM2Y2UyZTc1ZDE3ZjA2ZDUwNzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29jb2EvV2Vic2l0ZURh
dGFTdG9yZUNvY29hLm1tCkBAIC0xNDUsNiArMTQ1LDggQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMgV2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycygpCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRXcml0ZURpcmVjdG9yeShuZXR3b3JrQ2FjaGVEaXJl
Y3RvcnksIG5ldHdvcmtDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CiAKICAgICBib29s
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBpc1NhZmFy
aTsKKyAgICBib29sIGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgPSBbZGVmYXVsdHMgYm9v
bEZvcktleTpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkludGVybmFsRGVidWclQCIsIFdl
YlByZWZlcmVuY2VzS2V5Ojppc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkS2V5KCkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKV1dOworICAgIAogICAgIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMgPSB7
CiAgICAgICAgIG1fc2Vzc2lvbklELApAQCAtMTc4LDYgKzE4MCw3IEBAIFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzIFdlYnNpdGVEYXRhU3RvcmU6OnBhcmFtZXRlcnMoKQogICAgICAgICBtX2Nv
bmZpZ3VyYXRpb24tPnRlc3RTcGVlZE11bHRpcGxpZXIoKSwKICAgICAgICAgbV9jb25maWd1cmF0
aW9uLT5zdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UoKSwKICAg
ICAgICAgbV9jb25maWd1cmF0aW9uLT5hbGxvd3NTZXJ2ZXJQcmVjb25uZWN0KCksCisgICAgICAg
IGlzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQKICAgICB9OwogICAgIG5ldHdvcmtpbmdIYXNC
ZWd1bigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IGJkYjcyMDAxYjJhNzM0Yzk1YjJmNWY0ZWYz
MjdhYjE1YmNmM2M2YTIuLjQ0YmFiYmE5M2U1MDgxNzk1ODQyZDJmMDJjMzc3OTZhYjdkNWY0NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0yMjU1LDQgKzIyNTUsMjggQEAgV1RGOjpTdHJpbmcgV2Vi
c2l0ZURhdGFTdG9yZTo6ZGVmYXVsdERldmljZUlkSGFzaFNhbHRzU3RvcmFnZURpcmVjdG9yeSgp
CiB9CiAjZW5kaWYKIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNBcHBCb3VuZFNlc3Npb24o
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QK
K3sKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wtPm5ldHdvcmtQcm9jZXNz
KCkpIHsKKyAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzLT5oYXNBcHBCb3VuZFNlc3Npb24obV9z
ZXNzaW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgICAgIEFTU0VS
VChwcm9jZXNzUG9vbHMoKS5zaXplKCkgPT0gMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBBU1NFUlQoIWNvbXBsZXRpb25IYW5kbGVyKTsKK30KKwordm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIGVuYWJs
ZWQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBhdXRvIGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wg
OiBwcm9jZXNzUG9vbHMoKSkgeworICAgICAgICBpZiAoYXV0byogbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKSkgeworICAgICAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKG1fc2Vzc2lvbklELCBlbmFibGVkLCBb
cHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5
UmVmKCldIHsgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IGYwODI5ZjEyYjU3MDQ3OTY5MTBhNDY5YzVhOGU3MjIwMWE1MTI5
NWUuLjdmYWE0YjU5MjY1YWYzZWZkNDFjZjBiNDFiMzVkMTNhMjYxMjMxYTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTI5Myw2ICsyOTMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdURjo6U3RyaW5nIGRl
ZmF1bHRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkRpcmVjdG9yeSgpOwogCiAgICAgdm9pZCByZXNl
dFF1b3RhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBoYXNBcHBCb3Vu
ZFNlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgY29uc3Q7CisgICAgdm9p
ZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sIGVuYWJsZWQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBmZXRjaERhdGFBbmRBcHBs
eShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhRmV0Y2hP
cHRpb24+LCBSZWZQdHI8V29ya1F1ZXVlPiYmLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJzaXRl
RGF0YVJlY29yZD4pPiYmIGFwcGx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCBhMzU3ZTIyYThmZmJlMmNj
NDQwNmNlNTgxZWRiNWI1YWVkYWE2MmYzLi43MzU3ZjU0ZDk1Y2YxMjI0YmU0NmNlM2RhMzIzN2E4
Y2FiYmYxZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMjYsMTQgKzMyNiwxNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTAogICAgICAgICBpZiAoYXV0byogY29udGVudFNlY3VyaXR5UG9saWN5ID0g
ZG9jdW1lbnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKQogICAgICAgICAgICAgbG9hZFBhcmFt
ZXRlcnMuY3NwUmVzcG9uc2VIZWFkZXJzID0gY29udGVudFNlY3VyaXR5UG9saWN5LT5yZXNwb25z
ZUhlYWRlcnMoKTsKICAgICB9CisgICAgCisgICAgYXV0byogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSBmcmFtZSA/IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
KSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/
IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3
ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAo
d2ViUGFnZSkKKyAgICAgICAgbG9hZFBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiA9IHdlYlBhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKIAogI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgaWYgKGRvY3VtZW50KSB7CiAgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCA9IGRvY3VtZW50LT50b3BEb2N1bWVudCgpLnVy
bCgpOwogICAgICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVzZXJDb250ZW50Q29u
dHJvbGxlcklkZW50aWZpZXIsIHRoZSBOZXR3b3JrUHJvY2VzcyBzaG91bGQgYmUgYWJsZSB0byBn
ZXQgaXQgdXNpbmcgd2ViUGFnZUlkLgotICAgICAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVu
dCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQocmVzb3VyY2VMb2FkZXIuZnJhbWUoKS0+bG9hZGVy
KCkuY2xpZW50KCkpOwotICAgICAgICBhdXRvKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwotICAgICAg
ICBhdXRvKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsK
ICAgICAgICAgaWYgKHdlYlBhZ2UpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy51c2VyQ29u
dGVudENvbnRyb2xsZXJJZGVudGlmaWVyID0gd2ViUGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcigpOwogICAgIH0KQEAgLTYwMSw2ICs2MDQsMTAgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2Fk
ZXIsIHVuc2kKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9
IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgfQogICAgIGxv
YWRQYXJhbWV0ZXJzLm9yaWdpbmFsUmVxdWVzdEhlYWRlcnMgPSBvcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzOworICAgIAorICAgIGlmICh3ZWJQYWdlKQorICAgICAgICBsb2FkUGFyYW1ldGVycy5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gd2ViUGFnZS0+aXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbigpOworCiAgICAgYWRkUGFyYW1ldGVyc0Zyb21GcmFtZSh3ZWJGcmFtZS0+Y29yZUZy
YW1lKCksIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIGRhdGEuc2hyaW5rKDApOwpAQCAtNjY4LDEz
ICs2NzUsMTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYg
ZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgICAgIGxvYWRQYXJh
bWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9u
c2VIZWFkZXJzKCk7CiAgICAgfQogICAgIGFkZFBhcmFtZXRlcnNGcm9tRnJhbWUoJmZyYW1lLCBs
b2FkUGFyYW1ldGVycyk7Ci0KKyAgICAKKyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9
IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xpZW50KCkpOworICAgIGF1
dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8g
d2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKHdlYlBhZ2UpCisgICAgICAgIGxv
YWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLT5pc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKCk7CisgICAgCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKICAgICBsb2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+
dG9wRG9jdW1lbnQoKS51cmwoKTsKICAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBwYXNzaW5nIHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIHdlIHNob3VsZCBqdXN0IHBhc3Mgd2ViUGFn
ZUlkIHRvIE5ldHdvcmtQcm9jZXNzLgotICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFt
ZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkpOwotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8g
d2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwotICAgIFdlYlBhZ2Uq
IHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlm
ICh3ZWJQYWdlKQogICAgICAgICBsb2FkUGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyID0gd2ViUGFnZS0+dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcigpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCAxMjEyZWVhYjU3MDdh
ZGVlMWU2NzY1ZGEyZmU2OWIzZGU3N2MyOWViLi45OGIxNWI4N2ZjMTNkYTJkYmY0NDNiYTk4YTRk
ODZkN2E5ZDM1NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTgzNiw3
ICs4MzYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIHVpbnQ2NF90IGxpc3RlbmVy
SUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGlkZW50aWZpZXIsIFdURk1vdmUoZnVu
Y3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOwogICAgIGlmICghd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVG
cmFtZSksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsCiAgICAg
ICAgIGNhblNob3dSZXNwb25zZSwgZG93bmxvYWRBdHRyaWJ1dGUsIGxpc3RlbmVySUQsIFVzZXJE
YXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEuZ2V0KCkpLmdldCgpKSkpKQotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyBpZGVudGlmaWVyLCBQb2xpY3lB
Y3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IGlkZW50aWZpZXIs
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAs
IHsgfSwgeyB9IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZp
Z2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCkBAIC05OTMsMTEg
Kzk5MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgICAgICAgICAgcmVxdWVzdElk
ZW50aWZpZXIsIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQsIG5hdmln
YXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsCiAgICAgICAgICAgICBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9u
c2UsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksCiAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6UmVwbHkocG9s
aWN5RGVjaXNpb24pKSkgewotICAgICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgcmVxdWVzdElkZW50aWZpZXIsIFBv
bGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKKyAgICAgICAgICAgIG1fZnJhbWUt
PmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiB7IHJl
cXVlc3RJZGVudGlmaWVyLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIFBvbGljeUFj
dGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5l
cklELCBQb2xpY3lEZWNpc2lvbiB7IHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURl
Y2lzaW9uLnBvbGljeUFjdGlvbiwgMCwgcG9saWN5RGVjaXNpb24uZG93bmxvYWRJRCwgeyB9fSk7
CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQ
b2xpY3lEZWNpc2lvbiB7IHBvbGljeURlY2lzaW9uLmlkZW50aWZpZXIsIHBvbGljeURlY2lzaW9u
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIHBvbGljeURlY2lzaW9uLnBvbGljeUFjdGlv
biwgMCwgcG9saWN5RGVjaXNpb24uZG93bmxvYWRJRCwgeyB9fSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEwMDUsNyArMTAwNSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAg
ICAgaWYgKCF3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3Jp
Z2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksCiAgICAgICAgIHJlcXVlc3RJZGVudGlmaWVy
LCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlELCBuYXZpZ2F0aW9uQWN0
aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LAogICAgICAgICBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHsgcmVxdWVzdC5odHRwQm9keSgpIH0sIHJlZGlyZWN0UmVzcG9uc2UsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSwgbGlzdGVuZXJJRCkpKQotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNpb24geyByZXF1ZXN0SWRl
bnRpZmllciwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9IH0pOworICAgICAgICBt
X2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5RGVjaXNp
b24geyByZXF1ZXN0SWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQ
b2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYzA1NGQ1MTk4NGM4MzYyNTdkMTVjZjc1MTFk
Y2YyNTI1Yjc2YWJiNS4uMDcwOTQyNTdjZDFlYWYxYjZlMjc5OTI1NDY5MzZjOTk4OWY0Yjk1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTE1
NzAsNiArMTU3MCw4IEBAIHZvaWQgV2ViUGFnZTo6cGxhdGZvcm1EaWRSZWNlaXZlTG9hZFBhcmFt
ZXRlcnMoY29uc3QgTG9hZFBhcmFtZXRlcnMmIGxvYWRQYXJhbWV0CiAKIHZvaWQgV2ViUGFnZTo6
bG9hZFJlcXVlc3QoTG9hZFBhcmFtZXRlcnMmJiBsb2FkUGFyYW1ldGVycykKIHsKKyAgICBzZXRJ
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGxvYWRQYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3Bw
ZXI7CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBsb2FkUGFyYW1ldGVycy5uYXZpZ2F0
aW9uSUQ7CkBAIC0xNjA0LDggKzE2MDYsMTAgQEAgTk9fUkVUVVJOIHZvaWQgV2ViUGFnZTo6bG9h
ZFJlcXVlc3RXYWl0aW5nRm9yUHJvY2Vzc0xhdW5jaChMb2FkUGFyYW1ldGVycyYmLCBVUkwKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRE
YXRhSW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcywg
UmVmPFNoYXJlZEJ1ZmZlcj4mJiBzaGFyZWRCdWZmZXIsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgU2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KQordm9pZCBXZWJQ
YWdlOjpsb2FkRGF0YUltcGwodWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIHNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMsIFJlZjxTaGFyZWRCdWZmZXI+JiYgc2hhcmVkQnVmZmVyLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJM
LCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSkK
IHsKKyAgICBzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pOworCiAgICAgU2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXI7
CiAKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0xNjMyLDcg
KzE2MzYsNyBAQCB2b2lkIFdlYlBhZ2U6OmxvYWREYXRhKExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBh
cmFtZXRlcnMpCiAKICAgICBhdXRvIHNoYXJlZEJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGxvYWRQYXJhbWV0ZXJzLmRhdGEuZGF0YSgp
KSwgbG9hZFBhcmFtZXRlcnMuZGF0YS5zaXplKCkpOwogICAgIFVSTCBiYXNlVVJMID0gbG9hZFBh
cmFtZXRlcnMuYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkgPyBXVEY6OmJsYW5rVVJMKCkgOiBVUkwo
VVJMKCksIGxvYWRQYXJhbWV0ZXJzLmJhc2VVUkxTdHJpbmcpOwotICAgIGxvYWREYXRhSW1wbChs
b2FkUGFyYW1ldGVycy5uYXZpZ2F0aW9uSUQsIGxvYWRQYXJhbWV0ZXJzLnNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZCwgV1RGTW92ZShsb2FkUGFyYW1ldGVycy53ZWJzaXRlUG9saWNpZXMpLCBX
VEZNb3ZlKHNoYXJlZEJ1ZmZlciksIGxvYWRQYXJhbWV0ZXJzLk1JTUVUeXBlLCBsb2FkUGFyYW1l
dGVycy5lbmNvZGluZ05hbWUsIGJhc2VVUkwsIFVSTCgpLCBsb2FkUGFyYW1ldGVycy51c2VyRGF0
YSwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CisgICAgbG9h
ZERhdGFJbXBsKGxvYWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQ
b2xpY2llcyksIFdURk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUs
IGxvYWRQYXJhbWV0ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgVVJMKCksIGxvYWRQYXJhbWV0
ZXJzLnVzZXJEYXRhLCBsb2FkUGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRNTChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0
ZXJzKQpAQCAtMTY0NCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpsb2FkQWx0ZXJuYXRlSFRN
TChMb2FkUGFyYW1ldGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIFVSTCBwcm92aXNpb25hbExv
YWRFcnJvclVSTCA9IGxvYWRQYXJhbWV0ZXJzLnByb3Zpc2lvbmFsTG9hZEVycm9yVVJMU3RyaW5n
LmlzRW1wdHkoKSA/IFVSTCgpIDogVVJMKFVSTCgpLCBsb2FkUGFyYW1ldGVycy5wcm92aXNpb25h
bExvYWRFcnJvclVSTFN0cmluZyk7CiAgICAgYXV0byBzaGFyZWRCdWZmZXIgPSBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihsb2FkUGFyYW1ldGVycy5k
YXRhLmRhdGEoKSksIGxvYWRQYXJhbWV0ZXJzLmRhdGEuc2l6ZSgpKTsKICAgICBtX21haW5GcmFt
ZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnNldFByb3Zpc2lvbmFsTG9hZEVycm9yQmVpbmdIYW5k
bGVkVVJMKHByb3Zpc2lvbmFsTG9hZEVycm9yVVJMKTsgICAgCi0gICAgbG9hZERhdGFJbXBsKGxv
YWRQYXJhbWV0ZXJzLm5hdmlnYXRpb25JRCwgbG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkLCBXVEZNb3ZlKGxvYWRQYXJhbWV0ZXJzLndlYnNpdGVQb2xpY2llcyksIFdU
Rk1vdmUoc2hhcmVkQnVmZmVyKSwgbG9hZFBhcmFtZXRlcnMuTUlNRVR5cGUsIGxvYWRQYXJhbWV0
ZXJzLmVuY29kaW5nTmFtZSwgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwsIGxvYWRQYXJhbWV0ZXJz
LnVzZXJEYXRhKTsKKyAgICBsb2FkRGF0YUltcGwobG9hZFBhcmFtZXRlcnMubmF2aWdhdGlvbklE
LCBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIFdURk1vdmUobG9h
ZFBhcmFtZXRlcnMud2Vic2l0ZVBvbGljaWVzKSwgV1RGTW92ZShzaGFyZWRCdWZmZXIpLCBsb2Fk
UGFyYW1ldGVycy5NSU1FVHlwZSwgbG9hZFBhcmFtZXRlcnMuZW5jb2RpbmdOYW1lLCBiYXNlVVJM
LCB1bnJlYWNoYWJsZVVSTCwgbG9hZFBhcmFtZXRlcnMudXNlckRhdGEsIGxvYWRQYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIG1fbWFpbkZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCkuc2V0UHJvdmlzaW9uYWxMb2FkRXJyb3JCZWluZ0hhbmRsZWRVUkwoeyB9
KTsKIH0KIApAQCAtMzI1OCwxMiArMzI2MiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNldExheWVySG9z
dGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlKQogICAgICAgICBwbHVn
aW5WaWV3LT5zZXRMYXllckhvc3RpbmdNb2RlKG1fbGF5ZXJIb3N0aW5nTW9kZSk7CiB9CiAKLXZv
aWQgV2ViUGFnZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKEZyYW1lSWRlbnRpZmllciBmcmFt
ZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lEZWNpc2lvbiYmIFBvbGljeURlY2lzaW9u
KQordm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oRnJhbWVJZGVudGlmaWVy
IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uJiYgcG9saWN5RGVj
aXNpb24pCiB7CisgICAgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihwb2xpY3lEZWNp
c2lvbi5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICBXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBXVEZNb3ZlKFBvbGljeURlY2lzaW9uKSk7CisgICAgZnJhbWUtPmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBXVEZNb3ZlKHBvbGljeURlY2lzaW9uKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y29udGludWVXaWxsU3VibWl0Rm9ybShGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCkKQEAgLTcwMDYsNiArNzAxMSwxMSBAQCB2
b2lkIFdlYlBhZ2U6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5
cGUpCiAgICAgbV9wYWdlLT5zZXROZWVkc1JlY2FsY1N0eWxlSW5BbGxGcmFtZXMoKTsKIH0KIAor
dm9pZCBXZWJQYWdlOjpzZXRJc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKE5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCit7CisgICAgbV9p
c05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9B
TExPV0VECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXgg
YTY4OTUzMGYzODM2ZDZmNGNiYjBmNTY5NzJkM2ZlMTEwZTgxMzI1NS4uYzdjZjM4YzViYmEyMDFj
ZWQ3ODhjZDAzZDVhMjA0ZDRhY2E0ZjJhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTI4Niw2ICsxMjg2LDkgQEAgcHVibGljOgogICAgIFdlYkNv
cmU6OkFsbG93c0NvbnRlbnRKYXZhU2NyaXB0IGFsbG93c0NvbnRlbnRKYXZhU2NyaXB0RnJvbU1v
c3RSZWNlbnROYXZpZ2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NDb250ZW50SmF2YVNj
cmlwdEZyb21Nb3N0UmVjZW50TmF2aWdhdGlvbjsgfQogICAgIHZvaWQgc2V0QWxsb3dzQ29udGVu
dEphdmFTY3JpcHRGcm9tTW9zdFJlY2VudE5hdmlnYXRpb24oV2ViQ29yZTo6QWxsb3dzQ29udGVu
dEphdmFTY3JpcHQgYWxsb3dzKSB7IG1fYWxsb3dzQ29udGVudEphdmFTY3JpcHRGcm9tTW9zdFJl
Y2VudE5hdmlnYXRpb24gPSBhbGxvd3M7IH0KIAorICAgIHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbihOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CisgICAgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQorICAgIAogcHJpdmF0ZToK
ICAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwogCkBAIC0xMzc5LDcgKzEzODIsNyBAQCBwcml2YXRlOgogCiAgICAgU3RyaW5n
IHNvdXJjZUZvckZyYW1lKFdlYkZyYW1lKik7CiAKLSAgICB2b2lkIGxvYWREYXRhSW1wbCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYm
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJEYXRhJiwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9IFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KTsKKyAgICB2b2lkIGxvYWREYXRh
SW1wbCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmLCBSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVz
ZXJEYXRhJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFdlYkNvcmU6OlNob3VsZE9wZW5F
eHRlcm5hbFVSTHNQb2xpY3kgPSBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OjpTaG91bGROb3RBbGxvdyk7CiAKICAgICAvLyBBY3Rpb25zCiAgICAgdm9pZCB0cnlDbG9zZShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKQEAgLTIwNjYsNiArMjA2OSw4IEBAIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIFN0cmluZyBtX3RoZW1lTmFtZTsKICNlbmRp
ZgorICAgIAorICAgIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIG1faXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiB7IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObyB9OwogfTsKIAog
I2lmICFQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggOWJjNGFmYjIzNzI1NzQ3ZjI1
Mzk4YmUwOTM0YmJjYTc1MzIwNzQ4Yi4uMWRlZGYzOTJkZDc5OWFjNmI3YWZjZDZlMmIxNDQ0N2Y4
ZWY1YzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xODYsNyArMTg2LDggQEAgR2VuZXJhdGVTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFu
ZFR5cGUKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKICAgICBVcGRhdGVXZWJz
aXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSB3ZWJzaXRlUG9s
aWNpZXMpCi0gICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKFdlYkNvcmU6OkZyYW1lSWRlbnRp
ZmllciBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBzdHJ1Y3QgV2ViS2l0OjpQb2xpY3lE
ZWNpc2lvbiBQb2xpY3lEZWNpc2lvbikKKyAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIHN0cnVj
dCBXZWJLaXQ6OlBvbGljeURlY2lzaW9uIHBvbGljeURlY2lzaW9uKQorCiAgICAgQ29udGludWVX
aWxsU3VibWl0Rm9ybShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgdWludDY0X3Qg
bGlzdGVuZXJJRCkKIAogICAgIENsZWFyU2VsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzOGQyZTA3MGFiZTU2NWM2ZGMxNDFkY2Y4
OTc4ZmIyMDQzYTQ4ZjFhLi4wNzcxZDAxZGQ1NTY4YzdmNGMyYzA1NmM0NGExODhhZGYzZDM5Zjkw
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTAgQEAKKzIwMjAtMDItMjEgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBh
cHBsZS5jb20+CisKKyAgICAgICAgQXBwLWJvdW5kIGRvbWFpbnMgc2hvdWxkIGhhdmUgc2VwYXJh
dGUgTmV0d29yayBTZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA4MDI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81OTQzNDAwNj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBCcmVudCBGdWxnaGFtLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
aXMgbW9zdGx5IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgaW52b2x2aW5nIDMgZnVuY3Rpb25zLgorICAg
ICAgICBPbmUgc2V0cyBpbi1hcHAgYnJvd3NlciBwcml2YWN5IGFzIGVuYWJsZWQgaW4gdGhlIG5l
dHdvcmsgcHJvY2VzcworICAgICAgICBtYW51YWxseSBmb3IgdGhlIHRlc3QuIE9uZSBlbnN1cmVz
IHRoYXQgc2V0dGluZyB0aGUgV2ViVmlldyBjYXRlZ29yeQorICAgICAgICB3b3JrcyBwcm9wZXJs
eSwgYW5kIHRoZSBsYXN0IG9uZSBjaGVja3MgZm9yIGFuIGFwcC1ib3VuZCBzZXNzaW9uIGZvcgor
ICAgICAgICBhbiBhcHAtYm91bmQgbmF2aWdhdGlvbi4KKworICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6Z2V0V2ViVmlld0NhdGVnb3J5KToKKyAgICAgICAgKFdU
Ujo6VGVzdFJ1bm5lcjo6Y2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFjayk6Cisg
ICAgICAgIChXVFI6OlRlc3RSdW5uZXI6Omhhc0FwcEJvdW5kU2Vzc2lvbik6CisgICAgICAgIChX
VFI6OlRlc3RSdW5uZXI6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKToKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6Y2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkQ2Fs
bGJhY2spOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6ZW5zdXJlVmlld1N1cHBvcnRzT3B0aW9uc0Zv
clRlc3QpOgorICAgICAgICBDbGVhcmluZyB0aGUgYnVuZGxlSUQgc2hvdWxkIGhhcHBlbiByaWdo
dCBiZWZvcmUgc2V0dGluZyBhIG5ldyBvbmUsIAorICAgICAgICBvdGhlcndpc2UgaXQgY2xlYXJz
IHRoZSBJRCBhZnRlciBpdCBpcyBzZXQgYW5kIHJldHVybnMgYSBudWxsIElELgorCisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6CisgICAgICAg
IChXVFI6OkluQXBwQnJvd3NlclByaXZhY3lDYWxsYmFja0NvbnRleHQ6OkluQXBwQnJvd3NlclBy
aXZhY3lDYWxsYmFja0NvbnRleHQpOgorICAgICAgICAoV1RSOjppbkFwcEJyb3dzZXJQcml2YWN5
Qm9vbGVhblJlc3VsdENhbGxiYWNrKToKKyAgICAgICAgKFdUUjo6aW5BcHBCcm93c2VyUHJpdmFj
eVZvaWRSZXN1bHRDYWxsYmFjayk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpoYXNB
cHBCb3VuZFNlc3Npb24pOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0SW5BcHBC
cm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUlu
amVjdGVkQnVuZGxlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVT
eW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6ZGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQpOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVByZXZhbGVudERvbWFpbnMpOgorICAgICAg
ICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeSk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmdldFdlYlZpZXdDYXRlZ29yeSk6CisKIDIwMjAtMDItMjEgIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIEFkZCBidWls
ZCBzdGVwIHRvIHNldCBjcS0gZmxhZyBvbiBidWd6aWxsYSBwYXRjaApkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGwKaW5kZXggNGE1NTEwMmU1MjliMjBkMzdmNjBiZmIyODFlNDg3ZDE3ZWQ3NzgwMi4u
NzFmNjAyOTA1MzBjMTU5MTc3N2RjNjZiNWY3ZGJkZjM1Nzg1M2YyZiAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlk
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCkBAIC0zNTQsNiArMzU0LDkgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewog
ICAgIC8vIFN0b3JhZ2UgQWNjZXNzIEFQSQogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMob2JqZWN0IGNhbGxiYWNrKTsKIAorICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVnb3J5KG9i
amVjdCBjYWxsYmFjayk7CisgICAgdm9pZCBzZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChi
b29sZWFuIHZhbHVlLCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgLy8gT3BlbiBwYW5lbAogICAg
IHZvaWQgc2V0T3BlblBhbmVsRmlsZXMob2JqZWN0IGZpbGVzQXJyYXkpOwogICAgIHZvaWQgc2V0
T3BlblBhbmVsRmlsZXNNZWRpYUljb24ob2JqZWN0IG1lZGlhSWNvbik7CkBAIC0zODksNiArMzky
LDcgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHZvaWQgcmVzZXRNb2NrTWVkaWFEZXZp
Y2VzKCk7CiAgICAgdm9pZCBzZXRNb2NrQ2FtZXJhT3JpZW50YXRpb24odW5zaWduZWQgbG9uZyBv
cmllbnRhdGlvbik7CiAgICAgYm9vbGVhbiBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
RW5hYmxlZCgpOworICAgIGJvb2xlYW4gaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAKICAgICB2b2lk
IGluamVjdFVzZXJTY3JpcHQoRE9NU3RyaW5nIHN0cmluZyk7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgdXNlclNjcmlwdEluamVjdGVkQ291bnQ7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CmluZGV4IDk1OGE3OWJhNDM0OGE5NzkyMjgwM2VlMjM2MTkwYjUwMmZkZjNjMWEuLjc3MGZlMThk
OWYzMDM0ZDE4YzY4Nzg2YjQyNmVkNDk3Njk2MDViYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC0z
MzYsNiArMzM2LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9Q
YWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1
bm5lci0+c3RhdGlzdGljc0NhbGxEaWRTZXRTaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzQ2Fs
bGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNhbGxEaWRTZXRJbkFwcEJyb3dzZXJQ
cml2YWN5RW5hYmxlZCIpKSB7CisgICAgICAgIG1fdGVzdFJ1bm5lci0+Y2FsbERpZFNldEluQXBw
QnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiQ2Fs
bERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlIikpIHsKICAgICAgICAgbV90
ZXN0UnVubmVyLT5zdGF0aXN0aWNzQ2FsbERpZFNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92
YWxNb2RlQ2FsbGJhY2soKTsKQEAgLTQyMiw2ICs0MjcsMTQgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5n
UmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5jYWxsRGlkUmVjZWl2ZVByZXZhbGVudERvbWFp
bnNDYWxsYmFjayhXVEZNb3ZlKGRvbWFpbnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAg
ICAKKyAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkNh
bGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5IikpIHsKKyAgICAgICAgQVNTRVJUKG1lc3NhZ2VC
b2R5KTsKKyAgICAgICAgQVNTRVJUKFdLR2V0VHlwZUlEKG1lc3NhZ2VCb2R5KSA9PSBXS1N0cmlu
Z0dldFR5cGVJRCgpKTsKKworICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxEaWRSZWNlaXZlV2Vi
Vmlld0NhdGVnb3J5Q2FsbGJhY2sodG9XVEZTdHJpbmcoc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+
KG1lc3NhZ2VCb2R5KSkpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKFdLU3Ry
aW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDYWxsRGlkUmVtb3ZlQWxsU2Vz
c2lvbkNyZWRlbnRpYWxzQ2FsbGJhY2siKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmNhbGxE
aWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHNDYWxsYmFjaygpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggZWMx
MjZkNjhlMzVkNWU1NzBlZTE1MmRmNjgyMGI0MDNmYTc3ZjJjZC4uMTYwZjIxYzEwM2I1MzY5M2U0
YjIzMDUxNTM3MmU5ZGVlYWViYzgxNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03NjEsNiArNzYxLDggQEAgZW51
bSB7CiAgICAgVGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBUZXh0Rmll
bGREaWRFbmRFZGl0aW5nQ2FsbGJhY2tJRCwKICAgICBDdXN0b21NZW51QWN0aW9uQ2FsbGJhY2tJ
RCwKKyAgICBHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELAorICAgIERpZFNldEluQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2tJRCwKICAgICBGaXJzdFVJU2NyaXB0Q2FsbGJhY2tJ
RCA9IDEwMAogfTsKIApAQCAtMjkwNCw0ICsyOTA2LDQ3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0
T2Zmc2NyZWVuQ2FudmFzRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgV0tCdW5kbGVPdmVycmlk
ZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihpbmplY3RlZEJ1bmRsZS5idW5kbGUoKSwgaW5q
ZWN0ZWRCdW5kbGUucGFnZUdyb3VwKCksIGtleS5nZXQoKSwgZW5hYmxlZCk7CiB9CiAKK3ZvaWQg
VGVzdFJ1bm5lcjo6Z2V0V2ViVmlld0NhdGVnb3J5KEpTVmFsdWVSZWYgY2FsbGJhY2spCit7Cisg
ICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soR2V0V2ViVmlld0NhdGVnb3J5Q2FsbGJhY2tJRCwg
Y2FsbGJhY2spOworICAgIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdlTmFt
ZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkdldFdlYlZpZXdDYXRl
Z29yeSIpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdlKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0
b24oKS5idW5kbGUoKSwgbWVzc2FnZU5hbWUuZ2V0KCksIG51bGxwdHIpOworfQorCit2b2lkIFRl
c3RSdW5uZXI6OmNhbGxEaWRSZWNlaXZlV2ViVmlld0NhdGVnb3J5Q2FsbGJhY2soU3RyaW5nIGNh
dGVnb3J5KQoreworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSk7
CisgICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENv
bnRleHQobWFpbkZyYW1lKTsKKworICAgIGF1dG8gcmVzdWx0U3RyaW5nID0gbWFrZVN0cmluZygi
XCIiLCBjYXRlZ29yeSwgIlwiIik7CisgICAgCisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1Zh
bHVlTWFrZUZyb21KU09OU3RyaW5nKGNvbnRleHQsIGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKHJlc3VsdFN0cmluZy51dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgY2Fs
bFRlc3RSdW5uZXJDYWxsYmFjayhHZXRXZWJWaWV3Q2F0ZWdvcnlDYWxsYmFja0lELCAxLCAmcmVz
dWx0KTsKK30KKworYm9vbCBUZXN0UnVubmVyOjpoYXNBcHBCb3VuZFNlc3Npb24oKQoreworICAg
IGF1dG8gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5n
KCJIYXNBcHBCb3VuZFNlc3Npb24iKSk7CisgICAgV0tUeXBlUmVmIHJldHVybkRhdGEgPSBudWxs
cHRyOworICAgIFdLQnVuZGxlUGFnZVBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKElu
amVjdGVkQnVuZGxlOjpzaW5nbGV0b24oKS5wYWdlKCktPnBhZ2UoKSwgbWVzc2FnZU5hbWUuZ2V0
KCksIG51bGxwdHIsICZyZXR1cm5EYXRhKTsKKyAgICBBU1NFUlQoV0tHZXRUeXBlSUQocmV0dXJu
RGF0YSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworCisgICAgcmV0dXJuIFdLQm9vbGVhbkdl
dFZhbHVlKGFkb3B0V0soc3RhdGljX2Nhc3Q8V0tCb29sZWFuUmVmPihyZXR1cm5EYXRhKSkuZ2V0
KCkpOworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
KGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgY2FjaGVU
ZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRDYWxsYmFj
a0lELCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1l
c3NhZ2VOYW1lID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiU2V0SW5B
cHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVm
PiBtZXNzYWdlQm9keSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHZhbHVlKSk7CisgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCkuYnVuZGxlKCksIG1l
c3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6Y2FsbERpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkQ2FsbGJhY2soKQoreworICAg
IGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWRD
YWxsYmFja0lEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IDcyMTAyMWRkNmNj
ODc1YjZiZmMyNjU4ZDk5ZmY1MTI0OWI5NTZlMjIuLmI3N2NiNmM1NTNlMjdmNWJiMmM1ODZhMGQ1
YjU4NmMyNmZmMGNiNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC00NjMsNiArNDYzLDEwIEBAIHB1YmxpYzoKICAgICB2
b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAg
IHZvaWQgY2FsbERpZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllc0NhbGxiYWNrKFZlY3Rv
cjxTdHJpbmc+JiBkb21haW5zKTsKIAorICAgIAorICAgIHZvaWQgZ2V0V2ViVmlld0NhdGVnb3J5
KEpTVmFsdWVSZWYgY2FsbGJhY2spOworICAgIHZvaWQgY2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0
ZWdvcnlDYWxsYmFjayhTdHJpbmcpOworCiAgICAgLy8gT3BlbiBwYW5lbAogICAgIHZvaWQgc2V0
T3BlblBhbmVsRmlsZXMoSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBzZXRPcGVuUGFuZWxGaWxlc01l
ZGlhSWNvbihKU1ZhbHVlUmVmKTsKQEAgLTQ5NCw2ICs0OTgsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZXNldE1vY2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRh
dGlvbih1bnNpZ25lZCk7CiAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVy
RW5hYmxlZCgpOworICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKCk7CisgICAgdm9pZCBzZXRJ
bkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZChib29sLCBKU1ZhbHVlUmVmKTsKKyAgICB2b2lkIGNh
bGxEaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZENhbGxiYWNrKCk7CiAKICAgICBzaXpl
X3QgdXNlclNjcmlwdEluamVjdGVkQ291bnQoKSBjb25zdDsKICAgICB2b2lkIGluamVjdFVzZXJT
Y3JpcHQoSlNTdHJpbmdSZWYpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
LmNwcAppbmRleCBiMjIxZGExNzAzOTI5MTFiYTYyNWU1NzdjOGNmOTNjYWViMzg4NzhkLi4yMTNi
N2ViNzEzNDZmMGVmYTRmMTQ4Y2MzZGM1OTliMDQ0YTJmMTI0IDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtODA0LDYgKzgwNCwxMCBAQCB2b2lkIFRlc3RD
b250cm9sbGVyOjplbnN1cmVWaWV3U3VwcG9ydHNPcHRpb25zRm9yVGVzdChjb25zdCBUZXN0SW52
b2NhdGlvbiYgdGVzdAogICAgICAgICBtX2NyZWF0ZWRPdGhlclBhZ2UgPSBmYWxzZTsKICAgICB9
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRp
ZmllclRlc3RpbmdPdmVycmlkZSgpOworI2VuZGlmCisKICAgICBjcmVhdGVXZWJWaWV3V2l0aE9w
dGlvbnMob3B0aW9ucyk7CiAKICAgICBpZiAoIXJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
b3B0aW9ucywgUmVzZXRTdGFnZTo6QmVmb3JlVGVzdCkpCkBAIC0xMDg3LDEwICsxMDkxLDYgQEAg
Ym9vbCBUZXN0Q29udHJvbGxlcjo6cmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3B0aW9ucywgUmUKIAogICAgIHNldEhpZGRlbihmYWxzZSk7CiAKLSNpZiBQ
TEFURk9STShDT0NPQSkKLSAgICBjbGVhckFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllclRlc3Rp
bmdPdmVycmlkZSgpOwotI2VuZGlmCi0KICAgICBpZiAoIXBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29u
c2lzdGVudFZhbHVlcyhvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zMTI0
LDYgKzMxMjQsMTAgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5z
KCkKIHsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0V2ViVmlld0NhdGVnb3J5KCkKK3sK
K30KKwogI2VuZGlmCiAKIHN0cnVjdCBDbGVhclNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zQ2Fs
bGJhY2tDb250ZXh0IHsKQEAgLTM3MTMsNiArMzcxNyw0OSBAQCBib29sIFRlc3RDb250cm9sbGVy
Ojppc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIFdLUGFnZUlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50ZXJFbmFibGVkKG1fbWFpbldl
YlZpZXctPnBhZ2UoKSk7CiB9CiAKK3N0cnVjdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tD
b250ZXh0IHsKKyAgICBleHBsaWNpdCBJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0
KFRlc3RDb250cm9sbGVyJiBjb250cm9sbGVyKQorICAgICAgICA6IHRlc3RDb250cm9sbGVyKGNv
bnRyb2xsZXIpCisgICAgeworICAgIH0KKworICAgIFRlc3RDb250cm9sbGVyJiB0ZXN0Q29udHJv
bGxlcjsKKyAgICBib29sIGRvbmUgeyBmYWxzZSB9OworICAgIGJvb2wgcmVzdWx0IHsgZmFsc2Ug
fTsKK307CisKK3N0YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lCb29sZWFuUmVzdWx0Q2Fs
bGJhY2soYm9vbCByZXN1bHQsIHZvaWQqIHVzZXJEYXRhKQoreworICAgIGF1dG8qIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxJbkFwcEJyb3dzZXJQcml2YWN5Q2FsbGJhY2tDb250ZXh0Kj4odXNlckRh
dGEpOworICAgIGNvbnRleHQtPnJlc3VsdCA9IHJlc3VsdDsKKyAgICBjb250ZXh0LT5kb25lID0g
dHJ1ZTsKKyAgICBjb250ZXh0LT50ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK3N0
YXRpYyB2b2lkIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sodm9pZCogdXNl
ckRhdGEpCit7CisgICAgYXV0byogY29udGV4dCA9IHN0YXRpY19jYXN0PEluQXBwQnJvd3NlclBy
aXZhY3lDYWxsYmFja0NvbnRleHQqPih1c2VyRGF0YSk7CisgICAgY29udGV4dC0+ZG9uZSA9IHRy
dWU7CisgICAgY29udGV4dC0+dGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitib29s
IFRlc3RDb250cm9sbGVyOjpoYXNBcHBCb3VuZFNlc3Npb24oKQoreworICAgIEluQXBwQnJvd3Nl
clByaXZhY3lDYWxsYmFja0NvbnRleHQgY29udGV4dCgqdGhpcyk7CisgICAgV0tXZWJzaXRlRGF0
YVN0b3JlSGFzQXBwQm91bmRTZXNzaW9uKFRlc3RDb250cm9sbGVyOjp3ZWJzaXRlRGF0YVN0b3Jl
KCksICZjb250ZXh0LCBpbkFwcEJyb3dzZXJQcml2YWN5Qm9vbGVhblJlc3VsdENhbGxiYWNrKTsK
KyAgICBydW5VbnRpbChjb250ZXh0LmRvbmUsIG5vVGltZW91dCk7CisgICAgcmV0dXJuIGNvbnRl
eHQucmVzdWx0OworfQorCisKK3ZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEluQXBwQnJvd3NlclBy
aXZhY3lFbmFibGVkKGJvb2wgdmFsdWUpCit7CisgICAgSW5BcHBCcm93c2VyUHJpdmFjeUNhbGxi
YWNrQ29udGV4dCBjb250ZXh0KCp0aGlzKTsKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZChUZXN0Q29udHJvbGxlcjo6d2Vic2l0ZURhdGFTdG9yZSgp
LCB2YWx1ZSwgJmNvbnRleHQsIGluQXBwQnJvd3NlclByaXZhY3lWb2lkUmVzdWx0Q2FsbGJhY2sp
OworICAgIHJ1blVudGlsKGNvbnRleHQuZG9uZSwgbm9UaW1lb3V0KTsKKyAgICBtX2N1cnJlbnRJ
bnZvY2F0aW9uLT5kaWRTZXRJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgpOworfQorCiAjaWYg
IVBMQVRGT1JNKENPQ09BKQogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGRUZXN0T3B0
aW9ucyhUZXN0T3B0aW9ucyYpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmgKaW5kZXggNGU2NTExMjllYzI5NGY2ZDVhNTljNDM3MWUyOTYzNWExYjFmOTk0Yy4u
MWM3Zjc1ZDY5Y2Y4YzQ1NTMwMGJhMzQ2YTBlNWM1NTFjNjIyMzYxNSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApAQCAtMjYwLDYgKzI2MCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCk7CiAgICAgdm9pZCBnZXRQcmV2YWxl
bnREb21haW5zKCk7CiAgICAgdm9pZCBjbGVhclByZXZhbGVudERvbWFpbnMoKTsKKyAgICB2b2lk
IGdldFdlYlZpZXdDYXRlZ29yeSgpOworICAgIHZvaWQgc2V0SW5BcHBCcm93c2VyUHJpdmFjeUVu
YWJsZWQoYm9vbCk7CiAKICAgICBXS0FycmF5UmVmIG9wZW5QYW5lbEZpbGVVUkxzKCkgY29uc3Qg
eyByZXR1cm4gbV9vcGVuUGFuZWxGaWxlVVJMcy5nZXQoKTsgfQogICAgIHZvaWQgc2V0T3BlblBh
bmVsRmlsZVVSTHMoV0tBcnJheVJlZiBmaWxlVVJMcykgeyBtX29wZW5QYW5lbEZpbGVVUkxzID0g
ZmlsZVVSTHM7IH0KQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldE1v
Y2tNZWRpYURldmljZXMoKTsKICAgICB2b2lkIHNldE1vY2tDYW1lcmFPcmllbnRhdGlvbih1aW50
NjRfdCk7CiAgICAgYm9vbCBpc01vY2tSZWFsdGltZU1lZGlhU291cmNlQ2VudGVyRW5hYmxlZCgp
IGNvbnN0OworICAgIGJvb2wgaGFzQXBwQm91bmRTZXNzaW9uKCk7CiAKICAgICB2b2lkIGluamVj
dFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcAppbmRleCAzMjI0ZjA4YWFlNDg0MTg5ZjFkNDIzNWUxZTZhZjgwNmVk
MTM1NzE0Li5jOWU5NGVlYjY2Y2U5NGMzN2JmOTAwYTg0ZDBmYzQ3MDkwNzliN2VmIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtNzYwLDYgKzc2MCwxMyBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkuc2V0U3RhdGlzdGljc1Nob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoV0tCb29sZWFu
R2V0VmFsdWUodmFsdWUpLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTZXRJbkFw
cEJyb3dzZXJQcml2YWN5RW5hYmxlZCIpKSB7CisgICAgICAgIEFTU0VSVChXS0dldFR5cGVJRCht
ZXNzYWdlQm9keSkgPT0gV0tCb29sZWFuR2V0VHlwZUlEKCkpOworICAgICAgICBXS0Jvb2xlYW5S
ZWYgdmFsdWUgPSBzdGF0aWNfY2FzdDxXS0Jvb2xlYW5SZWY+KG1lc3NhZ2VCb2R5KTsKKyAgICAg
ICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldEluQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKFdLQm9vbGVhbkdldFZhbHVlKHZhbHVlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJ1blVJ
UHJvY2Vzc1NjcmlwdCIpKSB7CiAgICAgICAgIFdLRGljdGlvbmFyeVJlZiBtZXNzYWdlQm9keURp
Y3Rpb25hcnkgPSBzdGF0aWNfY2FzdDxXS0RpY3Rpb25hcnlSZWY+KG1lc3NhZ2VCb2R5KTsKQEAg
LTgwMCw2ICs4MDcsMTEgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKICAgICAgICAgVGVzdENv
bnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldE9wZW5QYW5lbEZpbGVVUkxzKHN0YXRpY19jYXN0PFdL
QXJyYXlSZWY+KG1lc3NhZ2VCb2R5KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgCisg
ICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJHZXRXZWJW
aWV3Q2F0ZWdvcnkiKSkgeworICAgICAgICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuZ2V0
V2ViVmlld0NhdGVnb3J5KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3Nh
Z2VOYW1lLCAiU2V0T3BlblBhbmVsRmlsZVVSTHNNZWRpYUljb24iKSkgewpAQCAtMTAwMiw2ICsx
MDE0LDExIEBAIFdLUmV0YWluUHRyPFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2Vp
dmVTeW5jaHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCCiAgICAgICAgIGJvb2wgaXNNb2NrUmVh
bHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkuaXNNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZUNlbnRlckVuYWJsZWQoKTsKICAgICAgICAgcmV0
dXJuIGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKGlzTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VDZW50
ZXJFbmFibGVkKSk7CiAgICAgfQorICAgIAorICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKG1lc3NhZ2VOYW1lLCAiSGFzQXBwQm91bmRTZXNzaW9uIikpIHsKKyAgICAgICAgYm9v
bCBoYXNBcHBCb3VuZFNlc3Npb24gPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuaGFzQXBw
Qm91bmRTZXNzaW9uKCk7CisgICAgICAgIHJldHVybiBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSho
YXNBcHBCb3VuZFNlc3Npb24pKTsKKyAgICB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJDb25uZWN0TW9ja0dh
bWVwYWQiKSkgewpAQCAtMTg3MCw2ICsxODg3LDEyIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRp
ZFNldFNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoKQogICAgIFdLUGFnZVBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZShUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXco
KS0+cGFnZSgpLCBtZXNzYWdlTmFtZS5nZXQoKSwgbnVsbHB0cik7CiB9CiAKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCkKK3sKKyAgICBXS1Jl
dGFpblB0cjxXS1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKCJDYWxsRGlkU2V0SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQiKSk7
CisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1lc3NhZ2VOYW1lLmdldCgpLCBudWxs
cHRyKTsKK30KKwogdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkU2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGUoKQogewogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBtZXNzYWdl
TmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkNhbGxEaWRTZXRG
aXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSIpKTsKQEAgLTE5NDgsNyArMTk3MSwxNSBA
QCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8
U3RyaW5nPiYmIGRvbWFpbnMpCiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlQXJyYXlSZWY+IG1l
c3NhZ2VCb2R5ID0gYWRvcHRXSyhXS011dGFibGVBcnJheUNyZWF0ZSgpKTsKICAgICBmb3IgKGF1
dG8mIGRvbWFpbiA6IGRvbWFpbnMpCiAgICAgICAgIFdLQXJyYXlBcHBlbmRJdGVtKG1lc3NhZ2VC
b2R5LmdldCgpLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGRvbWFpbi51
dGY4KCkuZGF0YSgpKSkuZ2V0KCkpOworCisgICAgV0tQYWdlUG9zdE1lc3NhZ2VUb0luamVjdGVk
QnVuZGxlKFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wYWdlKCks
IG1lc3NhZ2VOYW1lLmdldCgpLCBtZXNzYWdlQm9keS5nZXQoKSk7Cit9CisKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmRpZFJlY2VpdmVXZWJWaWV3Q2F0ZWdvcnkoU3RyaW5nJiB3ZWJWaWV3Q2F0ZWdv
cnkpCit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VOYW1lID0gYWRvcHRX
SyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiQ2FsbERpZFJlY2VpdmVXZWJWaWV3Q2F0
ZWdvcnkiKSk7CiAgICAgCisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IG1lc3NhZ2VCb2R5
ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh3ZWJWaWV3Q2F0ZWdvcnku
dXRmOCgpLmRhdGEoKSkpOwogICAgIFdLUGFnZVBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShU
ZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtZXNzYWdl
TmFtZS5nZXQoKSwgbWVzc2FnZUJvZHkuZ2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNTAzMzdkNjc1ZGUwOTBhZGRmNWI3NmM4MDA3MmExN2Zi
YTRjMTNlNi4uZWM0ZjU5NjYyYzdiNWJlMDM2NjE1MDcyYzIyMDU5NjJlODQ4NTU2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtODcsNiArODcsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBkaWRTZXRIYXNIYWRVc2VySW50ZXJhY3Rpb24oKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUHJldmFsZW50RG9tYWlucyhWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpOworICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlZpZXdDYXRlZ29yeShTdHJpbmcmKTsKKyAg
ICB2b2lkIGRpZFNldEluQXBwQnJvd3NlclByaXZhY3lFbmFibGVkKCk7CiAKICAgICB2b2lkIGRp
ZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCmluZGV4IGQzZjJlZjFi
YzMyZWUwZGYzODJlNjMyY2JkNTMwYTA0N2Y3MmY4ZjkuLjZmOTU1YjBkYWIxYzU1YzQ5MGQ2YjUy
ZDQzOWI1Y2FkOTQ2YzU5ZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29j
b2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTM1Niw2ICszNTYsMzIgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y2xlYXJQcmV2YWxlbnREb21haW5zKCkKICAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfY2xlYXJQcmV2YWxlbnREb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAordm9pZCBUZXN0Q29udHJvbGxlcjo6Z2V0
V2ViVmlld0NhdGVnb3J5KCkKK3sKKyAgICBhdXRvKiBwYXJlbnRWaWV3ID0gbWFpbldlYlZpZXco
KTsKKyAgICBpZiAoIXBhcmVudFZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRXZWJWaWV3Q2F0ZWdvcnlG
b3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tXZWJW
aWV3Q2F0ZWdvcnkgd2ViVmlld0NhdGVnb3J5KSB7CisgICAgICAgIFN0cmluZyBjYXRlZ29yeTsK
KyAgICAgICAgc3dpdGNoICh3ZWJWaWV3Q2F0ZWdvcnkpIHsKKyAgICAgICAgY2FzZSBfV0tXZWJW
aWV3Q2F0ZWdvcnlBcHBCb3VuZERvbWFpbjoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkFwcEJv
dW5kRG9tYWluIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIF9XS1dlYlZpZXdD
YXRlZ29yeUh5YnJpZEFwcDoKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gIkh5YnJpZEFwcCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBfV0tXZWJWaWV3Q2F0ZWdvcnlJbkFwcEJy
b3dzZXI6CisgICAgICAgICAgICBjYXRlZ29yeSA9ICJJbkFwcEJyb3dzZXIiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgX1dLV2ViVmlld0NhdGVnb3J5V2ViQnJvd3NlcjoKKyAg
ICAgICAgICAgIGNhdGVnb3J5ID0gIldlYkJyb3dzZXIiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZVdlYlZpZXdD
YXRlZ29yeShjYXRlZ29yeSk7CisgICAgfV07Cit9CisKIHZvaWQgVGVzdENvbnRyb2xsZXI6Omlu
amVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQogewogICAgIGF1dG8gdXNlclNjcmlw
dCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291cmNlOiB0b1dURlN0
cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9j
dW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzU3ODQwNmM2NGQyNTEy
Yjc3ZGNmNGZhM2E3MDI3MjdmZTM5MmM1YS4uY2MwNDdlZGY5NGU5NWJlMmYwNWY2YjYwOWJiNDlh
YmIyMTMwMzYwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTAyLTIxICBLYXRlIENoZW5l
eSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIEFwcC1ib3VuZCBkb21h
aW5zIHNob3VsZCBoYXZlIHNlcGFyYXRlIE5ldHdvcmsgU2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwODAyNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNTk0MzQwMDY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJlbnQgRnVsZ2hhbS4K
KworICAgICAgICBBZGRlZCB0d28gdGVzdHMuIE9uZSB0byB0ZXN0IHRoZSBwcm9wZXIgY2F0ZWdv
cml6YXRpb24gb2YgYXBwLWJvdW5kCisgICAgICAgIG5hdmlnYXRpb24sIGFuZCBvbmUgdG8gY2hl
Y2sgdGhhdCBzd2l0Y2hpbmcgc2Vzc2lvbnMgb2NjdXJzIHdoZW4KKyAgICAgICAgbmF2aWdhdGlu
ZyB0byBhbiBhcHAtYm91bmQgZG9tYWluLgorCisgICAgICAgIFNpbmNlIHRoZXNlIHRlc3RzIHVz
ZSBJVFAgdG8gc2V0IHVzZXIgaW50ZXJhY3Rpb24sIHRoZXkgc2hvdWxkIG9ubHkKKyAgICAgICAg
YmUgcnVuIG9uIGlPUyBhbmQgbWFjLXdrMi4KKworICAgICAgICAqIFRlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1k
b21haW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdh
dGlvbi10by1hcHAtYm91bmQtZG9tYWluLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmln
YXRpb24tdG8tYXBwLWJvdW5kLWRvbWFpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9pb3MvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CisKIDIwMjAtMDItMjEgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBh
cHBsZS5jb20+CiAKICAgICAgICAgWyBNYWMgd2syIF0gaHR0cC93cHQvZmV0Y2gvZGlzYWJsZS1z
cGVjdWxhdGl2ZS1mb3ItcmVsb2FkLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IGIzNTY4MWVjYmUwODcxMTNhNWFmNmY4NTljNDIyMDFkNGI4YmRlZjcuLmM4OTJi
YzcwMmE1NGNiMWU4OWRkN2RiY2NkZDYyMDc0ZDg4Nzk1NjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpA
QCAtMTU1LDYgKzE1NSw4IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlvbi91c2VyYWdlbnQtcmVsb2Fk
LnBocCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJuL29wZW5kYXRhYmFzZS1hZnRl
ci1zdG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL0lEQk9iamVj
dC1sZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10ZXh0LWRpZC1jaGFuZ2UtaW4t
dGV4dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCitodHRwL3Rlc3RzL2luLWFwcC1i
cm93c2VyLXByaXZhY3kvIFsgU2tpcCBdCisKIAogIyBPbmx5IE1hYyBhbmQgaU9TIGhhdmUgYW4g
aW1wbGVtZW50YXRpb24gb2YgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzaygpLgogZmFz
dC9oYXJuZXNzL3Vpc2NyaXB0Y29udHJvbGxlciBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4t
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2
YWN5L2FwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1MjNhNjkxYjhj
ZTgxMjkzNWM3ODMwY2VkMWZlM2U4YjZlYmM5NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvYXBwLWJvdW5kLWRvbWFpbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw3IEBACitUZXN0cyB0aGF0IGFuIEFwcC1Cb3VuZCBEb21h
aW4gZ2V0cyBjbGFzc2lmaWVkIGFzIHNvCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKwor
CitQQVNTIFN1Y2Nlc3MsIGRvbWFpbiBjbGFzc2lmaWVkIGFzIEluLUFwcCBCcm93c2VyLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kv
YXBwLWJvdW5kLWRvbWFpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MjI1YzVmNDU5
MWZhMGUyYjc4NDBmNDJhMjQzNmNiMTY5NjBmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbi1hcHAtYnJvd3Nlci1wcml2YWN5L2FwcC1ib3VuZC1kb21haW4u
aHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1
bm5lciBbIGludGVybmFsOklzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQ9dHJ1ZSBhcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXI9dGVzdGlkZW50aWZpZXIgXSAtLT4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oJ1Rlc3RzIHRoYXQgYW4g
QXBwLUJvdW5kIERvbWFpbiBnZXRzIGNsYXNzaWZpZWQgYXMgc28nKTsKKyAgICAgICAganNUZXN0
SXNBc3luYyA9IHRydWU7CisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisg
ICAgICAgIGZ1bmN0aW9uIGFza0ZvcldlYlZpZXdDYXRlZ29yeSgpIHsKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZ2V0V2ViVmlld0NhdGVnb3J5KGZ1bmN0aW9uIChjYXRlZ29yeSkgeworICAgICAg
ICAgICAgICAgIGlmIChjYXRlZ29yeSAhPSAiSW5BcHBCcm93c2VyIikgeworICAgICAgICAgICAg
ICAgICAgICAgIGFza0ZvcldlYlZpZXdDYXRlZ29yeSgpOworICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
U3VjY2VzcywgZG9tYWluIGNsYXNzaWZpZWQgYXMgSW4tQXBwIEJyb3dzZXIuIik7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uT3JpZ2luID0gImh0dHA6Ly9sb2NhbGhv
c3Q6ODAwMCI7CisgICAgICAgIGZ1bmN0aW9uIG5hdmlnYXRlVG9Ob25BcHBCb3VuZERvbWFpbigp
IHsKKyAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBkZXN0aW5hdGlvbk9yaWdp
biArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDIi
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaGFz
aCAhPSAiI3N0ZXAyIikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci5nZXRXZWJWaWV3Q2F0ZWdv
cnkoZnVuY3Rpb24gKGNhdGVnb3J5KSB7CisgICAgICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9
ICJBcHBCb3VuZERvbWFpbiIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiRmFp
bHVyZSwgc3RhcnRpbmcgY2F0ZWdvcnkgbm90IEFwcEJvdW5kRG9tYWluIik7CisgICAgICAgICAg
ICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBuYXZpZ2F0ZVRvTm9uQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNrRm9yV2ViVmlld0NhdGVnb3J5
KCk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIkZhaWx1cmUsIGRvbWFpbiBub3QgY2xhc3NpZmllZCBhcyBJ
bi1BcHAgQnJvd3Nlci4iKTsKKyAgICAgICAgICAgIGNvbnNvbGUubG9nKCJUZXN0IHRpbWVkIG91
dCBhZnRlciAyMCBzZWNvbmRzIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KQorICAgICAgICB9LCAyMDAwMCk7CisgICAgCisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFw
cC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJv
dW5kLWRvbWFpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZlOGE2M2U0NzdhOWEwZGNjMDJk
NjI3NWVkNmFiMTBjNWI3OWRmMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9u
LXRvLWFwcC1ib3VuZC1kb21haW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNlc3Npb24gaXMgc3dpdGNoZWQgdXBvbiB0b3AgZnJhbWUgbmF2aWdhdGlvbiB0
byBhbiBhcHAtYm91bmQgZG9tYWluLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBTaG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4KK1BBU1MgU2hvdWxk
IGhhdmUgYW5kIGhhcyB0aGUgcGVyc2lzdGVudCBjb29raWUuCitQQVNTIE9yaWdpbiBoYXMgYXBw
LWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlv
bi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luLWFw
cC1icm93c2VyLXByaXZhY3kvc3dpdGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91
bmQtZG9tYWluLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDRjNjYxYTk5NzNlMmIwNWVmOTE5ZDk0YWNhZmVl
ZTQyZWM3YjU4OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW4t
YXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9uLXRvLWFwcC1i
b3VuZC1kb21haW4uaHRtbApAQCAtMCwwICsxLDExOCBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3
ZWJraXQtdGVzdC1ydW5uZXIgWyBpbnRlcm5hbDpJc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVk
PXRydWUgYXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyPXRlc3RpZGVudGlmaWVyIF0gLS0+Cis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvcmVzb3VyY2VzL3V0aWwuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHNjcmlwdD4K
KyAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBzd2l0Y2hlZCB1cG9u
IHRvcCBmcmFtZSBuYXZpZ2F0aW9uIHRvIGFuIGFwcC1ib3VuZCBkb21haW4uIik7CisgICAganNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICBjb25zdCBhcHBCb3VuZE9yaWdpbiA9ICJodHRwOi8v
MTI3LjAuMC4xOjgwMDAiOworICAgIGNvbnN0IG5vbkFwcEJvdW5kT3JpZ2luID0gImh0dHA6Ly9s
b2NhbGhvc3Q6ODAwMCI7CisgICAgY29uc3Qgc2Vzc2lvbkNvb2tpZU5hbWUgPSAic2Vzc2lvbkNv
b2tpZSI7CisgICAgY29uc3QgcGVyc2lzdGVudENvb2tpZU5hbWUgPSAicGVyc2lzdGVudENvb2tp
ZSI7CisgICAgY29uc3QgdHdvTWludXRlc0luU2Vjb25kcyA9IDEyMDsKKworICAgIGZ1bmN0aW9u
IGZpbmlzaFRlc3QoKSB7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0SW5BcHBCcm93c2VyUHJpdmFj
eUVuYWJsZWQoZmFsc2UsIGZpbmlzaEpTVGVzdCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9u
IHNldFNlc3Npb25Db29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHNlc3Npb25D
b29raWVOYW1lICsgIj0xOyBwYXRoPS8iOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNldFBlcnNp
c3RlbnRDb29raWUoKSB7CisgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IHBlcnNpc3RlbnRDb29r
aWVOYW1lICsgIj0xOyBwYXRoPS87IE1heC1BZ2U9IiArIHR3b01pbnV0ZXNJblNlY29uZHMgKyAi
OyI7CisgICAgfQorCisgICAgZnVuY3Rpb24gY2hlY2tDb29raWVzKHNob3VsZEhhdmVTZXNzaW9u
Q29va2llLCBzaG91bGRIYXZlUGVyc2lzdGVudENvb2tpZSkgeworICAgICAgICBsZXQgaGFzU2Vz
c2lvbkNvb2tpZSA9IChkb2N1bWVudC5jb29raWUgKyAiIikuaW5jbHVkZXMoc2Vzc2lvbkNvb2tp
ZU5hbWUpLAorICAgICAgICAgICAgaGFzUGVyc2lzdGVudENvb2tpZSA9IChkb2N1bWVudC5jb29r
aWUgKyAiIikuaW5jbHVkZXMocGVyc2lzdGVudENvb2tpZU5hbWUpOworCisgICAgICAgIGlmIChz
aG91bGRIYXZlU2Vzc2lvbkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKQorICAgICAgICAgICAg
dGVzdFBhc3NlZCgiU2hvdWxkIGhhdmUgYW5kIGhhcyB0aGUgc2Vzc2lvbiBjb29raWUuIik7Cisg
ICAgICAgIGVsc2UgaWYgKHNob3VsZEhhdmVTZXNzaW9uQ29va2llICYmICFoYXNTZXNzaW9uQ29v
a2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJTaG91bGQgaGF2ZSBidXQgZG9lc24ndCBo
YXZlIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUo
ZmFsc2UsIGZpbmlzaFRlc3QpOworICAgICAgICB9IGVsc2UgaWYgKCFzaG91bGRIYXZlU2Vzc2lv
bkNvb2tpZSAmJiBoYXNTZXNzaW9uQ29va2llKSB7CisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJT
aG91bGRuJ3QgaGF2ZSBidXQgaGFzIHRoZSBzZXNzaW9uIGNvb2tpZS4iKTsKKyAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaFRlc3QpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHRlc3RQYXNzZWQoIlNob3VsZG4ndCBoYXZlIGFuZCBkb2Vzbid0IGhhdmUgdGhl
IHNlc3Npb24gY29va2llLiIpOworCisKKyAgICAgICAgaWYgKHNob3VsZEhhdmVQZXJzaXN0ZW50
Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpCisgICAgICAgICAgICB0ZXN0UGFzc2VkKCJT
aG91bGQgaGF2ZSBhbmQgaGFzIHRoZSBwZXJzaXN0ZW50IGNvb2tpZS4iKTsKKyAgICAgICAgZWxz
ZSBpZiAoc2hvdWxkSGF2ZVBlcnNpc3RlbnRDb29raWUgJiYgIWhhc1BlcnNpc3RlbnRDb29raWUp
IHsKKyAgICAgICAgICAgIHRlc3RGYWlsZWQoIlNob3VsZCBoYXZlIGJ1dCBkb2Vzbid0IGhhdmUg
dGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShm
YWxzZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0gZWxzZSBpZiAoIXNob3VsZEhhdmVQZXJzaXN0
ZW50Q29va2llICYmIGhhc1BlcnNpc3RlbnRDb29raWUpIHsKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIlNob3VsZG4ndCBoYXZlIGJ1dCBoYXMgdGhlIHBlcnNpc3RlbnQgY29va2llLiIpOworICAg
ICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoVGVzdCk7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgdGVzdFBhc3NlZCgiU2hvdWxkbid0IGhhdmUgYW5kIGRvZXNuJ3Qg
aGF2ZSB0aGUgcGVyc2lzdGVudCBjb29raWUuIik7CisgICAgfQorCisgICAgZnVuY3Rpb24gcnVu
VGVzdCgpIHsKKyAgICAgICAgc3dpdGNoIChkb2N1bWVudC5sb2NhdGlvbi5oYXNoKSB7CisgICAg
ICAgICAgICBjYXNlICIiOgorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0SW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQodHJ1ZSwgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBhcHBCb3VuZE9yaWdpbikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIlRlc3QgaXMgbm90IHN0YXJ0aW5nIG91dCBv
biAiICsgYXBwQm91bmRPcmlnaW4gKyAiLiIpOworICAgICAgICAgICAgICAgICAgICBzZXRFbmFi
bGVGZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8g
U2luY2UgdGhlIHRlc3QgbWFudWFsbHkgc2V0cyB0aGUgaW5BcHBCcm93c2VyUHJpdmFjeSBmbGFn
IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmV0d29yayBwcm9jZXNzLCB3ZSBu
ZWVkIHRvIHJlLWVzdGFibGlzaCBhbiBhcHAtYm91bmQgc2Vzc2lvbiBieQorICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gbmF2aWdhdGluZyBhd2F5IHRoZW4gYmFjayB0byB0aGUgYXBwLWJvdW5k
IERvbWFpbiBiZWZvcmUgc2V0dGluZyBjb29raWVzLgorICAgICAgICAgICAgICAgICAgICAgICAg
ZG9jdW1lbnQubG9jYXRpb24uaHJlZiA9IG5vbkFwcEJvdW5kT3JpZ2luICsgIi9pbi1hcHAtYnJv
d3Nlci1wcml2YWN5L3N3aXRjaC1zZXNzaW9uLW9uLW5hdmlnYXRpb24tdG8tYXBwLWJvdW5kLWRv
bWFpbi5odG1sI3N0ZXAxIjsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICIjc3RlcDEi
OgorICAgICAgICAgICAgICAgIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBhcHBCb3VuZE9yaWdp
biArICIvaW4tYXBwLWJyb3dzZXItcHJpdmFjeS9zd2l0Y2gtc2Vzc2lvbi1vbi1uYXZpZ2F0aW9u
LXRvLWFwcC1ib3VuZC1kb21haW4uaHRtbCNzdGVwMiI7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlICIjc3RlcDIiOgorICAgICAgICAgICAgICAgIGlmIChkb2N1bWVu
dC5sb2NhdGlvbi5vcmlnaW4gIT09IGFwcEJvdW5kT3JpZ2luKQorICAgICAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJTdGVwIDIgaXMgbm90IG9uICIgKyBhcHBCb3VuZE9yaWdpbiArICIuIik7
CisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVy
YWN0aW9uKGFwcEJvdW5kT3JpZ2luLCB0cnVlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2V0U2Vzc2lvbkNvb2tpZSgpOworICAgICAgICAgICAgICAgICAgICBzZXRQZXJzaXN0
ZW50Q29va2llKCk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrQ29va2llcyh0cnVlLCB0cnVl
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaGFzQXBwQm91bmRTZXNzaW9uKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoIk9yaWdpbiBkaWQgbm90IHN0
YXJ0IHdpdGggYXBwLWJvdW5kIHNlc3Npb24uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBz
ZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hUZXN0KTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJPcmlnaW4gaGFzIGFw
cC1ib3VuZCBzZXNzaW9uLiIpOworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlv
bi5ocmVmID0gbm9uQXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dp
dGNoLXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDMi
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSAiI3N0ZXAzIjoKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5oYXNo
ID0gIiNzdGVwNCIKKyAgICAgICAgICAgICAgICBjaGVja0Nvb2tpZXMoZmFsc2UsIGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24ub3JpZ2luICE9PSBub25BcHBC
b3VuZE9yaWdpbikKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU3RlcCAzIGlzIG5v
dCBvbiAiICsgbm9uQXBwQm91bmRPcmlnaW4pOworICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIu
c3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKHJ1blRlc3QpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA0IjoKKyAgICAgICAgICAgICAgICBjaGVj
a0Nvb2tpZXMoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlv
bi5ocmVmID0gYXBwQm91bmRPcmlnaW4gKyAiL2luLWFwcC1icm93c2VyLXByaXZhY3kvc3dpdGNo
LXNlc3Npb24tb24tbmF2aWdhdGlvbi10by1hcHAtYm91bmQtZG9tYWluLmh0bWwjc3RlcDUiOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiI3N0ZXA1IjoKKyAgICAg
ICAgICAgICAgICBjaGVja0Nvb2tpZXModHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgaWYg
KHRlc3RSdW5uZXIuaGFzQXBwQm91bmRTZXNzaW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoIk9yaWdpbiBoYXMgYXBwLWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4i
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ik9yaWdpbiBoYXMgbm8gYXBwLWJvdW5kIHNlc3Npb24gYWZ0ZXIgbmF2aWdhdGlvbi4iKTsKKyAg
ICAgICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hUZXN0KTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiVW5rbm93biBoYXNoLiIpOworICAgICAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaFRlc3QpOworICAgICAgICB9CisgICAgfQorCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>